遗传算法求解TSP问题
程序员文章站
2022-05-20 22:33:46
...
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); %计算新种群的适应度
%记录当前代最好和平均的适应度
上一篇: 基于keras的残差网络
下一篇: 蓝桥杯分考场