首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用choco求解器求解方程

使用choco求解器求解方程
EN

Stack Overflow用户
提问于 2016-02-29 06:01:00
回答 1查看 477关注 0票数 0

我正在寻找一种方法来编码在巧克力解算器上的数学方程。我看到有一种对约束进行编码的方法,比如:

X+y<9

但我正在尝试编码如下内容

3x + 4y <9

其中x和y是整型变量。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2016-03-03 00:20:15

我对Choco也是新手,但我可以解决这个问题。

为此,您可以使用约束scalar (请参阅docs)。

首先,您只需要在两个IntVar变量中定义xy。您可以使用VariableFactory.boundedVariable.enumerated。当您只想使用具有下限和上限的域时,它们非常相似,但区别在user guide中进行了解释。

然后,您需要使用等式的系数定义一个数组,在本例中为{ 3, 4 }

下面是你如何做到这一点:

代码语言:javascript
运行
复制
Solver solver = new Solver();

IntVar x = VariableFactory.bounded("x", 0, 50, solver);
IntVar y = VariableFactory.bounded("y", 0, 50, solver);

int[] coefficients = new int[]{ 3, 4 };

solver.post(IntConstraintFactory.scalar(new IntVar[]{ x,  y }, coefficients, "<", VariableFactory.fixed(9, solver)));

if (solver.findSolution()) {
    do {
        System.out.println("x = " + x.getValue() + ", y = " + y.getValue());
    } while (solver.nextSolution());
} else {
    System.out.println("The equation has no solutions.");
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35688831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档