最優化第二講—一維搜索算法(二分法、等區間法)

本講主要列一下單峯搜索算法

問題:f(x)在區間[a,b]內只有一個極小值點,要找到這個極小值點或者這個極小值點所在的區間[x1,x2],其中[x1, x2]要遠遠小於[a, b]

方法:

一個通用的結論

要縮小區間,必須計算兩個點,如果所示,必須計算x1和x2,然後對函數值進行比較。如果f(x1)小於f(x2),那麼就說明極小值點一定在a到x2之間,反之也是這個思路。途中後面的兩個式子將在以後的方法中反覆使用。注意這了僅僅指的是單峯函數

具體的方法基本都是基於以上的思路,不同的是怎麼確定x1和x2

具體的方法有

1. 二分搜索法(dichotomous search)

步驟一:首先找到[a,b]的中間點c,c=(a+b)/2,這就是“二分”的意思

步驟二:事先確定一個值sigma,在c左右各找二分之sigma,產生x1、x2。這個就是通用結論中的x1、x2

步驟三:按照通用結論中的方法來做

步驟四:循環確定區間[x1, x2],直到滿足要求爲止

查找速度:新區間的長度L(n+1),上一個區間的長度L(n),他們的關係是:L(n+1) = L(n)/2 + sigma/2

這個方法其實只是確定了x1和x2怎麼找。

計算量:需要計算三個點

缺點:一是需要預先指定sigma,指定不好會有問題。二是得到x1、x2需要計算三個點

2. 等分區間搜索(equal-interval search)

三點等分(也就是區間四等分)

算法跟上面的基本一致,下面通過一個計算題描述一下

第一步:根據題目要求,區間在[0, 1]之間

第二步:將區間三等分,得到三個點,x1、x2、x3

第三步:計算x1、x2、x3對應的函數值,比較大小,這個題目比較特殊,x2、x3點的函數值是一樣的,所以如果認爲x2是最小點,那麼確定的函數區間爲[0.25, 0.75],如果認爲x3是最小點,那麼選取的區間是[0.5, 1]。區間縮小爲原先的1/2

查找速度:L(n+1) = L(n)/2

計算量:第一輪需要計算三個點的值,以後只需要計算兩個點的值

 

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