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

Constraints 公差对二进制变量的影响?,constraints,cplex,opl,Constraints,Cplex,Opl,我使用的是OPL CPLEX 12.9。 在我的模型中,dvar float+变量忽略非负性条件并返回值-4.4409e-16。我已经读到这是由于Cplex中的公差造成的。这也不会影响实际过程。它仍将使用值0进行计数。但是,它似乎会影响二进制变量。因为同时我的模型中的二进制变量也忽略了它们的约束。 二进制变量忽略其约束是不可取的 连接是否可能以及如何避免连接?如您问题的注释所述,由于数值舍入,这是所有类型变量的预期行为 如果要增加整型/二进制变量具有精确整数值的几率,可以将参数完整性公差设置为0

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

如您问题的注释所述,由于数值舍入,这是所有类型变量的预期行为

如果要增加整型/二进制变量具有精确整数值的几率,可以将参数完整性公差设置为0。在OPL设置编辑器中,您可以通过混合整数编程>公差执行此操作


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

也许支持文章对我有帮助。我已经读过那篇文章,但我不知道哪篇文章对我有帮助。我不知道如何使用它。我找不到例子。一个如何使用CPX_PARAM_EPRHS IloCplex::EPRHS的示例会很有帮助。要在OPL IDE中设置参数,请参阅文档。可在设置编辑器中的“单纯形>公差”下找到参数“公差”。您可以尝试将其设置为较小的值,例如1e-7。