蚁群算法调参记录

蚁群算法主要有5个参数

a信息素重要程度,

b启发式因子重要程度,

c信息素蒸发系数,

ant蚂蚁数量,

iter迭代次数

制作了一个50个节点的地图,用交叉对比的方法寻找最佳参数

首先调b

蚁群算法调参记录_第1张图片

蚂蚁数100,迭代数100.

很明显b越小距离和平均值越大,标准差也越大,b=14的时候距离的平均值,最小值,和标准差都几乎是最小的,当b=20的时候距离变大。

这件事的可能原因是b大一些会使城市的权重和sum变的很小Math.pow(1.0/distance[currentCity][i], b),可能会达到2.397101359805423E-30,这样会使优势城市权重占比变的非常突出。而如果b很小比如如果b=2,sum可能等于9.226501283762148E-7,这样会使被选城市的权重占比看起来优势模糊。

所以b选择14.

然后调节a

蚁群算法调参记录_第2张图片

a对效果的影响看起来像是单调的,随着a的减小平均值,标准差都在减小。当a=0.0001的时候得到的最小值更小些,所以a取0.0001.

然后调节r

蚁群算法调参记录_第3张图片

蚂蚁数100,迭代数100.

 

当r等于0的时候意味着信息素矩阵没有遗忘,当r=1的时候相当于蚂蚁完全是在随机运动,但是可以看到即便是没有信息素矩阵的帮助只是靠着城市之间距离的关系得到的值也并不是非常差,71212相比67801相差大概5%。

通过对比可以发现除了r=1完全遗忘,其余的值对结果的影响都不是很明显。也就是说信息素只要不是全忘了对结果相差不大。

所以r选择0.5,

然后调节蚂蚁数和迭代数

蚁群算法调参记录_第4张图片


增加蚂蚁数和迭代数效果非常明显,随着蚂蚁数*迭代数的增大,距离平均值和标准差都在减小。耗时也在等比例的增大。

综合起来

a信息素重要程度,a越小得到的距离越小

b启发式因子重要程度,有至少一个最优值

c信息素蒸发系数,只要不是1,相差并不是特别大

ant蚂蚁数量,数量越多性能越好,越稳定,耗时也越大

iter迭代次数,数量越多性能越好,越稳定,耗时也越大


原始数据地图

蚁群算法调参记录_第5张图片


蚁群算法调参记录_第6张图片


蚁群算法调参记录_第7张图片

蚁群算法调参记录_第8张图片


蚁群算法调参记录_第9张图片


蚁群算法调参记录_第10张图片


蚁群算法调参记录_第11张图片


蚁群算法调参记录_第12张图片


蚁群算法调参记录_第13张图片

蚁群算法调参记录_第14张图片


蚁群算法调参记录_第15张图片


你可能感兴趣的:(进化)