模擬退火法(saa)基本思想是:在一定溫度下,搜尋從乙個狀態隨機的變化到另乙個狀態;隨著溫度的不斷下降直到最低溫度,搜尋過程以概率1停留在最優解。它有四個基本概念:(1)目標函式,對於最大值問題,使目標函式乘以-1即可(2)溫度,它隨著演算法的迭代逐步下降。一方面,溫度用於限制sa產生的新解與當前解之間的距離,即sa的搜尋範圍;另一方面,溫度決定了sa以多大的概率接受目標函式值比當前解的目標函式值差的新解(3)退火進度表,指代溫度隨演算法迭代的下降速度,退火過程越緩慢,找到全域性最優解的機會就越大,它包括初始溫度及溫度更新函式的引數(4)meteopolis準則,它是指sa接受新解的概率,對於目標函式取最小值的問題,sa接受新解的概率為
1:初始化溫度t,初識解狀態s,每個t值的迭代次數l
2:對k=1,……,l做第三步到第六步
3:產生新解s』
4:計算增量δ(t
′)=c
(s′)
−c(s
)\delta(t')=c(s')-c(s)
δ(t′)=
c(s′
)−c(
s),其中c為評價函式
5:使用meteopolis準則
6:如果滿足終止條件則輸出當前解,結束程式,終止條件通常取為連續若干個新解都沒有被接受時的終止演算法
7:t逐漸減少,且t趨於0,然後做第二步
它的所有呼叫格式如下
x =
simulannealbnd
(fun,x0)
x =simulannealbnd
(fun,x0,lb,ub)
x =simulannealbnd
(fun,x0,lb,ub,options)
x =simulannealbnd
(problem)
[x,fval]
=simulannealbnd
(___)
[x,fval,exitflag,output]
=simulannealbnd
(___)
exitflag說明1
迭代次數達到限制值,目標函式值平均變化小於tolfun
5達到目標函式最小期望值
0由於目標函式檢查步數達到最大或迭代步數達到最大而退出
-1使用者自定義函式引起的退出
-2未搜尋到可行點
-5超過時間限制
options可設定的引數太多,就不一一介紹了,它通過saoptimset進行設定。接下來用乙個例子簡單說明,求如下函式最小值
f=@(x)x(
1)^2
+x(2
)^2+
5*sin(x(
1)*x
(2))
[x,fval,exitflag,output]
=simulannealbnd
(f,rand(1
,2))
optimization terminated: change in best function value less than options.functiontolerance.
x =1.0770
-1.0768
fval =
-2.2640
exitflag =
1output =
包含以下欄位的 struct
: iterations:
1966
funccount:
1983
message:
'optimization terminated: change in best function value less than options.functiontolerance.'
rngstate:
[1×1
struct
] problemtype:
'unconstrained'
temperature:
[2×1
double
] totaltime:
3.1875
由此可見對於乙個簡單的函式而言,模擬退火需要迭代1966次,耗時3.1875秒,因此智慧型尋優演算法一般都是比較耗時的。 模擬退火演算法
w 模擬退火演算法的基本思想 將乙個優化問題比擬成乙個金屬物體,將優化問題的目標函式比擬成物體的能量,問題的解比擬成物體的狀態,問題的最優解比擬成能量最低的狀態,然後模擬金屬物體的退火過程,從乙個足夠高的溫度開始,逐漸降低溫度,使物體分子從高能量狀態緩慢的過渡到低能量狀態,直至獲得能量最小的理想狀態...
模擬退火演算法
一些求解極值的問題不能通過函式特性直接求解,只能暴力列舉,但是單純的列舉效率不高,通過模擬退火演算法可以高效的找到答案。學習好博文 最小圓覆蓋 hdu 3007 buried memory 大意 給出一些點,求出能覆蓋他們的最小的圓。輸出圓心和半徑 include include include i...
模擬退火演算法
1.模擬退火演算法認識 爬山演算法也是乙個用來求解最優化問題的演算法,每次都向著當前上公升最快的方向往上爬,但是初始化不同可能 會得到不同的區域性最優值,模擬退火演算法就可能跳出這種區域性最優解的限制。模擬退火演算法是模擬熱力學系統 中的退火過程。在退火過程中是將目標函式作為能量函式。大致過程如下 ...