多面体近似方法

Typora使用手册:

https://blog.csdn.net/wait_for_eva/article/details/84307306

https://www.cnblogs.com/RioTian/p/14111021.html

参考文献:

Dimitri P. Bertsekas. Convex Optimization Algorithms[M]. Massachusetts Institute of Technology.

前言

最近啃Dimitri的凸优化算法越来越艰难,啃到第四章发现不做一些笔记已经搞不定了,这些底层的东西让我掉了不少头发(bushi)。由于没有这领域的大神带路,感觉自己理解的可能也不够到位(英文文献真的是一千个读者一千个哈姆雷特),所以还是斗胆在博客挂一下自己的拙见,希望能遇到大神指点。由于书本内容还没有读完,所以这些笔记暂时不写总结部分。

多面体近似方法

​ 在本章,我们将要讨论利用多面体近似的方法,极小化定义在闭凸集 X X X上的实值凸函数。我们通过求解以下近似问题:
x k + 1 ∈ arg ⁡ min ⁡ x ∈ X k F k ( x ) x_{k+1}\in \arg {\min}_{x\in X_k}F_k(x) xk+1argminxXkFk(x)
来得到一个点列 { x k } \{{x_k}\} {xk},此处 F k F_k Fk是一个用于近似 f f f的多面体函数(什么是多面体函数?), X k X_k Xk是一个用于近似 X X X的多面体集合(在某些变量下,该近似方法得到的结果是唯一的)。鉴于上述集合与函数的多面体结构,它们的求解方法比过去非多面体结构的集合与函数要简单。通过上述方法,我们可以使得求解的结果越来越接近真实解,在极限意义下我们可以求得精确解。

4.1 外线性化——切平面方法

​ 首先,我们先来看附录B的定理1.5.4:

定理 1

凸集 C C C的闭包是一个由一系列半空间相交形成的集合,这个集合包含 C C C。特别的,一个闭凸集是一个由一系列半空间相交所生成的集合。

​ 切平面方法的核心思想基于上述定理:用支撑超平面的交集来表示凸集的凸包。

​ 在本节中,我们讨论的问题是:极小化定义在闭凸集 X X X上的凸函数 f : R n ⟶ R f:R^n\longrightarrow R f:RnR

​ 首先,我们有关于目标函数 f f f的若干已知点 x 0 , x 1 , . . . , x k x_0,x_1,...,x_k x0,x1,...,xk组成的点列 { x k } \{x_k\} {xk},定义关于已知点的函数:
F k ( x ) = max ⁡ ( f ( x 0 ) + ( x − x 0 ) T g 0 , . . . , f ( x k ) + ( x − x k ) T g k ) F_k(x)=\max(f(x_0)+(x-x_0)^Tg_0,...,f(x_k)+(x-x_k)^Tg_k) Fk(x)=max(f(x0)+(xx0)Tg0,...,f(xk)+(xxk)Tgk)
易做出 F k ( x ) F_k(x) Fk(x)的大致图像(以三个点为例):

在这里插入图片描述

上图中,红线标出来的部分即为 F k ( x ) F_k(x) Fk(x)

​ 接下来,我们来计算:
x k + 1 ∈  arg  x ∈ X k min ⁡ F k ( x ) x_{k+1}\in\text{ arg } _{x\in{X_k}} \min F_k(x) xk+1 arg xXkminFk(x)
F k ( x ) F_k(x) Fk(x)的图像易知,这样的 x k + 1 x_{k+1} xk+1是存在的,此时我们得到新的点列 { x k + 1 } \{x_{k+1}\} {xk+1},再重复上述步骤,理论上我们就能够得到最优解 x ∗ x^* x

​ 上述的讨论是基于 F k ( x ) F_k(x) Fk(x)的最小值点存在的情况。但有些时候,如 X X X是无界集时,该条件就不能得到保证。故在实际应用中,往往会人为地给出 X X X的界,使得 X X X成为一个紧集(在欧式空间中就是有界闭集)。由 W e i r e s t r a s s Weirestrass Weirestrass的理论,定义在有界闭集上的函数必可取到最小值。

定理 2

任意由切平面方法生成的点列 { x k } \{x_k\} {xk}的极限点都是一个最优解 x ∗ x^* x


证明:

​ 设 g j g_j gj是函数 f f f x j x_j xj点的次梯度,由此我们有:
f ( x j ) + ( x − x j ) T g j ⩽ f ( x ) , ∀ x ∈ X , f(x_j)+(x-x_j)^Tg_j\leqslant f(x),\quad \forall x\in X, f(xj)+(xxj)Tgjf(x),xX,
根据 F k ( x ) F_k(x) Fk(x) x k x_k xk的定义,我们有:
f ( x j ) + ( x k − x j ) T g j ⩽ F k − 1 ( x k ) ⩽ F k − 1 ( x ) ⩽ f ( x ) , ∀ x ∈ X , j < k . f(x_j)+(x_k-x_j)^Tg_j\leqslant F_{k-1}(x_k)\leqslant F_{k-1}(x)\leqslant f(x),\quad \forall x\in X,j<k. f(xj)+(xkxj)TgjFk1(xk)Fk1(x)f(x),xXj<k.
由于 X X X有界,因此 { x k } \{x_k\} {xk}也有界。由于有界数列必有收敛子列,不妨取 { x k } \{x_k\} {xk}的一个子列为 { x k } K \{x_k\}_{\Kappa} {xk}K,它收敛到 x ‾ \overline{x} x,由于 X X X是闭集,因此 x ‾ ∈ X \overline{x}\in X xX,由不等式 ( 5 ) (5) (5),我们有:
f ( x j ) + ( x k − x j ) T g j ⩽ F k − 1 ( x k ) ⩽ F k − 1 ( x ‾ ) ⩽ f ( x ‾ ) , ∀ k , j < k . f(x_j)+(x_k-x_j)^Tg_j\leqslant F_{k-1}(x_k)\leqslant F_{k-1}(\overline{x})\leqslant f(\overline{x}),\quad \forall k,j<k. f(xj)+(xkxj)TgjFk1(xk)Fk1(x)f(x),kj<k.
由于对任何数列,上极限一定存在。对 ( 6 ) (6) (6)式,我们取上极限:
lim ⁡ j → ∞ , k → ∞ , j < k , j ∈ K , k ∈ K sup ⁡ { f ( x j ) + ( x k − x j ) T g j } ⩽ lim ⁡ k → ∞ , k ∈ K sup ⁡ F k − 1 ( x k ) ⩽ f ( x ‾ ) \lim_{j\rightarrow \infin,k\rightarrow\infin,j<k,j\in \Kappa,k\in \Kappa} \sup\{f(x_j)+(x_k-x_j)^{T}g_j\}\leqslant\lim _{k\rightarrow\infin,k\in \Kappa}\sup F_{k-1}(x_k)\leqslant f(\overline{x}) j,k,j<k,jK,kKlimsup{f(xj)+(xkxj)Tgj}k,kKlimsupFk1(xk)f(x)
又由于 { x k } K \{x_k\}_{\Kappa} {xk}K是有界的,由课本定理3.1.2,有界闭集上凸函数的次微分是有界的,因此 { g j } K \{g_j\}_{\Kappa} {gj}K是有界的。注意到,我们有:
lim ⁡ j → ∞ , k → ∞ , j < k , j ∈ K , k ∈ K { x k − x j } = 0 \lim_{j\rightarrow \infin,k\rightarrow\infin,j<k,j\in \Kappa,k\in \Kappa} \{x_k-x_j\}=0 j,k,j<k,jK,kKlim{xkxj}=0
于是:
lim ⁡ j → ∞ , k → ∞ , j < k , j ∈ K , k ∈ K { x k − x j } T g j = 0 \lim_{j\rightarrow \infin,k\rightarrow\infin,j<k,j\in \Kappa,k\in \Kappa} \{x_k-x_j\}^Tg_j=0 j,k,j<k,jK,kKlim{xkxj}Tgj=0
另一方面,由于 x j x_j xj收敛到 x ‾ \overline{x} x f f f为定义在 X X X上的连续函数,故:
f ( x j ) ⟶ f ( x ‾ ) , ( x j → x ‾ ) f(x_j)\longrightarrow f(\overline{x}),\quad (x_j\rightarrow \overline{x}) f(xj)f(x),(xjx)
综合 ( 7 ) , ( 9 ) , ( 10 ) (7),(9),(10) (7),(9),(10)式,由夹逼原理,我们有:
lim ⁡ k → ∞ , k ∈ K sup ⁡ F k − 1 ( x k ) = f ( x ‾ ) . \lim_{k\rightarrow\infin,k\in \Kappa}\sup F_{k-1}(x_k)=f(\overline{x}). k,kKlimsupFk1(xk)=f(x).
( 5 ) (5) (5)式最后一个不等号和 ( 11 ) (11) (11)式,我们有:
f ( x ‾ ) ⩽ f ( x ) , ∀ x ∈ X , f(\overline{x})\leqslant f(x),\quad \forall x\in X, f(x)f(x),xX,
( 12 ) (12) (12)式说明了 x ‾ \overline{x} x是一个最优解,由 x ‾ \overline{x} x的任意性,定理得证。Q.E.D.


​ 在实际应用中,由于迭代的次数可能为无穷多次,因此大多数情况下我们都会使用以下不等式来近似最优解 f ∗ f^* f
F k − 1 ( x k ) ⩽ f ∗ ⩽ min ⁡ j ⩽ k f ( x j ) , k = 0 , 1 , 2 , . . . F_{k-1}(x_k)\leqslant f^*\leqslant \min_{j\leqslant k} f(x_j),\quad k=0,1,2,... Fk1(xk)fjkminf(xj),k=0,1,2,...
在这里插入图片描述

对于可接受的误差 ϵ \epsilon ϵ,当 ∣ F k − 1 ( x k ) − min ⁡ j ⩽ k f ( x j ) ∣ < ϵ |F_{k-1}(x_k)-\min_{j\leqslant k} f(x_j)|<\epsilon Fk1(xk)minjkf(xj)<ϵ时,停止迭代。

​ 另一种比较特殊的目标函数为:
f ( x ) = max ⁡ i ∈ I { a i T x + b i } f(x)=\max_{i\in I}\{a_i^Tx+b_i\} f(x)=iImax{aiTx+bi}
其中, I I I是有限的指标集, a i a_i ai为给定的指标, b i b_i bi为标量。

对于这种形式的函数,切平面方法的迭代次数是有限的(以下将证明这一点),因此该方法迭代停止的条件为 F k − 1 ( x k ) = f ( x k ) F_{k-1}(x_k)=f(x_k) Fk1(xk)=f(xk)

定理 3

上述多面体函数经过切平面方法迭代有限次后,必能达到最优解 x ∗ x^* x


证明:

​ 若数对 ( a i k , b i k ) = ( a i j , b i j ) (a_{i_k},b_{i_k})=(a_{i_j},b_{i_j}) (aik,bik)=(aij,bij),其中 j < k j<k j<k,则有:
f ( x k ) = a i k T x k + b i k = a i j T x k + b i j ⩽ F k − 1 ( x k ) ⩽ f ( x k ) f(x_k)=a_{i_k}^Tx_k+b_{i_k}=a^{T}_{i_j}x_k+b_{i_j}\leqslant F_{k-1}(x_k)\leqslant f(x_k) f(xk)=aikTxk+bik=aijTxk+bijFk1(xk)f(xk)
其中,第一个不等号是由于 a i j T x k + b i j a^{T}_{i_j}x_k+b_{i_j} aijTxk+bij相当于定义函数 F k − 1 F_{k-1} Fk1的一个超平面(详见(2)式),第二个不等号是根据: F k − 1 ( x ) ⩽ f ( x ) , ∀ x ∈ X F_{k-1}(x)\leqslant f(x),\quad \forall x\in X\quad Fk1(x)f(x),xX这一事实。此时我们得到了等式 F k − 1 ( x k ) = f ( x k ) F_{k-1}(x_k)=f(x_k) Fk1(xk)=f(xk),说明迭代已经终止。由于数对 ( a i , b i ) , i ∈ I I (a_i,b_i),\quad i\in I\quad I (ai,bi),iII是有限集合,因此该迭代步骤必须是有限次的。Q.E.D.


注意到,切平面方法虽然简单,但是有以下缺点:

  1. 迭代数值不稳定。
  2. 需要时刻关注切平面的选取。
  3. 算法的收敛速度通常很慢。
4.2 部分切平面方法

​ 考虑下面形式的函数:
f ( x ) + c ( x ) f(x)+c(x) f(x)+c(x)
其中, f ( x ) f(x) f(x)是定义在 R R R上的凸函数, c ( x ) c(x) c(x)是一个容易优化的函数(如二次函数)。和之前的讨论类似,我们考虑优化问题:
min ⁡ F k ( x ) + c ( x ) s u b j e c t t o x ∈ X \min\quad F_k(x)+c(x)\\subject \quad to\quad x\in X minFk(x)+c(x)subjecttoxX
迭代算法:
F k ( x ) = max ⁡ { f ( x 0 ) + ( x − x 0 ) T g 0 , . . . , f ( x k ) + ( x − x k ) T g k } x k + 1 ∈ arg ⁡ min ⁡ x ∈ X { F k ( x ) + c ( x ) } F_k(x)=\max\{f(x_0)+(x-x_0)^Tg_0,...,f(x_k)+(x-x_k)^Tg_k\}\\x_{k+1}\in \arg\min_{x\in X}\{F_k(x)+c(x)\} Fk(x)=max{f(x0)+(xx0)Tg0,...,f(xk)+(xxk)Tgk}xk+1argxXmin{Fk(x)+c(x)}
该算法的收敛性质和之前的讨论完全类似,该算法可以推广到多个函数的情形。

4.3 线性约束的情况

​ 考虑约束集是一个多面体:
X = { x ∣ c i T x + d i ⩽ 0 , i ∈ I } X=\{x|c_i^Tx+d_i\leqslant 0,\quad i\in I\} X={xciTx+di0,iI}
令:
p ( x ) = max ⁡ i ∈ I { c i T x + d i } p(x)=\max_{i\in I}\{c_i^Tx+d_i\} p(x)=iImax{ciTx+di}
考虑优化问题:
max ⁡ f ( x ) s u b j e c t t o p ( x ) ⩽ 0 \max f(x)\\subject\quad to \quad p(x)\leqslant0 maxf(x)subjecttop(x)0
优化算法:
F k ( x ) = min ⁡ { f ( x 0 ) + ( x − x 0 ) T g 0 , . . . , f ( x k ) + ( x − x k ) T g k } p k ( x ) = max ⁡ i ∈ I k { c i T x + d i } x k + 1 ∈ arg ⁡ max ⁡ p k ( x ) ⩽ 0 F k ( x ) F_k(x)=\min\{f(x_0)+(x-x_0)^Tg_0,...,f(x_k)+(x-x_k)^Tg_k\}\\p_k(x)=\max_{i\in I_k}\{c_i^Tx+d_i\}\\x_{k+1}\in \arg\max_{p_k(x)\leqslant 0} F_k(x) Fk(x)=min{f(x0)+(xx0)Tg0,...,f(xk)+(xxk)Tgk}pk(x)=iIkmax{ciTx+di}xk+1argpk(x)0maxFk(x)
I k I_k Ik的迭代过程如下:

选择 I I I的任意子集 I 0 I_0 I0作为迭代的初始集合

①:通过上述算法,得到点 x k x_k xk.

②:若 p ( x k ) ⩽ 0 p(x_k)\leqslant 0 p(xk)0,即: max ⁡ i ∈ I k − 1 { c i T x k + d i ⩽ 0 } \max_{i\in I_{k-1}}\{c_i^Tx_k+d_i \leqslant 0\} maxiIk1{ciTxk+di0},则令 I k = I k − 1 I_k=I_{k-1} Ik=Ik1.

③:向 I k I_k Ik中加入一个或多个指标 i i i,其中 i i i不属于 I k − 1 I_{k-1} Ik1,并且保证 i i i满足: c i T x k + d i ⩽ 0 c_i^Tx_k+d_i \leqslant 0 ciTxk+di0.

②:若 p ( x k ) ⩽ 0 p(x_k)\leqslant 0 p(xk)0,即: max ⁡ i ∈ I k − 1 { c i T x k + d i ⩽ 0 } \max_{i\in I_{k-1}}\{c_i^Tx_k+d_i \leqslant 0\} maxiIk1{ciTxk+di0},则令 I k = I k − 1 I_k=I_{k-1} Ik=Ik1.

③:向 I k I_k Ik中加入一个或多个指标 i i i,其中 i i i不属于 I k − 1 I_{k-1} Ik1,并且保证 i i i满足: c i T x k + d i ⩽ 0 c_i^Tx_k+d_i \leqslant 0 ciTxk+di0.

④:重复上述步骤。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值