我有一个典型的约束问题:
对于 10 个变量 x_1,x_2,... x_10 找到变量的值分配,其中值来自域 [1,2...1000]。
但是,我的约束是以下形式的嵌套逻辑表达式: (x_1 = 4 且 x_2 = 5) 或 (x_1 = 2 且 x_2 = 7) 或 ... (x_1 = 22 且 x_3 = 1)
本质上,每对变量都有一组可能的赋值。 这同样适用于所有变量三元组和四元组。
我的问题是:我应该在这里使用什么样的约束求解器?有没有更有效的方法来解决这种分配问题?我担心 AND 子句的数量会非常大,并且求解器将无法利用变量的任何数值属性,因为实际上没有任何数值属性。谢谢!
解决问题的最简单方法可能是使用 OR-Tools CP-SAT 求解器。 我不会担心限制的数量。该求解器可以轻松处理大规模问题。