遺傳算法的流程圖_第1頁(yè)
遺傳算法的流程圖_第2頁(yè)
遺傳算法的流程圖_第3頁(yè)
遺傳算法的流程圖_第4頁(yè)
遺傳算法的流程圖_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、-作者xxxx-日期xxxx遺傳算法的流程圖【精品文檔】一 需求分析1本程序演示的是用簡(jiǎn)單遺傳算法隨機(jī)一個(gè)種群,然后根據(jù)所給的交叉率,變異率,世代數(shù)計(jì)算最大適應(yīng)度所在的代數(shù)2演示程序以用戶和計(jì)算機(jī)的對(duì)話方式執(zhí)行,即在計(jì)算機(jī)終端上顯示“提示信息”之后,由用戶在鍵盤上輸入演示程序中規(guī)定的命令;相應(yīng)的輸入數(shù)據(jù)和運(yùn)算結(jié)果顯示在其后。3測(cè)試數(shù)據(jù)二 概要設(shè)計(jì)1程序流程圖開始Gen=0編碼隨機(jī)產(chǎn)生M個(gè)初始個(gè)體滿足終止條件?計(jì)算群體中各個(gè)體適應(yīng)度從左至右依次執(zhí)行遺傳算子j = 0j = 0j = 0根據(jù)適應(yīng)度選擇復(fù)制個(gè)體選擇兩個(gè)交叉?zhèn)€體選擇個(gè)體變異點(diǎn)執(zhí)行變異執(zhí)行交叉執(zhí)行復(fù)制復(fù)制的個(gè)體添入新群體中交叉后添入新群

2、體中變異后添入新群體中j = j+1j = j+2j = j+1Gen=Gen+1輸出結(jié)果終止YNYYYNNNpcpm2類型定義int popsize; /種群大小 int maxgeneration; /最大世代數(shù) double pc; /交叉率 double pm; /變異率struct individual char chromchromlength+1;double value; double fitness; /適應(yīng)度;int generation; /世代數(shù)int best_index;int worst_index;struct individual bestindividual

3、; /最佳個(gè)體struct individual worstindividual; /最差個(gè)體struct individual currentbest;struct individual populationPOPSIZE;3函數(shù)聲明void generateinitialpopulation(); void generatenextpopulation();void evaluatepopulation();long decodechromosome(char *,int,int);void calculateobjectvalue();void calculatefitnessvalue

4、();void findbestandworstindividual();void performevolution();void selectoperator();void crossoveroperator();void mutationoperator();void input();void outputtextreport();4程序的各函數(shù)的簡(jiǎn)單算法說(shuō)明如下:(1)void generateinitialpopulation ()和void input ()初始化種群和遺傳算法參數(shù)。input() 函數(shù)輸入種群大小,染色體長(zhǎng)度,最大世代數(shù),交叉率,變異率等參數(shù)。(2) void ca

5、lculateobjectvalue();計(jì)算適應(yīng)度函數(shù)值 。根據(jù)給定的變量用適應(yīng)度函數(shù)計(jì)算然后返回適度值。(3)選擇函數(shù)selectoperator()在函數(shù)selectoperator()中首先用rand ()函數(shù)產(chǎn)生01間的選擇算子,當(dāng)適度累計(jì)值不為零時(shí),比較各個(gè)體所占總的適應(yīng)度百分比的累計(jì)和與選擇算子,直到達(dá)到選擇算子的值那個(gè)個(gè)體就被選出,即適應(yīng)度為fi的個(gè)體以fi/fk的概率繼續(xù)存在;顯然,個(gè)體適應(yīng)度愈高,被選中的概率愈大。但是,適應(yīng)度小的個(gè)體也有可 能被選中,以便增加下一代群體的多樣性。(4)染色體交叉函數(shù)crossoveroperator()這是遺傳算法中的最重要的函數(shù)之一,它是

6、對(duì)個(gè)體兩個(gè)變量所合成的染色體進(jìn)行交叉,而不是變量染色體的交叉,這要搞清楚。首先用rand ()函數(shù)產(chǎn)生隨機(jī)概率,若小于交叉概率,則進(jìn)行染色體交叉,同時(shí)交叉次數(shù)加1。這時(shí)又要用rand()函數(shù)隨機(jī)產(chǎn)生一位交叉位,把染色體的交叉位的后面部分交叉即可;若大于交叉概率,則進(jìn)行簡(jiǎn)單的染色體復(fù)制即可。(5)染色體變異函數(shù)mutation()變異是針對(duì)染色體字符變異的,而不是對(duì)個(gè)體而言,即個(gè)體變異的概率是一樣。隨機(jī)產(chǎn)生比較概率,若小于變異概率,則1變?yōu)?,0變?yōu)?,同時(shí)變異次數(shù)加1。(6)long decodechromosome(char *,int,int)本函數(shù)是染色體解碼函數(shù),它將以數(shù)組形式存儲(chǔ)的二進(jìn)制數(shù)轉(zhuǎn)成十進(jìn)制數(shù),然后才能用適應(yīng)度函數(shù)計(jì)算。(7)void findbestandworstindividual()本函數(shù)是求最大適應(yīng)度個(gè)體的,每一代的所有個(gè)體都要和初始的最佳比較,如果大于就賦給最佳。(8)void outputtextreport () 輸出種群統(tǒng)計(jì)結(jié)果輸出每一代的種群的最大適應(yīng)度和平均適應(yīng)度,最后輸出全局最大值三 運(yùn)行環(huán)境本程序的開發(fā)工具是VC+,在VC+下運(yùn)行。Conventional MethodInitial po

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論