遺傳算法試驗報告_第1頁
遺傳算法試驗報告_第2頁
遺傳算法試驗報告_第3頁
遺傳算法試驗報告_第4頁
遺傳算法試驗報告_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論