Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java choco中的复变量_Java_Constraints_Constraint Programming_Choco - Fatal编程技术网

Java choco中的复变量

Java choco中的复变量,java,constraints,constraint-programming,choco,Java,Constraints,Constraint Programming,Choco,如果一个复杂变量满足约束条件,如何签入Choco?例如,如果我有以下配置列表: 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} int[] constraints = new int[]{21, 15, 2, 10, 10}; 是一个约束列表,对于给定的配

如果一个复杂变量满足约束条件,如何签入Choco?例如,如果我有以下配置列表:

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}

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

check if config1[0] < constraints[0] AND config1[1] < constraints[1] AND ... 
检查config1[0]
如果满足所有约束条件,则只需将其标记为解决方案。这就是我所拥有的

// 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();
        }
}
//c=配置数
//q=每个配置中的元件数量
//p=配置矩阵
对于(int i=0;i“CP依赖于变量和约束。您应该首先创建变量,然后对其施加约束。请不要将“约束”称为只是您问题的一些输入的int数组

您可以在这里找到一个简单的choco示例: -
我认为这个hello单词足以满足您的需要。如果您想深入了解,请阅读以下内容:

可能有更好的方法,但您可以创建一个名为config的初始IntVar(绑定在0和配置数之间)。然后为每个元素(elementA、elementB、elementC等)分别设置IntVar

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

if config = 0 then elementA = 20
if config = 0 then elementB = 24
 ...

除此之外,您还可以根据元素添加更多约束以返回您的解决方案。

我的问题是,如何定义约束和变量以使其包含整个配置。例如,如果我的配置有3个元素(a、b、c)和一组约束(x、y、z),除了满足我希望最小化(和最大化)其中一些约束之外,我如何编写