首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >choco中的复杂变量

choco中的复杂变量
EN

Stack Overflow用户
提问于 2017-09-21 23:02:33
回答 2查看 90关注 0票数 0

如果复数变量满足约束,如何在Choco中检查?例如,如果我有以下配置列表:

代码语言:javascript
复制
int[][] configurations = new int[][] {
        {20, 24, 10, 3, 4},  
        {20, 13, 1, 3, 4}};

其中config1 = {20,24,10,3,4},config2 = {20,13,1,3,4}

代码语言:javascript
复制
int[] constraints = new int[]{21, 15, 2, 10, 10};

是一个约束列表,对于给定的配置,配置中的每个元素都需要高于(或低于)对应的约束。例如: config1 = {20,24,10,3,4}约束= {21,15,2,10,10}

代码语言:javascript
复制
check if config1[0] < constraints[0] AND config1[1] < constraints[1] AND ... 

如果所有的约束都满足了,那么只需将其标记为解决方案。这就是我的东西

代码语言:javascript
复制
// c = number of configurations
// q = number of elements in each configuration
// p = configurations matrix

for (int i = 0; i < c; i++) {
        for (int j = 0; j < q; j++) {
            model.arithm(model.intVar(p[i][j]), "<", model.intVar(k[j])).post();
        }
}
EN

回答 2

Stack Overflow用户

发布于 2017-09-23 22:30:28

CP依赖于变量和约束。您应该先创建变量,然后再对它们进行post约束。请不要调用“约束”一个整数数组,它只是你的问题的一些输入。

你可以在这里找到一个简单的巧克力例子:- https://www.cosling.com/choco-solver/hello-world我认为这个问候词足以满足你的需要。如果你想深入了解,请阅读以下内容:http://choco-tuto.readthedocs.io/en/latest/

票数 1
EN

Stack Overflow用户

发布于 2019-11-06 05:43:01

可能有一种更好的方法可以做到这一点,但您可以创建一个名为IntVar的初始配置(范围在0和配置数量之间)。然后为每个元素(elementA、elementB、elementC等)分隔IntVar。

然后,您可以添加这样的逻辑:

代码语言:javascript
复制
if config = 0 then elementA = 20
if config = 0 then elementB = 24
 ...

最重要的是,您可以根据元素添加进一步的约束以返回您的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46347324

复制
相关文章

相似问题

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