我怎样才能做出变化限制,不要超过特定值

How can I make a variation limits, do not exceed a specific value

现在我面临一个问题,就是做一个变化不超过一个特定的值。 我会在下面详细描述。

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之间。

我是说

if y[b][c] >= 4, then y[b][c] == 4, and if y[b][c] <= 1, then y[b][c] == 1

就这样。


所以,现在我正在尝试这样做

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

但是没用。

改用minl and maxl

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