大部分混沌映射的系数是有限制的, 针对每个模型最优的混沌系数是不一样的, 因此混沌系数要根据自己的模型来定. 下面的系数都是根据我自己的模型而设定的.
混沌映射
- 1 Tent 映射
- 2 Sine 映射
- 3 Sinusoidal 映射
- 4 Piecewise 映射
- 5 Logistic 映射
- 6 Cubic 映射
- 7 Chebyshev 映射
1 Tent 映射
公式:
实现:
N: 种群的个数; dim: 维度; tent: 混沌系数.
tent=2.5;
Tent=rand(N,dim);
for i=1:N
for j=2:dim
if Tent(i,j-1)<tent
Tent(i,j)=Tent(i,j-1)/tent;
elseif Tent(i,j-1)>=tent
Tent(i,j)=(1-Tent(i,j-1))/(1-tent);
end
end
end
2 Sine 映射
公式:
实现:
N: 种群的个数; dim: 维度; sine: 混沌系数.
sine=2.5;
Sine=rand(N,dim);
for i=1:N
for j=2:dim
Sine(i,j)=(4/sine)*sin(pi*Sine(i,j-1));
end
end
3 Sinusoidal 映射
公式:
实现:
N: 种群的个数; dim: 维度; sinusoidal: 混沌系数.
sinusoidal=2.5;
Sinusoidal=rand(N,dim);
for i=1:N
for j=2:dim
Sinusoidal(i,j)=sinusoidal*Sinusoidal(i,j-1).^2*(sin(pi*Sinusoidal(i,j-1)));
end
end
4 Piecewise 映射
公式:
实现:
N: 种群的个数; dim: 维度; p: 混沌系数.
p=2.3;
Piecewise=rand(N,dim);
for i=1:N
for j=2:dim
if Piecewise(i,j-1)>0&&Piecewise(i,j-1)<p
Piecewise(i,j)=Piecewise(i,j-1)/p;
elseif Piecewise(i,j-1)>=p&&Piecewise(i,j-1)<0.5
Piecewise(i,j)=(Piecewise(i,j-1)-p)/(0.5-p);
elseif Piecewise(i,j-1)>=0.5&&Piecewise(i,j-1)<1-p
Piecewise(i,j)=(1-p-Piecewise(i,j-1))/(0.5-p);
elseif Piecewise(i,j-1)>=1-p&&Piecewise(i,j-1)<1
Piecewise(i,j)=(1-Piecewise(i,j-1))/p;
end
end
end
5 Logistic 映射
公式:
实现:
N: 种群的个数; dim: 维度; logistic: 混沌系数.
logistic=2.3;
Logistic=rand(N,dim);
for i=1:N
for j=2:dim
Logistic(i,j)=logistic.* Logistic(i,j-1).*(1-Logistic(i,j-1));
end
end
6 Cubic 映射
公式:
实现:
N: 种群的个数; dim: 维度; cubic: 混沌系数.
cubic=2.3;
Cubic=rand(N,dim);
for i=1:N
for j=2:dim
Cubic(i,j)=cubic.*Cubic(i,j-1).*(1-Cubic(i,j-1).^2);
end
end
7 Chebyshev 映射
公式:
实现:
N: 种群的个数; dim: 维度; chebyshev: 混沌系数.
chebyshev=4;
Chebyshev=rand(N,dim);
for i=1:N
for j=2:dim
Chebyshev(i,j)=cos(chebyshev.*acos(Chebyshev(i,j-1)));
end
end