Как решить две подзадачи одновременно в amp и взять в качестве входных данных результат следующей итерации - PullRequest
0 голосов
/ 05 июля 2019

Я новичок в 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.

...