Skip to content

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

如果问题

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

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

(18.96)x―k+1=x―k+αkd―k(k=1,2,⋯),

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

(1) 方向 d―k 必须是 x―k 处的可行下降方向.

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

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

αk′ 从 f(x―k+αd―k)=min!,α>0 确定.

(18.97)αk′′={α∈R:x―k+αd―k∈M}.

然后, 我们得到

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

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

18.2.7.1 可行方向方法 ​

1. 方向搜索程序 ​

点 x―k 处的可行下降方向 d―k 可以通过求解下列优化问题予以确定:

(18.99)σ=min!(18.100a)∇gi(x―k)Td―≤σ,i∈I0(x―k),(18.100b)∇f(x―k)Td―≤σ,(18.100c)∥d―∥≤1

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

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

(18.101)Iεk(x―k)={i∈{1,⋯,m}:−εk≤gi(x―k)≤0},εk≥0,

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

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

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

2. 线性约束的特殊情形 ​

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

(18.102)σ=∇f(x―k)Td―=min!,

其中

(18.103a)∇a―iTd―≤0,i∈I0(x―k) 或 i∈Iεk(x―k),(18.103b)∥d―∥≤1

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

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

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

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

条件

(18.104)d―k−1TCd―=0.

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

f(x―)=x12+4x22−10x1−32x2=min!,g1(x―)=−x1≤0,g2(x―)=−x2≤0, g3(x―)=x1+2x2−7≤0,g4(x―)=2x1+x2−8≤0.

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

方向搜索程序: {−4d1−32d2=min!−d2≤0,∥d―∥∞≤1}⇒d―1=(1,1)T .

最小化常数: αk′=−d―kT∇f(x―k)2d―kTCd―k ,其中 C=(1004) .

最大可行步长: αk′′=min{−gi(x―k)a―iTd―k:i满足a―iTd―k>0},α1′=185,α1′′=23⇒α1=min{185,23}=23,x―2=(113,23)T.

第 2 步: ∇f(x―2)=(−83,−803)T,I0(x―2)={4} .

方向搜索程序: {−83d1−803d2=min!2d1+d2≤0,∥d―∥∞≤1}⇒d―2=(−12,1)T,α2′=

15251,α2′′=43⇒α2=43,x―3=(3,2)T.

第 3 步: ∇f(x―3)=(−4,−16)T,I0(x―3)={3,4} .

方向搜索程序: {−4d1−16d2=min!d1+2d2≤0,2d1+d2≤0,∥d―∥∞≤1}⇒d―3=

(−1,12)T,α3′=1,α3′′=3⇒α3=1,x―4=(2,52)T.

接下来的方向搜索程序结果是 σ=0 ,从而极小点是 x―∗=x―4 (图 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―满足a―iTx―≤bi,i=1,⋯,m.

点 x―k∈M 处的可行下降方向 d―k 按如下方式确定:

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

(18.106)d―k=−Pk∇f(x―k)=−(I−AkT(AkAkT)−1Ak)∇f(x―k)

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

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

2. 算法 ​

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

I: 如果 −∇f(x―k) 是可行方向,则代入 d―k=−∇f(x―k) ,并从第 III 步继续. 否则,从向量 a―i,i∈I0(x―k) 构造矩阵 Ak ,然后从第 II 步继续.

II: 代入 d―k=−(I−AkT(AkAkT)−1Ak)∇f(x―k) . 如果 d―k≠0― ,则从第 III 步继续. 如果 d―k=0― ,并且 u―=−(AkAkT)−1Ak∇f(x―k)≥0― ,那么 x―k 是极小点. 局部库恩-塔克条件 −∇f(x―k)=∑i∈I0(x―k)⁡uia―i=AkTu― 显然满足.

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

III: 计算 αk 和 x―k+1=x―k+αkd―k ,并让 k=k+1 回到第 I 步继续.

3. 关于算法的注释 ​

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

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

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

I: ∇f(x―1)=(−4,−32)T,−∇f(x―k) 是可行的, d―1=(4,32)T .

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

第 2 步:

I: ∇f(x―2)=(−185,−965)T (不可行), I0(x―2)={4},A2=(21) .

II: P2=15(1−2−24),d―2=(−825,1625)≠0― .

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

第 3 步:

I:∇f(x―3)=(−4,−16)T(不可行),I0(x―3)={3,4},A3=(1221).II:P3=(0000),d―3=(0,0)T,u―=(283,−83)T,u2<0:A3=(12).II:P3=15(4−2−21),d―3=(−165,85)T.III:α3=516,x―4=(2,52)T.

第 4 步:

I:∇f(x―4)=(−6,−12)T(不可行),I0(x―4)={3},A4=A3.II:P4=P3,d―4=(0,0)T,u=6≥0.

由此可知, x―4 是极小点.

version 1.24.0