TSP MATLABコードのGA
この論文のGAのアイデアは、比較的単純で、より古典的な遺伝的アルゴリズムを達成することです。TSPのための遺伝的アルゴリズムは、本明細書のコード配列に使用され、2つの方法で環状横クロスオーバーと突然変異は、コードで指定されています。
メインプログラム
% Author: Chauncy_xu
% date:2019年4月1日
clc;
clear all;
close all;
[len_side,city]=City();%len_side存放的是边的权重。city存放的是30个城市的坐标
%% 参数设置
Num_pop=200; %初始种群大小
Num_gen=800; %最大代数
P_c=0.85; %交叉概率
P_m=0.4; %变异概率
%% 产生初始种群
pop=zeros(Num_pop,30);%pop是一个种群,。每一行是一个个体,即一个可行解
for i=1:Num_pop %随机生成初始种群
pop(i,:)=randperm(30);
end
[~,p_sum]=Fitness(pop,len_side);%计算适应度值和累计概率
Gen=1;
ymean=zeros(Gen,1);%记录平均适应度值
ymax=zeros(Gen,1); %记录最优适应度值
xmax=zeros(Num_pop,30);
temp_pop=zeros(Num_pop,30);
new_pop=zeros(Num_pop,30);
%% 开始迭代
while Gen<=Num_gen
%该算法选择交叉变异都是只选择两个个体进行
sel_pop=Select(p_sum,pop); %选择操作
cross_pop=Cross(sel_pop,P_c); %交叉操作
muta_pop=Mutate(cross_pop,P_m); %变异操作
pop=muta_pop; %产生了新的种群
[fit,p_sum]=Fitness(pop,len_side); %计算新种群的适应度
%记录当前代最好和平均的适应度