【TSP问题】基于免疫算法求解旅行商问题matlab源码[通俗易懂]

【TSP问题】基于免疫算法求解旅行商问题matlab源码[通俗易懂]模型参考这里。C=[1304 2312;3639 1315;4177 2244;3712 1399;3488 1535;3326 1556;…   3238 1229;4196 1044;4312  790;4386  570;3007 1970;2562 1756;… …

1 模型介绍

模型参考这里

2 部分代码

%%%%%%%%%%%%%%%%%%%%%%%免疫算法求解决TSP问题%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%初始化%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear all;                        %清除所有变量
close all;                        %清图
clc;                              %清屏
C=[1304 2312;3639 1315;4177 2244;3712 1399;3488 1535;3326 1556;...
    3238 1229;4196 1044;4312  790;4386  570;3007 1970;2562 1756;...
    2788 1491;2381 1676;1332  695;3715 1678;3918 2179;4061 2370;...
    3780 2212;3676 2578;4029 2838;4263 2931;3429 1908;3507 2376;...
    3394 2643;3439 3201;2935 3240;3140 3550;2545 2357;2778 2826;...
    2370 2975];                  %31个省会城市坐标
N=size(C,1);                     %TSP问题的规模,即城市数目
D=zeros(N);                      %任意两个城市距离间隔矩阵
%%%%%%%%%%%%%%%%%%%%%求任意两个城市距离间隔矩阵%%%%%%%%%%%%%%%%%%%%%
for i=1:N


    for j=1:N
        D(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;
    end
end
NP=200;                           %免疫个体数目
G=1000;                           %最大免疫代数
f=zeros(N,NP);                    %用于存储种群
for i=1:NP
    f(:,i)=randperm(N);           %随机生成初始种群
end
len=zeros(NP,1);                  %存储路径长度
for i=1:NP
    len(i)=func3(D,f(:,i),N);     %计算路径长度
end
[Sortlen,Index]=sort(len);
Sortf=f(:,Index);                 %种群个体排序
gen=0;                            %免疫代数
Ncl=10;                            %克隆个数
%%%%%%%%%%%%%%%%%%%%%%%%%%%免疫循环%%%%%%%%%%%%%%%%%%%%%%%%%%%%% while gen<G    for i=1:NP/2        %%%%%%%%%%%%选激励度前NP/2个体进行免疫操作%%%%%%%%%%%%%%%        a=Sortf(:,i);        Ca=repmat(a,1,Ncl);        for j=1:Ncl            p1=floor(1+N*rand());            p2=floor(1+N*rand());            while p1==p2                p1=floor(1+N*rand());                p2=floor(1+N*rand());            end            tmp=Ca(p1,j);            Ca(p1,j)=Ca(p2,j);            Ca(p2,j)=tmp;        end        Ca(:,1)=Sortf(:,i);            %保留克隆源个体
        %%%%%%%%%%%%克隆抑制,保留亲和度最高的个体%%%%%%%%%%%%%%        for j=1:Ncl            Calen(j)=func3(D,Ca(:,j),N);        end       [SortCalen,Index]=sort(Calen);        SortCa=Ca(:,Index);        af(:,i)=SortCa(:,1);        alen(i)=SortCalen(1);    end    %%%%%%%%%%%%%%%%%%%%%%%%%%种群刷新%%%%%%%%%%%%%%%%%%%%%%%%%%    for i=1:NP/2        bf(:,i)=randperm(N);          %随机生成初始种群
        blen(i)=func3(D,bf(:,i),N);   %计算路径长度
    end  
    %%%%%%%%%%%%%%%%%%%%免疫种群与新种群合并%%%%%%%%%%%%%%%%%%%%%    f=[af,bf];    len=[alen,blen];   [Sortlen,Index]=sort(len);    Sortf=f(:,Index);    gen=gen+1;    trace(gen)=Sortlen(1); end %%%%%%%%%%%%%%%%%%%%%%%%%%输出优化结果%%%%%%%%%%%%%%%%%%%%%%%%%%%
Bestf=Sortf(:,1);                 %最优变量
Bestlen=trace(end);               %最优值
figure
for i=1:N-1
    plot([C(Bestf(i),1),C(Bestf(i+1),1)],...
        [C(Bestf(i),2),C(Bestf(i+1),2)],'bo-');
    hold on;
end
plot([C(Bestf(N),1),C(Bestf(1),1)],...
    [C(Bestf(N),2),C(Bestf(1),2)],'ro-');
title(['优化最短距离:',num2str(trace(end))]);
figure,plot(trace)
xlabel('迭代次数')
ylabel('目标函数值')
title('亲和度进化曲线')

3 仿真结果

【TSP问题】基于免疫算法求解旅行商问题matlab源码[通俗易懂]

【TSP问题】基于免疫算法求解旅行商问题matlab源码[通俗易懂]

4 参考文献

[1] 凯旋16668. 【啃书】《智能优化算法及其MATLAB实例》例4.3免疫算法求解TSP问题. CSDN博客. [2] 曲怪曲怪. 智能算法之免疫算法求解TSP问题. CSDN博客. [3] 杨震, 陈立万, 刘莎,等. 基于免疫克隆多目标优化的WSN覆盖控制研究[J]. 电脑知识与技术:学术交流, 2018, 14(28):172-175.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13202.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注