여행하는 세일즈맨 문제를위한 유전자 알고리즘 (TSP)

TSP MATLAB 코드 GA

이 논문의 GA의 아이디어는 비교적 간단하다 더 고전적인 유전자 알고리즘을 달성하는 것입니다. 본 명세서의 코딩 서열에서 사용되는 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