資源簡介
差分進化算法結合人工蜂群形成差分蜂群算法(DE-ABC),并與粒子群、遺傳、差分進化、人工蜂群進行對比,內涵5種標準測試函數

代碼片段和文件信息
function?[GlobalParamsGlobalMinBestGlobalMins]=abc(objfundmax_itersizepopublb)
%%?參數初始化
NP=sizepop;?%?蜂群規模
FoodNumber=NP/2;?%?蜜源(解)數量
limit=100;?%?當有蜜源連續沒被更新的次數超過limit時,該蜜源將被重新初始化
maxCycle=max_iter;?%?最大迭代次數
%?待優化參數信息
D=d;?%?待優化參數個數,次數為c和g兩個
ub=ones(1D)*ub;?%?參數取值上界
lb=ones(1D)*lb;?%?參數取值下界
runtime=1;?%?可用于設置多次運行(讓ABC算法運行runtime次)以考察程序的穩健性
BestGlobalMins=[];?%用于存放全局最優解與平均適應度值
BestGlobalParams=zeros(runtimeD);?%?用于存放ABC算法優化得到的最優參數
GlobalMin=inf;
GlobalParams=[inf?inf];
%%?初始化蜜源
Range?=?repmat((ub-lb)[FoodNumber?1]);
Lower?=?repmat(lb?[FoodNumber?1]);
Foods?=?rand(FoodNumberD)?.*?Range?+?Lower;
%?計算每個蜜源(解)得目標函數值,objfun為計算SVM預測的平均平方誤差(MSE)的函數,根據自己的實際問題變異目標函數即可
ObjVal=ones(1FoodNumber);
for?k?=?1:FoodNumber
????ObjVal(k)?=?objfun(Foods(k:));
end
Fitness=calculateFitness(ObjVal);?%?計算適應度函數值
%?標記初始最優蜜源(解)
BestInd=find(ObjVal==min(ObjVal));
BestInd=BestInd(end);
if?(ObjVal(BestInd) ????GlobalMin=ObjVal(BestInd);
????GlobalParams=Foods(BestInd:);
end
%%
for?r=1:runtime?%?運行ABC算法runtime次
????trial=zeros(1FoodNumber);?%?用于記錄第i個蜜源有連續trail(i)次沒被更新過
????iter=1;?%?迭代開始
????while?((iter?<=?maxCycle))?%?循環條件
????????
????????%%%%%%%%%%%%%%%%%%%%%引領蜂搜索解的過程%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
????????for?i=1:(FoodNumber)?%?遍歷每個蜜源(解)
????????????Param2Change=fix(rand*D)+1;?%?隨機選擇需要變異的參數
????????????neighbour=fix(rand*(FoodNumber))+1;?%?隨機選擇相鄰蜜源(解)以準備變異
????????????%?需要保證選擇的相鄰蜜源不是當前蜜源(i)
????????????while(neighbour==i)
????????????????neighbour=fix(rand*(FoodNumber))+1;
????????????end
????????????
????????????sol=Foods(i:);?%?提取當前蜜源(解)對應的的參數
????????????%?參數變異得到新的蜜源:v_{ij}=x_{ij}+\phi_{ij}*(x_{kj}-x_{ij})
????????????sol(Param2Change)=Foods(iParam2Change)+(Foods(iParam2Change)-Foods(neighbourParam2Change))*(rand-0.5)*2;
????????????%?確保參數取值范圍不越界
????????????ind=find(sol
????????????sol(ind)=lb(ind);
????????????ind=find(sol>ub);
????????????sol(ind)=ub(ind);
????????????%?計算變異后蜜源的目標函數值和適應度函數值
????????????ObjValSol=objfun(sol);
????????????FitnessSol=calculateFitness(ObjValSol);
????????????%?更新當前蜜源的相關信息
????????????if?(FitnessSol>Fitness(i))
????????????????Foods(i:)=sol;
????????????????Fitness(i)=FitnessSol;
????????????????ObjVal(i)=ObjValSol;
????????????????trial(i)=0;?%?如果當前蜜源被更新了,則對應的trial歸零
????????????else
????????????????trial(i)=trial(i)+1;?%?如果當前蜜源沒有被更新,則trial(i)加1
????????????end
????????end
????????
????????%%%%%%%%%%%%%%%%%%%%%%%%?跟隨蜂搜索解的過程?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
????????%?計算解(蜜源)的概率
????????prob=(0.9.*Fitness./max(Fitness))+0.1;
????????%?循環初始化
????????i=1;
????????t=0;
????????while(t ????????????if(rand ????????????????t=t+1;?%?循環計數器加1
????????????????
????????????????Param2Change=fix(rand*D)+1;?%?隨機確定需要變異的參數
????????????????neighbour=fix(rand*(FoodNumber))+1;?%?隨機選擇相鄰蜜源(解)
????????????????%?需要保證選擇的相鄰蜜源不是當前蜜源(i)
????????????????while(neighbour==i)
???????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????.CA....??????5844??2019-05-05?20:37??差分蜂群優化算法MATLAB實現\abc.m
????.CA....??????5714??2019-05-05?20:37??差分蜂群優化算法MATLAB實現\ABC1.m
????.CA....???????182??2008-06-09?19:54??差分蜂群優化算法MATLAB實現\calculateFitness.m
????.CA....???????322??2019-03-30?13:23??差分蜂群優化算法MATLAB實現\Code.m
????.CA....??????1613??2019-03-30?13:32??差分蜂群優化算法MATLAB實現\Cross.m
????.CA....??????2590??2019-05-05?19:44??差分蜂群優化算法MATLAB實現\DE.m
????.CA....??????2496??2020-05-19?13:29??差分蜂群優化算法MATLAB實現\de1.m
????.CA....??????1547??2019-05-05?20:29??差分蜂群優化算法MATLAB實現\DEABC.m
????.CA....????????76??2019-04-29?10:54??差分蜂群優化算法MATLAB實現\f1.m
????.CA....???????186??2019-04-29?10:54??差分蜂群優化算法MATLAB實現\f2.m
????.CA....???????174??2019-04-29?10:51??差分蜂群優化算法MATLAB實現\f3.m
????.CA....???????137??2019-04-29?10:54??差分蜂群優化算法MATLAB實現\f4.m
????.CA....??????2462??2019-05-03?13:14??差分蜂群優化算法MATLAB實現\ga.m
????.CA....??????1239??2020-05-19?13:24??差分蜂群優化算法MATLAB實現\MAIN.m
????.CA....??????1455??2019-03-30?13:54??差分蜂群優化算法MATLAB實現\Mutation.m
????.CA....??????2657??2020-05-19?13:31??差分蜂群優化算法MATLAB實現\pso.m
????.CA....???????806??2019-03-30?13:25??差分蜂群優化算法MATLAB實現\select.m
????.CA....???3456266??2019-03-30?16:28??差分蜂群優化算法MATLAB實現\一種新的混合智能極限學習機_林梅金.caj
????.CA....????????55??2020-05-19?13:32??差分蜂群優化算法MATLAB實現\程序說明.txt
????.C.D...?????????0??2020-05-19?13:32??差分蜂群優化算法MATLAB實現
-----------?---------??----------?-----??----
??????????????3485821????????????????????20
- 上一篇:數學建模的29個通用模型及matlab解法
- 下一篇:simuli
nk部分模塊介紹
評論
共有 條評論