我正在使用JaCoP(Java的约束编程求解器)来计算复杂调度问题的解决方案。现在我面临的问题是找到的解决方案不正确。
我施加了以下约束:
store.impose(new XplusYeqZ(start, duration, cipStart));
完成搜索后,解算器找到了解决方案,但遗憾的是解决方案显然是错误的,违反了上述约束条件。
我在开始搜索之前检查商店与consistency()
的一致性,然后返回true
,但在搜索后返回false
。
我还在搜索后迭代商店的所有约束,如果使用此代码满意则打印:
store.getConstraints().forEach(constraint -> {
System.out.println(constraint.id() + " " + constraint.satisfied());
});
该方法在上面的约束上返回false
。
我的问题是:是否有合理的解释为什么不能为正确的解决方案满足每个约束?我忽略了什么吗?
附录:我使用的是JaCoP 4.4.0
答案 0 :(得分:1)
首先,当你进行搜索时,你应该检查搜索的结果(真/假)。如果结果为false,则模型不一致,并且存储处于未定义状态。你的问题可能就是这种情况。