%% 该文件演示基于TSP-PSO算法,改过的程序
clc
clear
close all
%% 下载数据
load citys31_data.mat % 变量citys为31行2列的数据(第1列表示各个城市的横坐标,第2列表示各个城市的纵坐标)%加上台湾台北、香港、澳门一共34,最优解15377
cityCoor=citys;
n=size(cityCoor,1); %城市数目
%% 计算城市间距离
cityDist=zeros(n,n); %城市距离矩阵
for i=1:n
for j=i+1:n
cityDist(i,j)=(sum((cityCoor(i,:)-cityCoor(j,:)).^2))^0.5;
cityDist(j,i)=cityDist(i,j);
end
end
nMax=500; %进化次数
indiNumber=1000; %个体数目
individual=zeros(indiNumber,n);
%^初始化粒子位置
for i=1:indiNumber
individual(i,:)=randperm(n);
end
%% 计算种群适应度
indiFit=fitness(individual,cityCoor,cityDist);
[value,index]=min(indiFit);
tourPbest=individual; %当前个体最优
tourGbest=individual(index,:) ; %当前全局最优
recordPbest=indiFit'; %个体最优记录 % 原程序 recordPbest=inf*ones(1,indiNumber);
recordGbest=value; %群体最优记录 % 原程序 recordGbest=indiFit(index);
%% 循环寻找最优路径
L_best=zeros(1,nMax);
tic
for N=1:nMax
for i=1:indiNumber
a=individual(i,:);
%% 交叉操作
% 与个体最优进行交叉
b=tourPbest(i,:);
a=intercross(a,b);
%新路径长度变短则接受
dist=Dist(a,cityDist);
if indiFit(i)>dist
individual(i,:)=a;
indiFit(i)=dist;
end
% 与全体最优进行交叉
b=tourGbest;
a=intercross(a,b);
%新路径长度变短则接受
dist=Dist(a,cityDist);
if indiFit(i)>dist
individual(i,:)=a;
indiFit(i)=dist;
end
%% 变异操作
R=randperm(n);
r1=R(1);
r2=R(2);
a([r1,r2])=a([r2,r1]);
%新路径长度变短则接受
dist=Dist(a,cityDist);
if indiFit(i)>dist
individual(i,:)=a;
indiFit(i)=dist;
end
end %%%%% for i=1:indiNumber
%更新当前最优和历史最优
for i=1:indiNumber
if indiFit(i)<recordPbest(i)
recordPbest(i)=indiFit(i);
tourPbest(i,:)=individual(i,:);
end
if indiFit(i)<recordGbest
recordGbest=indiFit(i);
tourGbest=individual(i,:);
end
end
L_best(N)=recordGbest;
end %%%%% for N=1:nMax
toc
disp(['最短距离:' num2str(recordGbest)]);
disp('最短路径:')
p=OutputPath(tourGbest);
DrawPath(tourGbest,cityCoor)
%% 结果作图
figure
plot(L_best)
title('算法训练过程')
xlabel('迭代次数')
ylabel('适应度值')
grid on
混合粒子群算法原始.rar_tsp_混合粒子群算法解决tsp问题_粒子群_粒子群·算法_粒子群算法
版权申诉
135 浏览量
2022-07-15
19:33:16
上传
评论
收藏 4KB RAR 举报
寒泊
- 粉丝: 75
- 资源: 1万+
最新资源
- 聊天系统(java+applet).zip
- 毕业设计:基于SSM的mysql-高校学生请假管理系统(源码 + 数据库 + 说明文档)
- 博客系统(struts+hibernate+spring).rar
- c语言学生成绩管理系统源码.zip
- 毕业设计:基于SSM的mysql-网约车用户服务平台(源码 + 数据库 + 说明文档)
- 内容管理系统(hibernate3+struts2+spring2)130224.rar
- 基于Java的班级管理系统课程设计源码
- 内容管理系统(hibernate3+struts2+spring2).rar
- 路由器刷breed Web控制台助手v5.8版本.rar
- Java 在 JEP 12 提供的特性预览
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈