步長加速法

2021-08-10 23:14:48 字數 3059 閱讀 8350

前面幾篇部落格中,分別講述了最速下降法、newton法、擬newton法和共軛方向法,這些方法中都需要計算目標函式f(

x)的梯度,其中newton法還需要計算目標函式f(

x)的hesse矩陣。我們把以上方法統稱為導數方法。當然還有不計算導數的方法,稱為直接方法。步長加速法就是一種簡單的直接方法,對於變數較少的無約束極小化問題,步長加速法是一種簡單又比較有效的方法。

選定初始點x0

和初始步長向量s0

(這裡是步長向量,與導數法中的步長因子不一樣,可以吧步長向量看作是αk

pk),其中s0

的每乙個分量都是正數。

步長加速演算法主要由交替進行的」探測搜尋」和」模式移動」構成。探測搜尋的出發點我們稱為參考點,用向量r=

[r1,

r2,.

..,r

n]t 來表示,探測搜尋的目的是在參考點附近尋找比他更好的點(在求解最小值問題時就是值更小的點),我們把找到的更優點稱為基點,用向量b=

[b1,

b2,.

..,b

n]t 來表示。如果能找到這樣的點

b ,我們就能找到乙個有利的前進方向b−

r,因此從基點

b 出發沿著b−

r方向前進,可能還會找到比點

b 更優的點。我們把向量b−

r稱為模式,而模式移動的過程就是沿著b−

r 方向進行搜尋的過程,有如下公式r~

=b+α

(b−r

) 其中α

>

0(1)

,一般會取α=

1 ,或用直線搜尋技術來確定。當上式α=

1 時,公式變為r~

=2b−

r(2)

模式移動的起點是基點,得到的終點是新的參考點。之後再按照上文中的過程進行搜尋。

在講步長加速法的演算法之前,首先講一下探測搜尋的過程。

考慮在參考點

r 處,以s=

[s1,

s2,.

..,s

n]t為步長向量的探測搜尋。

探測搜尋演算法。

已知:目標函式f(

x),步長向量s=

[s1,

s2,.

..,s

n]t ,參考點r=

[r1,

r2,.

..,r

n]t

(1)計算fr

=f(r

) ;置fb

=fr ,b=

r

(2)沿著第i=

1,2,

...,

n 座標軸方向依次搜尋,計算 f1

=f(b

+sie

i),f

2=f(

b−si

ei)

,其中 ei

是第 i

座標軸上的單位向量,必有以下三種情況之一。i)若f1

,則說明 b

+sie

i 比 b

好,置b=

b+si

ei,f

b=fi

ii)若 f

1≥fb

並且 f

2,則說明 b

+sie

i 不比 b

好,但是b−

siei

要比 b 好,因此置b=

b−si

ei,f

b=f2

iii)若 f

1≥fb

,並且 f

2≥fb

,則說明 b

+sie

i和b−

siei

都不比 b

好,則b和

fb 保持當前值不變。

探測搜尋的過程比較簡單就是分別沿著座標軸方向進行搜尋,找到乙個比基點 b

更優的點。

下面給出完整的步長加速法的演算法描述。

步長加速法。

已知:

n元目標函式 f

(x) ,步長收縮係數的終止限 ϵ

(1)選定初始點 x

0 ,初始步長向量 s

0 (2)置 r

=t0,

b0=x

0,c=

1,w=

0.5(或者

0.1)

(3) s

=cs0

(4)在點 r

處以s為步長向量,按探測搜尋演算法做探測搜尋

(5)若探測搜尋成功,即 f

b,則轉(6),否則轉(10)

(6)做模式移動, r

=2b−

b0;置 b

0=b,

f0=f

b (7)在 r

處,以s為步長向量,按探測搜尋演算法做探測搜尋。

(8)若這次探測搜尋的終點 b

的目標函式值比前一次探測搜尋的終點b0

的目標函式值小,即 f

b,則稱上次的模式移動成功。同時i說明從 b

出發,沿方向b−

b0由繼續前進的必要。因此轉(6),再次做模式移動。因為 |

|b−b

0|| 一般比 |

|b−r

||大,所以凡是連續做的模式移動都是加速步驟。

(9)若 f

b≥f0

,則上次的模式移動失敗。模式移動一旦失敗,相當於說模式移動作廢,因而沒有了參考點。此時,取前一次探測搜尋的終點 b

0 作為參考點 r

,然後轉(4)

(10)由(5)轉來,若探測搜尋失敗,即fb

≥fr,則判別步長收縮係數 c

是否充分小:若

c>

ϵ,即置 c

=wc ,然後轉(3);若 c

≤ϵ,則 r

就是所求的極小點,輸出,停止。

演算法說明: 演算法的第(4)步和第(7)步都是探測搜尋,但他們的作用有區別,前者的出發點即使參考點又是基點,目的是在基點周圍構造乙個模式,稱為i型探測搜尋;後者的出發點單純是參考點,目的是判別上次的模式移動是否成功,從而能夠做加速移動,稱為ii型探測搜尋。

大津法加速

int otsu2 accel cv mat src,int width,int height float pixelpro 256 統計灰度級中每個畫素在整幅影象中的個數 for int y 0 y height y float sum u 0 計算每個畫素在整幅影象中的比例 for int i ...

python 切片步長 python 切片步長

python切片 切片 list變數 值下標 結束值下標 什麼意思呢?就是獲取 list中 下標從定義的位置開始獲取資料到 自定義的下標位置結束,但是切片有個規矩就是顧頭不顧尾,舉個例子 kl oppo vivo iphone levovo print kl 0 1 結果 oppo 如果我取list...

python 切片步長

python切片 切片 list變數 值下標 結束值下標 什麼意思呢?就是獲取 list中 下標從定義的位置開始獲取資料到 自定義的下標位置結束,但是切片有個規矩就是顧頭不顧尾,舉個例子 kl oppo vivo iphone levovo print kl 0 1 結果 oppo 如果我取list...