数值优化(Numerical Optimization)学习系列-序列二次规划和内点法(SQP、Interior-Point)

概述

对于非线性约束最优化问题,序列二次规划和内点法是两类非常重要的算法,也是大规模问题的利器。序列二次规划方法将原始问题分解为一系列二次规划问题逐步求解;内点法将将约束添加到目标函数中转换为一系列无约束问题逐步求解。两类算法共同思想将原始问题转换为可求解问题。
1. 序列二次规划概述
2. 内点法概述
3.总结

序列二次规划(SQP)概述

序列二次规划(Sequential Quadratic Programming)对于非线性约束最优化问题是一个非常有效的算法,将原始问题划分为一系列二次规划的子问题进行求解。

本节中介绍的SQP都属于激活集算法,有两种类型的激活-SQP算法,一是IQP,将原始问题转换为一系列不等式约束二次规划;二是EQP,将原始问题转换为一系列等式约束二次规划问题。

大部分的SQP问题分为两个步骤进行求解,第一步通过局部方法寻找有效集;二是通过LineSearch或者TR进行最优化。

局部SQP方法

等式约束问题

问题描述如下

minf(x)s.tc(x)=0
其主要思想是根据当前点 xk 寻找下一个优化点 xk+1 通过转换问题二次规划问题。

思路1,KKT条件

原始问题的拉格朗日方程为 L(x,λ)=f(x)λTc(x) ,根据KKT条件有

F(x,λ)=[f(x)A(x)Tλc(x)]=0
其中 A(x)=[c1(x),c2(x)...cm(x)]
对于等式方程问题可以采用牛顿方程进行求解,迭代步骤如下
[xk+1λk+1]=[xkλk]+[pkpλ]
其中 pkpλ 通过牛顿KKT条件得到
[2LxAkATk0][pkpλ]=[fk+ATkλkck]
注:推导过程简单,可以参考之前的章节。

思路2,根据当前点进行建模

对于当前点 xk 进行二次泰勒展开,转换为

minpfk+fTkp+12pTL2ps.t.Akp+ck=0
展开方式为目标函数进行二次泰勒展开,约束进行一次泰勒展开。根据KKT也有
2Lkpk+fkATklk=0Akpk+ck=0
通过转换可以转换为上述求解步骤。

求解框架

数值优化(Numerical Optimization)学习系列-序列二次规划和内点法(SQP、Interior-Point)_第1张图片

不等式约束问题

对于不等式约束,同理可以进行泰勒展开。

minpfk+fTkp+12pTL2ps.t.ci(xk)Tp+ci(xk)=0iEci(xk)Tp+ci(xk)0iI

IPQ 和 EPQ

  1. IPQ:顾名思义将原始转换为一系列带有不等式约束的二次规划问题,该方法在实际中效果非常好,问题是对于一般的二次规划问题求解复杂度较高,虽然可以将该次的最优解作为下一次子问题的初始解,仍然存在热启动问题。
  2. EPQ:每次只考虑激活集,即等式约束。相对于IPQ每个子问题相对比较容易求解。

其他

最优化步骤中可以通过线搜索或者信赖域方法进行求解。

内点法

内点法和SQP方法类似对于求解大规模非线性约束非常有效。另外内点法(Interior-Point)和障碍方法(barrier methods)具有相同含义。

两类转换思路

内点法可以求解的问题,可以转换为

minx,sf(x)s.t.cE(x)=0,cI(x)s=0,s0

连续方法(continuation methods)

根据KKT条件,上述问题可以转换

f(x)ATE(x)yAI(x)Tz=0Szμe=0cE(x)=0ci(x)s=0
类似于之前做法,可以通过不断改变参数 μ 来搜寻一条中心路径逐渐优化原始问题。

障碍方法(barrier methods)

问题可以转换为

minx,sf(x)μi=1...mlogsis.tcE(x)=0cI(x)s=0
其中参数 μ 是正数,控制搜索过程。通过KKT条件求解该问题,会发现和上述转换类似。
最原始的转换方式,直接转换为
minf(x)μiIlogci(x)
该转换可能带来的问题是可能找不到最优解。

其他

  1. 内点法可以从对偶问题中获取关键思路
  2. 可以结合线搜索和信赖域方法进行求解

总结

通过本节学习可以了解序列二次规划和内点法求解非线性约束最优化问题的关键思路。

你可能感兴趣的:(数值优化,序列二次规划,内点法,SQP,IP,数值优化)