1、相关理论
2、算法流程
3、代码实现
4、结果显示
1、相关理论
旅行商(TSP)问题是数学建模中的经典问题,它是一个典型的NP完全问题。TSP问题可描述为:已知n个城区相互之间的距离,某一旅行商从城市出发访问每个城市一次且仅一次,最后回到出发城市,如何安排才能使其所走路线最短。简单来说,就是寻找一条最短的遍历n个城市的路径。其数学模型可表述为:
2、算法流程
TSP问题可以采用智能算法进行求解,本文以遗传算法求解为例,对应的算法流程图如下图所示。
3、代码实现
%遗传算法求解TSP问题(为选择操作从新设计后程序) %输入: %D 距离矩阵 %NIND 为种群个数 %X 参数是中国34个城市的坐标(初始给定) %MAXGEN 为停止代数,遗传到第MAXGEN代时程序停止,MAXGEN的具体取值视问题的规模和耗费的时间而定 %m 为适值淘汰加速指数,最好取为1,2,3,4,不宜太大 %Pc 交叉概率 %Pm 变异概率 %输出: %R 为最短路径 %Rlength 为路径长度 clear clc close all %% 加载数据 load data X=data; D=Distanse(X); %生成距离矩阵 N=size(D,1); %城市个数 %% 遗传参数 NIND=100; %种群大小 MAXGEN=200; %最大遗传代数 Pc=0.9; %交叉概率 Pm=0.05; %变异概率 GGAP=0.9; %代沟 %% 初始化种群 Chrom=InitPop(NIND,N); %% 画出随机解的路径图 DrawPath(Chrom(1,:),X) pause(0.0001) %% 输出随机解的路径和总距离 disp('初始种群中的一个随机值:') OutputPath(Chrom(1,:)); Rlength=PathLength(D,Chrom(1,:)); disp(['总距离:',num2str(Rlength)]); disp('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') %% 优化 gen=0; figure; hold on;box on xlim([0,MAXGEN]) title('优化过程') xlabel('代数') ylabel('最优值') ObjV=PathLength(D,Chrom); %计算路径长度 preObjV=min(ObjV); while gen4、结果展示