文章目录
- 一、理论基础
- 二、案例背景
-
- 1、问题描述
- 2、解决思路及步骤
-
- (1). 算法流程
- (2). 算法实现过程
- 三、MATLAB程序实现
-
- 1、程序源码
- 2、结果分析
- 四、参考文献
1、问题描述
假设有一个旅行商人要拜访某些城市,他需要选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择要求是:所选路径的路程为所有路径之中的最小值。
其中一个城市位置分布图如图1所示。
图1 城市分布图
2、解决思路及步骤
(1). 算法流程
免疫优化算法求解TSP问题的流程如图2所示。
图2 算法流程图
(2). 算法实现过程
(1)初始化免疫个体维数为城市个数N NN,免疫种群个体数为N P = 200 NP=200NP=200,最大免疫代数为G = 1000 G=1000G=1000,克隆个数为N c l = 10 Ncl=10Ncl=10,计算任意两个城市间的距离矩阵D DD。
(2)随机产生初始种群,计算个体亲和度(即路径距离),并按亲和度升序排列。
(3)在取亲和度前对N P / 2 NP/2NP/2个个体进行克隆操作,并对每个源个体产生的克隆个体进行任意交换两个城市的变异操作;然后计算其亲和度,进行克隆抑制操作,只保留亲和度最高的个体,从而产生新的免疫种群。
(4)随机生成N P / 2 NP/2NP/2个个体的新种群,并计算个体亲和度;免疫种群和随机种群合并,按亲和度排序,进行免疫迭代。
(5)判断是否满足终止条件:若满足,则结束搜索过程,输出优化值;若不满足,则继续进行迭代优化。
1、程序源码
- 计算路径长度函数
- 画出路线轨迹图的函数
- 主函数
2、结果分析
优化前的一个随机路线轨迹图如图3所示。
图3 随机路线图
优化后的路线轨迹如图4所示。
图4 优化后的路线轨迹图
亲和度进化曲线如图5所示。
图5 亲和度进化曲线
由优化图可以看出,优化前后路径长度得到很大改进,接近300代后路径长度已经保持不变了,可以认为是最优解了,总距离由优化前的42.7564减少到优化后的15.9262,减为原来的37.2%。