欢迎光临散文网 会员登陆 & 注册

【缎蓝园丁鸟优化算法】基于自适应权重的缎蓝园丁鸟优化算法求解单目标优化问题

2022-04-04 16:24 作者:Matlab工程师  | 我要投稿

1 简介

针对缎蓝园丁鸟优化算法(SBO)寻优精度低和收敛速度慢的问题,提出了基于自适应权重的缎蓝园丁鸟优化算法(WSBO).首先通过自适应权重的方法改进了缎蓝园丁鸟优化算法的局部搜索能力,提高了收敛精度.另外通过改进原算法中高斯分布函数形式对缎蓝园丁鸟的求偶亭位置进行变异,提高了算法的全局搜索能力,避免了陷入局部最优.通过8个标准测试函数对改进算法与原SBO算法,ABC算法和FA算法进行测试比较,实验结果表明,改进算法是可行有效的,相比于基本SBO算法,其收敛速度,精度和算法稳定性都有很大程度的提高.

2 部分代码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   Satin Bowerbird Optimizer(SBO)%%clc;clear;close all;tic%% Problem DefinitionFunction_name='F1';[lowerbound,upperbound,numbervar,costfcn]=cost_functions(Function_name);% VarSize=[1 numbervar];  %% SBO Parameters[MaxIt,nPop,alpha,pMutation,sigma]=SBO_parameters(lowerbound,upperbound);%% Initialization[pop,elite,BestCost]=Initialization(nPop,lowerbound,upperbound,numbervar,MaxIt,costfcn);%% SBO Main Loopfor it=1:MaxIt    newpop=pop;    %Calculating the Fitness of each bower    F=zeros(nPop,1);    for i=1:nPop        if pop(i).Cost>=0            F(i)=1/(1+pop(i).Cost);        else            F(i)=1+abs(pop(i).Cost);        end    end    %Calculating the probability of each bower    P=F/sum(F);    %changes at any bower    for i=1:nPop        for k=1:numbervar                % Select target bower                                j=RouletteWheelSelection(P);                % Calculating Step Size                lambda=alpha/(1+P(j));                newpop(i).Position(k)=pop(i).Position(k) ...                    +lambda*(((pop(j).Position(k)+elite(k))/2)-pop(i).Position(k));                % Mutation            if rand<=pMutation                newpop(i).Position(k)=newpop(i).Position(k)+(sigma*randn);            end        end          % Evaluation        newpop(i).Cost=costfcn(newpop(i).Position);    end     pop=[pop         newpop         ]; %#ok    % Sort Population    [~, SortOrder]=sort([pop.Cost]);    pop=pop(SortOrder);    pop=pop(1:nPop);    % Update Best Solution Ever Found    BestSol=pop(1);    elite=BestSol.Position;    % Store Best Cost Ever Found    BestCost(it)=BestSol.Cost;    % Show Iteration Information    disp(['SBO:: Iteration-> ' num2str(it) '<----->Best Cost = ' num2str(BestCost(it))]); endtoc%% Resultsdisp(['BestSol=' num2str(elite)]);disp(['BestCost=' num2str(BestSol.Cost)]);figure;semilogy(BestCost,'LineWidth',2);xlabel('Iteration');ylabel('Best Cost');img =gcf;  %获取当前画图的句柄print(img, '-dpng', '-r600', './img.png')         %即可得到对应格式和期望dpi的图像

3 仿真结果

4 参考文献

[1]鲁晓艺, 刘升, 韩斐斐,等. 基于自适应权重的缎蓝园丁鸟优化算法[J]. 智能计算机与应用, 2018, 8(6):7.

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

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




【缎蓝园丁鸟优化算法】基于自适应权重的缎蓝园丁鸟优化算法求解单目标优化问题的评论 (共 条)

分享到微博请遵守国家法律