日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

模拟退火算法

發布時間:2023/12/31 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模拟退火算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、模擬退火算法原理
  • 二、算法公式
      • 1.Metropolis算法
      • 2.退溫函數
      • 3.馬爾可夫鏈
  • 三、算法步驟
      • 舉個例子
  • 總結


前言

模擬退火算法是一種通用的優化算法,是局部搜索算法的擴展,但是不同于局部搜索算法之處是以一定的概率選擇領域中目標值較大的劣質解。模擬退火算法以優化問題的求解與物理系統退火過程的相似性為基礎,利用Metropolis算法適當地控制溫度的下降過程來實現模擬退火,從而達到求全局優化的問題。

一、模擬退火算法原理

模擬退火算法來源于固體退火原理,將高溫物體徐徐冷卻,慢慢達到一個穩定的狀態。高溫時,內部粒子內能大,粒子可能在固體內部的任何地方活動;當溫度慢慢冷卻,粒子內能減少,活躍度降低,活動范圍慢慢減小;當固體冷卻完畢或者達到平衡穩定,粒子的位置就固定,就可以獲取最優解。
模擬退火算法的主要是思想是:在搜索區間隨機游走,再利用Metropolis抽樣準則,使隨機游走逐漸收斂于局部最優解。而溫度是Metropolis算法的重要參數,決定了隨機過程收斂的快慢。

二、算法公式

1.Metropolis算法

對于目標函數f(x),參數從x1變化到x2被接受的概率p為(以求最小值為例):
    當f2<f1時,p=1
    當f2>f1時,p=exp(-Δf/T)
Δf=f1-f2為目標函數f(x1),f(x2)的值的差。
T為溫度常數,隨著時間慢慢減少,當溫度很高時,取第二種概率高,隨著溫度降低,取第二種情況慢慢減少,直至幾乎不會選擇第二種情況。

2.退溫函數

模擬退火算法的溫度T是慢慢降低的常用公式更新函數為:
T(n+1)=K*T(n)
K是一個非常接近1的常數,比如0.99.

3.馬爾可夫鏈

參數X的在溫度T下的迭代過程類似于馬爾可夫鏈過程,即X(n+1)的值受X(n)影響,X(n+1)=g(X(n))。

三、算法步驟

a. 初始化:設置初始溫度T(足夠大,保證Metropolis算法可以取第二種情況),設置初始解狀態x(0),設置每個T值的迭代次數L,設置x更新函數,最優解best和最優解目標函數f(best)。
b. 對于1...L,重復c~f:
c. 計算出一個新的參數x(i)=g(x(i-1));
d. 計算目標函數增量Δf=f(x(i))-f(x(i-1));
e. 根據Metropolis算法選擇是否接受新的解x(i),如果不接受,x(i)=x(i-1);
f. 如果f(x(i))<f(best),best=x(i);
g. 如果滿足終止條件(T足夠小或者目標函數f(best)達到指標),輸出最優解best,結束;否則,更新溫度T,轉到b.

舉個例子

求函數f=cos(xy)+xy+y^3 在區間[-5,5]的最小值,選取的T可以為100,初始狀態x0,y0在區間隨機取即可。
退溫比例K可以取0.998,馬爾可夫鏈迭代次數可以選取[200,2000]。
參數x,y更新函數可以選取 x(n+1)=x(n)+rand(-5,5)*step,step為步長。step的選取很麻煩,太大了最后收斂的時候可能取不到最優解,太小了跳不出局部最優解。實現過程中,我覺得可以設置step隨著遍歷次數慢慢減少,取[0.02,0.05]。
書本上給的例子還有一個旅行商問題(TSP問題),求旅行商人不充復拜訪全國的最短路徑。在實現上沒什么區別,就是參數更新函數上,是選擇了隨機調換兩個地點的順序。

總結

這個算法是看書本寫的,例子也是書本的,想看原版的可以去看看《智能優化算法及其MATLAB實例》

總結

以上是生活随笔為你收集整理的模拟退火算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。