類比退火演算法例子__演算法

來源:互聯網
上載者:User

求解某一個方程fun(x)的極小值,很常見的以一種情況是當前的x不管增大還是減小,函數值fun(x)均是增大,這時x就是極值。這是一種完完全全的貪心演算法。這樣求出的極小值,並不一定整段函數的全域極小值,而極可能是局部極小值。

例如下圖


 

可以看出,有三個點,均是極小值點,在這是三個點處,不管增大變數,或是減小變數,目標函數的值都會增大。而只有最左邊的那個點,才是全域最優解。

從數學模型上來看,是一種全域極小值求解問題,擴充到物理意義上,舉幾個例子:

我們什麼PID參數,才是最優秀的呢。我們什麼PID參數,才能讓控制達到快准狠。自己一個一個的去套嗎,累死。當然也可以用電腦一個一個去套,但是這樣仍然非常花時間。利用類比退火演算法,就可以很好的求出最優PID參數。

再比如我們的聚類演算法,什麼樣的碼本設計,才能使得向量量化的誤差減為最小,這仍然是一個全域最優搜尋問題。

 

求解全域最優解,有很多方法,類比退火法只是我們其中一個,

除此之外,還有遺傳演算法、禁忌搜尋演算法、蟻群演算法、粒子群演算法等等。各有優缺點。

 

類比退火演算法,顯著的缺點是 相較其他演算法,其穩定速度較慢,優點是在參數合適的情況下基本上可以100%得到全域最優解。

求解一個一維輸入一維輸出函數的全域最小解。這個思想也可以擴充到求解任意函數,輸出point時,的輸入應該為多少。

例如:已知函數F(x),我們想求輸出3時的輸入x為多少。我們可以將目標函數變換為

M(x) = (F(x)-3).^2 (平方或是求絕對值)

這樣就轉換為求解M(x)全域最小值0的問題。即當x滿足F(x)=3 時,M(x)才能滿足全域最小值。

 

我的vc代碼裡面是求解sin(x)+cos(0.3*x)這函數,x範圍[-10 ,10]的全域極小值。


關於類比退火,有一個有趣的比喻,協助大家學習和理解:

  一般局部極小值演算法:兔子朝著比現在高的地方跳去。它找到了不遠處的最高山峰。但是這座山不一定是珠穆朗瑪峰。這就是爬山演算法,它不能保證局部最優值就是全域最優值。

  類比退火:兔子喝醉了。它隨機地跳了很長時間。這期間,它可能走向高處,也可能踏入平地。但是,它漸漸清醒了並朝最高方向跳去。這就是類比退火。


類比退火演算法是用來求解最佳化問題的演算法。比如著名的TSP問題函數最大值最小值問題等等。接下來將以如下幾個方面來詳細介紹類比退火演算法。

   1. 類比退火演算法認識

   2. 類比退火演算法描述

   3. 費馬點問題求解

   4. 最小包含球問題求解

   5. 函數最值問題求解

   6. TSP問題求解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.