gpt4 book ai didi

mathematical-optimization - cplex boolVarArray 给出 double 值

转载 作者:行者123 更新时间:2023-12-04 08:44:35 24 4
gpt4 key购买 nike

我一直在尝试使用 CPLEX Java 实现 ILP,但长期以来一直被一个问题所困。以下是 ILP 的几个变量:

IloIntVar above = new IloIntVar[numRect][];
IloIntVar below = new IloIntVar[numRect][];
IloIntVar left = new IloIntVar[numRect][];
IloIntVar right = new IloIntVar[numRect][];

for (int i = 0; i < numRect; i++) {
above[i] = cplex.boolVarArray(numRect);
below[i] = cplex.boolVarArray(numRect);
left[i] = cplex.boolVarArray(numRect);
right[i] = cplex.boolVarArray(numRect);
}

numRect 的值为 1。在程序结束时,我输出这些值:

for (int i = 0; i < numRect; i++) {
for (int j = i + 1; j < numRect; j++) {
System.out.println(cplex.getValue(left[i][j]));
System.out.println(cplex.getValue(right[i][j]));
System.out.println(cplex.getValue(above[i][j]));
System.out.println(cplex.getValue(below[i][j]));
System.out.println(cplex.getValue(left[i][j]) +
cplex.getValue(right[i][j]) +
cplex.getValue(above[i][j]) +
cplex.getValue(below[i][j]));
}
}

这是我得到的输出:

0.0
0.0
9.313225750491594E-10
0.9999999990686774
1.0

我不明白为什么我得到的是 double 值而不是 bool 值。任何帮助,将不胜感激。谢谢。

最佳答案

IloBoolVar 只是一个限制为 0 或 1 的 IloNumVar。默认情况下,0 或 1 的 0.00001 范围内的任何值都被视为整数。您可以通过设置参数 EpInt 来更改它.该参数可以设置为零,但您会引发性能问题。对值进行四舍五入是最佳做法。事实上,无论何时处理 float ,都需要注意此类舍入问题。

关于mathematical-optimization - cplex boolVarArray 给出 double 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17558514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com