資源簡介
matlab實現蝙蝠算法(BA)代碼,可用于智能算法的優化
代碼片段和文件信息
%?Bat-inspired?algorithm?for?continuous?optimization?%
%?------------------------------------------------------%
function?[bestfminN_iter]=bat(para)?%?[y1...yN]?=?myfun(x1...xM)?
%?默認參數
if?nargin<1?%nargin(fx)返回函數fx的定義語句中出現的輸入參數的數量。
????para=[10?0.25?0.5];
end
n=para(1);?%?群體大小?通常為【10,25】
A=para(2);?%?音量?(不變或者減小)
r=para(3);??%?脈沖率?(不變或增加)
%?頻率范圍
Qmin=0;??%?最低頻率
Qmax=2;??%?最高頻率
%?迭代參數
tol=10^(-5);?%?停止精度
N_iter=0;?%?評價函數的總數?迭代次數
%?搜索變量的維數
d=4;
%?初始矩陣
Q=zeros(n1);?%?頻率?n行1列矩陣
v=zeros(nd);?%?速度?n行d列矩陣
%?初始化群體/解
for?i=1:n
????Sol(i:)=randn(1d);?
????Fitness(i)=Fun(Sol(i:));
end
%?尋找當前最優解
[fminI]=min(Fitness);
best=Sol(I:);
%?開始迭代
while?(fmin>tol)
????%遍歷所有蝙蝠或者解決方案
????for?i=1:n
????????Q(i)=Qmin+(Qmin-Qmax)*rand;
評論
共有 條評論