【问题标题】:Constraint Programming Solver JaCoP solution found but store inconsistent找到约束编程求解器 JaCoP 解决方案但存储不一致
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 你的意思是搜索后检查labeling的返回值吗?我正在这样做,返回值为true。还是您的意思不同?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多