A
Exercise 1
xi
H M L
yj , yj , yj
zj
= liters of row material i used
= liters of chemical of level H, M and L used for final product j
= liters of final product j
min
n
X
ci xi −
i=1
n
X
m
X
rj zj
(1)
j=1
xi ≤ C,
(2)
i=1
n
X
`i xi ≥
i=1
n
X
i=1
n
X
yjL
(3)
yjM
(4)
yjH
(5)
j=1
mi xi ≥
i=1
n
X
m
X
hi xi ≥
m
X
j=1
m
X
j=1
`i xi >= QL
(6)
mi xi >= QM
(7)
i=1
n
X
i=1
n
X
zj = yjL +
hi xi
i=1
yjM + yjH
>= QH
(8)
j = 1, 2, . . . , m,
(9)
yjL ≥ mLj zj
yjL ≤ M Lj zj
yjL ≥ mMj zj
j = 1, 2, . . . , m,
(10)
j = 1, 2, . . . , m,
(11)
j = 1, 2, . . . , m,
(12)
yjL
j = 1, 2, . . . , m,
(13)
≤ M Mj zj
0 ≤ xi
L M H
yj , yj yj
≤ ai
i = 1, 2, . . . , n,
(14)
≥0
j = 1, 2, . . . , m,
(15)
zj ≥ dj
j = 1, 2, . . . , m,
(16)
Additional constraint
δ = 1 if the quantity chemical of Medium level is grater than Q
H
z ,z
M
= liters of chemical of level H and M produced
zM =
m
X
yjM
(17)
yjH
(18)
z H ≥ αz M − M(1 − δ)
(19)
zH =
j=1
m
X
j=1
M
≥ Qδ
(20)
z M ≤ Q + Mδ
(21)
z
Exercise 2
/* number of raw materials */
param n, integer, > 0;
/* number of final products */
param m, integer, > 0;
set FINAL_PRODUCT := 1..m;
set RAW_MATERIAL := 1..n;
/* quantity of raw material available */
param a{i in RAW_MATERIAL}, >= 0;
/* percentage of raw material going in the low level */
param lperc{i in RAW_MATERIAL}, >= 0;
/* percentage of raw material going in the medium level */
param mperc{i in RAW_MATERIAL}, >= 0;
/* percentage of raw material going in the high level */
param hperc{i in RAW_MATERIAL}, >= 0;
/* Capacity of the tower */
param C, >= 0;
/* minimum quantities required */
param QL, >= 0;
param QM, >= 0;
param QH, >= 0;
/* final products demand */
param d{j in FINAL_PRODUCT}, >= 0;
/* minimum percentage of chemical low in final products */
param mL{j in FINAL_PRODUCT}, >= 0;
/* minimum percentage of chemical medium in final products */
param mM{j in FINAL_PRODUCT}, >= 0;
/* maximunm percentage of chemical low in final products */
param ML{j in FINAL_PRODUCT}, >= 0;
/* maximum percentage of chemical medium in final products */
param MM{j in FINAL_PRODUCT}, >= 0;
/* cost of raw material */
param c{i in RAW_MATERIAL}, >= 0;
/* revenue of products */
param r{j in FINAL_PRODUCT}, >= 0;
var x{i in RAW_MATERIAL}, >= 0;
var zL, >= 0;
var zM, >= 0;
var zH, >= 0;
var yL{j in FINAL_PRODUCT}, >= 0;
var yM{j in FINAL_PRODUCT}, >= 0;
var
var
yH{j in FINAL_PRODUCT}, >= 0;
z{j in FINAL_PRODUCT}, >= 0;
maximize zz:
sum{j in FINAL_PRODUCT} r[j]*z[j] - sum{i in RAW_MATERIAL} c[i]*x[i];
s.t.
capacity: sum {i in RAW_MATERIAL} x[i] <= C;
balanceL: sum{i in RAW_MATERIAL} lperc[i]*x[i] >= sum{j
balanceM: sum{i in RAW_MATERIAL} mperc[i]*x[i] >= sum{j
balanceH: sum{i in RAW_MATERIAL} hperc[i]*x[i] >= sum{j
minL: sum{j in FINAL_PRODUCT} yL[j] >= QL;
minM: sum{j in FINAL_PRODUCT} yM[j] >= QM;
minH: sum{j in FINAL_PRODUCT} yH[j] >= QH;
final_prod{j in FINAL_PRODUCT}: z[j] = yL[j] + yM[j] +
minpercentL{j in FINAL_PRODUCT}: yL[j] >= mL[j]*z[j];
minpercentM{j in FINAL_PRODUCT}: yM[j] >= mM[j]*z[j];
maxpercentL{j in FINAL_PRODUCT}: yL[j] <= ML[j]*z[j];
maxpercentM{j in FINAL_PRODUCT}: yM[j] <= MM[j]*z[j];
rawmaterial{i in RAW_MATERIAL}: x[i] <= a[i];
demand{j in FINAL_PRODUCT}: z[j] >= d[j];
solve;
printf "\n";
printf "\nRaw material
= ";
printf{i in RAW_MATERIAL} "%5.1f ", x[i];
printf "\n";
printf "\nFinalProduct
= ";
printf{j in FINAL_PRODUCT} "%5.1f ", z[j];
printf "\n";
printf "\nChem. L in final = ";
printf{j in FINAL_PRODUCT} "%5.1f ", yL[j];
printf "\n";
printf "\nChem. M in final = ";
printf{j in FINAL_PRODUCT} "%5.1f ", yM[j];
printf "\n";
printf "\nChem. H in final = ";
printf{j in FINAL_PRODUCT} "%5.1f ", yH[j];
printf "\n\nOptimal value = %g\n\n",zz;
data;
param
param
param
param
param
param
param
param
param
param
param
param
param
param
param
param
param
end;
n := 2;
m := 4;
a:= 1 200 2 250;
lperc:= 1 0.2 2 0.4;
mperc:= 1 0.5 2 0.3;
hperc:= 1 0.3 2 0.3;
C:= 400;
QL := 50;
QM := 70;
QH := 60;
d:= 1 50 2 30 3 40 4 45;
mL:= 1 0.2 2 0.3 3 0.2 4
mM:= 1 0.2 2 0.3 3 0.2 4
ML:= 1 0.4 2 0.5 3 0.3 4
MM:= 1 0.4 2 0.5 3 0.5 4
c:= 1 10 2 12;
r:= 1 20 2 24 3 15 4 18;
0.25;
0.25;
0.6;
0.6;
in FINAL_PRODUCT} yL[j];
in FINAL_PRODUCT} yM[j];
in FINAL_PRODUCT} yH[j];
yH[j];
Exercise 2
min
2x1 + 4x2
2x1 − 5x2 ≤ 1
5x1 − 3x2 ≥ 10
x1, x2 ≥ 0
Using the dual simplex
x1
2
2
x2
4
-5
x3
0
1
x4
0
0
x5
0
0
0
1
−z
x3
-5
3
0
1
0
-10
x4
x1
0
x2
x3
0
x4
2
5
x5
0
-4
−z
0
1
− 19
5
− 35
1
0
2
5
− 15
0
0
-3
2
x3
x1
x1
0
x2
0
x3
x4
x5
0
− 154
19
−z
15
19
47
19
x2
26
5
0
1
1
0
min
26
19
5
− 19
3
− 19
18
19
2
− 19
5
− 19
0
0
x1
x1 = 47/19
x2 = 15/19
zP = 154/19
max −u1 + 10u2
2x1 + 4x2
2x1 − 5x2 ≤ 1
−2u1 + 5u2 ≤ 2
5x1 − 3x2 ≥ 10
5u1 − 3u2 ≤ 4
x1, x2 ≥ 0
u1 , u2 ≥ 0
Both the primal constraints are saturated in the optimal solution : conditions (Ax − b)uT = 0
do not give information. In the optimal primal solution x1 and x2 are strictly positive, so
−2u1 +5u2 = 2
u1 = 26/19 u2 = 18/19
⇒
5u1 −3u2 = 4
zD = 154/19 = zP
© Copyright 2026 Paperzz