matlab求解tsp问题
改进的遗传算法在路径优化问题中的应用! 仿真结果应该是三个图 一个是没改进的城市路线 一个是改进的城市路线 还有一个是路线总和对比 我的少了一个没改进的城市路线对比 !求大神指点原因!跪求!!!
仿真主程序如下:
%% 清除之前的记录
close all;
clear all;
clc;
%% 输入数据
global cord
MN=20;%点的个数
cord=rand(MN,2).*100;%坐标
tic
%% 编码方式 顺序
lizisize=size(cord,1);%变量个数
%设置变量、基因的取值范围,0-100.给定ceil(log2((100-0)/1))*lizisize
%% 算法系数
popsize=200;%种群大小
Generationnmax=1000;%变异代数
pcrossover=0.4;%交叉概率 0.3-0.8
pmutation=0.2;%变异概率0.01-0.2
%% 范围以及定义初始代
population=zeros(popsize,lizisize);%随机数
for ii=1:popsize
population(ii,:)=randperm(lizisize);
end%随机产生的初始代
%% 开始迭代
Generation=1;
f_mean=zeros(1,Generationnmax);%平均值
f_best=zeros(1,Generationnmax);%最优解
while Generation<Generationnmax+1
[fitness,fitvalue,cumsump]=fitness_all(population);%计算目标值
f_mean(Generation)=mean(fitness); %计算此代的平均值
[gbest1,num1]=min(fitvalue);%计算此代的最优解
f_best(Generation)=gbest1;%存储最优解
bestsofar=population(num1,:);%最初最优的决策
% 更迭算子
smnew=zeros(1,lizisize);
for j=1:2:popsize
seln=selection(population,cumsump); %选择操作
scro=crossover_GA(population,seln,pcrossover);%交叉操作
smnew(j,:)=mution_GA(scro(1,:),pmutation);%变异操作
smnew(j+1,:)=mution_GA(scro(2,:),pmutation);%变异操作
end
population=smnew;
population(1,:)=bestsofar;
%% 改进1
numa=randperm(popsize-1,1)+1;
for i=[1,numa]
[burft,~]=fit_all(population(i,:));
for j=1:40
burf=mution_GA(population(i,:),1);
[burft1,~]=fit_all(burf);
if burft1<burft
population(i,:)=burf;
burft=burft1;
end
end
end
%% 改进3
Generation=Generation+1;
Generation
end
[fitness,~]=fitness_all(population);
[~,num4]=min(fitness);
[f1,road]=fit_all(population(num4,:));
% now_best=road;
time=toc;
figure(1);
hand1=plot(1:Generation-1,f_best);
set(hand1,'color','b','linestyle','- -','linewidth',1.0,'markersize',2)
title('路径优化')
hold on;
xlabel('种群代数');ylabel('目标值');
legend('最优目标值');
box off;hold off;
figure(2)
for i=1:lizisize-1
plot([cord(bestsofar(i),1),cord(bestsofar(i+1),1)],[cord(bestsofar(i),2),cord(bestsofar(i+1),2)],...
'color','b','linestyle','-','linewidth',1.0,'markersize',2);
hold on
end
plot([cord(bestsofar(1),1),cord(bestsofar(end),1)],[cord(bestsofar(1),2),cord(bestsofar(end),2)],...
'color','b','linestyle','-','linewidth',1.0,'markersize',2);
hold on
title('路径优化')
%%
%
% $$e^{\pi i} + 1 = 0$$
%
xlabel('种群代数');ylabel('目标值');
legend('最优目标值');
box off;hold off;