choco将int分配给IntVar

时间:2016-04-11 16:55:57

标签: constraints variable-assignment modeling solver choco

对于像

这样的变量数组
IntVar[][] array = VF.boolMatrix("example", 5, 10, solver);

之间有什么区别
solver.post(ICF.arithm(array[i][j], "=", 0));

array[i][j] = VariableFactory.fixed(0, solver);

就例如,一个优于另一个。需要更少的空间,更快的解决,更少的回溯?

1 个答案:

答案 0 :(得分:0)

array [i] [j] = VariableFactory.fixed(0,solver);更有效,因为固定视图消耗的内存较少(对于BoolVar而言不是很大的差异,但对于依赖于BitSet列表域实现的IntVar来说却是如此)并且它避免了创建无用的约束。这些元素非常小,但乘以10000时,它可以在运行时产生差异。此外,它们被缓存:如果两个视图具有相同的值,则实际上只创建一个新对象。但是,回溯数将保持不变(除非搜索启发式基于随机性或约束数等)。

最佳,

Jean-Guillaume Fages https://www.cosling.com/