【緞藍園丁鳥優(yōu)化算法】基于自適應(yīng)t分布變異緞藍園丁鳥優(yōu)化算法求解單目標優(yōu)化問題附
1 簡介
緞藍園丁鳥優(yōu)化算法是一種新型的元啟發(fā)式優(yōu)化算法,針對其收斂速度慢,尋優(yōu)精度低的不足,提出了一種基于自適應(yīng)t分布變異的緞藍園丁鳥優(yōu)化(tSBO)算法.在tSBO算法中引入了自適應(yīng)t分布變異算子,使用算法的迭代次數(shù)作為t分布的自由度參數(shù)來增強種群的多樣性,避免算法陷入局部最優(yōu).通過6個標準測試函數(shù)對改進算法與FPA,BA和基本SBO算法進行測試比較,仿真結(jié)果表明,改進算法是可行有效的,相比于基本SBO算法,其收斂精度和魯棒性有了很大程度的提高.
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; ?%獲取當前畫圖的句柄
print(img, '-dpng', '-r600', './img.png') ? ? ? ? %即可得到對應(yīng)格式和期望dpi的圖像
3 仿真結(jié)果


4 參考文獻
[1]韓斐斐, 劉升. 基于自適應(yīng)t分布變異的緞藍園丁鳥優(yōu)化算法[J]. 微電子學(xué)與計算機, 2018, 35(8):5.
博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測、信號處理、元胞自動機、圖像處理、路徑規(guī)劃、無人機等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問題可私信交流。
部分理論引用網(wǎng)絡(luò)文獻,若有侵權(quán)聯(lián)系博主刪除。
