Skip to content

18.2.7 不等式类型约束下问题的梯度法

如果问题

(18.95)f(x)=min!,约束条件为gi(x)0,

需要采用如下类型的迭代法求解:

(18.96)xk+1=xk+αkdk(k=1,2,),

那么由于有界可行集, 必须考虑另两个附加规则:

(1) 方向 dk 必须是 xk 处的可行下降方向.

(2) 步长 αk 必须使得 xk+1M 中.

基于公式 (18.96) 的各种方法的差别仅在于构造方向 dk 的不同. 为了确保序列 {xk}M 的可行性, αkαk 按如下方式确定:

αkf(xk+αdk)=min!,α>0 确定.

(18.97)αk={αR:xk+αdkM}.

然后, 我们得到

(18.98)αk=min{αk,αk}.

如果在某一步 k 没有可行方向 dk ,则 xk 是平稳点.

18.2.7.1 可行方向方法

1. 方向搜索程序

xk 处的可行下降方向 dk 可以通过求解下列优化问题予以确定:

(18.99)σ=min!(18.100a)gi(xk)Tdσ,iI0(xk),(18.100b)f(xk)Tdσ,(18.100c)d∥≤1

如果 σ<0 ,则 (18.100a) 确保该方向搜索程序结果 d=dk 的可行性,而 (18.100b) 确保 dk 的下降性质. 根据规格化条件 (18.100c),该方向搜索程序所得可行集是有界的. 如果 σ=0 ,则 xk 是平稳点,因为在 xk 没有可行的下降方向.

由(18.100a,18.100b,18.100c)定义的方向搜索程序有可能引起序列 {xk} 的锯齿形行为,而为避免这样的行为发生,只需将标号集 I0(xk) 代之以

(18.101)Iεk(xk)={i{1,,m}:εkgi(xk)0},εk0,

即代之以在 xk 处的所谓 εk 主动约束. 于是从 xk 出发的局部下降方向被排除,并且越来越接近由 εk 主动约束组成的 M 的边界 (图 18.7).

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

如果 σ=0 是(18.100a,18.100b,18.100c)在这样修正后的解,那么仅当 I0(xk)=Iεk(xk) 时, xk 是平稳点. 否则, εk 必须减少,从而方向搜索程序必须重复下去.

2. 线性约束的特殊情形

如果 gi(x) 是线性的,即 gi(x)=aiTxbi ,则可以建立一种比较简单的方向搜索程序:

(18.102)σ=f(xk)Td=min!,

其中

(18.103a)aiTd0,iI0(xk) 或 iIεk(xk),(18.103b)d∥≤1

选择不同范数 d∥=max{|di|}1d∥=dTd1 的影响示于图 18.8(a), (b).

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

在某种意义上,范数 d∥=∥d2=dTd 是最佳选择,因为方向搜索程序所得到的方向 dkf(xk) 形成最小夹角. 在这种情形下,方向搜索程序并不是线性的,从而要求更大的计算量. 如果选择范数 d∥=∥d=max{|di|}1 ,则得到一组线性约束 1di1(i=1,,n) ,从而方向搜索程序,例如,可以通过单纯形法求解.

为了确保这种可行方向方法对于二次优化问题 f(x)=xTCx+pTx=min! , Axb ,能够在有穷步内得到解决,可以利用如下的共轭条件来实施方向搜索程序: 如果在某一步成立 αk1=αk1 ,即 xk 是一 “内” 点,则在方向搜索程序中加上

条件

(18.104)dk1TCd=0.

此外,前面各步骤中相应的的条件均保留不变. 如果在往后的某一步有 αk=αk ,则条件 (18.104) 就去掉.

f(x)=x12+4x2210x132x2=min!,g1(x)=x10,g2(x)=x20, g3(x)=x1+2x270,g4(x)=2x1+x280.

第 1 步: 从 x1=(3,0)T 出发, f(x1)=(4,32)T,I0(x1)={2} .

方向搜索程序: {4d132d2=min!d20,d1}d1=(1,1)T .

最小化常数: αk=dkTf(xk)2dkTCdk ,其中 C=(1004) .

最大可行步长: αk=min{gi(xk)aiTdk:i满足aiTdk>0},α1=185,α1=23α1=min{185,23}=23,x2=(113,23)T.

第 2 步: f(x2)=(83,803)T,I0(x2)={4} .

方向搜索程序: {83d1803d2=min!2d1+d20,d1}d2=(12,1)T,α2=

15251,α2=43α2=43,x3=(3,2)T.

第 3 步: f(x3)=(4,16)T,I0(x3)={3,4} .

方向搜索程序: {4d116d2=min!d1+2d20,2d1+d20,d1}d3=

(1,12)T,α3=1,α3=3α3=1,x4=(2,52)T.

接下来的方向搜索程序结果是 σ=0 ,从而极小点是 x=x4 (图 18.9).

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

18.2.7.2 梯度投影方法

1. 问题的提法和求解原理

假定给定凸优化问题

(18.105)f(x)=min!,其中x满足aiTxbi,i=1,,m.

xkM 处的可行下降方向 dk 按如下方式确定:

如果 f(xk) 是可行方向,则选择 dk=f(xk) . 否则, xkM 的边界上,并且 f(xk) 指向 M 外. 向量 f(xk) 通过一个线性映射投影到 M 边界的一个线性流形上,该流形由 xk 处主动约束的子集确定. 图 18.10(a) 表示投影到一棱边,而图 18.10(b) 表示投影到一个面上. 假定非降秩,即如果对于每个 xRn , 诸向量 ai,iI0(x) 是线性无关的,则

(18.106)dk=Pkf(xk)=(IAkT(AkAkT)1Ak)f(xk)

就给出这样的投影. 这里 Ak 由这样一些向量 ai 组成,其相应的约束构成一个子流形,而 f(xk) 正好投影到这个子流形.

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

2. 算法

梯度投影法由如下几个步骤组成: 从 x1M 开始,按照如下方式从 k=1 出发依次进行计算.

I: 如果 f(xk) 是可行方向,则代入 dk=f(xk) ,并从第 III 步继续. 否则,从向量 ai,iI0(xk) 构造矩阵 Ak ,然后从第 II 步继续.

II: 代入 dk=(IAkT(AkAkT)1Ak)f(xk) . 如果 dk0 ,则从第 III 步继续. 如果 dk=0 ,并且 u=(AkAkT)1Akf(xk)0 ,那么 xk 是极小点. 局部库恩-塔克条件 f(xk)=iI0(xk)uiai=AkTu 显然满足.

如果 u0 ,则选择一个 i,ui<0 ,删除 Ak 的第 i 行,并继续第 II 步.

III: 计算 αkxk+1=xk+αkdk ,并让 k=k+1 回到第 I 步继续.

3. 关于算法的注释

如果 f(xk) 不是可行方向,则这个向量被映到包含 xk 的最小维子流形上. 如果 dk=0 ,则 f(xk) 垂直于这个子流形. 如果 u0 不成立,则该子流形的维数通过删去一个主动约束而增加一维,从而有可能出现 dk0 (图 18.10(b))(投影到一个 (侧) 面). 由于 Ak 往往是从 Ak1 通过增加或删掉一行而得到,故 (AkAkT)1 的计算可以利用 (Ak1Ak1T)1 而得到简化.

本页 2. 中的例子问题的求解.

第 1 步: x1=(3,0)T .

I: f(x1)=(4,32)T,f(xk) 是可行的, d1=(4,32)T .

III: 如同上例,确定步长为 α1=12,x2=(165,85)T .

第 2 步:

I: f(x2)=(185,965)T (不可行), I0(x2)={4},A2=(21) .

II: P2=15(1224),d2=(825,1625)0 .

III: α2=58,x3=(3,2)T .

第 3 步:

I:f(x3)=(4,16)T(不可行),I0(x3)={3,4},A3=(1221).II:P3=(0000),d3=(0,0)T,u=(283,83)T,u2<0:A3=(12).II:P3=15(4221),d3=(165,85)T.III:α3=516,x4=(2,52)T.

第 4 步:

I:f(x4)=(6,12)T(不可行),I0(x4)={3},A4=A3.II:P4=P3,d4=(0,0)T,u=60.

由此可知, x4 是极小点.

version 1.24.0