【发布时间】:2023-03-24 22:23:01
【问题描述】:
我正在使用 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
【问题讨论】:
-
一些求解器在某些问题上遇到整数上溢/下溢问题。你可能会碰到这个。
标签: java java-8 constraint-programming jacop