Minizinc `微量锌的全差分法
以下是我试图在Minizing中实现的约束Minizinc `微量锌的全差分法,minizinc,Minizinc,以下是我试图在Minizing中实现的约束 all约束(t在卡车中) (顺序[t,c]!=0的客户中的c)(顺序[t,c]); 也就是说,当序列值不等于0时,我希望序列矩阵的每个行元素都不同 并且得到了错误 minizin:类型错误:找不到具有此签名的函数或谓词:全部不同(var opt int的数组[int]) 正如其他一些线程所指出的,我添加了包括“alldifferent.mzn”命令,仍显示该错误 这是作业的一部分,很抱歉无法将我的所有代码推送到这里,如果需要任何额外信息,请告诉我。为
all约束(t在卡车中)
(顺序[t,c]!=0的客户中的c)(顺序[t,c]);
也就是说,当序列
值不等于0时,我希望序列
矩阵的每个行元素都不同
并且得到了错误
minizin:类型错误:找不到具有此签名的函数或谓词:全部不同(var opt int的数组[int])
正如其他一些线程所指出的,我添加了包括“alldifferent.mzn”代码>命令,仍显示该错误
这是作业的一部分,很抱歉无法将我的所有代码推送到这里,如果需要任何额外信息,请告诉我。为了清楚地了解您正在做什么,您可以用不同的方式编写表达式:
all_different([sequence[t,c] | c in customers where sequence[c,t] != 0])
注意,这使用数组理解。这些很好地表达了很多东西,但是如果序列
是一个变量数组,那么这个理解中的变量数是未知的。这对许多解决者来说是一个大问题。因此,他们中的许多人并不支持。
使用所有不同的
谓词至少是不可能的
然而,您的问题是众所周知的,因此可以使用不同的谓词。可以用以下方式表达相同的约束:
for(t in trucks) (
alldifferent_except_0([sequence[c,t] | c in customers])
)