非均勻變異的互利自適應(yīng)緞藍(lán)園丁鳥優(yōu)化算法求解單目標(biāo)優(yōu)化問題附matlab代
1 簡介
針對緞藍(lán)園丁鳥優(yōu)化(SBO)算法求解精度不高和收斂速度慢等問題,提出一種改進(jìn)的緞藍(lán)園丁鳥優(yōu)化(ISBO)算法.首先,引入非均勻變異算子,動態(tài)地調(diào)整每次迭代園丁鳥個體的搜索步長,使算法能快速高效地尋求全局最優(yōu)值;其次,采用互利因子對算法的社會部分引入更多組合模式,使其不再單一圍繞前一個園丁鳥附近搜索,以獲取更好的最優(yōu)解;最后,為了更好地平衡算法的局部與全局搜索能力,引入余弦變化的慣性權(quán)重因子來更新園丁鳥的位置公式.使用收斂速度分析,Wilcoxon檢驗(yàn)和8個基準(zhǔn)函數(shù)對5種算法搜索性能進(jìn)行對比分析,來評估改進(jìn)緞藍(lán)園丁鳥優(yōu)化算法的效率.結(jié)果表明,改進(jìn)算法具有更好的全局搜索能力和求解魯棒性,同時尋優(yōu)精度和收斂速度也比原來算法有所增強(qiáng).






正在上傳…重新上傳取消正在上傳…重新上傳取消
2 部分代碼
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%? ?Satin Bowerbird Optimizer(SBO)
%%
clc;
clear;
close all;
tic
%% Problem Definition
Function_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 Loop
for 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))]);
? ??
end
toc
%% Results
disp(['BestSol=' num2str(elite)]);
disp(['BestCost=' num2str(BestSol.Cost)]);
figure;
semilogy(BestCost,'LineWidth',2);
xlabel('Iteration');
ylabel('Best Cost');
img =gcf;? %獲取當(dāng)前畫圖的句柄
print(img, '-dpng', '-r600', './img.png')? ? ? ? ?%即可得到對應(yīng)格式和期望dpi的圖像
3 仿真結(jié)果


4 參考文獻(xiàn)
[1]王依柔、張達(dá)敏、樊英. 非均勻變異的互利自適應(yīng)緞藍(lán)園丁鳥優(yōu)化算法[J]. 計(jì)算機(jī)工程與科學(xué), 2020, 42(12):9.