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的新手,我找不到足够的材料来帮助我 “啊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
您的模型的问题是
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]);