以求解以下這麼乙個函式為例子,實現**為r語言 f(
x)=x
∗sin
(10∗π
∗x)+
2x∈[
−1,2
] f(x)=x∗sin(10∗π∗x)+2x∈[−1,2]
其函式影象為:
又稱做狀態產生函式,通常由兩部分組成:
1)第一次產生候選解的分布函式。
2)第一次產生候選解不滿足條件的情況下,再次產生解的分布函式。
下面採用的是標準差為2的正態分佈、標準差為3的正態分佈。其中要注意的是狀態產生函式(領域函式)的出發點應該是盡可能保證產生的候選解遍布全部的解空間。
又稱做狀態接受函式,這裡是模擬退火法這個名字的**,模仿固體退火原理,隨著溫度(迭代次數上公升)的下降,能量逐漸穩定。即劣解的接受概率p
p逐漸下降,其公式為: p=
limitx
#1. 初始化以及引數調整
stmp
t0 s0
iters
# 迭代次數
ccnt
# 終止條件,連續ccnt個新解都沒有接受時終止演算法
hisbest
ccntvc
#2.迭代
for (i in
1:iters)
#2.2 計算能量增量
delta_t
#2.3 根據增量判斷是否接受解
if (delta_t > 0) else else
} #2.4 更新最優值
hisbest
hisbest
#2.5 更新溫度
t0 #2.6 檢查終止條件
ccntvclen
if (ccntvclen > ccnt && # 模擬次數大於ccnt
sum(ccntvc[(ccntvclen - ccnt +1):ccntvclen]) == 0)
}# 連續 200 次沒有接受新解,演算法終止!
# 迭代次數為: 257
# 最優解為: 1.848313 在看了游皓麟一書的某些**塊後,越發感覺利用r語言學習演算法的效率之高,**簡短,感覺就像可以執行的流程圖。是乙個學習的快速工具。
同問題粒子群演算法求解:
遺傳演算法求解:
模擬退火演算法
w 模擬退火演算法的基本思想 將乙個優化問題比擬成乙個金屬物體,將優化問題的目標函式比擬成物體的能量,問題的解比擬成物體的狀態,問題的最優解比擬成能量最低的狀態,然後模擬金屬物體的退火過程,從乙個足夠高的溫度開始,逐漸降低溫度,使物體分子從高能量狀態緩慢的過渡到低能量狀態,直至獲得能量最小的理想狀態...
模擬退火演算法
一些求解極值的問題不能通過函式特性直接求解,只能暴力列舉,但是單純的列舉效率不高,通過模擬退火演算法可以高效的找到答案。學習好博文 最小圓覆蓋 hdu 3007 buried memory 大意 給出一些點,求出能覆蓋他們的最小的圓。輸出圓心和半徑 include include include i...
模擬退火演算法
1.模擬退火演算法認識 爬山演算法也是乙個用來求解最優化問題的演算法,每次都向著當前上公升最快的方向往上爬,但是初始化不同可能 會得到不同的區域性最優值,模擬退火演算法就可能跳出這種區域性最優解的限制。模擬退火演算法是模擬熱力學系統 中的退火過程。在退火過程中是將目標函式作為能量函式。大致過程如下 ...