【发布时间】:2018-12-05 16:13:01
【问题描述】:
我有一个 minizinc 模型,其中有一个距离矩阵:
array[1..n, 1..n] of var float: dist;
这将输出错误Error: Gecode: Float::linear: Number out of limits。如果我尝试使用solve minimize sum(i,j in 1..n)(dist[i,j]); 最小化矩阵(实际上代码更复杂)。下限对我来说很清楚。距离矩阵中的任何值都不能小于零。然而,用下限制定一个约束是行不通的:
constraint forall(i,j in 1..n)(dist[i,j] >= 0.0);
缩小域会起作用。但是我不能提前说域的上限是多少(对于下面的代码,我只取了一个很大的数字,在某些情况下可能太小了):
array[1..n, 1..n] of var 0.0..1000000.0: dist;
是否有可能只定义下限?
我使用 Minizinc 2.2.1 和地理编码 6.0.1。
【问题讨论】:
-
您收到的错误信息到底是什么?我用 MiniZinc 2.2.1(用 Gecode 求解)运行了模型:
int: n = 3; array[1..n, 1..n] of var float: dist; constraint forall(i,j in 1..n)(dist[i,j] >= 0.0); solve satisfy;,得到了没有错误消息的结果。 -
谢谢@AndreaRendl-Pitrey 我已经澄清了这个问题。我把我的例子简化得太多了。