遗传算法求解旅行商问题(TSP)

GA求解TSP问题的matlab代码

本文的遗传算法的思想比较简单,是比较经典的遗传算法的实现。本文的遗传算法求解TSP问题采用的是顺序编码,交叉方式是循环交叉,变异方式有两种,已在代码中注明。

主程序

% 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);  %计算新种群的适应度
    %记录当前代最好和平均的适应度
  

猜你喜欢

转载自blog.csdn.net/qq_44384577/article/details/105256208