Как определить этот тип переменных решения в CPLEX - PullRequest
0 голосов
/ 03 мая 2018

Я новичок в CPLEX, мне интересно, как определить переменные решения, такие как xijk, но только те, которые имеют индекс i < j или i ≠ j, используя OPL.

Код похож на

int jobsNum = ...;
int machinesNum = ...;

range jobs = 0..jobsNum-1
range machines = 0..machinesNum-1;

dvar boolean x[jobs][jobs][machines];

x[jobs][jobs][machines] - это относительная последовательность обработки задания i и задания j на машине k, но если я скажу это так, то появятся некоторые избыточные переменные, поэтому мне интересно, могу ли я написать что-то вроде

dvar boolean x[i in jobs][j in jobs: j < i][machines];

1 Ответ

0 голосов
/ 03 мая 2018

позвольте мне привести пример

int jobsNum = 3;
int machinesNum = 4;

range jobs = 0..jobsNum-1;
range machines = 0..machinesNum-1;

tuple t
{
int i;
int j;
}

{t} transitions={<i,j> | ordered i,j in jobs};

dvar boolean x[transitions][machines];

subject to
{
x[<1,2>][1]==1;
}
...