資源描述:
《遺傳算法仿真實(shí)驗(yàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、遺傳算法仿真實(shí)驗(yàn)遺傳算法是建立在自然選擇和自然遺傳學(xué)機(jī)理基礎(chǔ)上的迭代自適應(yīng)概率性搜索,一般由初始化、選擇、交叉、突然變異四部分組成;它的一個(gè)重要應(yīng)用就是數(shù)值優(yōu)化。一、實(shí)驗(yàn)?zāi)康模?、了解用于數(shù)值優(yōu)化的遺傳算法的原理2、用matlab語言編程實(shí)現(xiàn)遺傳算法二.實(shí)驗(yàn)任務(wù):計(jì)算以下一元函數(shù)的最大值并按上例所示畫出適應(yīng)度函數(shù)圖:1、f(x)=x^2+4x+6,x∈[1,5]要求解精確到6位小數(shù)2、f(x)=xsin(10πx)+2,x∈[-1,2]要求解精確到6位小數(shù)三.實(shí)驗(yàn)過程1)f(x)=x^2+4x+6,x∈[1,5]接下來用matlab語言編
2、程實(shí)現(xiàn)該遺傳算法:function[Max_Value,x]=one(umin,umax)%運(yùn)行參數(shù)Size=80;G=100;CodeL=22;E=round(rand(Size,CodeL));%產(chǎn)生80個(gè)離散點(diǎn)的二進(jìn)制編碼解碼%主程序fork=1:1:Gtime(k)=k;fors=1:1:Sizem=E(s,:);y=0;fori=1:1:CodeLy=y+m(i)*2^(i-1);endx=(umax-umin)*y/4194303+umin;F(s)=myfunction_one(x);%調(diào)用myfunction_one函數(shù)產(chǎn)
3、生每個(gè)離散點(diǎn)的適應(yīng)度endJi=1./F;%注意這里是點(diǎn)乘BestJ(k)=min(Ji);%每步最優(yōu)的目標(biāo)函數(shù)fi=F;%定義適應(yīng)度函數(shù)[Oderfi,Indexfi]=sort(fi);%將80個(gè)個(gè)體的適應(yīng)度從小到大排序Bestfi=Oderfi(Size);BestS=E(Indexfi(Size),:);bfi(k)=Bestfi;%每步最優(yōu)的適應(yīng)度fi_sum=sum(fi);fi_Size=(Oderfi/fi_sum)*Size;fi_S=floor(fi_Size);kk=1;fori=1:1:Size%選擇并復(fù)制個(gè)體fo
4、rj=1:1:fi_S(i)TempE(kk,:)=E(Indexfi(i),:);kk=kk+1;endendpc=0.25;n=ceil(22*rand);%隨機(jī)產(chǎn)生交叉的位fori=1:2:(Size-1)temp=rand;ifpc>temp%滿足交叉條件forj=n:1:22TempE(i,j)=E(i+1,j);TempE(i+1,j)=E(i,j);endendendTempE(Size,:)=BestS;E=TempE;pm=0.01fori=1:1:Sizeforj=1:1:CodeLtemp=rand;ifpm>tem
5、pifTempE(i,j)==0TempE(i,j)=1;elseTempE(i,j)=0;endendendendTempE(Size,:)=BestS;E=TempE;end%滿足變異條件Max_Value=Bestfi%輸出最大值BestS%輸出最大值對(duì)應(yīng)的離散點(diǎn)的二進(jìn)制編碼x%輸出取最大值是x的值figure(1);%畫出迭代100步的適應(yīng)度變化圖和目標(biāo)函數(shù)圖plot(time,BestJ);xlabel('Times');ylabel('BestJ');figure(2);plot(time,bfi);xlabel('times
6、');ylabel('BestF');%以下是計(jì)算適應(yīng)度函數(shù)的程序:functiont=myfunction_one(x)t=x^2+4x+6;將程序保存為.m文件,在命令窗口輸入:one(1,5)回車,運(yùn)行程序,得到結(jié)果如下:Max_Value=51.0000x=5.0000即函數(shù)在x=5.0000,處得到最大值51.0000得到適應(yīng)度函數(shù)為為:1)f(x)=xsin(10πx)+2,接下來用matlab語言編程實(shí)現(xiàn)該遺傳算法:function[Max_Value,x]=one(umin,umax)%運(yùn)行參數(shù)Size=80;G=100;
7、CodeL=22;E=round(rand(Size,CodeL));%產(chǎn)生80個(gè)離散點(diǎn)的二進(jìn)制編碼解碼%主程序fork=1:1:Gtime(k)=k;fors=1:1:Sizem=E(s,:);y=0;fori=1:1:CodeLy=y+m(i)*2^(i-1);endx=(umax-umin)*y/4194303+umin;F(s)=myfunction_one(x);%調(diào)用myfunction_one函數(shù)產(chǎn)生每個(gè)離散點(diǎn)的適應(yīng)度endJi=1./F;%注意這里是點(diǎn)乘BestJ(k)=min(Ji);%每步最優(yōu)的目標(biāo)函數(shù)fi=F;%定義
8、適應(yīng)度函數(shù)[Oderfi,Indexfi]=sort(fi);%將80個(gè)個(gè)體的適應(yīng)度從小到大排序Bestfi=Oderfi(Size);BestS=E(Indexfi(Size),:);bfi