【发布时间】:2020-06-04 00:01:01
【问题描述】:
我在论文中收到了有关此限制的问题。这篇论文说它使用大 M 方法来将非线性规划模型变成 LP。我得到那个大数字 M1 是一个巨大的数字,但我不知道大数字 M1 对约束的真正作用。你们能给我一些关于在这个约束中使用大 M 的见解吗? 下面是大号 M1 的约束。
论文说这些限制是 当 K[m][i] = p[i]*x[m][i],
maximize sum(m in M, i in I) (K[m][i]-c[i]*x[m][i]
K[m][i]-M[1]*(1-x[m][i]) <= p[i]
K[m][i]+M[1]*(1-x[m][i]) >= p[i]
K[m][i]-M[1]*x[m][i] <= 0
它最初在非线性规划中看起来像这样
maximize sum(m in M, i in I)(p[i]-c[i])*x[m][i]
因此,基本上,将非线性规划转换为线性规划会导致一些决策变量和 3 个带有大数 M 的附加约束发生一些变化。
这是另一个包含大数 M 的约束。
sum (j in J) b[i][j]*p[j]-p[i]<= M[1]*y[i]
原来的样子
p[i]<sum (j in J) b[i][j]*p[j], if y[i]==1
这是最后一个大数 M 的约束
(r[m][j]=p[j])*b[i][j]*x[m][i] >= -y[i]*m[1]
这是
(r[m][j]-p[j])*b[i][j]*x[m][i](1-y[i])>=0
在非线性程序中。
我很想知道大M在模型中做了什么。 如果有人能给我一些见解,将不胜感激。
谢谢。
【问题讨论】:
-
另一件事 - 你提到'那个大数字 M1 是一个巨大的数字'。它真的不应该是一个巨大的数字。它需要尽可能小并且仍然可以工作,因此通常可以从已知数据中选择它。尝试使用一个比该表达式中其他术语中可能出现的最大值大的值。对 M 使用太大的值会导致数值问题和不稳定。
-
这里显示了一个稍微好一点的公式:stackoverflow.com/questions/62140335/…
标签: linear-programming cplex opl