Minizinc `微量锌的全差分法

Minizinc `微量锌的全差分法,minizinc,Minizinc,以下是我试图在Minizing中实现的约束 all约束(t在卡车中) (顺序[t,c]!=0的客户中的c)(顺序[t,c]); 也就是说,当序列值不等于0时,我希望序列矩阵的每个行元素都不同 并且得到了错误 minizin:类型错误:找不到具有此签名的函数或谓词:全部不同(var opt int的数组[int]) 正如其他一些线程所指出的,我添加了包括“alldifferent.mzn”命令,仍显示该错误 这是作业的一部分,很抱歉无法将我的所有代码推送到这里,如果需要任何额外信息,请告诉我。为

以下是我试图在Minizing中实现的约束

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])
)