%遗传算法求解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<MAXGEN
%% 计算适应度
ObjV=PathLength(D,Chrom); %计算路径长度
% fprintf('%d %1.10f\n',gen,min(ObjV))
line([gen-1,gen],[preObjV,min(ObjV)]);pause(0.0001)
preObjV=min(ObjV);
FitnV=Fitness(ObjV);
%% 选择
SelCh=Select(Chrom,FitnV,GGAP);
%% 交叉操作
SelCh=Recombin(SelCh,Pc);
%% 变异
SelCh=Mutate(SelCh,Pm);
%% 逆转操作
SelCh=Reverse(SelCh,D);
%% 重插入子代的新种群
Chrom=Reins(Chrom,SelCh,ObjV);
%% 更新迭代次数
gen=gen+1 ;
end
%% 画出最优解的路径图
ObjV=PathLength(D,Chrom); %计算路径长度
[minObjV,minInd]=min(ObjV);
DrawPath(Chrom(minInd(1),:),X)
%% 输出最优解的路径和总距离
disp('最优解:')
p=OutputPath(Chrom(minInd(1),:));
disp(['总距离:',num2str(ObjV(minInd(1)))]);
disp('-------------------------------------------------------------')
御道御小黑
- 粉丝: 77
- 资源: 1万+
最新资源
- 统计计算使用R一书的源代码Rcode.zip
- 饮食管理系统项目源代码全套技术资料.zip
- 最新云夕打赏系统源码分享
- 使用cnpm搭建npm-整理版(搭建私有仓库)
- 玩转西门子V90扭矩控制功能-各种扭矩参数功能详解.mp4
- 5 计算机组成原理-课件.zip
- 毕业论文要求.pptx
- 研赛E题版本3完整文章(1) (1).docx
- MicrosoftEdge-X64-131.0.2903.99.rar
- 基于树莓派的垃圾智能分类系统设计_王科.caj
- 试论基于树莓派的智能垃圾分类系统设计_李绘英.caj
- 乡村振兴背景下X市乡镇公务员胜任力模型构建与研究_智能降重_paperred报告.docx
- 我从零开始20多年的电磁炉维修经验
- 四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型,控制有比较好的效果,附参考说明
- tictic-ios-源码:仿抖音Tik Tok 视频分享平台app项目源码.zip
- 计算机网络期末复习知识点
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0