![遺傳算法試驗報告_第1頁](http://file4.renrendoc.com/view/6e9be1fb4b9e9821d37b4623c3132176/6e9be1fb4b9e9821d37b4623c31321761.gif)
![遺傳算法試驗報告_第2頁](http://file4.renrendoc.com/view/6e9be1fb4b9e9821d37b4623c3132176/6e9be1fb4b9e9821d37b4623c31321762.gif)
![遺傳算法試驗報告_第3頁](http://file4.renrendoc.com/view/6e9be1fb4b9e9821d37b4623c3132176/6e9be1fb4b9e9821d37b4623c31321763.gif)
![遺傳算法試驗報告_第4頁](http://file4.renrendoc.com/view/6e9be1fb4b9e9821d37b4623c3132176/6e9be1fb4b9e9821d37b4623c31321764.gif)
![遺傳算法試驗報告_第5頁](http://file4.renrendoc.com/view/6e9be1fb4b9e9821d37b4623c3132176/6e9be1fb4b9e9821d37b4623c31321765.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、實驗五計算智能(2).實驗目的理解遺傳算法的求解思想,掌握遺傳算法的原理,通過運用 MATLAB編程(或相關編程語言)實現(xiàn)遺傳算法,并求解實際問題,對求解結(jié)果進行分析。通過分析結(jié)果了解遺傳算法在求解實際問題的特點和優(yōu)勢。.實驗內(nèi)容編寫一個遺傳算法及其實際應用的程序,能運用遺傳算法求解實際問題。.實驗報告要求(1)簡述實驗原理及方法,并請給出程序設計流程圖。遺傳算法本質(zhì)上是對染色體模式所進行的一系列運算,即通過選擇算子將當前種群中的優(yōu)良模式遺傳到下一代種群中,利用交叉算子進行模式重組,利用變異算子進行模式突變。通過這些遺傳操作,模式逐步向較好的方向進化,最終得到問題的最優(yōu)解基本組成為:a.編碼(
2、產(chǎn)生初始種群)b.適應度函數(shù)c.遺傳算子(selection, crossover, mutation)d.運行參數(shù)求下述二元函數(shù)的最大值:f(x1,x2)=x1八2+x2八2,x1,x2 取值 1-7 的自然數(shù)開始*產(chǎn)生初始種群-計算適應度.ir適亞度是否達到期望值或迭代次數(shù)是否達到最大值結(jié)束適應度是否達到期望值或送代次數(shù)是否達到最大值.否變異(2)源程序清單:#include #include #include /The definiton of user data/#define Cmax 100 /certain maximal value#define Cmin 0 /certain
3、 minimum value#define LENGHT1 3 /the chromosome length of 1st variable#define LENGHT2 3 /the chromosome length of 2nd variable/總?cè)倔w長度#define CHROMLENGTH LENGHT1+LENGHT2const int MaxGeneration = 100; / 最大代數(shù)const int PopSize = 10; /樣本大小const double Pc = 0.6; /交叉概率const double Pm = 0.001; /變異概率/數(shù)據(jù)結(jié)構(gòu)定義 /
4、struct Individualchar chromCHROMLENGTH + 1; /一個個體的染色體double value; / 目標值double fitness; / 適應度;int generation ; / int bestIndex; / int worstIndex; /進化次數(shù)最好個體的下標最壞個體的游標Individual bestIndividual ; / Individual worstIndividual ; / / best individual by now Individual currentBest ;/ Individual population P
5、opSize當前一代中的最好個體 當前一代中的壞個體到目前為止的最好個體;/樣本/void generateInitialPopulation();void generateNextPopulation();void evalutePopulation();long decomdeChromosome(char*, int, int);void calculateObjectValue();void calculateFitnessValue();void findBestAndWorstIndividual();void performEvolution();void selectionOp
6、erator();void crossoverOperator();void mutationOperator();void outputTextReport();/int main()generation = 0;generateInitialPopulation();evalutePopulation();while (generation MaxGeneration) generation+;generateNextPopulation();evalutePopulation();performEvolution();outputTextReport();return 0;/產(chǎn)生第一代樣
7、本/void generateInitialPopulation() int i, j;srand(unsigned)time(NULL);for (i = 0; i PopSize; i+) for (j = 0; j CHROMLENGTH; j+) populationi.chromj = (rand() % 10) 5) ? 0 : 1;populationi.chromCHROMLENGTH = /0;/產(chǎn)生下一代樣本/void generateNextPopulation() selectionOperator();crossoverOperator(); mutationOper
8、ator();/變異算子/void mutationOperator() int i, j;double p;/ bit mutationfor (i = 0; i PopSize; i+) for (j = 0; j CHROMLENGTH; j+) p = rand() % 1000 / 1000.0;if (p Pm) populationi.chromj= (populationi.chromj0) ?1: 0; /交叉算子/void crossoverOperator() int i, j;int indexPopSize;int point, temp;double p;char
9、ch;for (i = 0; i PopSize; i+) indexi = i;for (i = 0; i PopSize; i+) point = rand() %(PopSize - i);temp = indexi;indexi = indexpoint + i;indexpoint + i = temp;for (i = 0; i PopSize - 1; i+=2) p = rand() % 1000 / 1000.0;if (p Pc) point = rand()% (CHROMLENGTH - 1) + 1;for (j = point; j CHROMLENGTH; j+)
10、 ch = populationindexi.chromj;populationindexi.chromj = populationindexi + 1.chromj;populationindexi + 1.chromj = ch; / 選擇算子/void selectionOperator() int i, index;double p, sum = 0.0;double cfitnessPopSize;Individual newpopulationPopSize;for (i = 0; i PopSize; i+) sum += populationi.fitness;for (i =
11、 0; i PopSize; i+) cfitnessi = populationi.fitness / sum;/ calculate cumulative fitnessfor (i = 1; i PopSize; i+) cfitnessi = cfitnessi + cfitnessi - 1;for (i = 0; i cfitnessindex) index+;newpopulationi = populationindex;for (i = 0; i PopSize; i+) populationi = newpopulationi;/依據(jù)某些公式對樣本進行評價/void eva
12、lutePopulation() calculateObjectValue();calculateFitnessValue();findBestAndWorstIndividual();找出到目前為止最好的個體/void findBestAndWorstIndividual() int i;double sum = 0.0;bestIndividual = population0;worstIndividual = population0;for (i = 0; i bestIndividual.fitness) bestindividual = populationi;bestindex =
13、 i; else if (populationi.fitness currentBest.fitness) currentBest = bestindividual;/計算適應度/void calculateFitnessValue() int i;long tempi, temp2;double x1, x2;for (i = 0; i PopSize; i+) tempi = decomdeChromosome(populationi.chrom, 0, LENGHT1);temp2 = decomdeChromosome(populationi.chrom, LENGHT1, LENGH
14、T2);x1 = tempi * tempi;x2 = temp2 * temp2;populationi.fitness = x1+x2;/計算目標值/ 目標函數(shù)為 f(x) = x1* x1 + x2*x2void calculateObjectValue() int i;long temp1, temp2;double x1, x2;for (i = 0; i PopSize; i+) temp1 = decomdeChromosome(populationi.chrom, 0, LENGHT1);temp2 = decomdeChromosome(populationi.chrom,
15、LENGHT1, LENGHT2);x1 = tempi * tempi;x2 = temp2 * temp2;populationi.value = x1 + x2;)/把二進制轉(zhuǎn)化為十進制long decomdeChromosome(char* string, int point, int length) int i;long decimal = 0L;char * pointer;for(i = 0, pointer=string+point; i length;i+,pointer+) decimal += (*pointer 0) currentBest.fitness) curre
16、ntBest = populationbestIndex; else populationworstIndex = currentBest;/打印當前樣本信息/void outputTextReport() int i;double sum;double average;sum = 0.0;for (i = 0; i PopSize; i+) sum += populationi.value;average = sum / PopSize;printf(gen=%d,avg=%f,best=%f,generation,average,currentBest.value);printf( chr
17、omosome=);for( i = 0; i 111111ffen=7.au98.00003U chronDSome-111111Ersn-16,avg=98.0Q000H. bestw38,00000H chromosome=111111ffen=17.auf=98.000000, best =?8.000000 chromosome =111111Efcn=18.aug=98 .000000 best =98 .000001 chromosome =111111Sjen=19,avg=98 ,009000,. best =98 .00B0O0 cJiromosome =111111gen
18、-20,.avgSB rQdBQdOx best-98.000000 chronosone-111111EVsn-21,avSf=98 .000000, hest=?8 .000000 chromDsone=llllllE(en=22aug=98.000000 best=98.09QQQQ chromosome=111111E(en=23,aug=98 .00B000, best=98.000000 cliionosome =111111gen=24,avg=98.003000, best-98.00000U chronosome=111111gfen25avg=98.0000HF best
19、-98 ,00000(1 cht*onosome=llllllgen=26.av$=98,000000, best =9S . 000000 chi*QniiDsone =111111gen=27,aug=98.000000 best=98.000000 chromosome=111111E(en =28 ,aug=98 .00B00B,. best =98 .000000 clii*oriiosoie=llllligren-29,avg=98.00B000 best-98.00003U chromosome-111111E(en=30avSfS .000000 best =98 -00090H chronosone=llllilgen=31,auf=98.000000 best=?S .QQQQQQ chpomosoie=llllllgen=32.avg=98.00 0000best =98 .000000 chromo some =111111g(en=33,au-98.000000,. best =98.00003(4 chrono some =111111gen34avg=98.000000, hest-9
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度農(nóng)業(yè)產(chǎn)業(yè)工人勞務合作合同示范
- 鄂爾多斯2024年內(nèi)蒙古鄂爾多斯市杭錦旗烏蘭牧騎引進3名專業(yè)技術(shù)人員筆試歷年參考題庫附帶答案詳解
- 英德市四年級上學期11月期中語文試題(含解析)
- 玉溪云南玉溪市司法局招聘編外人員筆試歷年參考題庫附帶答案詳解
- 煙臺2025年山東煙臺黃渤海新區(qū)教育體育局招聘高層次人才177人筆試歷年參考題庫附帶答案詳解
- 楚雄云南楚雄元謀縣消防救援局招聘9人筆試歷年參考題庫附帶答案詳解
- 杭州2025年上半年浙江杭州市衛(wèi)生健康委員會所屬九家事業(yè)單位招聘74人筆試歷年參考題庫附帶答案詳解
- 2025年中國學校課桌椅市場調(diào)查研究報告
- 2025年中國化工用電磁閥市場調(diào)查研究報告
- 2025至2031年中國黃桿皮頭鉛筆行業(yè)投資前景及策略咨詢研究報告
- 商業(yè)銀行的風險審計與內(nèi)部控制
- 2024項目管理人員安全培訓考試題及參考答案AB卷
- 2025年與商場合作協(xié)議樣本(5篇)
- 2024年12月青少年機器人技術(shù)等級考試理論綜合試卷(真題及答案)
- 網(wǎng)絡與社交媒體管理制度
- 2025年安徽碳鑫科技有限公司招聘筆試參考題庫含答案解析
- 2025年寒假實踐特色作業(yè)設計模板
- 2024年福建漳州人才發(fā)展集團有限公司招聘筆試參考題庫附帶答案詳解
- JTGT F20-2015 公路路面基層施工技術(shù)細則
- 馬曉宏_《法語》_第一冊復習(課堂PPT)
- 道路環(huán)衛(wèi)清掃保潔項目應急處置預案
評論
0/150
提交評論