Skip to content

18.2.8 罚函数法和障碍函数法

这些方法的基本原理是通过修正目标函数将约束优化问题转换成一列无约束优化问题. 修正后的问题, 例如, 可以通过 18.2.5 给出的方法求解. 通过适当构造修正的目标函数, 这一修正问题解点列的每个聚点都是原问题的一个解.

18.2.8.1 罚函数法

问题

(18.107)f(x)=min!, 约束条件为 gi(x)0(i=1,,m)

用如下一列无约束问题代替:

(18.108)H(x,pk)=f(x)+pkS(x)=min!, 其中 xRn,pk>0(k=1,2,)

这里 pk 是正参数,而 S(x) 满足

(18.109)S(x)={=0,xM,>0,xM,

即让可行集 M 用一 “补偿” 项 pkS(x) 进行惩罚. 问题 (18.108) 通过一列趋于无穷的罚参数 pk 来求解. 于是

(18.110)limkH(x,pk)=f(x),xM.

如果 xk 是第 k 个罚问题的解,则

(18.111)H(x,pk)H(xk1,pk1),f(xk)f(xk1),

并且序列 {xk} 的每个聚点 x 都是 (18.107) 的解. 如果 xkM ,则 xk 是原问题的解.

例如,如下函数是 S(x) 的合适的选择:

(18.112a)S(x)=maxr{0,g1(x),,gm(x)}(r=1,2,)

(18.112b)S(x)=i=1mmaxr{0,gi(x)}(r=1,2,).

如果函数 f(x)gi(x) 可微,那么当 r>1 时,罚函数 H(x,pk)M 的边界上也可微, 从而可以使用解析解求解辅助问题 (18.108).

图 18.11 为罚函数方法的示意图.

01936af3-1230-7a0e-9a4a-8542777881ce_43_598_850_446_335_0.jpg

f(x)=x12+x22=min!,x1+x21,H(x,pk)=x12+x22+pkmax2{0,1x1x2} . 最优性必要条件是

H(x,pk)=(2x12pkmax{0,1x1x2}2x22pkmax{0,1x1x2})=(00).

这里 H 的梯度是相对于 x 计算的. 两个方程相减得到 x1=x2 . 方程 2x1 2pkmax{0,12x1}=0 有唯一解 x1k=x2k=pk1+2pk . 由此让 k 得到解x1=x2=limkpk1+2pk=12.

18.2.8.2 障碍函数法

在障碍函数法中, 考虑如下一列修正问题:

(18.113)H(x,qk)=f(x)+qkB(x)=min!,qk>0.

这里的项 qkB(x) 是为了避免解偏离可行集 M ,因为目标函数在接近 M 的边界时会无限增长. 正则性条件

(18.114)M0={xM:gi(x)<0,i=1,,m},M0=M

必须满足,即 M 的内点必须非空,并且要求从内部可以逼近到任意边界点,即 M0 的闭包是 M . 函数 B(x) 要求在 M0 上连续,而在边界上增加到无穷大. 修正问题 (18.113) 通过一列趋于零的障碍参数 qk 来求解. 设 xk 是第 k 个问题 (18.113) 的解, 则

(18.115)f(xk)f(xk1),

并且序列 {xk} 的每个聚点都是 (18.107) 的解. 图 18.12 为障碍函数法的示意图. 例如, 函数

(18.116a)B(x)=i=1mln(gi(x)),xM0

(18.116b)B(x)=i=1m1[gi(x)]r(r=1,2,),xM0

B(x) 的合适的选择.

01936af3-1230-7a0e-9a4a-8542777881ce_44_616_1011_413_349_0.jpg

f(x)=x12+x22=min!,x1+x21,H(x,qk)=x12+x22+qk(ln(x1+x21)),x1+x2>1,H(x,qk)=(2x1qk1x1x212x2qk1x1+x21)=(00),x1+x2>1 . 这里 H 的梯度是相对于 x 的. 两个方程相减得到 x1=x2,2x1qk12x11=0,x1>12x12x12qk4=0,x1>12,x1k=x2k=14+116+qk4,k,qk0:x1=x2=12.

问题 (18.108) 和 (18.113) 第 k 步的解并不依赖于前几步的解. 应用高阶罚函数和较小的障碍参数往往会引起 (18.108) 和 (18.113) 的数值解的收敛性问题, 例如,特别是在 (18.2.4) 的方法中,如果没有好的初始近似的话. 使用第 k 个问题的解作为第 k+1 个问题的初始解,收敛行为有可能得到改善.

version 1.24.0