Algorithme génétique pour le VRP problème (TSP)

GA pour le code de TSP

GA idée de cet article est relativement simple, est de réaliser un algorithme génétique plus classique. Algorithme génétique pour TSP est utilisé ici dans la séquence codante, est un croisement transversal cyclique et la mutation de deux manières, sont spécifiées dans le code.

Le programme principal

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

Je suppose que tu aimes

Origine blog.csdn.net/qq_44384577/article/details/105256208
conseillé
Classement