使用 OR-Tools 表达多变量约束

Expressing multi variable constraints using OR-Tools

我正在探索 Google 的 Cp-SAT 来模拟特定类型的约束,如下所示:

限制条件:

变量 X 可以取值 1、2 和 3
变量 Y 可以取值 2、3 和 4
变量 Z 可以取值 5、6 和 7
当变量X值为1时,那么Y只能取3或4
当变量Y值为3时,则Z只能取7

给定变量 Y 值为 3 而 Z 值不是 7,找出 X 和 Z 的可能值。

我无法使用 Google 的 CP-SAT java 接口对其进行建模。有人可以帮忙吗?

我研究了以下示例,但仍然无法弄清楚: https://github.com/google/or-tools/blob/stable/ortools/linear_solver/samples/LinearProgrammingExample.java

https://github.com/google/or-tools/blob/stable/ortools/linear_solver/samples/SimpleMipProgram.java

您正在混合求解器(CP-SAT 接口和线性求解器接口)。

您应该看看 CP-SAT 求解器,尤其是在这个约束条件下:

http://google.github.io/or-tools/java/classcom_1_1google_1_1ortools_1_1sat_1_1CpModel.html#a07c24a31bdfe0db93e53fbf38655f200

请先阅读介绍性文档:

https://developers.google.com/optimization/cp

和简单食谱列表

https://github.com/google/or-tools/blob/stable/ortools/sat/doc/README.md