%% 学习目标:免疫算法在旅行商问题中的解决方法
%% 清空命令窗口和内存
clear
clc
N=10;
%% 城市的个数
M=N-1;
%% 种群的个数
pos=randn(N,2);
%% 生成城市的坐标
global D;
%% 城市距离数据
D=zeros(N,N);
for i=1:N
for j=i+1:N
dis=(pos(i,1)-pos(j,1)).^2+(pos(i,2)-pos(j,2)).^2;
D(i,j)=dis^(0.5);
D(j,i)=D(i,j);
end
end
%% 中间结果保存
global TmpResult;
TmpResult = [];
global TmpResult1;
TmpResult1 = [];
%% 参数设定
[M, N] = size(D);%集群规模
pCharChange = 1;%字符换位概率
pStrChange = 0.4;%字符串移位概率
pStrReverse = 0.4;%字符串逆转概率
pCharReCompose = 0.4;%字符重组概率
MaxIterateNum = 100;%最大迭代次数
%% 数据初始化
mPopulation = zeros(N-1,N);
mRandM = randperm(N-1);%最优路径
mRandM = mRandM + 1;
for rol = 1:N-1
mPopulation(rol,:) = randperm(N);%产生初始抗体
mPopulation(rol,:) = DisplaceInit(mPopulation(rol,:));%预处理
end
%% 迭代
count = 0;
figure(2);
while count < MaxIterateNum
%产生新抗体
B = Mutation(mPopulation, [pCharChange pStrChange pStrReverse pCharReCompose]);
%计算所有抗体的亲和力和所有抗体和最优抗体的排斥力
mPopulation = SelectAntigen(mPopulation,B);
hold on
plot(count,TmpResult(end),'o');
drawnow
display(TmpResult(end));
display(TmpResult1(end));
count = count + 1;
end
hold on
plot(TmpResult,'-r');
title('最佳适应度变化趋势')
xlabel('迭代数')
ylabel('最佳适应度')
% mRandM
%% 大仙QQ:1960009019
%% 在线教育微信公众号:大仙一品堂
6 免疫算法在旅行商问题中的解决方法.zip
版权申诉
28 浏览量
2023-12-31
21:32:40
上传
评论
收藏 15.5MB ZIP 举报
JGiser
- 粉丝: 7511
- 资源: 5112
最新资源
- 设计1.ms14
- vscode-1.64.1.tar源码文件
- vscode-1.64.0.tar源码文件
- vscode-1.52.0.tar源码文件
- Music-Player +PlayerActivity+ rockplayer+ SeeJoPlayer 播放器JAVA源码
- vscode-1.46.0.tar源码文件
- 最近很火植物大战僵尸杂交版2.08苹果+安卓+PC+防闪退工具V2+修改工具+高清工具+通关存档整合包更新
- 超级好用的截图工具PixPin,可录制Gif图
- Screenshot_2024-05-21-17-06-42-64_2332cb9b27b851b548ba47a91682926c.jpg
- 毕业设计参考 - 基于树莓派、OpenCV及Python的人脸识别
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈