Я новичок в amp и пытаюсь решить две подзадачи в линейном программировании одновременно, затем проверяю, чья целевая функция (z) является более отрицательной, и принимаю ее значение в качестве входных данных на следующем шаге с другим ограничить и повторять все это, пока z не будет положительным.
Решатель, которым я пользуюсь - это gurobi
### SUBPROBLEM_1 sub1.mod###
param m;
param n;
param c{1..n};
param b{1..m};
param a{1..m,1..n};
var x{1..n}>=0;
minimize z: sum{j in 1..n}c[j]*x[j];
subject to restr{i in 1..m}:
sum{j in 1..n}a[i,j]*x[j]<=b[i];
### sub1.dat ###
param n := 2;
param m := 2;
param c := 1 -90 2 -80;
param b := 1 12 2 10;
param a : 1 2 :=
1 3 1
2 2 1;
### sub1.run ###
model sub1.mod;
data sub1.dat;
option solver gurobi_ampl;
solve;
display z, x;
Эта подзадача дает мне z = -800, что правильно, и точно так же решается подзадача 2.