Constraints Minizing:不可满足的平凡等式

Constraints Minizing:不可满足的平凡等式,constraints,minizinc,gecode,Constraints,Minizinc,Gecode,我有以下迷你锌模型: include "globals.mzn"; var 0..9: A_1_1; var 0..9: A_2_1; var 0..9: A_3_1; constraint (A_3_1+A_2_1+A_1_1) = A_1_1; solve satisfy; 该模型应具有平凡解0=A_1_1=A_2_1=A_3_1。然而,Gecode和其他解算器报告这是不可满足的 我忽略了什么?当MiniZin将模型转换为FlatZin格式时,它似乎是一个bug。给出的信息来自Minizi

我有以下迷你锌模型:

include "globals.mzn";
var 0..9: A_1_1;
var 0..9: A_2_1;
var 0..9: A_3_1;
constraint (A_3_1+A_2_1+A_1_1) = A_1_1;
solve satisfy;
该模型应具有平凡解0=A_1_1=A_2_1=A_3_1。然而,Gecode和其他解算器报告这是不可满足的


我忽略了什么?

当MiniZin将模型转换为FlatZin格式时,它似乎是一个bug。给出的信息来自Minizing:

WARNING: model inconsistency detected
test66.mzn:6:
in binary '=' operator expression
生成的Flatzin文件仅包含以下内容:

constraint bool_eq(false,true);
solve  satisfy;
这就是为什么FlatZn溶解剂的产量不令人满意

有趣的是,以下模型使用临时决策变量
T

var 0..9: A_1_1;
var 0..9: A_2_1;
var 0..9: A_3_1;
var 0..9: T;

constraint
    T = A_3_1 + A_2_1 + A_1_1 /\
    T = A_1_1
; 
solve satisfy;
然后,该模型生成所有10个解,其中
A_1_1
的赋值范围为0到9,
A_2_1
=
A_3_1
=0,
T
的赋值范围与
A_1
相同

但是,如果用
A_1_1
初始化
T
,则再次抛出UNSAT:

变量0..9:T=A_1_1

更新:可以注意到以下约束有效,即右侧的
2*A_1_1

constraint A_3_1 + A_2_1 + A_1_1 = 2 * A_1_1;

您的约束似乎试图使用赋值运算符,但该操作可能无效。您可以尝试a=b+c,但b+c=a可能不被允许。或者,您可以尝试使用equality==运算符来定义应该起作用的约束。我没有安装验证程序,但希望它能让您对这个问题有更多的了解。如果有bug,我也不会感到惊讶,我很想知道。

谢谢。我已经提交了一份错误报告。