使用蚁群算法(ACO)、遗传算法(GA)、霍普菲尔德网络(Hopfield)解决旅行商问题(TSP)
在研究生《人工智能》课堂上学习了蚁群算法之后,老师提出了可以解决旅行商问题的三种思路,分别通过神经网络计算、进化计算和群智能计算得到最佳途径:
如何在此包含50个城市坐标的地图搜索出一条路径,遍历每一座城市且不重复地返回原点?本文选取蚁群算法、遗传算法和霍普菲尔德网络的方法,分别实现其算法的 Python 程序,并进行了实验比较。
完整代码可在 @DiamonJoy下载
1. 旅行商问题(TSP)
旅行商问题 TSP 是一个典型的组合优化问题,并且是一个 NP 完全问题,其可能 Hamilton 圈的数目是顶点的数目 n 的指数函数,所以一般很难精确地求出其最优解。所谓组合优化问题,是指在离散的,有限的数学结构上,寻找一个满足给定条件,并使其目标函数值达到最小或最大的解。一般来说,组合优化问题通常带有大量的局部极值点,通常是非线性的 NP 完全问题。其最先起源于一个旅行商要访问他所有的客户,要发现一条最短的路线。用用图论的术语来说,旅行商问题就是在赋权完全图上找一个权最小的 Hamilton 圈。但是,首先从应用上来说,很多实际应用问题,如印制电路板的、连锁店的货物配送路线等,经简化的处理后,均可转化为旅行商问题TSP。
由于旅行商问题的重要应用价值,因而对旅行商问题的算法研究自然是一个无法回避的问题;其次,从理论上来说,它的计算复杂性研究在形成 NP 完全理论中起到奠基作用。今天,由于电子计算机科学技术的进展,这个古老问题的算法研究又重新注入了新的活力,旅行商问题研究的新思路、新方法、新成果必将丰富 NP 完全理论的内涵,促进 NP 完全理论的发展。
2. 蚁群算法(ACO)
在 TSP 求解中,参与路径搜寻的每只蚂蚁都具有下列特征:
- 其选择城市的概率是城市之间的距离和连接支路上所包含的当前信息素余量的函数;
- 为了强制蚂蚁进行合法的周游,直到一次周游完成时,才允许蚂蚁游走已访问的城市;
- 当完成一次周游,每只蚂蚁在每条访问过的支路上留下信息素。