在群体智能优化算法中,需要随机产生数组,然而往往效果并不好。 由于混沌序列具有非线性、遍历性和不可预测性等特点,因此随机数组可用混沌映射来替代。 参考 Yu
Y , Gao S , Cheng S , et al. CBSO: a memetic brain storm optimization with
chaotic local search[J]. Memetic Computing, 2017. 相关参数设置可见其论文,不在此赘述。
注:和论文的顺序不一样。
Matlab代码如下
clear; clc; %% Logistic y_1=zeros(1,10^5); y_1(1)=0.152; mu=4; for i = 1 :
10^5-1 y_1(i+1)=mu*y_1(i)*(1-y_1(i)); end %% Tent y_2=zeros(1,10^5); y_2(1)=
0.152; Beta = 0.4; for i = 1 : 10^5-1 if (y_2(i)<=Beta && y_2(i)>0) y_2(i+1) =
y_2(i)/Beta; else y_2(i+1)=(1-y_2(i))/(1-Beta); end end %% Cubic
y_3=zeros(1,10^5); y_3(1)= 0.242; rho = 2.59; for i = 1 : 10^5-1 y_3(i+1) =
rho*y_3(i)*(1-y_3(i)^2); end %% Bernoulli y_4=zeros(1,10^5); y_4(1)= 0.152;
lambda = 0.4; for i = 1 : 10^5-1 if (y_4(i)<=(1-lambda)) && ((y_4(i)>0))
y_4(i+1) = y_4(i)/(1-lambda); else y_4(i+1)=(y_4(i)-1+lambda)/lambda; end end
%% PWLCM y_5=zeros(1,10^5); y_5(1)= 0.002; P = 0.7; for i = 1 : 10^5-1 if
(y_5(i)<P && y_5(i)>0) y_5(i+1) = y_5(i)/P; else y_5(i+1)=(1-y_5(i))/(1-P); end
end %% Singer y_6=zeros(1,10^5); y_6(1)= 0.152; mu_1 = 1.073; for i = 1 :
10^5-1 y_6(i+1) =
mu_1*(7.86*y_6(i)-23.31*y_6(i)^2+28.75*y_6(i)^3-13.302875*y_6(i)^4); end %%
Sine y_7=zeros(1,10^5); y_7(1)= 0.152; a = 4; for i = 1 : 10^5-1 y_7(i+1) =
a/4*sin(pi*y_7(i)); end %% Gaussian y_8=zeros(1,10^5); y_8(1)= 0.152; mu_2 = 1;
for i = 1 : 10^5-1 if (y_8(i)==0) y_8(i+1) =0 ; else y_8(i+1)
=(rem(mu_2/y_8(i),1)) ; end end %% Chebyshew y_9=zeros(1,10^5); y_9(1)= 0.152;
phi = 5; for i = 1 : 10^5-1 y_9(i+1) =cos(phi*acos(y_9(i))) ; end %% Circle
y_10=zeros(1,10^5); y_10(1)= 0.152; a_1 = 0.5; b_1 = 2.2; for i = 1 : 10^5-1
y_10(i+1) = y_10(i)+a_1-mod(b_1/(2*pi)*(sin(2*pi*y_10(i))),1); end %%
Sinusoidal y_11=zeros(1,10^5); y_11(1)= 0.74; a_2 = 2.3; for i = 1 : 10^5-1
y_11(i+1) = a_2*y_11(i)^2*sin(pi*y_11(i)); end %% ICMIC y_12=zeros(1,10^5);
y_12(1)= 0.152; a_3 = 70; for i = 1 : 10^5-1 y_12(i+1) = sin(a_3/y_12(i)); end
%% 画图 subplot(3,4,1) h1=histogram(y_1,200); h1.FaceColor=[0 0 1];
xlim([0,1])%设置x轴范围 xlabel('Logistic map') subplot(3,4,2) h2=histogram(y_2,200);
h2.FaceColor=[0 0 1]; xlim([0,1])%设置x轴范围 xlabel('Tent map') subplot(3,4,3)
h3=histogram(y_3,200); h3.FaceColor=[0 0 1]; xlim([0,1])%设置x轴范围 xlabel('Cubic
map') subplot(3,4,4) h4=histogram(y_4,200); h4.FaceColor=[0 0 1];
xlim([0,1])%设置x轴范围 xlabel('Bernoulli map') subplot(3,4,5)
h5=histogram(y_5,200); h5.FaceColor=[0 0 1]; xlim([0,1])%设置x轴范围 xlabel('PWLCM
map') subplot(3,4,5) h5=histogram(y_5,200); h5.FaceColor=[0 0 1];
xlim([0,1])%设置x轴范围 xlabel('PWLCM map') subplot(3,4,6) h6=histogram(y_6,200);
h6.FaceColor=[0 0 1]; xlim([0,1])%设置x轴范围 xlabel('Singer map') subplot(3,4,7)
h7=histogram(y_7,200); h7.FaceColor=[0 0 1]; xlim([0,1])%设置x轴范围 xlabel('Sine
map') subplot(3,4,8) h8=histogram(y_8,200); h8.FaceColor=[0 0 1];
xlim([0,1])%设置x轴范围 xlabel('Gaussian map') subplot(3,4,9) h9=histogram(y_9,200);
h9.FaceColor=[0 0 1]; xlim([0,1])%设置x轴范围 xlabel('Chebyshew map')
subplot(3,4,10) h10=histogram(y_10,200); h10.FaceColor=[0 0 1];
xlim([0,1])%设置x轴范围 xlabel('Circle map') subplot(3,4,11)
h11=histogram(y_11,200); h11.FaceColor=[0 0 1]; xlim([0,1])%设置x轴范围
xlabel('Sinusoidal map') subplot(3,4,12) h12=histogram(y_12,200);
h12.FaceColor=[0 0 1]; xlim([0,1])%设置x轴范围 xlabel('ICMIC map')