在 MiniZinc 中打印数组的一部分
Printing part of an array in MiniZinc
我有一个 wolf-goat-cabbage 的 MiniZinc 模型,其中我将每个实体的位置存储在它自己的数组中,例如,array[1..max] of Loc: wolf
,其中 Loc
被定义为一个枚举:enum Loc = {left, rght};
和 max
是所需的最大可能步数,例如 20..
为了找到最短计划,我定义了一个变量 var 1..max: len;
并将结束状态限制在步骤 len
。
constraint farmer[len] == left /\ wolf[len] == left /\ goat[len] == left /\ cabbage[len] == left
那我要
solve minimize len
我都答对了。
我想显示来自 1..len,
的数组,但我找不到实现它的方法。例如,当我尝试在输出中包含:
[ "\(wolf[n]), " | n in 1..max where n <= len ]
我收到一条错误消息,提示我无法显示 opt string
.
的数组
有没有办法只显示数组的初始部分,其中初始部分的长度由模型确定?
谢谢。
您是否尝试像 n <= fix(len)
一样修复输出语句中的 len 变量?。另见 What is the use of minizinc fix function?
我有一个 wolf-goat-cabbage 的 MiniZinc 模型,其中我将每个实体的位置存储在它自己的数组中,例如,array[1..max] of Loc: wolf
,其中 Loc
被定义为一个枚举:enum Loc = {left, rght};
和 max
是所需的最大可能步数,例如 20..
为了找到最短计划,我定义了一个变量 var 1..max: len;
并将结束状态限制在步骤 len
。
constraint farmer[len] == left /\ wolf[len] == left /\ goat[len] == left /\ cabbage[len] == left
那我要
solve minimize len
我都答对了。
我想显示来自 1..len,
的数组,但我找不到实现它的方法。例如,当我尝试在输出中包含:
[ "\(wolf[n]), " | n in 1..max where n <= len ]
我收到一条错误消息,提示我无法显示 opt string
.
有没有办法只显示数组的初始部分,其中初始部分的长度由模型确定?
谢谢。
您是否尝试像 n <= fix(len)
一样修复输出语句中的 len 变量?。另见 What is the use of minizinc fix function?