0
点赞
收藏
分享

微信扫一扫

【缎蓝园丁鸟优化算法】基于自适应t分布变异缎蓝园丁鸟优化算法求解单目标优化问题附matlab代码

快乐码农Alan007 2022-04-04 阅读 11
matlab

1 简介

缎蓝园丁鸟优化算法是一种新型的元启发式优化算法,针对其收敛速度慢,寻优精度低的不足,提出了一种基于自适应t分布变异的缎蓝园丁鸟优化(tSBO)算法.在tSBO算法中引入了自适应t分布变异算子,使用算法的迭代次数作为t分布的自由度参数来增强种群的多样性,避免算法陷入局部最优.通过6个标准测试函数对改进算法与FPA,BA和基本SBO算法进行测试比较,仿真结果表明,改进算法是可行有效的,相比于基本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]韩斐斐, 刘升. 基于自适应t分布变异的缎蓝园丁鸟优化算法[J]. 微电子学与计算机, 2018, 35(8):5.

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

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

举报

相关推荐

0 条评论