資源簡(jiǎn)介
一種比較新的生物地理學(xué)算法(BBO)以及BBO算法和差分進(jìn)化算法相結(jié)合的matlab程序,程序優(yōu)化較好,比較小,運(yùn)行速度快。

代碼片段和文件信息
%BBO算法,無(wú)改進(jìn),整理時(shí)間:2011.06.10
clear?all
close?all
G?=?200;?????????????????????????%?進(jìn)化代數(shù)
Size?=?50;???????????????????????%?種群規(guī)模
pmodify?=?1;?????????????????????%?遷移概率
NumVar?=?35;?????????????????????%?參數(shù)個(gè)數(shù)
Keep?=?3;????????????????????????%?精因個(gè)數(shù)
pmutate?=?0.05;??????????????????%?變異概率
lambdaLower?=?0.0;???????????????%?對(duì)于每個(gè)基因的最小遷入率
lambdaUpper?=?1;?????????????????%?對(duì)于每個(gè)基因的最大遷入率
dt?=?1;??????????????????????????%?步長(zhǎng)
I?=?1;???????????????????????????%?對(duì)于每個(gè)棲息地的最大遷入率
e?=?1;???????????????????????????%?對(duì)于每個(gè)棲息地的最大遷出率
%確定每個(gè)參數(shù)的取值范圍
for?i=1:1:NumVar
????MinX(i)=-32;
????MaxX(i)=32;
end
%初始化種群
for?i=1:1:NumVar
????E=MinX(i)+(MaxX(i)-MinX(i))*rand(Sizei);
end
%求適應(yīng)度值
for?i=1:1:Size
????Population(i).chrom=E(i:);
????p=Population(i).chrom;
????Population(i).cost=Ackley(p);
end
%排序
Population?=?PopSort(Population);
%初始化種群概率
for?j?=?1?:?Size
????Prob(j)?=?1?/?Size;?
end
%進(jìn)化開始
for?kg?=?1:1:G
????time(kg)?=?kg?;??
????%保存最優(yōu)個(gè)體
????for?j?=?1?:?Keep
????????chromKeep(j:)?=?Population(j).chrom;
????????costKeep(j)?=?Population(j).cost;
????end
????for?i?=?1?:?length(Population)
????????%求種群數(shù)量
????????if?Population(i).cost?????????????Population(i).SpeciesCount?=?Size?-?i;
????????else
????????????Population(i).SpeciesCount?=?0;
????????end
????????%計(jì)算每個(gè)棲息地的移入移出率
????????%余弦模型
????????lambda(i)?=?0.5?*?I?*?(cos(pi*Population(i).SpeciesCount?/?Size)+1);
????????mu(i)?=?0.5?*?e?*?(-cos(pi*Population(i).SpeciesCount?/?Size)+1);
????????%二次模型
????%?????lambda(i)?=??I?*?(Population(i).SpeciesCount?/?Size?-1)^2;
????%?????mu(i)?=?e?*?(Population(i).SpeciesCount?/?Size?)^2;
????????%指數(shù)模型
????%?????lambda(i)?=?I?*?exp(-Population(i).SpeciesCount?/?Size);
????%?????mu(i)?=?e?*?exp(Population(i).SpeciesCount?/?Size?-?1)?;
????????%線性模型
%?????????lambda(i)?=?I?*?(1?-?Population(i).SpeciesCount?/?Size);
%?????????mu(i)?=?e?*?Population(i).SpeciesCount?/?Size;
????end
????lambdaMin?=?min(lambda);
????lambdaMax?=?max(lambda);
????for?k?=?1:1?:?Size
????????if?rand?>?pmodify
????????????continue;
????????end
????????%標(biāo)準(zhǔn)化移入率
????????lambdaScale?=?lambdaLower?+?(lambdaUpper?-?lambdaLower)?*?(lambda(k)?-?lambdaMin)?/?(lambdaMax?-?lambdaMin);
????????%遷移操作,概率的輸入新的信息到棲息地i
????????for?j?=?1?:?NumVar
????????????if?rand?????????????????RandomNum?=?rand?*?sum(mu);
????????????????Select?=?mu(1);
????????????????SelectIndex?=?1;
????????????????while?(RandomNum?>?Select)?&?(SelectIndex?????????????????????SelectIndex?=?SelectIndex?+?1;
????????????????????Select?=?Select?+?mu(SelectIndex);
????????????????end
????????????????Island(kj)?=?Population(SelectIndex).chrom(j);
????????????else
????????????????Island(kj)?=?Population(k).chrom(j);
????????????end
????????end
????end
?for?j?=?1?:?1?:Size
?????????%余弦模型
????????lambdaMinus?=?0.5?*?I?*?(cos(pi*(Population(j).SpeciesCount-1)?/?Size)+1);
????????muPlus?=?0.5?*?e?*?(-cos(pi*(Population(j).Species
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-08-21?16:02??BBO\
?????文件????????5686??2013-08-21?10:49??BBO\BBO.asv
?????文件????????5796??2013-08-21?16:24??BBO\BBO.m
?????文件????????5251??2013-08-21?10:49??BBO\BBODE.m
?????文件????????4299??2013-08-21?10:49??BBO\BBODE_2.m
?????文件????????5765??2013-08-21?10:49??BBO\BBO_1.asv
?????文件????????5822??2013-08-21?10:49??BBO\BBO_1.m
?????文件?????????530??2013-08-21?10:49??BBO\PopSort.m
評(píng)論
共有 條評(píng)論