小面包 面包多
简介
评论
作品封面
永久回看

数学建模中的经典问题-旅行商(TSP)问题

¥9.9 已有99+人购买Ta的作品
投诉
头像
机器学习与深度学习 致力于分享MATLAB数学建模和编程知识
作品简介

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 gen

4、结果展示

​编辑

​编辑

​编辑

 

 

创作时间:2022-10-17 13:21:52

付费9.9元可获得

评论 推荐Ta

暂时还没有评论


头像
机器学习与深度学习 致力于分享MATLAB数学建模和编程知识
关注
5 喜欢 0 关注 206 粉丝 73 作品

在您购买本平台付费作品前,请您认真阅读本声明内容。如果您对这份声明没有异议,则可以继续购买 >>>

  • 主页
  • 私信
登录或购买

数学建模中的经典问题-旅行商(TSP)问题

作品简介

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 gen

4、结果展示

​编辑

​编辑

​编辑

 

 

创作时间:2022-10-17 13:21:52