Mat*_*ias -1 java constraint-programming choco
我想使用Choco 求解器编写一个 Java 程序,该程序生成满足许多约束的数学问题。问题必须采用以下形式:
x @ y ? z = r
Run Code Online (Sandbox Code Playgroud)
在哪里:
x
, y
&z
是正整数,彼此不一定不同,其中一个为 2 位数,另外两个为 1 位数
@
&?
是运算符 +、- 或 *(请注意,两者也可以代表同一个运算符)
? r
是一位正整数
我想“按需”生成这些数学问题(例如,当时一个)并且它们需要随机化(即,生成的问题不应该没有模式或固定顺序)。
自从我做约束(满足)编程以来已经有 10 多年了,但我相信 C(S)P(最好通过 Choco 的方式)是一个适合在这里应用的工具。这是正确的,有人可以帮助我开始吗?
小智 5
您当然可以使用像 choco 这样的 CP 求解器对此类问题进行建模。您需要查看文档和教程以获取更多详细信息,但您需要:
Model
,IntVar
)为x
,y
和z
,IntVar
表达式 API 来简化声明。这样的 API 允许构建算术、逻辑和关系表达式,例如。这是一个简单的例子:
Model model = new Model();
IntVar x = model.intVar(0, 9);
IntVar y = model.intVar(0, 9);
IntVar z = model.intVar(0, 9);
int r = 10;
x.add(y).sub(z).eq(r).post();
model.getSolver().showSolutions(
() -> String.format("%d + %d - %d = %d",
x.getValue(), y.getValue(), z.getValue(), r));
model.getSolver().findAllSolutions();
Run Code Online (Sandbox Code Playgroud)
的方式add
,sub
并mul
结合取决于你选择随机。然后,您可以尝试使用表约束对表达式进行编码,或者让求解器选择。
归档时间: |
|
查看次数: |
465 次 |
最近记录: |