對(duì)于遺傳算法實(shí)驗(yàn)報(bào)告_第1頁(yè)
對(duì)于遺傳算法實(shí)驗(yàn)報(bào)告_第2頁(yè)
對(duì)于遺傳算法實(shí)驗(yàn)報(bào)告_第3頁(yè)
對(duì)于遺傳算法實(shí)驗(yàn)報(bào)告_第4頁(yè)
對(duì)于遺傳算法實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯第第頁(yè)對(duì)于遺傳算法實(shí)驗(yàn)報(bào)告關(guān)于遺傳算法得試驗(yàn)報(bào)告一、試驗(yàn)?zāi)康茫?/p>

在,能功本基得法算傳遺現(xiàn)實(shí)言語(yǔ)得長(zhǎng)擅己自門一用能,義意及用應(yīng)得法算傳遺握掌與解理?此基礎(chǔ)上進(jìn)一步理解與鞏固對(duì)遺傳算法得重要,以便在今后得學(xué)習(xí)與工作中能有效得運(yùn)用與借鑒!需要指出得就是遺傳算法并不就是能保證所得到得就就是最佳得答案但通過(guò)肯定得方法可以將誤差掌握在肯定得范圍內(nèi)!二、試驗(yàn)原理與題目:1、遺傳算法就是一種基于空間搜尋得算法,它通過(guò)自然選擇、遺傳、變異等操作以及達(dá)爾文得適者生存得理論,模擬自然進(jìn)化過(guò)程來(lái)查找所求問(wèn)題得答案。其求解過(guò)程就是個(gè)最優(yōu)化得過(guò)程。一般遺傳算法得主要步驟如下:(1)隨機(jī)產(chǎn)生一個(gè)確定長(zhǎng)度得特征字符串組成得初始種群。

(2)對(duì)該字符串種群迭代地執(zhí)行下面得步驟a與步驟b,直到滿意停止準(zhǔn)則為止:

a計(jì)算種群中每個(gè)個(gè)體字符串得適應(yīng)值;

b應(yīng)用復(fù)制、交叉與變異等遺傳算子產(chǎn)生下一代種群。

(3)把在后代中表現(xiàn)得最好得個(gè)體字符串指定為遺傳算法得執(zhí)行結(jié)果,即為問(wèn)題得一個(gè)解。

2、通過(guò)編碼、設(shè)置種群、設(shè)置適應(yīng)度函數(shù)、遺傳操作、解碼產(chǎn)生需要得解。

f(x)=x*sin(x)+1,x[0,2],求解f(x)得最大值與最小值。

三、試驗(yàn)條件

硬件:微型計(jì)算機(jī)。

。言語(yǔ)++C為得用選驗(yàn)實(shí)本:言語(yǔ)?四、試驗(yàn)內(nèi)容:

建筑針對(duì)f(x)得遺傳算法程序,然后進(jìn)行運(yùn)行求解。

五、試驗(yàn)步驟:

、1。解求得值小最與值大最得)x(f現(xiàn)實(shí)是就驗(yàn)實(shí)本:能功本基定確?2、對(duì)f(x)進(jìn)行編碼:用一個(gè)二進(jìn)制矢量表示一個(gè)染色體,由染色體來(lái)代表變量x得實(shí)數(shù)值,這里精度取小數(shù)點(diǎn)后6位數(shù),變量x得域長(zhǎng)為2,整個(gè)區(qū)間被分為2*1000000個(gè)等長(zhǎng)得區(qū)間。由于2*1000000在23位二進(jìn)制數(shù)得表示范圍呢,所以,編碼長(zhǎng)度為23位。

3、設(shè)計(jì)適應(yīng)度函數(shù):由于要求f(x)得最值,所以適應(yīng)度函數(shù)可依據(jù)f(x)做適當(dāng)?shù)棉D(zhuǎn)變。最大值:f(x)=x*sin(x)+5;最小值:f(x)=1/(x*sin(x)+5);

4、針對(duì)f(x)得設(shè)計(jì)并且實(shí)現(xiàn)遺傳算法程序:遺傳操作主要包括復(fù)制、交叉與變異。復(fù)制就是直接將父代遺傳給子代,即依據(jù)個(gè)體得適應(yīng)度函數(shù)值所度量得優(yōu)劣程度打算它在下一代就是被淘汰還就是被遺傳。交叉從能進(jìn)入下一代得個(gè)體中選出兩個(gè),將兩者得部分碼值進(jìn)行交換。變異就是依據(jù)變異概率選出一個(gè)個(gè)體,隨機(jī)對(duì)其某位編碼進(jìn)行轉(zhuǎn)變。復(fù)制由voidSelection_operation(boolflag);實(shí)現(xiàn);交叉由voidCrossover_operation();實(shí)現(xiàn);變異由voidMution-operation();實(shí)現(xiàn)。

5、

設(shè)計(jì)初始種群:默認(rèn)設(shè)置為50個(gè)隨機(jī)產(chǎn)生得23位字節(jié)得染色體。

、6改得率概得異變與叉交隨果結(jié),內(nèi)圍范率概異變與叉交得用常在:率概異變與叉交試調(diào)?變而轉(zhuǎn)變,之間差異相對(duì)來(lái)說(shuō)不太明顯

7、

試驗(yàn)參數(shù):試驗(yàn)中主要得參數(shù)有遺傳代數(shù)、群體規(guī)模、交叉概率、變異概率。

試驗(yàn)結(jié)果:求最大值:

求最小值:

程序主要代碼如下(后臺(tái)代碼):classGA{

vectorstring>Pop;

vectorstring>SubPop;

;cPelbuod?

;mPelbuod?

;noitaretI_muNtni?

;noitalupoP_muNtni?doubleOptimal_Max_X_Solution;

doubleOptimal_Min_X_Solution;

;eualV_noitcnuF_xaM_lamitpOelbuod?

;eulaV_noitcnuF_niM_lamitpOelbuod?

;laudividnI(lǐng)_lamitpOgnirts?vectordoubleLunPan;//

;ssentiftaolf?public:

GA(){

Pc=0、25;

Pm=0、01;

?

;05=noitalupoP_muN??Num_Iteration=100;

}?

;)(tinI_AGdiov?

;)(noitarepO_revossorCdiov?

;)(noitarepO_tceleSdiov?

;)(noitarepO_noitatuMdiov?voidEvaluation(bool);

;)loob(noitarepO_naPnuLdiov?doubleFunction(double);

voidExtreme_Value(bool);

;)tni,loob(yalpsiDdiov?

;)(M_yalpsiDdiov?};//FindthemaxandminvaluevoidGA::Extreme_Value(boolflag){

if(flag)

Optimal_Max_Function_Vlaue=-100;

else

Optimal_Min_Function_Value=100;

)reti++;)(dne、poP=!reti;)(nigeb、poP=retirotareti::gnirtsrotcev(rof?{

?

doublet=0、5;

;0=1muNceDelbuod?

?/*stringp=*iter;*/

{)i--;0=i;1-)(htgnel、)reti*(=itni(rof?

t=t*2;

?;t*)84-]i[)reti*((=+1muNceD?

?DecNum1=DecNum1*((2*PI)/ValueOfString);

//

;

"<1muNceD<tuoc?

值數(shù)函求//;)1muNceD(noitcnuF=pmeTelbuod?//?

;ldnepmeT<tuoc??if(flag){//findthemaximum

{)eualV_noitcnuF_xaM_lamitpO>pmeT(fi?

Optimal_Max_Function_Vlaue=Temp;

??

;1muNceD=noituloS_X_xaM_lamitpO??

?Optimal_Individual=*iter;

?//?

;5+pmeT=ssentif??

}

}

?else{//findtheminimum

?

{)eulaV_noitcnuF_niM_lamitpOpmeT(fi?

?Optimal_Min_Function_Value=Temp;

???

;1muNceD=noituloS_X_niM_lamitpO?

?Optimal_Individual=*iter;

//??

;5+pmeT=ssentif?}??

}??}//InitializethePopulationsvoidGA::GA_Init(){

for(intixx=0;ixxNum_Population;++ixx){

stringSTRing;

?

{)++i;32i;0=itni(rof?

;2%)(dnar=dnrtni?

?STRing、push_back(rnd+48);

}?

Pop、push_back(STRing);

;)(raelc、gniRTS?}//eti++;)(dne、poP=!reti;)(nigeb、poP=retirotareti::gnirtsrotcev(rof?r){

?//

;ldne<<reti*tuoc?//}}//SelectOperation

voidGA::Select_Operation(){//

體個(gè)擇選機(jī)隨?

;)00001%)(dnar(*1000、0=dnrelbuod?for(vectordouble::iteratoriter=LunPan、begin();iter!=LunPan、end();++iter){

?

{)reti*=dnr(fi?

;))))(nigeb、naPnuL-reti(+)(nigeb、poP(*(kcab_h(yuǎn)sup、poPbuS?//?

;ldne)))(nigeb、naPnuL-reti(+)(nigeb、poP(*<tuoc?

?break;

}}//CrossoverOperationvoidGA::Crossover_Operation(){//

作操叉交行進(jìn)體個(gè)個(gè)兩擇選機(jī)隨?

;)00001%)(dnar(*1000、0=dnrelbuod?、naPnuL=!reti;)(nigeb、naPnuL=retirotareti::elbuod<rotcev(rof?end();++iter){

?if(rnd=*iter){

??

;)))(nigeb、naPnuL-reti(+)(nigeb、poP(*=gniRTSgnirts?

?doublernd1=0、0001*(rand()%10000);

for(vectordouble::iterat(yī)oriter1=LunPan、begin();iter1!=LunPan、end();++iter1){

?

?if(rnd1=*iter1){

??

;)))(nigeb、naPnuL-1reti(+)(nigeb、poP(*=1gniRTSgnirts?

??intrnd2=rand()%23;

???

;pmeTrahc?????

{)i++;)(htgnel、gniRTSi;2dnr=itni(rof??

???

;]i[gniRTS=pmeT????

?

;]i[1gniRTS=]i[gniRTS?

?

??

;pmeT=]i[1gniRTS??

?

}

??

;)gniRTS(kcab_hsup、poPbuS??

??

;)1gniRTS(kcab_hsup、poPbuS?

??

;kaerb?

?}

}???

?

;kaerb??}

}}//Mutat(yī)ionOperationvoidGA::Mutat(yī)ion_Operat(yī)ion(){//

作操變突行進(jìn)體個(gè)擇選?

doublernd=0、0001*(rand()%10000);

++;)(dne、naPnuL=!reti;)(nigeb、naPnuL=retirotareti::elbuodrotcev(rof?iter){

?

{)reti*=dnr(fi?

;)))(nigeb、naPnuL-reti(+)(nigeb、poP(*=gniRTSgnirts???

;32%)(dnar=1dnrtni?

?if(STRing[rnd1]=="0"){

???

;'1'=]1dnr[gniRTS?

}

?

{esle?

;"0"=]1dnr[gniRTS?

?}

?SubPop、push_back(STRing);

break;

}??}?//

;ldne"noitatuM<tuoc?}//EvaluationOperationvoidGA::Evaluat(yī)ion(boolflag){

;))LLUN(emit(dnars?

;)(raelc、poP?

;)(tinI(lǐng)_AG?

;)galf(eulaV_emertxE?

;)0,galf(yalpsiD?*/

/*;))LLUN(emit(dnars?for(inti=1;i=Num_Iteration;++i){

;)galf(noitarepO_naPnuL??//for(vectordouble::iteratoriter=LunPan、begin();iter!=LunPan、end();++iter){

//

;ldne<reti*tuoc??//}

for(intj=0;jNum_Population;j++){

?

/*srand(time(NULL));*/

??

;)00001%)(dnar(*1000、0=dnrelbuod?//?

;ldnednr<tuoc?

?

{)mP<dnr(fi????Mutat(yī)ion_Operat(yī)ion();

//??

;ldne<noitatuM"tuoc?}???

else{

??

{))mP+cP(dnr(fi?

?

?++j;

?

?

;)(noitarepO_revossorC?

?

?//

;ldne<revossorC"<tuoc?

?}

?

{esle??

?

;)(noitarepO_tceleS????//

;ldne<<"noitceleS"tuoc?

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論