1. 简介

McCormick包络是一种用于双线性非线性规划问题的凸松弛。很多时候,这些包络被用来解决混合整数非线性规划问题,将MINLP问题松弛下来,使其成为一个凸NLP问题。求解这个凸NLP将提供原MINLP最优解的一个下界数。有关求解MINLP的更多信息,请参见空间分支定界法。

解决非凸问题是一项复杂的任务。首先,通过松弛问题上的参数,将非凸函数转化为凸函数。通过凸松弛来放宽边界,以引入与原始目标函数不对应的解为代价,降低了求解问题的计算难度,即松弛问题中的最优解并不总是目标问题的最优解。解决凸问题将为最优解提供一个下界。有一个更紧的松弛,但仍然是凸的,将提供一个更接近于解的下限。因此,选择边界最紧的凸松弛非常重要。McCormick包络是一种特殊的松弛,它既保证了凸性,又保持了足够紧的边界

使用McCormick包络将非凸问题松弛为凸问题。这消除了解算器可能解释为全局最小值的多个局部最小值的可能性。通过使问题凸化,为该问题找到的最小值将是该松弛问题的全局最小值。这个解就是原始问题的下界解。利用松弛问题得到的值求解原非凸问题,然后检验其可行性,即可得到一个上界。

McCormick包络提供了一个包络,该包络在保持凸性的同时最小化了新的可行域的大小。这使得使用这些包络得到的下限解比使用其他凸弛豫法得到的下限解更接近真实解。更紧密的信封减少了解决复杂计算问题所需的时间。麦考密克包络的图示如下:
麦考密克包络的图示

2. 双线性项的推导

在这里插入图片描述

3. 获取上下限

如果问题陈述中没有明确提供,则必须估计每个项的上下限的值。一个很好的方法是消除目标函数,然后在原问题的约束下最大化或最小化变量,找出变量的最大值和最小值。使用这些值将使问题更加松弛,同时仍包含最优解

4.示例:凸松弛

给定一个一般的非凸函数,我们可以利用McCormick包络将该函数松弛为一个凸问题。然后,这个新问题可以作为一个非线性规划问题来求解,它将产生原问题的下界解。

在这里插入图片描述
通过替换 xixj=wij 并引入上面导出的不等式,我们创建了以下凸问题:

在这里插入图片描述

如果g(x)是一个线性函数,那么这个问题现在就是一个线性规划问题。求解将产生原始问题的下限解。

5. 示例:数值

给定以下非凸函数:
在这里插入图片描述在这里插入图片描述
介绍McCormick凸包络:
在这里插入图片描述
带入下面几个参数
在这里插入图片描述
这个问题现在是一个LP,可以使用GAMS很容易地解决。求解Lp,我们发现x=6,y=2,Z=-24

6. 应用

麦考密克信封可用于解决各种问题:

  • 处理网络问题
  • 水网络池和混合电力传输
  • 任何带有双线性项的问题

7.结论

McCormick包络可以方便地计算复杂非凸问题的解。通过将凸性引入到问题中,创建了全局最小值。这个全局最小值可以作为原始问题的下界来求解。利用空间分枝定界法,可以求出越来越接近真解的新的下界。
使用McCormick包络可以使用较少的分支和边界迭代来找到解,从而使用较少的计算能力并减少计算时间。这些信封适用于任何具有双线性项的情况,例如化学混合或电气传输问题

8.原文链接:

https://optimization.mccormick.northwestern.edu/index.php/McCormick_envelopes

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐