1 模型

蝙蝠算法( BA) 是 Yang 教授于 2010 年基于群体智能提出的启发式搜索算法,是一种搜索全局最优解的有效方法。该算法是一种基于迭代的优化技术,初始化为一组随机解,然后 通过迭代搜寻最优解,且在最优解周围通过随机飞行产生局部新解,加强了局部搜索。与其他算法相比,BA 在准确性和有效性方面远优于其他算法,且没有许多参数要进行调整。

【优化求解】基于蝙蝠算法求解最优目标matlab源码_蝙蝠算法

【优化求解】基于蝙蝠算法求解最优目标matlab源码_蝙蝠算法_02

2 部分代码

%%     Bat Algorithm For Sphere Function     %%

%%     开始     %%

clear;clc;

close all;

%%     初始化参数     %%

Iter=1;%初始迭代次数

Iter_Max=50;%最大迭代次数

Dim=2;%问题的维度

Pop_Size=30;%种群大小

Loud_Min=0;%响度最小值

Alpha=0.95;%响度控制参数

Gama=0.95;%脉冲发射率控制参数

Freq_Min=0;Freq_Max=2;%频率范围

V_Min=-5;V_Max=5;%速度范围

Pop_Min=-10;Pop_Max=10;%种群个体大小范围

%%     初始化种群     %%

PR=0.5*ones(Pop_Size,1);%脉冲发射率初始化

Loud=0.9*ones(Pop_Size,1);%响度初始化

PR0=PR;%记录初始脉冲发射率

Beta=rand(Pop_Size,1);%随机化Beta值

Freq=Freq_Min+(Freq_Max-Freq_Min)*Beta;%频率初始化

V=V_Min+(V_Max-V_Min)*rand(Pop_Size,Dim);%速度初始化

% V=zeros(Pop_Size,Dim);

Pop=Pop_Min+(Pop_Max-Pop_Min)*rand(Pop_Size,Dim);%种群初始化

for i=1:Pop_Size

   Fitness(i)=Sphere_Function(Pop(i,:));%评估当前野草对应的适应度值

end

[Fitness_Best,Position_Best]=min(Fitness);%寻找当前最优适应度值

Position_Current=find(Fitness==Fitness_Best);%最优适应度值的位置

Trace(Iter)=Fitness_Best;%记录当前代适应度值最小值

       if Fitness(i)<Fitness_Best

           Fitness_Best=Fitness(i);

       end

       [Fitness_Best,Position_Best]=min(Fitness);%寻找当前最优适应度值

       Position_Current=find(Fitness==Fitness_Best);%最优适应度值的位置

   end  

   Iter=Iter+1;

   Trace(Iter)=Fitness_Best;%记录当前代适应度值最小值

end

%%     数据后处理     %%

Iter%记录当前迭代次数

Fitness_Best%记录当前最优适应度值

figure('Position',[269   240   660   290])

%Draw search space

subplot(1,2,1);

X1=linspace(-10,10,101);

X2=linspace(-10,10,101);

for i=1:length(X1)

   for j=1:length(X2)

       Y(i,j)=X1(i)^2+X2(j)^2;

   end

end

subplot(1,2,1),surf(X1,X2,Y);

title('Parameter space')

xlabel('x_1');

ylabel('x_2');

zlabel('( x_1 , x_2 )')

subplot(1,2,2);,plot(Trace);

xlabel('Iteration');

ylabel('Best score obtained so far');

3 仿真结果

【优化求解】基于蝙蝠算法求解最优目标matlab源码_蝙蝠算法_03

4 参考文献

[1]刘长平, 叶春明. 具有Lévy飞行特征的蝙蝠算法[J]. 智能系统学报, 2013, 000(003):240-246.

【优化求解】基于蝙蝠算法求解最优目标matlab源码_蝙蝠算法_04