非线性最优化
最优化的问题的一般形式是:
Minf(x) s.t. x∈X
f(x)为目标函数,x∈En为可行域。如果x=En,则以上最优化问题为无约束最优化问题。
约束最优化问题通常写为:
Minf(x) s.t. ci(x)=0,i∈Eci(x)≥0,i∈I
其中E,I分别为等式约束的指标集和不等式约束的指标集,ci(x)是约束函数。
无约束二次最优化
minf(x)=1/2xTHx+cTx,x∈Rn
H是对称矩阵。
基本解法:求导然后找局部极值。
二次规划的一般形式
minf(x)=1/2xTHx+cTx,x∈Rn s.t. Ax≤b
当H为对称矩阵时,被称为二次规划(Quadratic Programming,QP)。
特别地,当H正定时,目标函数为凸函数,线性约束下可行域又是凸集。上式被称为凸二次规划。
问题(1):
minf(x)=1/2xTHx+cTx,x∈Rn s.t. aiTx≥bi,i∈IaiTx=bi,i∈E
二次规划的性质
QP是一种最简单的非线性规划。QP有如下良好的性质,当H是半正定时:
- K-T条件是最优解的充要条件。
- 局部最优解就是全局最优解。
等式约束下的二次规划
问题(2):minf(x)=1/2xTHx+cTx,x∈Rn s.t. Ax=b
求解方法:Lagrange乘子法,求解以下无约束二次最优化问题。
L(x,λ)=21xTHx+cTx+λT(Ax−b)
令L(x,λ)对x,λ的导数为零,得到线性方程组:
Hx+cT+ATλ=0Ax−b=0
可解得x,即为上式的解。
凸二次规划的有效集方法
- 直观解释:
将不起作用的约束去掉,将起作用约束作为等式约束,通过解一系列等式约束的二次规划来实现不等式约束的优化。
- 基本原理:
若x是问题(1)的最优解,则它也是问题(3):
min21xTHx+cTx s.t. aiTx=bi,i∈I的最优解,其中I是起作用约束指标集(有效集)。反之,若x是问题(1)的可行解,又是(3)的K-T点,且相应的乘子λi≥0,则x是问题(1)的最优解。
算法步骤(迭代法):
- 设当前迭代点为xk,它也是(1)的可行解。该点的有效集记作Ik,为寻求xk点的迭代方向d,用乘子法求解
min21(xk+d)TH(xk+d)+cT(xk+d) s.t. aiTd=0,i∈Ik
- 若所得最优值dk=0,则xk是(3)的最优解。
- 为判断它是否(1)的最优解,考察对应于有效约束的乘子λi≥0是否成立。若成立,则xk是K-T点,由二次规划性质xk是(1)的最优解。
- 若所得最优值dk=0,则取xk+1=xk+αdk,在xk+1为可行点的条件下确定dk方向的步长αk
- 如果存在p不在Ik中,使得apxk+1=bp,则将p加入有效集
- 如果存在Ik中的指标q,使得λi<0,则xk不是最优解,从有效集中去掉q。
可行步长的选取:阻塞约束
αk=min{1,i∈/Ik,aiTdk<0minaiTdkbi−aiTxk}
αk=1时,对应约束集不影响,保持不变
αk<1时,对应约束称为阻塞约束,此时沿着dk运动,会被不在指标集中的约束给阻塞了,约束集因此改变。