【獲取資源請(qǐng)見(jiàn)文章第5節(jié):資源獲取】
1. 原始POA算法
此算法詳細(xì)介紹請(qǐng)參考POA算法介紹
2. 改進(jìn)后的IPOA算法
2.1 隨機(jī)對(duì)立學(xué)習(xí)種群初始化
采用隨機(jī)方法初始化POA種群,生成的種群不均勻,影響了收斂速度和精度。為了獲得更好的初始種群,本文采用了隨機(jī)對(duì)立學(xué)習(xí)策略來(lái)進(jìn)行種群初始:
X
i
,
n
e
w
=
(
l
+
u
)
?
k
X
i
(1)
X_{i,new}=(l+u)-kX_{i}\tag1
Xi,new?=(l+u)?kXi?(1)
其中,
X
i
X_{i}
Xi?為原解,
X
i
,
n
e
w
X_{i,new}
Xi,new?為隨機(jī)對(duì)立學(xué)習(xí)生成的反向解,
k
k
k為[0,1]之間的隨機(jī)數(shù)。
經(jīng)過(guò)隨機(jī)對(duì)立學(xué)習(xí)策略后,生成了
N
N
N個(gè)反向解,如果反向解的適應(yīng)度值優(yōu)于原解,就用反向解替代原解,否則保留原解。
2.2 動(dòng)態(tài)權(quán)重系數(shù)
基本鵜鶘優(yōu)化算法的開(kāi)發(fā)階段,在迭代后期會(huì)存在陷入局部最優(yōu)的情況,使搜索失敗。為克服這一弊端,再在其位置更新公式中加入動(dòng)態(tài)權(quán)重系數(shù) ω,讓它在迭代初期具有較大值,促進(jìn)全局搜索,迭代后期自適應(yīng)變小,促進(jìn)局部搜索并加快收斂速度。
2.3 透鏡成像折射方向?qū)W習(xí)
透鏡成像折射反向?qū)W習(xí)策略的思想來(lái)自于凸透鏡成像的原理。通過(guò)基于當(dāng)前坐標(biāo)生成一個(gè)反向位置來(lái)擴(kuò)展搜索范圍,如圖1所示。
在二維坐標(biāo)中,x軸的搜索范圍為(a, b), y軸表示一個(gè)凸透鏡。假設(shè)物體A在x軸上的投影為x,高度為h,通過(guò)透鏡成像,另一側(cè)的圖像為A*, A在x軸上的投影為x,高度為h*。通過(guò)以上分析,我們可以得到如下公式:
(
a
+
b
)
/
2
?
x
x
?
?
(
a
+
b
)
/
2
=
h
h
?
(2)
\frac{(a+b)/2-x}{x^{*}-(a+b)/2 }=\frac{h}{h^{*}} \tag2
x??(a+b)/2(a+b)/2?x?=h?h?(2)
對(duì)公式(2)進(jìn)行轉(zhuǎn)換,即可得到反向解x*的表達(dá)式為:
x
?
=
a
+
b
2
+
a
+
b
2
k
?
x
k
(3)
x^{*} =\frac{a+b}{2}+\frac{a+b}{2k}-\frac{x}{k} \tag3
x?=2a+b?+2ka+b??kx?(3)
其中,
k
=
h
/
h
?
k=h/h^{*}
k=h/h?,
a
a
a和
b
b
b可以視為某維度的上下限。本文中的
k
k
k是一個(gè)與迭代次數(shù)相關(guān)的動(dòng)態(tài)自適應(yīng)值。
3. 部分代碼展示
%%
clc
clear
close all
%%
Fun_name='F1'; % number of test functions: 'F1' to 'F23'
SearchAgents=30; % number of Pelicans (population members)
Max_iterations=500; % maximum number of iteration
[lb,ub,dim,fobj]=Get_Functions_details(Fun_name); % Object function information
[Best_score_POA,Best_pos_POA,POA_curve]=POA(SearchAgents,Max_iterations,lb,ub,dim,fobj);
[Best_score_SSA,Best_pos_SSA,SSA_curve]=SSA(SearchAgents,Max_iterations,lb,ub,dim,fobj);
[Best_score_WOA,Best_pos_WOA,WOA_curve]=WOA(SearchAgents,Max_iterations,lb,ub,dim,fobj);
[Best_score_GWO,Best_pos_GWO,GWO_curve]=GWO(SearchAgents,Max_iterations,lb,ub,dim,fobj);
[Best_score_IPOA,Best_pos_IPOA,IPOA_curve]=IPOA(SearchAgents,Max_iterations,lb,ub,dim,fobj);
%%
figure('Position',[454 445 694 297]);
subplot(1,2,1);
func_plot(Fun_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Fun_name,'( x_1 , x_2 )'])
subplot(1,2,2);
t = 1:Max_iterations;
semilogy(t, POA_curve, 'b-', t, SSA_curve, 'k-', t, WOA_curve, 'g-', t, GWO_curve, 'm-', t, IPOA_curve, 'r-','linewidth', 1.5);
title(Fun_name)
xlabel('Iteration');
ylabel('Best fitness function');
axis tight
legend('POA','SSA','WOA','GWO','IPOA')
display(['The best solution obtained by POA for ' [num2str(Fun_name)],' is : ', num2str(Best_pos_POA)]);
display(['The best optimal value of the objective funciton found by POA for ' [num2str(Fun_name)],' is : ', num2str(Best_score_POA)]);
display(['The best solution obtained by SSA for ' [num2str(Fun_name)],' is : ', num2str(Best_pos_SSA)]);
display(['The best optimal value of the objective funciton found by SSA for ' [num2str(Fun_name)],' is : ', num2str(Best_score_SSA)]);
display(['The best solution obtained by WOA for ' [num2str(Fun_name)],' is : ', num2str(Best_pos_WOA)]);
display(['The best optimal value of the objective funciton found by WOA for ' [num2str(Fun_name)],' is : ', num2str(Best_score_WOA)]);
display(['The best solution obtained by GWO for ' [num2str(Fun_name)],' is : ', num2str(Best_pos_GWO)]);
display(['The best optimal value of the objective funciton found by GWO for ' [num2str(Fun_name)],' is : ', num2str(Best_score_GWO)]);
display(['The best solution obtained by IPOA for ' [num2str(Fun_name)],' is : ', num2str(Best_pos_IPOA)]);
display(['The best optimal value of the objective funciton found by IPOA for ' [num2str(Fun_name)],' is : ', num2str(Best_score_IPOA)]);
4. 仿真結(jié)果展示
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-699723.html
5. 資源獲取
可以獲取完整代碼資源。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-699723.html
到了這里,關(guān)于【群智能算法改進(jìn)】一種改進(jìn)的鵜鶘優(yōu)化算法 IPOA算法[2]【Matlab代碼#58】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!