版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
人工智能第二次試驗(yàn)匯報(bào)試驗(yàn)題目:遺傳算法的設(shè)計(jì)與實(shí)現(xiàn)試驗(yàn)?zāi)康模和ㄟ^人工智能課程的學(xué)習(xí),熟悉遺傳算法的簡樸應(yīng)用。試驗(yàn)內(nèi)容用遺傳算法求解f(x)=x2的最大值,x∈[0,31],x取整數(shù)??梢钥闯鲈摵瘮?shù)比較簡樸,只要是為了體現(xiàn)遺傳算法的思想,在問題選擇上,選了一種比較輕易實(shí)現(xiàn)的,把重要精力放在遺傳算法的實(shí)現(xiàn),以及關(guān)鍵思想體會(huì)上。試驗(yàn)過程:實(shí)現(xiàn)過程(1)編碼使用二進(jìn)制編碼,隨機(jī)產(chǎn)生一種初始種群。L表達(dá)編碼長度,一般由對問題的求解精度決定,編碼長度L越長,可期望的最優(yōu)解的精度也就越高,過大的L會(huì)增大運(yùn)算量。針對該問題進(jìn)行了簡化,由于題設(shè)中x∈[0,31],因此將二進(jìn)制長度定為5就夠用了;(2)生成初始群體種群規(guī)模表達(dá)每一代種群中所含個(gè)體數(shù)目。隨機(jī)產(chǎn)生N個(gè)初始串構(gòu)造數(shù)據(jù),每個(gè)串構(gòu)造數(shù)據(jù)成為一種個(gè)體,N個(gè)個(gè)體構(gòu)成一種初始群體,N表達(dá)種群規(guī)模的大小。當(dāng)N取值較小時(shí),可提高遺傳算法的運(yùn)算速度,但卻減少種群的多樣性,輕易引起遺傳算法早熟,出現(xiàn)假收斂;而N當(dāng)取值較大時(shí),又會(huì)使得遺傳算法效率減少。一般提議的取值范圍是20—100。(3)適應(yīng)度檢測根據(jù)實(shí)際原則計(jì)算個(gè)體的適應(yīng)度,評判個(gè)體的優(yōu)劣,即該個(gè)體所代表的可行解的優(yōu)劣。本例中適應(yīng)度即為所求的目的函數(shù);(4)選擇從目前群體中選擇優(yōu)良(適應(yīng)度高的)個(gè)體,使它們有機(jī)會(huì)被選中進(jìn)入下一次迭代過程,舍棄適應(yīng)度低的個(gè)體。本例中采用輪盤賭的選擇措施,即個(gè)體被選擇的幾率與其適應(yīng)度值大小成正比;(5)交叉遺傳操作,根據(jù)設(shè)置的交叉概率對交配池中個(gè)體進(jìn)行基因交叉操作,形成新一代的種群,新一代中間個(gè)體的信息來自父輩個(gè)體,體現(xiàn)了信息互換的原則。交叉概率控制著交叉操作的頻率,由于交叉操作是遺傳算法中產(chǎn)生新個(gè)體的重要措施,因此交叉概率一般應(yīng)取較大值;但若過大的話,又也許破壞群體的優(yōu)良模式。一般取0.4到0.99。(6)變異隨機(jī)選擇中間群體中的某個(gè)個(gè)體,以變異概率大小變化個(gè)體某位基因的值。變異為產(chǎn)生新個(gè)體提供了機(jī)會(huì)。變異概率也是影響新個(gè)體產(chǎn)生的一種原因,變異概率小,產(chǎn)生新個(gè)體少;變異概率太大,又會(huì)使遺傳算法變成隨機(jī)搜索。一般取變異概率為0.0001—0.1。(7)結(jié)束條件當(dāng)?shù)玫降慕獠恍∮诘扔?00時(shí),結(jié)束。從而觀看遺傳的效率問題。代碼及成果:/*遺傳算法設(shè)計(jì)最大值*/#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>#defineC0//測試#defineCFLAG4//測試標(biāo)識#defineJIAOCHA_RATE0.5//交叉概率一般取0.4到0.99#defineBIANYI_RATE0.09//變異概率為0.0001-0.1#defineITER_NUM1000//迭代次數(shù)#definePOP_NUM20//染色體個(gè)數(shù)#defineGENE_NUM5//基因位數(shù)#defineFEXP(x)((x)*(x))//y=x^2typedefunsignedintUINT;//染色體typedefstruct{chargeneBit[GENE_NUM];//基因位UINTfitValue;//適應(yīng)值}Chromosome;//將二進(jìn)制的基因位轉(zhuǎn)化為拾進(jìn)制UINTtoDec(Chromosomepop){UINTi;UINTradix=1;UINTresult=0;for(i=0;i<GENE_NUM;i++){result+=(pop.geneBit[i]-'0')*radix;radix*=2;}returnresult;}UINTcalcFitValue(UINTx){returnFEXP(x);}voidtest(Chromosome*pop){inti;intj;for(i=0;i<POP_NUM;i++){printf("%d:",i+1);for(j=0;j<GENE_NUM;j++)printf("%c",pop[i].geneBit[j]);printf("%4d",toDec(pop[i]));printf("fixValue=%d\n",calcFitValue(toDec(pop[i])));}}//變異得到新個(gè)體:隨機(jī)變化基因voidmutation(Chromosome*pop){UINTrandRow,randCol;UINTrandValue;randValue=rand()%100;if(randValue>=(int)(BIANYI_RATE*100)){ #if(C==1)&&(CFLAG==4) printf("\n種群個(gè)體沒有基因變異\n"); #endifreturn;}randCol=rand()%GENE_NUM;//隨機(jī)產(chǎn)生將要變異的基因位randRow=rand()%POP_NUM;//隨機(jī)產(chǎn)生將要變異的染色體位#if(C==1)&&(CFLAG==4)printf("\n變異前\n");test(pop);printf("\n變異的位置為:染色體號=%d基因位號=%d\n",randRow+1,randCol);#endifpop[randRow].geneBit[randCol]=(pop[randRow].geneBit[randCol]=='0')?'1':'0';//1變?yōu)?,0變?yōu)?pop[randRow].fitValue=calcFitValue(toDec(pop[randRow]));#if(C==1)&&(CFLAG==4)printf("\n變異後\n");test(pop);#endif}//創(chuàng)立初始群體voidcreatePop(Chromosome*pop){UINTi,j;UINTrandValue;UINTvalue;srand((unsigned)time(NULL));for(i=0;i<POP_NUM;i++){for(j=0;j<GENE_NUM;j++){randValue=rand()%2;pop[i].geneBit[j]=randValue+'0';//將隨機(jī)數(shù)0或1賦給基因}value=toDec(pop[i]);pop[i].fitValue=calcFitValue(value);}#if(C==1)&&(CFLAG==1)printf("\n隨機(jī)分派的種群如下:\n");test(pop);#endif}//更新種群voidupdatePop(Chromosome*newPop,Chromosome*oldPop){UINTi;for(i=0;i<POP_NUM;i++){oldPop[i]=newPop[i];}}//選擇優(yōu)良個(gè)體:根據(jù)適應(yīng)度選擇最優(yōu)解,即最優(yōu)個(gè)體voidselect(Chromosome*pop){UINTi,j;UINTsumFitValue;//總適應(yīng)值UINTaFitValue;//平均適應(yīng)值floatchoice[POP_NUM];//選擇ChromosometempPop;//互換變量#if(C==1)&&(CFLAG==2)//測試printf("\n沒有選擇前的種群如下:\n");test(pop);#endif//根據(jù)個(gè)體適應(yīng)度冒泡降序排序for(i=POP_NUM;i>0;i--){for(j=0;j<(i-1);j++){if(pop[j+1].fitValue>pop[j].fitValue){tempPop=pop[j+1];pop[j+1]=pop[j];pop[j]=tempPop;}}}//計(jì)算總適應(yīng)值sumFitValue=0;for(i=0;i<POP_NUM;i++){sumFitValue+=pop[i].fitValue;}aFitValue=(UINT)(((float)sumFitValue/POP_NUM)+0.5);//計(jì)算平均適應(yīng)值//計(jì)算出每個(gè)群體選擇機(jī)會(huì),群體的概率=群體適應(yīng)值/總適應(yīng)值,平均概率=平均適應(yīng)值/總適應(yīng)值,群體選擇機(jī)會(huì)=(群體的概率/平均概率)for(i=0;i<POP_NUM;i++){choice[i]=((float)pop[i].fitValue/sumFitValue)/((float)aFitValue/sumFitValue);choice[i]=(float)((int)(choice[i]*100+0.5)/100.0);//保留到小數(shù)點(diǎn)後2位} //根據(jù)選擇概率來繁殖優(yōu)良個(gè)體,并淘汰較差個(gè)體for(i=0;i<POP_NUM;i++){if(((int)(choice[i]+0.55))==0)//假如choice[i]==0淘汰繁殖一次最優(yōu)的群體pop[POP_NUM-1]=pop[0];}#if(C==1)&&(CFLAG==2)printf("\n通過選擇後來的種群:\n");test(pop);#endif}//交叉:基因互換voidcross(Chromosome*pop){chartmpStr[GENE_NUM]="";UINTi;UINTrandPos;UINTrandValue;randValue=rand()%100;if(randValue>=(int)(JIAOCHA_RATE*100)){#if(C==1)&&(CFLAG==3)printf("\n種群沒有進(jìn)行交叉.\n");#endifreturn;}#if(C==1)&&(CFLAG==3)printf("\n交叉前,種群如下:\n");test(pop);printf("\n交叉的位置依次為:");#endif//染色體兩兩交叉for(i=0;i<POP_NUM;i+=2){randPos=(rand()%(GENE_NUM-1)+1);//產(chǎn)生隨機(jī)交叉點(diǎn),范圍是1到GENE_NUM-1strncpy(tmpStr,pop[i].geneBit+randPos,GENE_NUM-randPos);strncpy(pop[i].geneBit+randPos,pop[i+1].geneBit+randPos,GENE_NUM-randPos);strncpy(pop[i+1].geneBit+randPos,tmpStr,GENE_NUM-randPos);#if(C==1)&&(CFLAG==3)printf("%d",randPos);#endif}//對個(gè)體計(jì)算適應(yīng)度for(i=0;i<POP_NUM;i++){pop[i].fitValue=calcFitValue(toDec(pop[i]));}#if(C==1)&&(CFLAG==3)printf("\n交叉後,種群如下:\n");test(pop);#endif}//輸出成果voidresult(Chromosome*pop){UINTi;UINTx=0;UINTmaxValue=0;//函數(shù)的最大值for(i=0;i<POP_NUM;i++){if(pop[i].fitValue>maxValue){maxValue=pop[i].fitValue;x=toDec(pop[i]);}}printf("\n當(dāng)x=%d時(shí),函數(shù)得到最大值為:%d\n\n",x,maxVa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 道路養(yǎng)護(hù)工程承包合同三篇
- 智能家居工程師的設(shè)計(jì)理念與技術(shù)要求
- 初三班主任期中工作總結(jié)耐心教導(dǎo)成功引領(lǐng)
- 垃圾處理站保安工作總結(jié)
- 汽車行業(yè)的美工工作總結(jié)
- 《汽車及配件營銷》課件
- 《美容新術(shù)課件》課件
- 2023年四川省阿壩自治州公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2023年廣東省湛江市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年貴州省黔東南自治州公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 云南師大附中2025屆生物高二上期末教學(xué)質(zhì)量檢測試題含解析
- 術(shù)后鎮(zhèn)痛講解
- 重慶市九龍坡區(qū)2023-2024學(xué)年高二年級上冊1月期末考試物理試題
- 風(fēng)能發(fā)電對養(yǎng)殖場溫濕度變化的影響
- 計(jì)算機(jī)應(yīng)用基礎(chǔ)
- 廠內(nèi)電動(dòng)車安全管理制度
- 綜合實(shí)踐項(xiàng)目(一)制作細(xì)胞模型課件-2024-2025學(xué)年人教版七年級生物學(xué)上冊
- 遼寧省2024年中考物理試題【附真題答案】
- 2024年甘肅省職業(yè)院校技能大賽中職教師組電子信息類產(chǎn)品數(shù)字化設(shè)計(jì)與開發(fā)賽項(xiàng)樣卷A
- 竣工決算工作底稿
- 爐省煤器改造更換施工方案
評論
0/150
提交評論