模拟退火算法SA参数设置实验记录
模擬退火算法有4個(gè)參數(shù)
N:每個(gè)溫度迭代次數(shù)
T:重復(fù)降溫次數(shù)
a:降溫系數(shù)
t0:初始溫度
本文用一個(gè)50個(gè)城市的TSP問題數(shù)據(jù)集,用交叉對(duì)比的方法調(diào)參。一組參數(shù)運(yùn)行200次取平均。
首先調(diào)初始溫度
N=1000,T=1000,a=0.99固定
可以看到在初始溫度在1500時(shí)平均距離和標(biāo)準(zhǔn)差就幾乎沒有什么變化了。也就是初始溫度在大于1500以后對(duì)結(jié)果已經(jīng)沒有什么影響。產(chǎn)生這種效果的原因是
模擬退火算法最重要的判斷條件
Math.exp(差值/t)>r(0-1的隨機(jī)數(shù))
因?yàn)?-1之間隨機(jī)平均下來就是0.5
?
Math.exp(-0.69)=0.5
也就是說-0.69<? 差值/t <0 時(shí)Math.exp(差值/t)>0.5
所以大致可以將模擬退火算法理解成只要? 差值的絕對(duì)值在t的0.7倍以內(nèi)就會(huì)被采用。因?yàn)闇囟萾隨著迭代逐漸降低,t*0.7顯然逐漸變得更小,實(shí)現(xiàn)了退火。
所以t0*a^N這個(gè)值對(duì)退火算法最為重要。
比如 1500*0.99^1000=0.06,0.06*0.7這個(gè)冗余度對(duì)計(jì)算路徑太小了已經(jīng)沒什么意義。
第二步,調(diào)節(jié)降溫系數(shù)
N=1000,T=1000,t0=1500固定
當(dāng)降溫系數(shù)=0.99815時(shí)平均距離為69276最優(yōu),這時(shí)t0*a^N=235,這道題的最短路徑可能在66221附近,235*0.7/66221=0.002,這個(gè)冗余度相當(dāng)于最優(yōu)值的0.2%。
第三步調(diào)重復(fù)降溫次數(shù)T
?
N=1000,a=0.99815,t0=1500固定
這組結(jié)果很明顯同一個(gè)過程重復(fù)次數(shù)越多性能越好。但T越大速度也越慢,所以T取2500.因?yàn)槊總€(gè)溫度迭代次數(shù)=1000固定所以t0*a^N也都是固定的。
第四步調(diào)節(jié)每個(gè)溫度迭代次數(shù)N
T=2500,a=0.99815,t0=1500固定
這個(gè)很明顯隨著N的變化t0*a^N也顯著變化,結(jié)果變差。
所以綜合起來退火算法的四個(gè)參數(shù)
N:每個(gè)溫度迭代次數(shù)
T:重復(fù)降溫次數(shù)
a:降溫系數(shù)
t0:初始溫度
T越大性能越優(yōu),
N,a,t0這個(gè)三個(gè)變量是相互制約的,t0*a^N的值是退火算法最為關(guān)鍵的因素。一個(gè)大致可以參考的標(biāo)準(zhǔn)是t0*a^N*0.7/理論最優(yōu)值=0.002。
這個(gè)測(cè)試和蟻群算法的測(cè)試用的數(shù)據(jù)集是一樣的
雖然退火算法的最好平均值大于蟻群算法,
但是模擬退火算法的最優(yōu)值是66221,這個(gè)最優(yōu)值好于蟻群算法, 而且這個(gè)最優(yōu)值多次出現(xiàn),表明退火算法更有利于搜索全局最優(yōu)值。
總結(jié)
以上是生活随笔為你收集整理的模拟退火算法SA参数设置实验记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 神经网络有可能被公式化表达吗?
- 下一篇: att48数据集最优值10628的解