漫步最優化四十——Powell法(上)





滿



滿

——

過去使用最廣泛的共軛方向法是由Powell提出來的,這個方法與共軛梯度法一樣,開始也是來自凸二次問題,但是它也成功應用於非二次問題。

Powell法最顯著的特徵就是通過一系列線搜索生成共軛方向,所用的技術基於下面的定理:

1 如果凸二次問題

f(x)=a+xTb+12xTHx

在直線

x=xa+αda


x=xb+αdb

上分別對α 最小化,得到的最小點分別爲xa,xb ,如圖1所示。

如果db=da ,那麼向量xbxada (或者db )共軛。

如果f(xa+αda),f(xb+αdb)α 最小化,那麼

df(xa+αda)dα=dTag(xa)=0df(xb+αdb)dα=dTbg(xb)=0(1a)(1b)

因爲

g(xa)=b+Hxag(xb)=b+Hxb(2a)(2b)

因爲db=da ,所以由等式1與2可得

dTaH(xbxa)=0

因此,向量xbxa 與方向da (或者db )共軛,證畢。||

在Powell算法中,假設初始點爲x00n 個線性無關方向爲d01,d02,,d0n ,並且每次迭代執行一系列線搜索。雖然可以使用任意的線性無關方向集合,但是出於方便,我們使用座標方向集。


這裏寫圖片描述
圖1

第一次迭代的時候,f(x) 從初始點x00 開始,在方向d01,d02,,d0n 上最小化分別得到點x01,x02,,x0n ,如圖2所示,新的方向d0(n+1)
d0(n+1)=x0nx0

f(x) 在這個方向上最小化得到新的點x0(n+1) ,然後更新方向集爲

d11d12d1(n1)d1n=d02=d03=d0n=d0(n+1)(3)

第一次迭代的效果就是f(x) 減少了Δf=f(x00)f(x0(n+1)) 並且同時刪除了d01 加入了d0(n+1)

第二次得帶執行同樣的過程,從點

x10=x0(n+1)

開始,f(x) 在方向d11,d12,,d1n 上最小化分別得到點x11,x12,,x1n ,如圖3所示,然後生成新的方向d1(n+1)

d1(n+1)=x1nx10

f(x) 在方向d1(n+1) 上最小化得到點x1(n+1) 。因爲

d1n=d0(n+1)

所以d1(n+1)dn 共軛,因此我們令

d21d22d2(n1)d2n=d12=d13=d1n=d1(n+1)(4)

新的方向解將包含一對共軛方向,即d2(n1),d2n

用同樣的方式執行上面的過程,每次迭代都會增加一個共軛方向。Powell法需要n(n+1) 次線搜索,因爲每次迭代包含(n+1) 次線搜索,共需要n 次迭代,Powell算法實現如下:

11x00εd01=[x01 0  0]Td02=[0 x02  0]Td0n=[0 0  x0n]Tk=02i=1nαki,f(xk(i1)+αdki)αxki=xk(i1)+αkidki3dk(n+1)=xknxk0αk(n+1),f(x0+αdk(n+1))αxk(n+1)=xk0+αk(n+1)dk(n+1)fk(n+1)=f(xk(n+1))4αk(n+1)dk(n+1)<ε,x=xk(n+1),f(x)=fk(n+1)5d(k+1)1=dk2d(k+1)2=dk3d(k+1)n=dk(n+1)x(k+1)0=xk(n+1),k=k+1,k=k+12


這裏寫圖片描述
圖2


這裏寫圖片描述
圖3

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