优化模型中的非线性项线性化方法(持续更新)

在建立优化问题的模型时,目标函数和约束条件中出现非线性项,会导致模型呈现非线性,即NLP问题,采用商业求解器一般很难求解,故需要对非线性项进行线性化处理。下面用于记录阅读文献时遇到的线性化方法,不做过多定义,分别进行举例说明便于理解。

一、bigM法

1、两个连续变量相乘带来的非线性项

出现在约束中:
如KKT条件的互补松弛约束
λ ( x − y − b ) = 0 \lambda(x-y-b)=0 λ(xyb)=0
λ ≥ 0 \lambda \ge 0 λ0
x − y − b ≥ 0 x-y-b\ge 0 xyb0
x,y为连续变量,其中 λ \lambda λ为对偶乘子,b为常数,上述等式约束构成了两个连续变量的相乘,采用bigM法线性化过程如下式所示
λ ≤ M z \lambda \le Mz λMz
x − y − b ≤ M ( 1 − z ) x-y-b\le M(1-z) xybM(1z)
2、01变量与连续变量相乘带来的非线性项
出现在约束中:
在选址优化问题中经常出现,如发电机定容选址
x ≤ y z x\le yz xyz
x,y为连续变量,z为01变量,非线性项为yz,采用bigM法线性化过程如下式所示
n = y z n=yz n=yz
x ≤ n x\le n xn
− M ( 1 − z ) ≤ n − y ≤ M ( 1 − z ) -M(1-z)\le n-y\le M(1-z) M(1z)nyM(1z)
− M z ≤ n ≤ M z -Mz\le n\le Mz MznMz
3、用if语句表示约束条件时,一些求解器写约束时可能不支持if判断(非线性项问题,看到了就一并记录)
{ y ≤ b  if  x ≥ a y ≤ c  if  x < a \left\{ \begin{align} & y\le b\text{ if }x\ge a \\ & y\le c\text{ if }x<a \\ \end{align} \right. {yb if xayc if x<a
为变量,采用bigM法进行表示上述if约束条件
{ a + ( z − 1 ) M ≤ x < a + z M y ≤ b + ( 1 − z ) M y ≤ c + z M \left\{ \begin{align} & a+(z-1)M\le x<a+zM \\ & y\le b+(1-z)M \\ & y\le c+zM \\ \end{align} \right. a+(z1)Mx<a+zMyb+(1z)Myc+zM
上述M都为较大的正值,如何选取合适的M值是bigM法的难点

持续更新,敬请期待!!(哈哈哈哈哈,得多看文献啊,有任何问题欢迎评论区讨论)

  • 49
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值