公差对二进制变量的影响?

时间:2019-09-25 19:07:20

标签: constraints cplex opl

我正在使用OPL CPLEX 12.9。 在我的模型中,dvar float +变量会忽略非负条件,并返回值-4.4409e-16。我已经读过这是由于Cplex中的公差所致。这也不会打扰实际过程。它仍将以值0进行计数。但是,它似乎会影响二进制变量。因为同时我的模型中的二进制变量也忽略了它们的约束。 二进制变量无视其约束是不可取的 有可能建立连接,如何避免连接?

1 个答案:

答案 0 :(得分:1)

正如您对问题的评论中所述,这是所有类型变量的预期行为(由于数字舍入)。

如果要增加整数/二进制变量具有精确整数值的机会,可以将CPX_PARAM_EPINT参数(“积分容差”)设置为0。在OPL设置编辑器中,您可以通过Mixed Integer Programming > Tolerances

对于二进制变量,您还可以使用value < 0.5 ? 0 : 1之类的方法将结果显式转换为整数值。