前言
临时接到一个分支任务,那就是解决TSP问题,来作为人工智能课程的期中测试。是的这不时巧了嘛,我Hou(第三声)恰好略懂一二。那么今天的话,咱们就用好几个方案来解决这个问题吧,首先是咱们的遗传算法,之后是咱的PSO算法,最后是咱们的一个衍生想法,就是使用强化学习来做(这里选取的是DQN,我们采用3个网络并行解决问题),同样我们分三篇博文说明。
TSP问题
那么在开始之前的话,咱们来仔细描述一下这个TSP问题。这个打过数模,或者接触过智能优化或者机器学习方面的朋友应该都知道,当然为了本文的受众普适性,咱们在这里尽可能去完善一点,说清楚,这样便于咱们去实际解决问题。
那么这个问题的其实简单,是这样子的:
在我们的N维平面是,咱们今天的话是拿这个二维平面来的,在这个平面上有很多个城市,城市之间是彼此联通的,我们现在要找出一条最短的路径可以将全部城市都走完。例如我们有城市A,B,C,D,E。现在知道了城市间的坐标,也就是相当于知道了城市之间的距离,那么现在找到一个顺序,能够使得走完A,B,C,D,E所有城市的路径和最短。比如计算完之后可能是B-->A-->C-->E-->D。换一句话说找到这个顺序。
枚举
首先要解决这个问题的话,其实方案有很多,说变白了,咱们就是要找到一个顺序,能够让路径之和最小,那么