蚁群算法是一个功能强大的优化算法,常用来求解旅行商 (TSP) 问题。本文分享一个我自己写的蚁群算法 Matlab 程序代码,详细交代其中的优化点。主要特色是对蚁群的
1、旅行商 (TSP) 问题
先交代一下什么是旅行商问题,即 Traveling Salesman Problem (TSP). 给定地图上 N 个点的坐标,让一个走街窜巷的小商贩从其中任何一个点出发,周游全部的 N 个点,每个点只经过一次,最后回到出发点。如何安排这 N 个点的访问次序,使周游路径的总长度最小?
![5006aa69736f06804291a7245f18919a.png](https://img-blog.csdnimg.cn/img_convert/5006aa69736f06804291a7245f18919a.png)
旅行商问题不同于最短路径,没有多项式时间的严格解法,属于 NP 难问题。主要原因是问题并非指定起点和终点的目的性旅行,而是要周游全部的 N 个点,且规定每个点只访问一次。旅行商问题类似于哈密顿环问题。后者是在一个非完全连通的无向图上判定周游路径是否存在,而前者则是在一个完全连通的无向图上寻找最短的周游路径。
2、蚁群算法简介
蚁群算法受自然界中的蚁群寻找最短路径的启发。每只蚂蚁遇到一个岔路口表现出随机行为,在群体留下的信息素和局域距离信息的贪心规则启发下选择道路。信息素的通俗理解就是蚂蚁们留下的“脚印”,用来帮助每只蚂蚁判断哪条路走的人多。而贪心规则就是尽量就近选择下一个点。比如一只蚂蚁站在点 i 上,下一个点 j 被访问的概率
如果 j 是已访问点 (visited),则
Evan:蚁群算法 - 求解 TSP 问题
在传统的蚁群算法中,所有蚂蚁的