2

我正在使用 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

4

1 回答 1

1

首先,当您进行搜索时,您应该检查搜索的结果(真/假)。如果结果为假,则模型不一致并且存储处于未定义状态。你的问题可能就是这种情况。

于 2016-08-05T12:57:32.313 回答