旅行商问题 (TSP 问题) 是一个 NP-hard 问题,给定若干个城市,求旅行商从某个城市开始,遍历所有城市最终回到出发点的最短路径 (每个城市只经过一次)。求 TSP 的最优解时间较长,本文介绍一种用 SOM 算法求 TSP 近似解的方法,SOM 是竞争神经网络,也称为自组织映射。
1.前言
最近突然翻到读大学时一个小作业的代码,主要用 SOM 网络算法求 TSP 问题近似解。代码参考了论文《A simple learning algorithm for growing ring SOM and its application to TSP》,论文作者用了一种 RSOM 算法,与 SOM 不同,其初始神经元比较少,但是会在训练的过程中不断的增加新的神经元。
代码是用 matlab 编写的,地址:https://github.com/cc54294/SOM_TSP
代码的效果如下面的 gif 所示,分别是在 48、101、225、561 个城市上计算 TSP 的结果。在 48、101、225 个城市上的效果都比较好,但是在 561 个城市上的效果比较差。