Как я могу гарантировать, что 2-й индекс моей двоичной переменной решения равен в каждом решении? - PullRequest
0 голосов
/ 16 июня 2019

У меня есть двоичная переменная решения x[l][c][f].F может варьироваться от 1 до 6.Теперь я хочу, чтобы f было равным в каждом решении.Поэтому всякий раз, когда двоичная переменная равна 1, f должно быть одинаковым (1-6) для всех ненулевых двоичных переменных.Таким образом, в решении каждый x имеет одинаковый индекс для f.

Range F = 1..6;

Range L = 1..28;

Range C = 1..6;

dvar boolean x[L][C][F];  // bin decision variable equal to 1 if line l is jused with c carriages at a frequency of f

Forall (l in L, c in C, f in F)
(x[l][c][f]==1) => ??

1 Ответ

1 голос
/ 16 июня 2019

Может

range F = 1..6;

range L = 1..28;

range C = 1..6;

dvar boolean x[L][C][F]; // bin decision variable equal to 1 if line l is jused with c carriages at a frequency of f

subject to
{
forall (l in L, c in C) sum(f in F) x[l][c][f]==1 ;
}

помощь?

Или с вашим комментарием?

range F = 1..6;

range L = 1..28;

range C = 1..6;


dvar boolean x[L][C][F]; // bin decision variable equal to 1 if line l is jused with c carriages at a frequency of f
dvar int nbFrequencyUsed[F];

subject to
{
forall(f in F) nbFrequencyUsed[f]==sum (l in L, c in C) x[l][c][f];
1>=sum(f in F) (nbFrequencyUsed[f]>=1);
}
...