禁忌搜索算法原理步骤matlab实现算例及相关代码

Posted 墨叔叔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了禁忌搜索算法原理步骤matlab实现算例及相关代码相关的知识,希望对你有一定的参考价值。

一、原理步骤

参考:禁忌搜索算法(Tabu Search)的基本原理与算法流程总结_Chauncy__xu的博客-CSDN博客_禁忌搜索算法

注意其中存在两个对象:

禁忌对象:禁忌表中被禁的那些变化元素

禁忌长度:禁忌的步数,决定禁忌表的长度

二、算例,以tsp问题为例,数据随机生成

代码:

clc
clear
p=rand(10,2)*10;
plot(p(:,1),p(:,2),'ok')
title('生成点')
save p p

三、禁忌搜索算法matlab代码及效果

 迭代过程:                                                     路线结果:

 代码:子函数点赞收藏关注后私聊获得,码字不易感谢支持!

clc
clear
close all
p=[8.14723686393179,1.57613081677548;9.05791937075619,9.70592781760616;1.26986816293506,9.57166948242946;9.13375856139019,4.85375648722841;6.32359246225410,8.00280468888800;0.975404049994095,1.41886338627215;2.78498218867048,4.21761282626275;5.46881519204984,9.15735525189067;9.57506835434298,7.92207329559554;9.64888535199277,9.59492426392903];
%% 初始化
popus=randperm(size(p,1));
%% 禁忌搜索
max_ge=50;%搜索步数
J_ch=[];%禁忌表
J_T=[];
T=5;%禁忌长度
Pf=inf;
for gen=1:max_ge
    num=50;
    pop=cell(1,num);
    %选出候选集
    for i=1:num
        popi=Randk(popus);
    end
    f=fit(pop,p);
    for i=1:num
        for j=1:size(J_ch,2)
            if sum(abs(J_chj-popi))==0
                f(i)=inf;
                break
            end
        end
    end
    [~,index]=min(f);
    %将禁忌长度-1
    if ~isempty(J_T)
        J_T=J_T-1;
        ch=find(J_T==0);
        J_T(ch)=[];
        J_ch(ch)=[];
    end
    %将其加入禁忌表
    J_ch=[J_ch,pop(index(1))];
    J_T=[J_T,T];
    Popgen=popindex(1);
    Pf(gen)=min([min(f),Pf]);
    popus=popindex(1);
end
[~,index]=min(Pf);
popus=Popindex(1);
figure(1)
plot(1:size(Pf,2),Pf,'-k')
title('迭代过程')
xlabel('X')
ylabel('Y')
figure(2)
plot(p(:,1),p(:,2),'ok')
hold on
plot([p(popus(1),1) p(popus(end),1)],[p(popus(1),2) p(popus(end),2)],'-b')
hold on
for i=1:size(popus,2)-1
    plot([p(popus(i),1) p(popus(i+1),1)],[p(popus(i),2) p(popus(i+1),2)],'-b')
hold on
end
title('路线图')

 

以上是关于禁忌搜索算法原理步骤matlab实现算例及相关代码的主要内容,如果未能解决你的问题,请参考以下文章

禁忌搜索算法原理步骤matlab实现算例及相关代码

matlab基于禁忌搜索算法求解TSP问题

TWVRP基于matlab禁忌搜索和节约算法求解带时间窗的车辆路径规划问题含Matlab源码 1229期

优化规划基于matlab禁忌搜索算法求解配电网无功补偿优化规划问题含Matlab源码 1842期

TSP问题基于禁忌搜索算法求解TSP问题

优化求解禁忌搜索算法求解基站选址问题matlab源码