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,我也不会感到惊讶,我很想知道。谢谢。我已经提交了一份错误报告。