蚁狮算法(ALO)优化支持向量机及matlab代码

目录

0 引言

1 数学模型

2 优化支持向量机

3 Matlab代码

3.1 伪代码

3.2 ALO主函数代码

3.3 ALO-SVM

4 视频讲解

0 引言

蚁狮算法(Ant Lion Optimizer,ALO)是由Seyedali Mirjalili于2015年提出的自然启发算法,ALO算法模拟了自然界中蚁狮的狩猎机制。采用了蚂蚁随机行走、蚂蚁掉入陷阱、诱捕蚂蚁、精英策略和重铸陷阱等五个主要步骤,在不同问题中皆可体现问题寻优可行解、局部和全局解。

1 数学模型

ALO模型通过模拟上述策略进行问题寻优,其数学模型分别见下式:

1)蚂蚁随机行走:蚂蚁在自然界中寻找食物时在是随机移动的,所以我们选择了一个随机行走来模拟蚂蚁的运动,在实际问题角度中,该随走是具有边界化,故其数学模型如下:

式中X为蚂蚁随机行走的位置;αi为第i个变量的随机游走的最小值,di是第i个变量中随机游走的最大值;ct i和dt i是第t次迭代时第i次变量的最小值和最大值。下图为蚂蚁3次随机行走趋势图。

2)蚁狮中蚂蚁随机行走影响:蚂蚁的随机行走会受到蚁狮陷阱的影响。为了对这一假设进行数学模型,提出了以下方程式:

式中Antlion为蚁狮的位置,ct是在t次迭代最小的所有变量,dt表示在t次迭代包括最大变量。

3)蚁狮构建陷阱:为了模拟蚁狮的狩猎能力,使用了轮盘赌策略。如图3所示,假设每只蚂蚁只能被一只蚁狮捕食,在优化过程中,需要利用轮盘赌概率模拟蚁狮适应度,适应度越好的蚁狮捕食蚂蚁概率越大。

4)自适应机制:当蚁狮意识到一只蚂蚁在陷阱里时,它们就会向坑的中心向外喷射沙子防止试图逃跑的被困蚂蚁。因此蚂蚁随机行走范围会逐渐缩小,用下列自适应机制模拟此现象:

式中其中I是一个比值(I=10^w*t/T,w为定义当前迭代的常数,当 t > 0.1*T, w = 2,w = 3 当 t > 0.5*T,当 t > 0.75*T, w = 4当t > 0.9*T,w = 5 ,当t > 0.95*T,w = 6),ct是第t次迭代中所有变量的最小值,dt表示第t次迭代中所有变量的最大值。

5)捕食猎物后,蚁狮重建陷阱:为了模拟蚁狮捕猎过程,我们假设当蚂蚁适应度比蚁狮小的时候,就会捕猎。此时蚁狮就会更新自身位置进行重新捕猎适应度进一步蚁狮。

6)精英策略:精英主义是进化算法的一个重要特征,在每次迭代过程中,将适应度最好蚁狮作为精英蚁狮参与下次迭代,同时下次迭代蚂蚁产生也有精英蚁狮周围位置随机行走生成,其数学模型见下式:

其中Rt A为第t次迭代时轮盘赌策略选择的蚁狮的随机行走的位置值,Rt E为第t次迭代时精英蚁狮的随机行走的位置值,Ant ti表示第i蚂蚁在第t次迭代时的位置。

2 优化支持向量机

前篇对支持向量机(支持向量机原理及matlab代码讲解(分类SVM和回归SVR)CSDN博客)原理讲解,从支持向量机模型运算过程中,可以了解到模型高维映射核函数参数g和处罚因子c对模型预测结果影响最为重要。因此结合上述ALO原理介绍,可以将支持向量机参数c和g作为蚁狮和蚂蚁种群,每一个种群对应支持向量机的预测值,将这个预测值作为适应度进行上述蚁狮的活动。

3 Matlab代码

3.1 伪代码

3.2 ALO主函数代码

%%参数
% Current_iter  当前迭代
% Max_iter 最大迭代
% RouletteWheelSelection 轮盘赌策略
% sorted_antlion_fitness 蚁狮适应度排列
% Random_walk_around_antlion 随机行走函数构建
% dim 问题维度
% lb,ub 问题维度边界
% Sorted_antlions % 蚁狮位置排列
% Elite_antlion_position %精英蚁狮位置
% SYD 适应度函数

while Current_iter<Max_iter+1
    
    % 此 for 循环模拟蚂蚁随机行走
    for i=1:size(ant_position,1)
        
        % 根据蚁狮的体能选择蚁狮(体能陷阱大小)
        Rolette_index=RouletteWheelSelection(1./sorted_antlion_fitness);
        if Rolette_index==-1  
            Rolette_index=1;
        end
      
        % RA 是通过轮盘在选定的蚁穴周围随机行走
        RA=Random_walk_around_antlion(dim,Max_iter,lb,ub, Sorted_antlions(Rolette_index,:),Current_iter);
        
        % RE 是随机行走最好的蚁狮
        [RE]=Random_walk_around_antlion(dim,Max_iter,lb,ub, Elite_antlion_position(1,:),Current_iter);
        
        ant_position(i,:)= (RA(Current_iter,:)+RE(Current_iter,:))/2; % Equation (2.13)          
    end
    
    for i=1:size(ant_position,1)  
        
        % 边界检查
        Flag4ub=ant_position(i,:)>ub;
        Flag4lb=ant_position(i,:)<lb;
        ant_position(i,:)=(ant_position(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;  
        
        ants_fitness(1,i)=SYD(ant_position(i,:),net);        
       
    end
    
    % 根据蚂蚁的情况更新蚁群的位置和体能
    double_population=[Sorted_antlions;ant_position];
    double_fitness=[sorted_antlion_fitness ants_fitness];
        
    [double_fitness_sorted I]=sort(double_fitness);
    double_sorted_population=double_population(I,:);
        
    antlions_fitness=double_fitness_sorted(1:N);
    Sorted_antlions=double_sorted_population(1:N,:);
        
    % 如果有蚂蚁比精英更合适,就更新精英的位置
    if antlions_fitness(1)<Elite_antlion_fitness 
        Elite_antlion_position=Sorted_antlions(1,:);
        Elite_antlion_fitness=antlions_fitness(1);
    end
      
    % 让精英留在人群中
    Sorted_antlions(1,:)=Elite_antlion_position;
    antlions_fitness(1)=Elite_antlion_fitness;
  
    % 更新收敛曲线
    Convergence_curve(Current_iter)=Elite_antlion_fitness;

    Current_iter=Current_iter+1; 
end

3.3 ALO-SVM

1)回归模型:回归模型:蚁狮算法优化支持向量机模型(ALO-SVR)

2)分类模型:分类模型:蚁狮算法优化支持向量机模型(ALO-SVM)

4 视频讲解

B站搜索:‘ 不想学习的陈成 ’

  • 24
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值