資源簡介
生物地理學算法的matlab代碼實現,包括了基礎的BBO算法以及兩種改進算法,參考文獻
[1]Simon D. Biogeography-based optimization[J].IEEE transactions on evolutionary computation, 2008, 12(6): 702-713.
[2]康強.生物地理學優化算法的改進及在聚類優化問題上的應用[D].河南師范大學,2018.
[1]Simon D. Biogeography-based optimization[J].IEEE transactions on evolutionary computation, 2008, 12(6): 702-713.
[2]康強.生物地理學優化算法的改進及在聚類優化問題上的應用[D].河南師范大學,2018.

代碼片段和文件信息
function?obj?=?BBO(objoptions)
%=======================================================
????%?精英保留機制:精英記錄
????for?j?=?1?:?options.keep?
????????elite(j:)=?obj(j).Var;
????????elcost(j)=?obj(j).Cost;
????end?
????for?i?=?1:length(obj)
????????s(i)=?options.Size-i;???????????????????????%?得到種群中的各個解的物種數量
????????lmd(i)=?0.5*options.I*(cos(pi*s(i)/options.Size)+1);????????%?遷入率λ
????????mu(i)=?0.5*options.E*(-cos(pi*s(i)/options.Size)+1);????????%?遷出率μ
????end?
%=======================================================
????%?遷移算子更新
????for?i?=?1:options.Size?
????????lmdscale?=?options.lmd_span(1)+(options.lmd_span(2)-options.lmd_span(1))...
????????*(lmd(i)-min(lmd))/(max(lmd)-min(lmd));
????????for?j?=?1:options.N?
????????????if?rand ????????????????%?輪盤賭
????????????????r?=?rand?*?sum(mu);
????????????????temp?=?mu(1);tempi?=?1;
????????????????while?(r>temp)&(tempi ????????????????????tempi?=?tempi+1;
????????????????????temp?=?temp+mu(tempi);
????????????????end?
????????????????tempVar(ij)=?obj(tempi).Var(j);
????????????else?
????????????????tempVar(ij)=?obj(i).Var(j);
????????????end?
????????end?
????end?
%=======================================================
????%?更新物種概率
????for?i?=?1:options.Size?
????????lmd_sminus?=?0.5*options.I*(cos(pi*(s(i)-1)/options.Size)+1);
????????mu_splus?=?0.5*options.E*(-cos(pi*(s(i)+1)/options.Size)+1);
????????if?i?==?1
????????????Psplus?=?0;
????????else
????????????Psplus?=?options.Ps(i-1);
????????end
????????if?i?==?options.Size
????????????Psminus?=?0;
????????else
????????????Psminus?=?options.Ps(i+1);
????????end
????????dPs(i)?=?-(lmd(i)+mu(i))*options.Ps(i)...
????????????+lmd_sminus*Psminus+mu_splus*Psplus;
????end?
????options.Ps?=?options.Ps+dPs*options.dt;
????options.Ps?=?max(options.Ps0);
????options.Ps?=?options.Ps/sum(options.Ps);
????%?變異算子更新
????rmutate?=?options.pmutate*(1-options.Ps/max(options.Ps));
????for?i?=?(options.Size/2):options.Size?
????????for?temp?=?1:options.N
????????????if?rmutate(i)>rand
????????????????tempVar(itemp)?=?options.span(temp1)+...
????????????????????(options.span(temp2)-options.span(temp1))*rand;
????????????end?
????????end?
????end?
%=======================================================
????%?更新棲息地信息
????for?i=1:options.Size?
????????q?=?cost_cal(tempVar(i:)options.method);
????????if?q ????????????obj(i).Cost=q;
????????????obj(i).Var?=?tempVar(i:);
????????end?
????end?
%=======================================================
????%?精英保留機制:性能最差棲息地信息用精英替換
????obj?=?queue(obj);
????for?i?=?1:options.keep?
????????obj(options.Size-i+1).Var?=?elite(i:);
????????obj(options.Size-i+1).Cost?=?elcost(i);
????end
????
????%?清除算子
????for?i?=?1:length(obj)
????????for?j?=?i+1:length(obj)
????????????if?obj(i).Var==obj(j).Var?
%?????????????????temp?=?ceil(length(obj(j).Var)*rand);
%?????????????????obj(j).Var(temp)=?options.s
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3907??2019-12-23?21:16??BBO?code\BBO.m
?????文件???????1383??2019-12-23?22:41??BBO?code\cost_cal.m
?????文件???????4635??2019-12-22?08:16??BBO?code\DGBBO.m
?????文件??????10003??2019-12-23?21:43??BBO?code\EMBBO.m
?????文件???????2401??2019-12-24?01:05??BBO?code\image_display.m
?????文件????????317??2019-12-20?17:06??BBO?code\init.m
?????文件???????1894??2019-12-24?02:11??BBO?code\main.m
?????文件????????299??2019-12-23?22:12??BBO?code\testloop.m
?????文件????????238??2019-12-22?15:44??BBO?code\tst_fctn_figr.m
?????文件????????374??2020-03-07?21:26??BBO?code\說明.txt
?????目錄??????????0??2020-03-07?21:25??BBO?code
-----------?---------??----------?-----??----
????????????????25451????????????????????11
- 上一篇:蒙特卡洛模擬法
- 下一篇:基于MATLAB的語音識別系統的設計實現 .zip
評論
共有 條評論