任何人都可以帮我解释为什么代码是不同的结果
Can anyone help me explain why the code are different results
下面有一个代码示例,谁能帮我解释一下为什么结果不同
int : m=3;
int : n=2;
array[1..m,1..n] of int: va=[|1,2|
3,4|
5,6|];
array [1..m,1..n] of var int : val;
constraint forall(i in 1..m,j in 1..n )( i<2->val[i,j]=va[i,j]+1 );
constraint forall(i in 1..m,j in 1..n )( i>=2->val[i,j]=va[i,j]+3 );
output [ show(val) ];
int : m=3;
int : n=2;
array[1..m,1..n] of int: va=[|1,2|
3,4|
5,6|];
array [1..m,1..n] of var int : val;
constraint forall(i in 1..m,j in 1..n )( i>=2->val[i,j]=va[i,j]+3 /\ i<2->val[i,j]=va[i,j]+1 );
output [ show(val) ];
我是否可以在一个约束中编写此逻辑?
在你的第二个模型中,两个含义 (->
) 和连词 (/\
) 绑定不同,然后使用两个 constraint
部分。
以下给出与模型 1 相同的结果。请注意含义周围的括号:
int : m=3;
int : n=2;
array[1..m,1..n] of int: va=[|1,2|
3,4|
5,6|];
array [1..m,1..n] of var int : val;
constraint forall(i in 1..m,j in 1..n )( (i>=2->val[i,j]=va[i,j]+3) /\
(i<2->val[i,j]=va[i,j]+1) );
output [ show(val) ];
现在两个模型输出:
[2, 3, 6, 7, 8, 9]
----------
==========
下面有一个代码示例,谁能帮我解释一下为什么结果不同
int : m=3;
int : n=2;
array[1..m,1..n] of int: va=[|1,2|
3,4|
5,6|];
array [1..m,1..n] of var int : val;
constraint forall(i in 1..m,j in 1..n )( i<2->val[i,j]=va[i,j]+1 );
constraint forall(i in 1..m,j in 1..n )( i>=2->val[i,j]=va[i,j]+3 );
output [ show(val) ];
int : m=3;
int : n=2;
array[1..m,1..n] of int: va=[|1,2|
3,4|
5,6|];
array [1..m,1..n] of var int : val;
constraint forall(i in 1..m,j in 1..n )( i>=2->val[i,j]=va[i,j]+3 /\ i<2->val[i,j]=va[i,j]+1 );
output [ show(val) ];
我是否可以在一个约束中编写此逻辑?
在你的第二个模型中,两个含义 (->
) 和连词 (/\
) 绑定不同,然后使用两个 constraint
部分。
以下给出与模型 1 相同的结果。请注意含义周围的括号:
int : m=3;
int : n=2;
array[1..m,1..n] of int: va=[|1,2|
3,4|
5,6|];
array [1..m,1..n] of var int : val;
constraint forall(i in 1..m,j in 1..n )( (i>=2->val[i,j]=va[i,j]+3) /\
(i<2->val[i,j]=va[i,j]+1) );
output [ show(val) ];
现在两个模型输出:
[2, 3, 6, 7, 8, 9]
----------
==========