蚁群算法解TSP问题
TSP问题(Travelling Salesman Problem),可译为旅行商问题、货郎担问题。其问题描述简单,却具有输入规模的指数函数的计算复杂性,属于NP完全问题。
问题可描述为:
有一位商人,他想访问中国的某些城市,要求:
1. 所走路程最近
2. 每个城市只能访问一次
3. 从某城市出发,最后回到该城市
本文所解的TSP问题与上述第3条不同,只处理了走完所有城市,没有回到出发的城市。
code:
#coding:utf-8
import random
class ACOtspSolution:
maxgen=2500 #循环次数
pop_size=380 #蚂蚁个数
alpha=3 #信息启发式因子
beta=4 #期望启发式因子
q=100 #信息素强度
phinit=20 #初始信息素浓度
rou=0.3 #信息挥发系数
def __init__(self,plist):#传入点列表(坐标元组表示)
self.g=[] #邻接矩阵,每两个点间的距离
self.n=len(plist) #问题规模(点的个数)
self.pheromone=[[self.phinit]*self.n for i in range(self.n)]
#信息素list,记载每两点间直接路径上的信息素量
for i in range(len(plist)):
self.g.append([])
for j in range(len(plist)):
if i==j :self.g[i].append(0)

本文探讨了利用蚁群算法来求解旅行商问题(TSP)。TSP是一个经典的NP完全问题,要求在遍历所有城市一次并返回起点的条件下找到最短路径。文中提到的实现未考虑返回起点的城市,提供了算法的代码思路,并引用了相关论文作为学习资源。测试数据和论文下载链接已给出。
最低0.47元/天 解锁文章
4万+

被折叠的 条评论
为什么被折叠?



