Minizinc 未满足约束问题

Minizinc 未满足约束问题,minizinc,Minizinc,我有一个索引为[1,2,3,4,5]的数组S[1,4,2,3,0]和索引为[1,2,3,4]的数组O[2,1,1,2],从这两个数组中我必须生成一个索引为[1,2,3,4,5]的数组。当我使用约束forall(1..5中的i)(SO[i]=O[S[i]])运行时;我不满意这个错误,因为O没有索引0。请帮我解决这个问题。我是Minizing的新手,我找不到足够的材料来帮助我 “啊 您的模型的问题是S[5]是0(零),并且没有相应的SO[0] 如果O[0]的值丢失,我不确定您是否认为Minizing

我有一个索引为[1,2,3,4,5]的数组S[1,4,2,3,0]和索引为[1,2,3,4]的数组O[2,1,1,2],从这两个数组中我必须生成一个索引为[1,2,3,4,5]的数组。当我使用约束forall(1..5中的i)(SO[i]=O[S[i]])运行时;我不满意这个错误,因为O没有索引0。请帮我解决这个问题。我是Minizing的新手,我找不到足够的材料来帮助我

“啊


您的模型的问题是
S[5]
0
(零),并且没有相应的
SO[0]

如果
O[0]
的值丢失,我不确定您是否认为Minizing会自动生成
0
,但Minizing要求您明确表示数组中的索引,而不是从1开始

您可以通过在
O
数组中添加索引0(零)以及
array1d
来解决此问题:

array[1..5] of int: S = [1,4,2,3,0];
array[0..4] of int: O = array1d(0..4,[0,2,1,1,2]);  # <---

array[1..5] of var 0..2: SO;

solve satisfy;

constraint forall(i in 1..5) (
                          SO[i] = O[S[i]]
                          );

你能发布完整的迷你锌模型吗?嗯,你评论中的这个模型与你第一次在主要问题中发布的(部分)模型有很大不同。这个模型没有得到与我所看到的相同的错误(似乎是
所有不同的
约束才是罪魁祸首)。请你把你的问题更新为你真正想问的问题好吗?
array[1..5] of int: S = [1,4,2,3,0];
array[0..4] of int: O = array1d(0..4,[0,2,1,1,2]);  # <---

array[1..5] of var 0..2: SO;

solve satisfy;

constraint forall(i in 1..5) (
                          SO[i] = O[S[i]]
                          );
SO = array1d(1..5 ,[2, 2, 1, 1, 0]);