




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
人工智能第二次試驗(yàn)匯報(bào)試驗(yàn)題目:遺傳算法的設(shè)計(jì)與實(shí)現(xiàn)試驗(yàn)?zāi)康模和ㄟ^人工智能課程的學(xué)習(xí),熟悉遺傳算法的簡(jiǎn)樸應(yīng)用。試驗(yàn)內(nèi)容用遺傳算法求解f(x)=x2的最大值,x∈[0,31],x取整數(shù)??梢钥闯鲈摵瘮?shù)比較簡(jiǎn)樸,只要是為了體現(xiàn)遺傳算法的思想,在問題選擇上,選了一種比較輕易實(shí)現(xiàn)的,把重要精力放在遺傳算法的實(shí)現(xiàn),以及關(guān)鍵思想體會(huì)上。試驗(yàn)過程:實(shí)現(xiàn)過程(1)編碼使用二進(jìn)制編碼,隨機(jī)產(chǎn)生一種初始種群。L表達(dá)編碼長(zhǎng)度,一般由對(duì)問題的求解精度決定,編碼長(zhǎng)度L越長(zhǎng),可期望的最優(yōu)解的精度也就越高,過大的L會(huì)增大運(yùn)算量。針對(duì)該問題進(jìn)行了簡(jiǎn)化,由于題設(shè)中x∈[0,31],因此將二進(jìn)制長(zhǎng)度定為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)度檢測(cè)根據(jù)實(shí)際原則計(jì)算個(gè)體的適應(yīng)度,評(pí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è)置的交叉概率對(duì)交配池中個(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//測(cè)試#defineCFLAG4//測(cè)試標(biāo)識(shí)#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變異的位置為:染色體號(hào)=%d基因位號(hào)=%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)//測(cè)試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}//對(duì)個(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 天津城建大學(xué)《現(xiàn)代分子生物學(xué)技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 四川文軒職業(yè)學(xué)院《商務(wù)談判與溝通》2023-2024學(xué)年第一學(xué)期期末試卷
- 山東省德州市經(jīng)濟(jì)開發(fā)區(qū)抬頭寺中學(xué)2024年七年級(jí)數(shù)學(xué)第一學(xué)期期末考試試題含解析
- 河南省信陽(yáng)市長(zhǎng)竹園一中學(xué)2024年數(shù)學(xué)七年級(jí)第一學(xué)期期末綜合測(cè)試試題含解析
- 河南師范大學(xué)《節(jié)目主持藝術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴州航天職業(yè)技術(shù)學(xué)院《殘障人權(quán)益保護(hù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江特殊教育職業(yè)學(xué)院《數(shù)據(jù)分析方法》2023-2024學(xué)年第一學(xué)期期末試卷
- 調(diào)色師考試試題及答案
- 電廠電工考試試題及答案
- 導(dǎo)游考試試題及答案
- 《國(guó)有企業(yè)招投標(biāo)及采購(gòu)管理辦法》
- GB/T 16451-2008天然脂肪醇
- GB 5013.2-1997額定電壓450/750V及以下橡皮絕緣電纜第2部分:試驗(yàn)方法
- 普通高中物理課程標(biāo)準(zhǔn)
- 國(guó)家開放大學(xué)《監(jiān)督學(xué)》形考任務(wù)( 1-4)試題和答案解析
- 完工付款最終付款申請(qǐng)表
- 人工動(dòng)靜脈內(nèi)瘺
- 新版(七步法案例)PFMEA
- 慢阻肺隨訪記錄表正式版
- 廣西大學(xué)數(shù)學(xué)建模競(jìng)賽選拔賽題目
- 受戒申請(qǐng)表(共3頁(yè))
評(píng)論
0/150
提交評(píng)論