蚁群算法调参记录
蟻群算法主要有5個(gè)參數(shù)
a信息素重要程度,
b啟發(fā)式因子重要程度,
c信息素蒸發(fā)系數(shù),
ant螞蟻數(shù)量,
iter迭代次數(shù)
制作了一個(gè)50個(gè)節(jié)點(diǎn)的地圖,用交叉對(duì)比的方法尋找最佳參數(shù)
首先調(diào)b
螞蟻數(shù)100,迭代數(shù)100.
很明顯b越小距離和平均值越大,標(biāo)準(zhǔn)差也越大,b=14的時(shí)候距離的平均值,最小值,和標(biāo)準(zhǔn)差都幾乎是最小的,當(dāng)b=20的時(shí)候距離變大。
這件事的可能原因是b大一些會(huì)使城市的權(quán)重和sum變的很小Math.pow(1.0/distance[currentCity][i], b),可能會(huì)達(dá)到2.397101359805423E-30,這樣會(huì)使優(yōu)勢(shì)城市權(quán)重占比變的非常突出。而如果b很小比如如果b=2,sum可能等于9.226501283762148E-7,這樣會(huì)使被選城市的權(quán)重占比看起來優(yōu)勢(shì)模糊。
所以b選擇14.
然后調(diào)節(jié)a
a對(duì)效果的影響看起來像是單調(diào)的,隨著a的減小平均值,標(biāo)準(zhǔn)差都在減小。當(dāng)a=0.0001的時(shí)候得到的最小值更小些,所以a取0.0001.
然后調(diào)節(jié)r
螞蟻數(shù)100,迭代數(shù)100.
?
當(dāng)r等于0的時(shí)候意味著信息素矩陣沒有遺忘,當(dāng)r=1的時(shí)候相當(dāng)于螞蟻完全是在隨機(jī)運(yùn)動(dòng),但是可以看到即便是沒有信息素矩陣的幫助只是靠著城市之間距離的關(guān)系得到的值也并不是非常差,71212相比67801相差大概5%。
通過對(duì)比可以發(fā)現(xiàn)除了r=1完全遺忘,其余的值對(duì)結(jié)果的影響都不是很明顯。也就是說信息素只要不是全忘了對(duì)結(jié)果相差不大。
所以r選擇0.5,
然后調(diào)節(jié)螞蟻數(shù)和迭代數(shù)
增加螞蟻數(shù)和迭代數(shù)效果非常明顯,隨著螞蟻數(shù)*迭代數(shù)的增大,距離平均值和標(biāo)準(zhǔn)差都在減小。耗時(shí)也在等比例的增大。
綜合起來
a信息素重要程度,a越小得到的距離越小
b啟發(fā)式因子重要程度,有至少一個(gè)最優(yōu)值
c信息素蒸發(fā)系數(shù),只要不是1,相差并不是特別大
ant螞蟻數(shù)量,數(shù)量越多性能越好,越穩(wěn)定,耗時(shí)也越大
iter迭代次數(shù),數(shù)量越多性能越好,越穩(wěn)定,耗時(shí)也越大
原始數(shù)據(jù)地圖
總結(jié)
- 上一篇: 权重可以当做概率幅吗?---用神经网络的
- 下一篇: 并行多机调度遗传算法调参记录---变异和