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

sda*_*are 0 java constraint-programming 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

Lau*_*ron 5

您正在混合求解器(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