Cplex LP模型解决方案中随机出现的4e^-14等残差值:如何消除它们



虽然我在Cplex中的线性规划模型的结果似乎是有意义的,但q变量有时是随机的(至少对我来说是随机的(,显示出微小的值,如4e^-14。这对决策变量没有影响,但仍然非常令人恼火,因为我不确定我的模型中是否有错误。你可以在这里看到带有迷你残差的q变量的结果:结果q变量。这些残差只有在我引入二进制变量后才开始出现在我的模型中。

q定义为:dexpr float q[t以年为单位,i以期权为单位]=(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。这就是为什么我对剩余价值感到非常恼火。

有人知道为什么会出现这些价值观以及如何消除它们吗我已经在这个问题上花了很多时间,不知道如何解决它。

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

  • 将所有输入变量转换为整数变量不会改变任何东西
  • 将q转换为整数变量可以解决问题,但会破坏模型,因为a[i][t]需要是浮点变量
  • 添加约束使q>=0不能消除负的残差值,如-4e^-14
  • 为特定的t添加一个使q=0的约束有助于消除那里的残差值,但当然也会破坏模型

非常感谢您的帮助!

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

相关内容

最新更新