param kotlety; # rodzaje kotletów param indyk; # rodzaje indyków param mieso; # rodzaje mięs param cenai {1..indyk}; param cenak {1..kotlety}; param popyt {1..kotlety}; param zawartosck {1..kotlety, 1..mieso}; param zawartoscm {1..indyk, 1..mieso}; var lindyk {1..indyk}, integer >= 0; # liczba indyków var mbck {1..kotlety, 1..mieso}; # ilość mięsa w kotlecie danego typu maximize z: sum{i in 1..kotlety} cenak[i] * sum{j in 1..mieso} mbck[i,j] - sum{k in 1..indyk} cenai[k] * lindyk[k]; # i sumuje po typach kotletów, natomiast j po typach mięsa popytowe{i in 1..kotlety}: sum {j in 1..mieso} mbck[i, j] <= popyt[i]; zawartosciowe{i in 1..kotlety}: sum {j in 1..mieso} mbck[i,j] * zawartosck[i,j] <= mbck[i,1]; bilansowe{j in 1..mieso}: sum {k in 1..indyk} zawartoscm[k, j] * lindyk[k] >= sum {i in 1..kotlety} mbck[i,j]; solve; display z; data; param kotlety:=2; param indyk:=2; param mieso:=2; param cenai:=1 10 2 8; param cenak:=1 8 2 6; param popyt:=1 50 2 30; param zawartosck: 1 2:= 1 0.7 0 # kotlet 1 mieso biale, mieso ciemne 2 0.6 0; # kotlet 2 mieso biale, mieso ciemne param zawartoscm: 1 2:= 1 2 2 2 1.5 1.5; end; ________________ var indyk1 >= 0 integer; var indyk2 >= 0 integer; var mb1 >= 0; var mb2 >= 0; var mc1 >= 0; var mc2 >= 0; maximize z: 8*(mb1 + mc1) + 6*(mb2 + mc2) - 10*indyk1 - 8*indyk2; kotlet1: 0.7*(mb1+mc1) <= mb1; kotlet2: 0.6*(mb2+mc2) <= mb2; popyt1: mb1 + mc1 <= 50; popyt2: mb2 + mc2 <= 30; mieso1: mb1 + mb2 <= 2*indyk1 + 1.5*indyk2; mieso2: mc1 + mc2 <= 2*indyk1 + 1.5*indyk2; solve; display z, indyk1, indyk2, mb1+mc1, mb2+mc2; end; ___________________ var mb1>=0; var mb2>=0; var mc1>=0; var mc2>=0; var i1>=0, integer; var i2>=0, integer; maximize z: 8*(mb1+mc1)+6*(mb2+mc2)-10*i1-8*i2; popytK1: mb1+mc1<=50; popytK2: mb2+mc2<=30; K1: mb1>=0.7*(mb1+mc1); K2: mb2>=0.6*(mb2+mc2); indyk1: mb1+mb2<=2*i1+1.5*i2; indyk2: mc1+mc2<=2*i1+1.5*i2; solve; display z,i1,i2; end; ________________________ var MB1>=0; var MB2>=0; var MC1>=0; var MC2>=0; var I1>=0 integer; var I2>=0 integer; maximize Zysk: 8*(MB1+MC1)+6*(MB2+MC2)-(10*I1+8*I2); popytK1: MB1+MC1<=50; popytK2: MB2+MC2<=30; strukturaK1: MB1>=0.7*(MB1+MC1); strukturaK2: MB2>=0.6*(MB2+MC2); Indyk1: MB1+MB2<=(2*I1+1.5*I2); Indyk2: MC1+MC2<=(2*I1+1.5*I2); solve; display Zysk,I1,I2; end; ____________________________ param n; #liczba produkt?w param m; #liczba (ograniczonych) zasob?w wykorzystywanych do produkcji tych produkt?w param c {1..n};#ceny (zyski) jednostkowe na produkcie param a{1..m,1..n}; #ilos? zasobu na jednostk? produktu param d{1..n}; #zapotrzebowanie na produkty param z{1..m}; #dost?pne zasoby var x{1..n}, integer >=0; maximize zysk: sum{j in 1..n}c[j]*x[j]; subject to tv{j in 1..n}: x[j] <= d[j]; limitzasob{i in 1..m}: sum{j in 1..n}a[i,j]*x[j]<= z[i]; solve; display zysk, sum{j in 1..n}c[j]*x[j],x; data; param n:=2; param m:=1; param c:=1 120 2 80; param a: 1 2 := 1 20 10; param d:= 1 20 2 40; param z:= 1 500; end; _______________________ param a{1..2,1..6}>=0; var x{1..6}>=0 integer; maximize liczbapuszek: sum{j in 1..6} a[2,j]*x[j]; bl5: sum{i in 1..3}x[i]<=19000; bl8: sum{j in 4..6}x[j]<=21000; lp: sum{j in 1..6}a[1,j]*x[j]>=2*sum{j in 1..6}a[2,j]*x[j]; solve; display liczbapuszek, x; data; param a: 1 2 3 4 5 6:= 1 70 15 10 30 20 0 2 0 20 30 25 30 50; end; _________________________ param c{1..2}; #ceny (zyski) jednostkowe na produkcie param a{1..2}; #ilos? zasobu na jednostk? produktu param d{1..2}; #zapotrzebowanie na produkty param z{1..1}; #dost?pne zasoby var x1, integer >=0; var x2, integer >=0; maximize zysk: c[1]*x1+c[2]*x2; subject to #opcjonalne tv27: x1 <= d[1]; tv20: x2 <= d[2]; limitzasob: a[1]*x1+a[2]*x2<= z[1]; solve; display zysk, x1, x2; data; param c:=1 120 2 80; param a:= 1 20 2 10; param d:= 1 20 2 40; param z:= 1 500; end; ___________________ param a{1..2,1..6}>=0; var x{1..6}>=0 integer; maximize liczbapuszek: sum{j in 1..6} a[2,j]*x[j]; bl5: sum{i in 1..3}x[i]<=19000; bl8: sum{j in 4..6}x[j]<=21000; lp: sum{j in 1..6}a[1,j]*x[j]>=2*sum{j in 1..6}a[2,j]*x[j]; solve; display liczbapuszek, x; data; param a: 1 2 3 4 5 6:= 1 70 15 10 30 20 0 2 0 20 30 25 30 50; end;