点击查看完整代码http://www.daimapi.com/algorithm6_2/
利用Python3实现。
# -*-coding: utf-8-*-
######免疫算法求解 TSP 问题##########
import math # 调用数学库里面的相关函数
import random # 生成随机数
import matplotlib.pyplot as plt #python 绘图模块
import numpy as np
'''
旅行商问题:构造城市
'''
# 取编号为 x,y 城市之间路径的权值
# 这里分三种情况,当x>y时,返回生成列表 ;当x y:
return val_list[x - 1][y - 1]
elif x == y:
return 0
elif x < y:
return val(y, x)
## 随机生成抗体群,抗体编码从 1 开始
def shuffle_list():
# 辅助函数,生成一个洗牌之后的数组,且第一个元素为 1
res_list = list(range(2, num_of_city + 1))
random.shuffle(res_list)
return [1] + res_list
# 产生抗体列表
def produce_antibody_list():
return [ shuffle_list() for i in range(size_of_antibody_list) ]
# 根据抗体群产生抗体信息群
# affinity 相似度
# density 浓度
## 三个辅助函数
# 计算抗体间的相似度(此处采用两向量的欧几里得距离),返回一个布尔值,表示是否低于门限值
def simularity(antibody1, antibody2, threshold):
return np.linalg.norm(np.array(antibody1) - np.array(antibody2)) <= threshold