下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、遺傳算法程序設(shè)計(jì) 摘 要本文通過對(duì)基本遺傳算法添加初始化啟發(fā)信息、改進(jìn)交叉算子和利用本身所固有的并行性構(gòu)架粗粒度并行遺傳算法等方法提高了遺傳算法的收斂性及其尋優(yōu)能力。 關(guān)鍵詞 遺傳算法;TSP;交叉算子 1 引言 遺傳算法是模擬生物在自然環(huán)境中的遺傳和進(jìn)化過程而形成的一種自適應(yīng)全局優(yōu)化概率搜索算法??偟恼f來,遺傳算法是按不依賴于問題本身的方式去求解問題。它的目標(biāo)是搜索
2、這個(gè)多維、高度非線性空間以找到具有最優(yōu)適應(yīng)值(即最小費(fèi)用的)的點(diǎn)1。 基本遺傳算法是一個(gè)迭代過程,它模仿生物在自然環(huán)境中的遺傳和進(jìn)化機(jī)理,反復(fù)將選擇算子、交叉算子和變異算子作用于種群,最終可得到問題的最優(yōu)解和近似最優(yōu)解。 2 遺傳算法程序設(shè)計(jì)改進(jìn)比較 2.1 基本遺傳算法對(duì)TSP問題解的影響 本文研究的遺傳算法及改進(jìn)算法的實(shí)現(xiàn)是以C+語(yǔ)言為基礎(chǔ),在Windows2000的版本上運(yùn)行,其實(shí)現(xiàn)程序是在Microsoft Visual Stadio 6.0上編寫及運(yùn)行調(diào)試的。 1) 遺傳
3、算法的執(zhí)行代碼 m_Tsp.Initpop(); /種群的初始化 for(int i=0;i<m_Tsp.ReturnPop();i+) m_Tsp.calculatefitness(i); /計(jì)算各個(gè)個(gè)體的適應(yīng)值 m_Tsp.statistics();
4、/統(tǒng)計(jì)最優(yōu)個(gè)體 while(entropy>decen|variance>decvar)/m_Tsp.m_gen<100) /將新種群更迭為舊種群,并進(jìn)行遺傳操作 m_Tsp.alternate(); /將新種群付給舊種群 m_Tsp.generation(); /對(duì)舊種群進(jìn)行遺傳操作,產(chǎn)生新種群 m_Tsp.m_gen+; m_Tsp.statistics();
5、 /對(duì)新產(chǎn)生的種群進(jìn)行統(tǒng)計(jì) 2) 簡(jiǎn)單的遺傳算法與分支定界法對(duì)TSP問題求解結(jié)果的對(duì)比 遺傳算法在解決NPC問題的領(lǐng)域內(nèi)具有尋找最優(yōu)解的能力。但隨著城市個(gè)數(shù)的增加,已沒有精確解,無法確定遺傳算法求解的精度有多高。一般情況下,當(dāng)?shù)鷶?shù)增大時(shí),解的精度可能高,但是時(shí)間開銷也會(huì)增大。因此可以通過改進(jìn)遺傳算法來提高搜索能力,提高解的精度。 表1 10個(gè)城市的TSP問題求解結(jié)果數(shù)據(jù)
6、60;算法 試驗(yàn)結(jié)果 簡(jiǎn)單遺傳算法 分支定界法 最佳解 時(shí)間 精確解 時(shí)間 試驗(yàn)1 2448.610037 5s
7、 2448.610037 00:07:30 試驗(yàn)2 2448.610037 13s 試驗(yàn)3 2448.610037 9s 試驗(yàn)4 2459.543054
8、60; 10s 試驗(yàn)5 2459.543054 7s 2.2 初始化時(shí)的啟發(fā)信息對(duì)TSP問題解的影響 1) 初始化啟發(fā)信息 在上述實(shí)驗(yàn)算法的基礎(chǔ)上,對(duì)每一個(gè)初始化的個(gè)體的每五個(gè)相鄰城市用分支界定法尋找最優(yōu)子路徑,然后執(zhí)行遺傳算法。 2) 遺傳算法與含有啟發(fā)
9、信息的遺傳算法求解結(jié)果的對(duì)比 當(dāng)城市數(shù)增至20個(gè)時(shí),用分支定界法已經(jīng)不可能在可以接受的時(shí)間內(nèi)得到精確的解了,只能通過近似算法獲得其可接受的解。試驗(yàn)設(shè)計(jì)中算法的截止條件:固定迭代1000代。表2中的平均最優(yōu)解為經(jīng)過多次試驗(yàn)(10次以上)得到的最優(yōu)解的平均值,最優(yōu)解的出現(xiàn)時(shí)間為最優(yōu)解出現(xiàn)的平均時(shí)間,交叉操作次數(shù)為最優(yōu)解出現(xiàn)時(shí)交叉次數(shù)的平均值。 表2 20個(gè)城市的TSP問題求解結(jié)果數(shù)據(jù) 算法 交叉操作 次數(shù)
10、0; 最優(yōu)解 出現(xiàn)時(shí)間 平均 最優(yōu)解 簡(jiǎn)單遺傳算法 80244.4 79.4s 1641.8 含初始化啟發(fā)信息的GA 79000.2 37.4s 139
11、8.9 從表2中可以看出,當(dāng)初始種群時(shí)引入啟發(fā)信息將提高遺傳算法的尋優(yōu)能力。同時(shí)縮短了遺傳算法的尋優(yōu)時(shí)間和問題的求解精度。 2.3 交叉算子對(duì)TSP問題解的影響 1)循環(huán)貪心交叉算子的核心代碼 for(i=1;i<m_Chrom;i+) flag=0; city=m_newpopfirst.chromi-1; /確定當(dāng)前城市
12、0; j=0; while(flag=0&&j<4) sign=adjcitycityj; /adjcity數(shù)組的數(shù)據(jù)為當(dāng)前城市按順序排列的鄰接城市 flag=judge(first,i,sign); /判斷此鄰接城市是否已經(jīng)存在待形成的個(gè)體中 j+; if(flag= =0)
13、; /如果所有鄰接城市皆在待擴(kuò)展的個(gè)體中 while(flag= =0) sign=(int)rand()/(RAND_MAX/(m_ Chrom-1); /隨機(jī)選擇一城市
14、; flag=judge(first,i,sign); if(flag=1) m_newpopfirst.chromi=sign; 2)問題描述與結(jié)果比較 下面筆者用經(jīng)典的測(cè)試遺傳算法效率的Oliver TSP問題來測(cè)試循環(huán)貪心交叉算子的解的精度和解效率。Oliver TSP問題的30個(gè)城市位置坐標(biāo)如表3所示2。
15、0; 表3 Oliver TSP問題的30個(gè)城市位置坐標(biāo) 城市編號(hào) 坐標(biāo) 城市編號(hào) 坐標(biāo) 城市編號(hào) 坐標(biāo) 1 (87,7) 11
16、 (58,69) 21 (4,50) 2 (91,83) 12 (54,62) 22 (13,40) 3 (83,46
17、) 13 (51,67) 23 (18,40) 4 (71,44) 14 (37,84) 24 (24,42)
18、60; 5 (64,60) 15 (41,94) 25 (25,38) 6 (68,58) 16 (2,99) 26 &
19、#160; (41,26) 7 (83,69) 17 (7,64) 27 (45,21) 8 (87,76) 18 (
20、22,60) 28 (44,35) 9 (74,78) 19 (25,62) 29 (58,35) 10 (71,71)
21、0; 20 (18,54) 30 (62,32) 表4 貪心交叉與部分匹配交叉的比較(Oliver TSP問題的30個(gè)城市) 交叉算子 交叉操作次數(shù) 平均時(shí)間 平均最優(yōu)解 部分匹配交叉
22、 59760 31.2s 517.0 貪心交叉 15774 28.6s 433.4 從表4、圖1中可以看到,貪心交叉算子大大提高了遺傳算法的尋優(yōu)能力,同時(shí)也降低了交叉操作次數(shù)。在多次試驗(yàn)中,貪心交叉算子找到的最優(yōu)解與目前記載的最佳數(shù)據(jù)的誤差
23、率為2.7%。而部分匹配交叉算子找到的最優(yōu)解與目前記載的最佳數(shù)據(jù)的誤差率高達(dá)7%。從而可以得到交叉算子對(duì)于遺傳算法的計(jì)算效率和計(jì)算結(jié)果起主導(dǎo)性作用3。 圖1 遺傳算法的收斂過程 2.4 并行遺傳算法消息傳遞實(shí)現(xiàn)的核心代碼 1)主程序代碼 /接收各個(gè)從程序的最優(yōu)個(gè)體 for(i=0;i<slave;i+) MPI_Recv(Rchromi,chrom,MPI_UNSIGNED,MPI_ANY_SOURCE,gen,MPI_COMM_WORLD,&status);
24、 /計(jì)算接收各個(gè)從程序的最優(yōu)個(gè)體的回路距離 for(i=0;i<slave;i+) fitnessi=0.0; for(int j=0;j<chrom-1;j+) fitnessi=fitnessi+distanceRchromijRchrom ij+1;
25、 fitnessi=fitnessi+distanceRchromi0Rchrom ichrom-1; /找到最優(yōu)的個(gè)體并把它記錄到文件里 for(i=0;i<slave;i+) &
26、#160; if(1/fitnessi>min) sign=i;
27、0; min=1/fitnessi; fwrite(&gen,sizeof(int),1,out); for(i=0;i<chrom;i+)
28、160; fwrite(&Rchromsigni,sizeof(unsigned),1,out); fwrite(&fitnesssign,sizeof(double),1,out); /每九代向從程序發(fā)送一個(gè)最優(yōu)個(gè)體 if(gen%9=0)
29、; MPI_Bcast(Rchromsign,chrom,MPI_ UNSIGNED,0,MPI_COMM_WORLD); 2)從程序代碼 /將上一代的最優(yōu)個(gè)體傳回主程序 MPI_Send(Rchrom1,chrom,MPI_UNSIGNED,0,gen,MPI_COMM_WORLD); /每九代接收一個(gè)最優(yōu)個(gè)體并將其加入種群中替換掉最差個(gè)體 if(gen%9=0) PI_Bcast(Rchrom2,chrom,MPI_UNSIGNED,0,MPI_COMM_WORLD); Tsp.IndiAlternate(Rchrom2); /進(jìn)行下一代的計(jì)算 Tsp.A
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《現(xiàn)代建筑深度研究》課件
- 《房地產(chǎn)廣告》課件
- 小學(xué)一年級(jí)10以內(nèi)連加連減口算練習(xí)題1080道
- 一位高中生的懺悔高考語(yǔ)文閱讀理解
- 《汽車知識(shí)簡(jiǎn)述》課件
- 《初中數(shù)學(xué)打折銷售》課件
- 等離子弧焊類型、原理及其安全特點(diǎn)
- 酒店服務(wù)員的職責(zé)和要求
- 律師行業(yè)安全生產(chǎn)工作總結(jié)
- 財(cái)務(wù)培訓(xùn)與職業(yè)發(fā)展總結(jié)
- 壯醫(yī)藥水蛭療法
- 2024年高考語(yǔ)文備考之語(yǔ)用新題“語(yǔ)境+語(yǔ)義”專練
- 生產(chǎn)計(jì)劃實(shí)施考核管理辦法
- 200句搞定中考英語(yǔ)詞匯
- 2024年型材切割機(jī)市場(chǎng)需求分析報(bào)告
- 二型糖尿病足
- 汽車文化教案(汽車發(fā)展史)
- 實(shí)習(xí)生安全教育培訓(xùn)課件
- 土木工程認(rèn)識(shí)實(shí)習(xí)報(bào)告
- 服務(wù)區(qū)安全生產(chǎn)培訓(xùn)
- 兒童顱內(nèi)腫瘤的診斷與手術(shù)治療
評(píng)論
0/150
提交評(píng)論