資源簡介
講解了分布估計(jì)算法的基本原理,附帶一個(gè)基于matlab實(shí)現(xiàn)的例子代碼

代碼片段和文件信息
%%%%%%%%%%%%PBIL?algorithm
clc
clear
clf
tic???????????%%%%%%%%%%%開始計(jì)時(shí)
%%%%%%%%%%%%參數(shù)設(shè)置
Pop_Size=40;
Individual_Len=20;%%%%%%%%%每個(gè)變量的長度
Variable_Num=2;
Learning_Rate=0.01;
Iteration_Times=1000;
I=1;
%%%%%%%%%%%%%%%產(chǎn)生初始種群
Binary_X=zeros(Pop_SizeVariable_NumIndividual_Len);
for?i=1:1:Pop_Size
????for?j=1:1:Variable_Num
????????for?k=1:1:Individual_Len
????????????Binary_X(ijk)=round(rand());
????????end
????end
end
Best_Individual=zeros(1Iteration_Times);
Probability_Vector=zeros(Iteration_TimesVariable_NumIndividual_Len);
traces=zeros(3Iteration_Times);%%%%%追蹤每一代的最優(yōu)值
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%對每一代執(zhí)行如下操作
while?I<=Iteration_Times????
?%%%%%%%%%%%%%%%%將采樣的值,由二進(jìn)制轉(zhuǎn)化到十進(jìn)制
??Decimal_X=zeros(Pop_SizeVariable_Num);
????for?i=1:1:Pop_Size
????????for?j=1:1:Variable_Num??
????????????k=Individual_Len;
????????????t=1;
????????????while?k>=1
???????????????Decimal_X(ij)=Decimal_X(ij)+Binary_X(ijk)*2^(t-1);
???????????????k=k-1;
???????????????t=t+1;
????????????end
????????end
????end
????%%%%%%%%%%%%%%%%%將十進(jìn)制映射到解空間中
????Solution=zeros(Pop_SizeVariable_Num);
????for?i=1:1:Pop_Size
????????for?j=1:1:Variable_Num
????????????Solution(ij)=-2+Decimal_X(ij)*4/(2^Individual_Len-1);
????????end
????end
????%%%%%%%%%%%%%%%%%%計(jì)算適應(yīng)值
????Fitness_Value=zeros(1Pop_Size);
????for?i=1:1:Pop_Size
??????%??Fitness_Value(i)=100*(Solution(i1)^2-Solution(i2))^2+(1-Solution(i1))^2;
????%??Fitness_Value(i)=Solution(i1)*cos(2*pi*Solution(i2))+Solution(i2)*sin(2*pi*Solution(i1));
????%Fitness_Value(i)=Solution(i1)+Solution(i2);
???%?Fitness_Value(i)=Solution(i1)^2+Solution(i2);
???%Fitness_Value(i)=Solution(i1)*Solution(i2);
???%Fitness_Value(i)=(Solution(i1)-Solution(i2))^2;
????Fitness_Value(i)=Solution(i1).*cos(2*pi*Solution(i2))+Solution(i2).*cos(2*pi*Solution(i1));
????end
????%%%%%%%%%%%%%%%%%%將適應(yīng)值按照從小到大的順序排序,并選出最優(yōu)個(gè)體
????[FitnessValueindex]=sort(Fitness_Value);%%%%%%%排序??
????Best_Individual(I)=Fitness_Value(index(Pop_Size));%%%%%%%%選最優(yōu)個(gè)體
????traces(1I)=Solution(index(Pop_Size)1);
????traces(2I)=Solution(index(Pop_Size)2);
????traces(3I)=Fitness_Value(index(Pop_Size));
????%%%%%%%%%%%%%%%%選出優(yōu)勢群體
????Superiority_Polution=zeros(Pop_Size/2Variable_NumIndividual_Len);
????for?i=1:1:Pop_Size/2
????????for?j=1:1:Variable_Num
????????????for?k=1:1:Individual_Len
????????????????Superiority_Polution(ijk)=Binary_X(index(i+Pop_Size/2)jk);
????????????end
????????end
????end
????%%%%%%%%%%%%%%%從優(yōu)勢群體中統(tǒng)計(jì)基因位的值,來更新概率向量
?????Ones_Number=zeros(Variable_NumIndividual_Len);
????for?i=1:1:Pop_Size/2
????????for?j=1:1:Variable_Num
????????????for?k=1:1:Individual_Len
????????????????if?Superiority_Polution(ijk)==1
????????????????????Ones_Number(jk)=Ones_Number(jk)+1;
????????????????end
????????????end
????????end
????end
????for?j=1:1:Variable_Num
????????for?k=1:1:Individual_Len
????????????Probability_Vector(Ijk)=Ones_Number(jk)
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????4487??2012-12-07?13:07??EDA\PBIL.m
?????文件????2640384??2013-03-19?15:48??EDA\分布估計(jì)算法.ppt
?????目錄??????????0??2013-03-19?15:48??EDA
-----------?---------??----------?-----??----
??????????????2644871????????????????????3
評論
共有 條評論