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

Теперь я столкнулся с проблемой, заключающейся в том, что внесение вариации не превышает определенного значения. Подробно опишу ниже.

using CP;

int a = 4;
int b = 3;
int c = 5;

range arange = 1..a;
range brange = 1..b;
range crange = 1..c;

dvar boolean x[a][b][c];
dvar int y[b][c] in 1..4;

В этом случае я пытаюсь вычислить

y[b][c+1] = x[a][b][c] - 1 + y[b][c]; 

Однако все y [e] [t] находятся вОт 1 до 4.

Я имею в виду

, если y [b] [c]> = 4, то y [b] [c] == 4, а если y [b] [c] <= 1, тогда y [b] [c] == 1 </p>

вот так.


Итак, теперь я пытаюсь сделать это

y[b][c+1] == max(min(x[a][b][c] -1 + y[b][c], 4), 1);

но это не работает.

1 Ответ

2 голосов
/ 02 октября 2019

Используйте minl и maxl вместо:

y[b][c+1] == maxl(minl(2 * x[a][b][c] -1 + y[b][c], 4), 1);
...