⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genetictsp.m

📁 遗传算法求解TSP问题,采用轮盘赌选择方法,部分匹配交叉算子,交换变异设计.
💻 M
字号:
%TSP问题基本遗传算法通用matlab程序
%D是距离矩阵,参数a是20城市的坐标,程序包中以带有,可更改
%n为种群个数
%C为停止代数,遗传到第 C代时程序停止
%p为交叉率,q为变异率
%n,C,p,q需设定
%R为最短路径,Rlength为路径长度
function [R,Rlength]=geneticTSP(D,n,C,p,q,a)
[N,NN]=size(D);

farm=initiate(n,N);%产生初始种群

%初始种群参数计算
len=zeros(n,1);%存储路径长度
fitness=zeros(n,1);%初始化适应度函数矩阵
minlen=zeros(1,C);
for i=1:n
    len(i,1)=myLength(D,farm(i,:));%计算路径长度
end
minlen=min(len);
mindis=minlen;
rr=find(len==minlen);
R=farm(rr(1,1),:);

%种群迭代
  for counter=1:C
    for i=1:n
        len(i,1)=myLength(D,farm(i,:));%计算路径长度
    end
    maxlen=max(len);
    minlen=min(len);
    fitness=fit(len,maxlen,minlen);%计算归一化适应值
    if minlen<mindis
    rr=find(len==minlen);
    R=farm(rr(1,1),:);%更新最短路径
    mindis=minlen;
    end
subplot(1,2,1);
    scatter(counter,mindis);
    hold on
    
%选择操作
    selection=zeros(n,N);
    selection=select(farm,fitness,n);
    
%交叉操作
    farm1=zeros(n,N);
    farm1=intercross1(selection,n,N,p);
       
%变异操作
    farm2=zeros(n,N);
    farm2=mutation(farm1,n,q,N);
   
%更新种群
    farm=farm2;

  end  

Rlength=myLength(D,R);
subplot(1,2,2);
plotaiwa(a,R);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -