Cplex LP模型解中随机出现4e^-14等残值:如何去除?

Residual values such as 4e^-14 randomly appearing in Cplex LP model solution: How can I get rid of them?

虽然我在 Cplex 中的线性规划模型的结果似乎有意义,但 q 变量有时随机(至少对我来说它看起来是随机的)显示微小的值,例如 4e^-14。这对决策变量没有影响,但仍然很烦人,因为我不确定模型中的某些内容是否不正确。您可以在此处查看带有最小残差的 q 变量的结果:Results q variable。这些残差只有在我引入二元变量后才开始出现在我的模型中。

q 定义为:dexpr float q [t in Years, i in Options] = (c[i] * (a[t+s[i]][i]-a[t+s[i ]-1][i]));

a是一个决策变量

这是一个约束 q 服从:q[i][t] == a[i] * p[i]* y[t][i])

因为 y 是一个二进制变量,q 应该是 a[i] * p[i] 的值或 0。这就是为什么我对残差值非常恼火。

有人知道为什么会出现这些值以及如何摆脱它们吗?我已经在这个问题上花了很多时间但不知道如何解决它.

我在尝试解决它时注意到的事情:

非常感谢您的帮助!

这是一个公差问题。 MIP 求解器(例如 Cplex)有很多。这里发挥作用的是整数可行性容差 (epint) 和可行性容差 (eprhs)。你可以收紧它们,但我通常让它们保持原样。有时在打印结果之前对结果进行四舍五入或在输出格式中使用较少的数字会有所帮助。