0

I have 12 variables (x1-x12), and I want to conduct linear programming between these 12 variables and 2 dependent variables(y1,y2).

Here is my original data:

df<-structure(list(Crop = c("Vegetable A", "Vegetable B", "Maize", 
"Barley", "Potato", "Fruit A", "Fruit B", "Rice", "Tabacco", 
"Rape crop", "Faba bean", "Other beans"), `Nutrient surplus (kg/ha)` = c(495, 
495, 287, 269, 330, 355, 355, 226, 194, 203, 130, 137), `Output value (k yuan/ha)` = c(1234.5, 
1234.5, 260.637180923077, 160.344827586207, 798.39552631579, 
1085, 1085, 385.188901345292, 1075.6125, 216.65625, 196.511045454545, 
909), Type = c("A", "B", "A", "B", "B", "A", "B", "A", "C", "B", 
"B", "B"), Area = c("x1", "x2", "x3", "x4", "x5", "x6", "x7", 
"x8", "x9", "x10", "x11", "x12")), class = c("tbl_df", "tbl", 
"data.frame"), row.names = c(NA, -12L))

The relationships between 12 variables and 2 dependent variables are:

y1=495*x1+495*x2+287*x3+269*x4+330*x5+355*x6+355*x7+226*x8+194*x9+203*x10+130*x11+137*x12
y2=123450*x1+123450*x2+26063.7*x3+16034.5*x4+79839.6*x5+108500*x6+108500*x7+38518.9*x8+107561.25*x9+21665.6*x10+19651.1*x11+90900*x12

With the constraints:

x1+x3+x6+x8+x9<=22666.67
x2+x4+x5+x7+x10+x11+x12<=22666.67
x9<=3333.33

I hope that I can have the low y1 but high y2. But y1 and y2 are tied to each other, so I hope to find a balance between them. Maybe similar to Pareto principle?

Chouette
  • 153
  • 7

1 Answers1

2

Here is what I would start with.

  1. Scale the output y2 a bit. (Choose units 1000yuan/ha). Now we have similar magnitudes between y1 and y2.

  2. The first interesting experiment is to find lower and upper bounds on y1 and y2. Lower bound is zero, upper bounds are to be determined by an LP. So 2 LPs need to be solved.

  3. Use a weighted objective and form:

    min z = w*y1 - (1-w)*y2
    subject to constraints
    

    Vary w (0.1,0.2,...,0.9) and solve. From 2. we know w=0 and w=1 already. Draw a picture of y1 vs y2 for each w. That is your efficient curve.

Erwin Kalvelagen
  • 15,677
  • 2
  • 14
  • 39
  • I finished the step 1 (original data updated). And for the step 2, the upper bounds for y1 is **19266669.5**, for y2 is **52575341.065**; the lower bounds for both are **0**. But I don't know how to conduct step 3, especially the picture part. Maybe if any packages can be recommended? Thank you! – Chouette Jul 23 '22 at 23:37
  • Plotting points (scatter plot) in R is a **basic step**. If you don't know how to do that, I suggest to stop and first learn the basics of R. – Erwin Kalvelagen Jul 23 '22 at 23:41
  • OK! I'll try to learn it. Thank you anyway! – Chouette Jul 23 '22 at 23:42
  • Because you said that you want to maximize y2. I was hoping that would be obvious. – Erwin Kalvelagen Jul 24 '22 at 00:18