【优化求解】基于蝙蝠算法求解最优目标matlab源码
生活随笔
收集整理的這篇文章主要介紹了
【优化求解】基于蝙蝠算法求解最优目标matlab源码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?1 模型
蝙蝠算法( BA) 是 Yang 教授于 2010 年基于群體智能提出的啟發式搜索算法,是一種搜索全局最優解的有效方法。該算法是一種基于迭代的優化技術,初始化為一組隨機解,然后 通過迭代搜尋最優解,且在最優解周圍通過隨機飛行產生局部新解,加強了局部搜索。與其他算法相比,BA 在準確性和有效性方面遠優于其他算法,且沒有許多參數要進行調整。
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;%記錄當前代適應度值最小值 %% 迭代部分 %%while Iter<=Iter_Max Iter%記錄當前迭代次數 Fitness_Best%記錄當前最優適應度值? for i=1:Pop_Size Beta(i)=rand; Freq(i,:)=Freq_Min+(Freq_Max-Freq_Min)*Beta(i);%頻率控制? Trace(Iter)=Fitness_Best;%記錄當前代適應度值最小值end?%% 數據后處理 %%Iter%記錄當前迭代次數Fitness_Best%記錄當前最優適應度值figure('Position',[269 240 660 290])%Draw search spacesubplot(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; endend?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 仿真結果
4 參考文獻
[1]劉長平, 葉春明. 具有Lévy飛行特征的蝙蝠算法[J]. 智能系統學報, 2013, 000(003):240-246.
?
總結
以上是生活随笔為你收集整理的【优化求解】基于蝙蝠算法求解最优目标matlab源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 驱动面试题总结
- 下一篇: Fragment 键盘弹出方式设置