文章目录

  • 约束优化:PHR-ALM 增广拉格朗日函数法
  • 等式约束非凸优化问题的PHR-ALM
  • 不等式约束非凸优化问题的PHR-ALM
  • 对于一般非凸优化问题的PHR-ALM
  • 参考文献


约束优化:PHR-ALM 增广拉格朗日函数法

基础预备:

约束优化:约束优化的三种序列无约束优化方法

凸优化学习笔记:Lagrange函数、对偶函数、对偶问题、KKT条件

由前面的分析我们已经知道,在约束优化的三种序列无约束优化方法中,罚函数法存在Hessian矩阵条件数爆炸而难以求解的问题,Uzawa’s Method要求原目标函数必须为连续凸,这些都对适用范围存在严苛限制。增广拉格朗日函数法对原问题的凸性不做要求,并可以通过对二次罚函数进行某种修正,使得对有限的罚因子,得到的逼近最优解也是可行的。

等式约束非凸优化问题的PHR-ALM

从前面文章中的分析可知,不管原问题是不是凸优化问题,原问题的对偶问题一定是凸优化问题,这是因为对偶问题极大化的目标函数是凹函数,且约束集合为凸集,这是一个非常重要且有用的性质。如下图所示,在Uzawa’s method中,优化问题python约束优化外点法 约束优化方法_凸优化非凸,因为函数python约束优化外点法 约束优化方法_python约束优化外点法_02非凸,则无法求出唯一的最优python约束优化外点法 约束优化方法_python约束优化外点法_03带入下一步的python约束优化外点法 约束优化方法_python约束优化外点法_04更新计算。

已知python约束优化外点法 约束优化方法_算法_05是一个不连续函数,如何处理这个不连续的函数,一个非常直观的方法就是将该问题近似成一个连续问题,这是PHR方法的基本思想。增加一项python约束优化外点法 约束优化方法_python约束优化外点法_06,用来近似平滑原来不连续的函数python约束优化外点法 约束优化方法_凸优化_07,其中python约束优化外点法 约束优化方法_python约束优化外点法_08用来惩罚python约束优化外点法 约束优化方法_python约束优化外点法_04与先验值python约束优化外点法 约束优化方法_python约束优化外点法_10之间的偏差。


python约束优化外点法 约束优化方法_最优化_11

这样一来,函数python约束优化外点法 约束优化方法_凸优化_12被近似成一个光滑函数,同时python约束优化外点法 约束优化方法_python约束优化外点法_13是关于python约束优化外点法 约束优化方法_python约束优化外点法_04的线性函数,既是凸函数也是凹函数,python约束优化外点法 约束优化方法_python约束优化外点法_06是关于python约束优化外点法 约束优化方法_python约束优化外点法_04的严格凹函数,因此整个函数仍为严格凹,对于严格凹问题python约束优化外点法 约束优化方法_python约束优化外点法_17有唯一最优解python约束优化外点法 约束优化方法_最优化_18满足:

python约束优化外点法 约束优化方法_最优化_19

可解得python约束优化外点法 约束优化方法_python约束优化外点法_20,即最优解python约束优化外点法 约束优化方法_最优化_18是关于python约束优化外点法 约束优化方法_python约束优化外点法_04的函数。将python约束优化外点法 约束优化方法_最优化_18带入原问题:

python约束优化外点法 约束优化方法_凸优化_24

python约束优化外点法 约束优化方法_python约束优化外点法_25

此时得到一个与原问题近似的无约束最优化问题,可以用例如L-BFGS方法求解。这就是PHR-ALM的基本思路,通过在原拉格朗日函数的基础之上增加一个增广项获得一个增广拉格朗日函数python约束优化外点法 约束优化方法_算法_26,来得到近似光滑且容易解的优化问题。为了更接近于原问题,有两种措施:(1)使python约束优化外点法 约束优化方法_算法_27 或者 python约束优化外点法 约束优化方法_凸优化_28,以获取二次罚函数的效果,但python约束优化外点法 约束优化方法_最优化_29如果很大则和前面分析的罚函数缺陷一样,成为一个Hessian矩阵条件数爆炸的病态问题;(2)迭代更新先验值python约束优化外点法 约束优化方法_python约束优化外点法_30

下面介绍一种更为常用的增广拉格朗日函数形式。在迭代过程中,子内循环无约束优化问题python约束优化外点法 约束优化方法_凸优化_31每次都不需要求解很精确的python约束优化外点法 约束优化方法_python约束优化外点法_32,因为外循环会不断细化python约束优化外点法 约束优化方法_算法_33python约束优化外点法 约束优化方法_python约束优化外点法_32


python约束优化外点法 约束优化方法_python约束优化外点法_35

不等式约束非凸优化问题的PHR-ALM

对于不等式约束的非凸问题,核心思想是通过引入松弛变量python约束优化外点法 约束优化方法_最优解_36,将不等式约束转化为等式约束,然后再写成增广拉格朗日函数形式。如下图所示,引入松弛变量python约束优化外点法 约束优化方法_最优解_36,原问题维度从n维上升到n+m维。原问题为:

python约束优化外点法 约束优化方法_算法_38

引入松弛变量后变为等式约束的非凸优化问题:

python约束优化外点法 约束优化方法_最优解_39

将转化后的问题写成增广拉格朗日函数形式:

python约束优化外点法 约束优化方法_凸优化_40

为与等式约束的拉格朗日乘子python约束优化外点法 约束优化方法_python约束优化外点法_04区分开,将不等式约束非凸问题的增广拉格朗日函数写成:

python约束优化外点法 约束优化方法_最优解_42

更新拉格朗日乘子python约束优化外点法 约束优化方法_算法_43。对于python约束优化外点法 约束优化方法_算法_44,当python约束优化外点法 约束优化方法_凸优化_45,取python约束优化外点法 约束优化方法_最优解_46=0,当python约束优化外点法 约束优化方法_算法_47,取python约束优化外点法 约束优化方法_最优化_48,因此有python约束优化外点法 约束优化方法_最优化_49。综上,可消除松弛变量的影响从而得到:

python约束优化外点法 约束优化方法_最优解_50

python约束优化外点法 约束优化方法_最优化_51

求证:python约束优化外点法 约束优化方法_python约束优化外点法_52

证明:在前述问题中,已知python约束优化外点法 约束优化方法_算法_53 等价于 python约束优化外点法 约束优化方法_最优化_54

对于松弛变量python约束优化外点法 约束优化方法_算法_55而言,其最优化问题为:
python约束优化外点法 约束优化方法_最优化_56
python约束优化外点法 约束优化方法_最优解_57,有python约束优化外点法 约束优化方法_算法_58

python约束优化外点法 约束优化方法_算法_59时,python约束优化外点法 约束优化方法_最优化_60,取python约束优化外点法 约束优化方法_最优解_61

python约束优化外点法 约束优化方法_凸优化_62时,python约束优化外点法 约束优化方法_最优化_63,取python约束优化外点法 约束优化方法_凸优化_64

所以,
python约束优化外点法 约束优化方法_最优化_65

对于一般非凸优化问题的PHR-ALM

结合等式约束和不等式约束的分析,直接将等式约束拉格朗日函数的增广项和不等式约束拉格朗日函数的增广项相加,得到:

python约束优化外点法 约束优化方法_最优解_66

python约束优化外点法 约束优化方法_最优解_67


参考文献

机器人中的数值优化

最优化:建模、算法与理论/最优化计算方法