蚁群算法解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)):