版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
人工智能實(shí)驗(yàn)報(bào)告學(xué) 號(hào):姓 名:實(shí)驗(yàn)名稱(chēng): 遺傳算法實(shí)驗(yàn)日期: 2016.1.5[實(shí)驗(yàn)名稱(chēng)】遺傳算法【實(shí)驗(yàn)?zāi)康摹空莆者z傳算法的基本原理,熟悉遺傳算法的運(yùn)行機(jī)制,學(xué)會(huì)用遺傳算法來(lái)求解問(wèn)題?!緦?shí)驗(yàn)原理】遺傳算法(GeneticAlgorithm)是模擬達(dá)爾文生物進(jìn)化論的自然選擇和遺傳學(xué)機(jī)理的生物進(jìn)化過(guò)程的計(jì)算模型,是一種通過(guò)模擬自然進(jìn)化過(guò)程搜索最優(yōu)解的方法。遺傳算法是從代表問(wèn)題可能潛在的解集的一個(gè)種群開(kāi)始的,而一個(gè)種群則由經(jīng)過(guò)基因編碼的一定數(shù)目的個(gè)體組成。每個(gè)個(gè)體實(shí)際上是染色體帶有特征的實(shí)體。在一開(kāi)始需要實(shí)現(xiàn)從表現(xiàn)型到基因型的映射即編碼工作。由于仿照基因編碼的工作很復(fù)雜,我們往往進(jìn)行簡(jiǎn)化,如二進(jìn)制編碼,初代種群產(chǎn)生之后,按照適者生存和優(yōu)勝劣汰的原理,逐代演化產(chǎn)生出越來(lái)越好的近似解,在每一代,根據(jù)問(wèn)題域中個(gè)體的適應(yīng)度大小選擇個(gè)體,并借助于自然遺傳學(xué)的遺傳算子進(jìn)行組合交叉和變異,產(chǎn)生出代表新的解集的種群。這個(gè)過(guò)程將導(dǎo)致種群像自然進(jìn)化一樣的后生代種群比前代更加適應(yīng)于環(huán)境,末代種群中的最優(yōu)個(gè)體經(jīng)過(guò)解碼,可以作為問(wèn)題近似最優(yōu)解。遺傳算法程度流程圖為:
【實(shí)驗(yàn)內(nèi)容】題目:已知f(x)二x*sin(x)+1,xe[0,2k],求f(x)的最大值和最小值。數(shù)據(jù)結(jié)構(gòu):structpoptype{doublegene[length];//染色體doublerealnumber;//對(duì)應(yīng)的實(shí)數(shù)xdoublefitness;//適應(yīng)度doublerfitness;//相對(duì)適應(yīng)度doublecfitness;//累計(jì)適應(yīng)度};structpoptypepopulation[popsize+1];//最后一位存放max/minstructpoptypenewpopulation[popsize+1];//染色體編碼:xe[0,2k],變量長(zhǎng)度為2兀取小數(shù)點(diǎn)后6位,由于222<2丸*106<223;因此,染色體由23位字節(jié)的二進(jìn)制矢量表示,則乂與二進(jìn)制串(<b22b2i……b0>)2之間的映射如下:b……b……b2221 0 2=x,?“x,.二; 223-1適應(yīng)度函數(shù):由于要求f(x)的最值,所以適應(yīng)度函數(shù)即可為f(x)。但為了確保在輪賭法選擇過(guò)中,每個(gè)個(gè)體都有被選中的可能性,因此需要將所有適應(yīng)度調(diào)整為大于0的值。因此,設(shè)計(jì)求最大值的適應(yīng)度函數(shù)如下:eval =f(x)+5=xsinx+6;將最小問(wèn)題轉(zhuǎn)化為求-f(x)的最大值,同理,設(shè)計(jì)最小值的適應(yīng)度函數(shù)如下:eval=一f(x)+5=一xsinx+4;min種群大?。罕緦?shí)驗(yàn)?zāi)J(rèn)為50,再進(jìn)行種群初始化。實(shí)驗(yàn)參數(shù):主要有迭代數(shù),交叉概率,變異概率這三個(gè)參數(shù)。一般交叉概率在0.6-0.9范圍內(nèi),變異概率在0.01-0.1范圍內(nèi)。可以通過(guò)手動(dòng)輸入進(jìn)行調(diào)試。主要代碼如下:voidinitialize()//種群初始化{srand(time(NULL));inti,j;for(i=0;i<popsize;i++)for(j=0;j<23;j++)population[i].gene[j]=rand()%2;voidtransform()//染色體轉(zhuǎn)化為實(shí)數(shù)x(inti,j;for(i=0;i<=popsize+1;i++)(population[i].realnumber=0;for(j=0;j<23;j++)population[i].realnumber+=population[i].gene[j]*pow(2,j);population[i].realnumber=population[i].realnumber*2*pi/(pow(2,23)-1);}}voidcal_fitness()//計(jì)算適應(yīng)度(inti;for(i=0;i<popsize;i++)population[i].fitness=population[i].realnumber*sin(population[i].realnumber)+6;}voidselect()//選擇操作(intmem,i,j,k;doublesum=0;doublep;for(mem=0;mem<popsize;mem++)sum+=population[mem].fitness;for(mem=0;mem<popsize;mem++)population[mem].rfitness=population[mem].fitness/sum;population[0].cfitness=population[0].rfitness;for(mem=1;mem<popsize;mem++)population[mem].cfitness=population[mem-1].cfitness+population[mem].rfitness;for(i=0;i<popsize;i++)(〃輪賭法選擇機(jī)制p=rand()%1000/1000.0;if(p<population[0].cfitness)newpopulation[i]=population[0];else(for(j=0;j<popsize;j++)if(p>=population[j].cfitness&&p<population[j+1].cfitness)newpopulation[i]=population[j+1];for(i=0;i<popsize;i++)//復(fù)制給下一代population[i]=newpopulation[i];}voidcross()//交叉操作(inti,mem,one;intfirst=0;doublex;for(mem=0;mem<popsize;mem++)(x=rand()%1000/1000.0;if(x<pcross)(++first;if(first%2==0)Xover(one,mem);//個(gè)體間染色體進(jìn)行交叉函數(shù)elseone=mem;}}}voidmutate()//變異操作(inti,j,t;doublex;for(i=0;i<popsize;i++)for(j=0;j<length;j++)(x=rand()%1000/1000.0;if(x<pvariation)(if(population[i].gene[j])population[i].gene[j]=0;elsepopulation[i].gene[j]=1;}}}voidcal_max()//計(jì)算最大值(inti;doublemax,sum=0;intmax_m;max=population[0].fitness;for(i=0;i<popsize-1;i++)(if(population[i].fitness>population[i+1].fitness)if(population[i].fitness>=max)
max=population[i].fitness;max_m=i;}elseif(population[i+1].fitness>=max)(max=population[i+1].fitness;max_m=i+1;}}if(max>population[popsize].fitness)(iteration=0;for(i=0;i<length;i++)population[popsize].gene[i]=population[max_m].gene[i];population[popsize].fitness=population[max_m].fitness;}for(i=0;i<length;i++)sum=population[popsize].gene[i]-population[max_m].gene[i];if(sum==0)iteration++;transform();printf("%f,%f,%f,%f\n'',population[popsize].fitness,population[popsize+1].fitness,population[popsize].realnumber,population[popsize+1].realnumber);}【實(shí)驗(yàn)結(jié)果】第弋=阪大值V=,2-819075,x==2-007108^Jfefl;:01010001110001101110010隼弋=最大值y==2.819075,x==2.00710S染色1^=01010001110001101110010= =2-819610,x=:2.020339爵畔二最大值y==2血96值.x=:2_020339
01010010010100001110011£9對(duì)弋二最大值血95值,x=:2_020339第1日日彳弋巴最大值x=:2_020339^fe#:01010010010100001110011i/0?== _S14470,x=:4_91314011001000001011011110011S96^=ffid^?y=:-3-S14470,x=:4_91314011001000001011011110011患最1七值"='一3-S14470,x=:4-913140
11001000001011011110011第9&1年=最/r
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鎖具制作工崗前成果轉(zhuǎn)化考核試卷含答案
- 石油焦煅燒工崗前活動(dòng)策劃考核試卷含答案
- 漁船無(wú)線(xiàn)電操作員崗前安全生產(chǎn)知識(shí)考核試卷含答案
- 電動(dòng)機(jī)檢修工變更管理測(cè)試考核試卷含答案
- 黃金氰化工崗前基礎(chǔ)實(shí)戰(zhàn)考核試卷含答案
- 塑料焊工崗后知識(shí)考核試卷含答案
- 黃金氰化工崗前規(guī)程考核試卷含答案
- 服裝制版師安全生產(chǎn)基礎(chǔ)知識(shí)測(cè)試考核試卷含答案
- 承包租地合同范本
- 提供社保合同范本
- 腰椎間盤(pán)突出癥臨床路徑指南
- 2025年GCP考試題庫(kù)及答案(網(wǎng)校專(zhuān)用)
- 國(guó)際發(fā)展合作署面試輔導(dǎo)
- 寵物市場(chǎng)趨勢(shì)分析-洞察與解讀
- 人際關(guān)系解決方法
- 中小學(xué)生管理知識(shí)競(jìng)賽試題含答案
- 車(chē)輛和駕駛?cè)斯芾砟M試題及答案
- 2025年廣西公務(wù)員考試【申論A、B、C】真題及答案
- 鈑金車(chē)間安全生產(chǎn)培訓(xùn)課件
- 自用船舶船主安全培訓(xùn)內(nèi)容課件
- 銀行信貸風(fēng)險(xiǎn)評(píng)估報(bào)告樣本
評(píng)論
0/150
提交評(píng)論