約束優化方法_2_——Frank-Wolfe方法

  Frank-Wolfe方法屬於約束優化可行方向法的一種。上一篇博文對同類型的Zoutendijk可行性方法進行了介紹,這一部分着重關注Frank-Wolfe方法。Frank-Wolfe方法的基本思想是:每次迭代中使用一階泰勒展開式將目標函數線性化,通過解線性規劃得到可行方向,進而沿此方向在可行域內作一維搜索。

一、Frank-Wolfe所針對的優化問題

  首先要明確這個算法的提出是針對哪一種問題。之前的Zoutendijk可行性方法可以解 等式線性約束+不等式線性約束,而Frank-Wolfe方法只能解等式線性約束下的非線性規化問題,形式如下 minf(x)   s.t.   Ax=b   &   x0min f(x) \ \ \ \\ s.t. \ \ \ Ax=b \ \ \ \& \ \ \ x\geqslant 0

二、確定可行方向

  首先在初始可行點x(k)x^{(k)}處進行考察,將f(x)f(x)x(k)x^{(k)}處進行一階Taylor多項式進行展開:f(x)=f(x(k))+f(x(k))T(xx(k))=f(x(k))Tx+[f(x(k))f(x(k))Tx(k)]f(x)=f(x^{(k)})+\triangledown f(x^{(k)})^T(x-x^{(k)})=\triangledown f(x^{(k)})^T x+[f(x^{(k)})-f(x^{(k)})^Tx^{(k)}]  問題轉化爲在可行域SS內最小化這個一階展開式:min   f(x(k))Tx+[f(x(k))f(x(k))Tx(k)]s.t.   xSmin \ \ \ \triangledown f(x^{(k)})^T x+[f(x^{(k)})-f(x^{(k)})^Tx^{(k)}] \\ s.t. \ \ \ x\in S   考慮到方括號內爲常數,去掉之後變爲:min   f(x(k))Txs.t.   xSmin \ \ \ \triangledown f(x^{(k)})^T x \\ s.t. \ \ \ x\in S   求解這個線性規劃可以得到最優解y(k)y^{(k)},由線性規劃知識可以知道一定在SS的極點達到。
  現在研究變動後的y(k)y^{(k)}對函數值的影響,也就是運動方向dd和函數梯度的乘積f(x(k))T(y(k)x(k))\triangledown f(x^{(k)})^T(y^{(k)}-x^{(k)})。此時共有兩種情況:

**1.**若乘積爲0,則方向無法和梯度構成鈍角,x^{(k)}是原問題KT點。
**2.**若乘積小於0,則方向可以和梯度構成鈍角,使得函數值繼續下降。
(注:y(k)y^{(k)}是用於確定方向,而不是下一步迭代點,更像一個“導航點”)

三、確定移動步長

  連接初始點x(k)x^{(k)}和導航點y(k)y^{(k)},在此直線上進行一維搜索,則步長區[0,1]:min   f(x(k)+λ(y(k)x(k)))s.t.   λ[0,1]min \ \ \ f(x^{(k)}+\lambda (y^{(k)}-x^{(k)})) \\ s.t. \ \ \ \lambda \in[0,1]   得到λ\lambda之後即可得到下一個可行點:x(k+1)=x(k)+λ(y(k)x(k))x^{(k+1)}=x^{(k)}+\lambda (y^{(k)}-x^{(k)})

四、算法分析

  Frank-Wolfe方法每次迭代時,搜索方向總時指向某個極點,當接近最優解時,搜索方向和函數梯度趨於正交,並不是最好的搜索方向。但是由於它將非線性規化問題轉化爲了一系列線性規劃問題,有時可以達到好的計算效果。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章