TSP問題的遺傳算法求解方案--源程序清單(旅行商問題,包含算法介紹,源程序,測試結(jié)果)_第1頁
TSP問題的遺傳算法求解方案--源程序清單(旅行商問題,包含算法介紹,源程序,測試結(jié)果)_第2頁
TSP問題的遺傳算法求解方案--源程序清單(旅行商問題,包含算法介紹,源程序,測試結(jié)果)_第3頁
TSP問題的遺傳算法求解方案--源程序清單(旅行商問題,包含算法介紹,源程序,測試結(jié)果)_第4頁
TSP問題的遺傳算法求解方案--源程序清單(旅行商問題,包含算法介紹,源程序,測試結(jié)果)_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

算法的軟件實(shí)現(xiàn) 發(fā)環(huán)境介紹 本文中的所有算法是在 + 操作平臺上進(jìn)行開發(fā)的,并結(jié)合 行編程。 1、 + 介 + 微軟公司最新出品的功能最為強(qiáng)大的可視化開放工具,是計(jì)算機(jī)界公認(rèn)的最優(yōu)秀的應(yīng)用開發(fā)工具之一。 基本類庫使得開發(fā) 用程序比以往任何時候都要容易。 +作為一種程序設(shè)計(jì)語言,它同時也是一個集成開發(fā)工具,提供了軟件代碼自動生成和可視化的 資源編輯功能。 2、 + 優(yōu)勢 (1) (2) (3) (4) (5)支持。 (6)生的可執(zhí)行文件體積小巧、運(yùn)行速度快。 3、 ,即標(biāo)準(zhǔn)模板庫,是一個具有工業(yè)強(qiáng)度的,高效的 C+程序庫。它被容納于 C+標(biāo)準(zhǔn)程序庫 ( C+ 中 ,是 +標(biāo)準(zhǔn)中最新的也是極具革命性的一部分。該庫包含了諸多在計(jì)算機(jī)科學(xué)領(lǐng)域里所常用的基本數(shù)據(jù)結(jié)構(gòu)和基本算法。為廣大 C+程序員們提供了一個可擴(kuò)展的應(yīng)用框架,高度體現(xiàn)了軟件的可復(fù)用性。這種現(xiàn)象有些類似于 +中的 ,或者是 + 但是它比二者具有更強(qiáng)的優(yōu)勢。更加值得一提的是,它具備以下 幾個區(qū)別于其它軟件庫的優(yōu)點(diǎn): (1)互換的編程模塊能夠提供比傳統(tǒng)組件設(shè) 是 否 世代進(jìn)化 圖 傳算法解 計(jì)方法豐富得多的組合方式。 (2)戶界面等專業(yè)領(lǐng)域開發(fā)組件的基礎(chǔ)。 開始 產(chǎn)生城市 對城市進(jìn)行編碼 初始化遺傳算 法的相關(guān)參數(shù) 計(jì)算每個個體的適應(yīng)值 是否符合終止 條件? 輸出正確的 果 選擇 交叉 變異 輪盤賭選擇 普通選擇 X X 基于次序的變異 基于位置的變異 倒位 變異 (3)以在不損失效率的情況下實(shí)現(xiàn)對組件的概括。與此形成鮮明對照的是,其它一些具有復(fù)雜繼承層次和大量使用虛函數(shù)的 C+庫結(jié)構(gòu)則通常會降低效率。 法實(shí)現(xiàn)的流程圖 本設(shè)計(jì)的具體流程圖如圖 法的各個模塊及其詳細(xì)設(shè)計(jì)思路 1城市生成模塊 用戶可以點(diǎn)擊鼠標(biāo)左鍵產(chǎn)生城市,也可以選擇菜單欄的設(shè)置城市選項(xiàng),通過輸入城市數(shù)目來隨機(jī)生成城市。當(dāng)然,如 果用戶選擇錯了城市,可以在該城市上點(diǎn)擊鼠標(biāo)右鍵來清除城市。如果用戶要清除所有的城市,可以雙擊鼠標(biāo)右鍵或選擇菜單欄的結(jié)束選項(xiàng),都可以清除所有的城市。其設(shè)計(jì)設(shè)計(jì)思路如圖 按下鼠標(biāo)左鍵 按下鼠標(biāo)右鍵 選擇菜單欄的設(shè)置城市選項(xiàng) 選擇菜單欄的結(jié)束選項(xiàng) 圖 市生成模塊的設(shè)計(jì)思路 最后的效果如圖 程序檢測鼠標(biāo)移動的具體信息 程序?qū)Ⅻc(diǎn)的信息存入一個點(diǎn)向量中 調(diào)用畫圖函數(shù)畫點(diǎn) (即設(shè)置城市 ) 將點(diǎn)向量中要除去的點(diǎn)找出來 重新畫點(diǎn) 向量中的所有點(diǎn) ( 此時該刪除的點(diǎn) 已從點(diǎn)向量中刪除 ) 用一個變量記入要產(chǎn)生的城市數(shù) 循環(huán)調(diào)用鼠標(biāo)左鍵點(diǎn)擊消息直到達(dá)到要求的城市數(shù) 重新畫地圖 ( 即清除了所有的點(diǎn) ) 圖 果 根據(jù)具體的需要,用戶可以選擇不同的地圖,本設(shè)計(jì)提供的地圖有:基于直角坐標(biāo)系的地圖和圓形地圖,這兩個地圖由不同的類來產(chǎn)生。其中類 圖 角坐標(biāo)地圖 圖 形地圖 3. 遺傳算法解 在具體的應(yīng)用中,用戶可以根據(jù)具體情況來設(shè)置 遺傳算法的相關(guān)參數(shù),這些參數(shù)包括: 交叉率:控制程序進(jìn)行交叉的次數(shù),在本設(shè)計(jì)中,先隨機(jī)生成一個 數(shù),如果這個數(shù)大于交叉率,則不交叉,如果這個數(shù)小于交叉率,則進(jìn)行交叉。具體實(shí)現(xiàn)如下: ,1000)/1000; if( # # #地圖類 # DC 0;/畫地圖 / =0;/保存格式為地圖中的位置 =0;/清除 有點(diǎn) /在地圖上畫點(diǎn)(參數(shù)為實(shí)際位置) =0; /將地圖上已存在的點(diǎn)(參數(shù)為實(shí)際位置)刪除 =0; /保存 數(shù)為實(shí)際位置 )到向量 =0; /刪除 數(shù)為實(shí)際位置 )到向量 =0; /獲得所有已點(diǎn)擊的點(diǎn)的位置 (實(shí)際值 ) )=0; ;/地圖中的位置 ; /函數(shù)對象 / _ ( &( ( &( ; / 四 直角坐標(biāo)地圖類 #10 # 6 ( );/保存格式為地圖中的位置 );/清除 有點(diǎn) /在地圖上畫點(diǎn) (參數(shù)為實(shí)際位置 ) ; /將地圖上已存在的點(diǎn) (參數(shù)為實(shí)際位置 )刪除 ; ;/保存 數(shù)為實(shí)際位置 )到向量 ;/刪除 數(shù)為實(shí)際位置 )到向量 /獲得所有已點(diǎn)擊的點(diǎn)的位置 (實(shí)際值 ) ); ( ; / #(DC ,128,128); /創(chuàng)建畫筆 x = 0 ; x /該點(diǎn)的半徑 ;/if(20) (n= x=x+m; y=y+n; ; x=x+n; y=y+m; ; / /在地圖上畫點(diǎn) /在地圖上畫點(diǎn) (參數(shù)為實(shí)際位置 )/ ; if(20) ; ,55,0,0); /選擇對象進(jìn) , /畫圓點(diǎn) / /添加和減少點(diǎn) (在地圖位置 )到向量 /保存 數(shù)為實(shí)際位置 )到向量 / !=0 & , )!= ) /保證點(diǎn)不重復(fù) ; / /清除一個指定的點(diǎn) / if( : ); /獲得該點(diǎn)附近的像素點(diǎn) if(=0 ) , , ); ) / /將地圖上已存在的點(diǎn) (參數(shù)為實(shí)際位置 )刪除 /擦掉該點(diǎn) (重畫所有的點(diǎn)和地圖 )/ n=; if(n=) /沒找到則向量大小不變 ; n=0;n ) / /將地圖與實(shí)際位置之間轉(zhuǎn)換 / x= y=(20) 1; 1; 6; 51; / /地圖位置轉(zhuǎn)換為實(shí)際位置 / ; 1; );/獲得所有已點(diǎn) 擊的點(diǎn)的位置 (實(shí)際值 ) ; / #() / do 0); 20= 305,24,44 , 365 ,84, 402, 21, 4,437, 16 ,454 ,28,468 ,41, 482, 57, 493, 74,503, 93,509, 113, 515, 132, 518, 152,520,173,518, 193,514, 214,510,233, 501, 254,493, 271,481, 287,468,304, 456, 318, 439,329,422, 342,284, 63 ,46, 225, 3, 210, 17,194, 28,178, 42, 166, 56, 156, 74,145, 93,137, 112,133,131,129, 153, 127, 173,128,195,132, 213,137, 233,146 ,255, 155 ,272,165, 290,180, 307,194,318,208, 331, 227 ,343,244,352,265, 360,282 ,365,303 ,366, 326, 369,343, 368,368, 365,385, 360,404, 353 ; n=0;n :n=-3; x=x+m; y=y+n; /獲得該點(diǎn)附近的點(diǎn) x=x+n; y=y+m; /獲得該點(diǎn)附近的點(diǎn) , ,); ) 1; 1; * / /在地圖上畫點(diǎn)或?qū)⒌攸c(diǎn)上以存在的點(diǎn)從地圖上刪除 / /在地圖上畫點(diǎn) (參數(shù)為實(shí)際位置 )/ 1; 1; ; ; 55,0,0) ); ; (x+5, (y+5) ; ; / /將地圖上已存在的點(diǎn)(參數(shù)為實(shí)際位置)重畫 / n=; if(n=) /在其他地區(qū) (60 個之外 )點(diǎn)擊右鍵則向量大小不變 n=0;n:1; 1; ,; ) / /獲得所有已點(diǎn)擊的點(diǎn)的位置 / ) / 六 控制 類 #; ; ;/交叉類型 );/初始化數(shù)據(jù) (開始 ) /( );/獲得當(dāng)前地圖類型 ,變異率 ,種群大小 ,最大世代數(shù) );/清除所有點(diǎn) /顯示其它與鼠標(biāo)位置或地圖相關(guān)信息 ;/畫出所有的點(diǎn) DC ( );/畫線的準(zhǔn)備 ;/畫線 ) /獲得交叉概率 ) /獲得變異概率 )/獲得種群大小 ) /獲得世代數(shù) /獲得城市數(shù) n) /設(shè)置世代進(jìn)化類型 n; )/獲得世代進(jìn)化類型 ;/交叉率 ;/種群大小 ;/城市數(shù)目 *; /初始化數(shù)據(jù) / ):30), 0),0), & ) / #;/交叉類型 /提供提示和幫助信息 / /創(chuàng)建一個對話框顯示提示信息 歡迎進(jìn)入遺傳算法解 題演示系統(tǒng) !, 遺傳算法解 題演示實(shí)驗(yàn) , ;/ / /幫助 / /* */ / /獲得當(dāng)前地圖類型 / ) / /設(shè)置地圖類型 / ; ) & ; ; / /遺傳算法信息 / /依次 :交叉率 ,變異率 ,種群大小 ,最大世代數(shù) . if( 0| 1) 0| 1 ) / /清除所有點(diǎn) / /( ) ; / /顯示其它與鼠標(biāo)位置或地圖相關(guān)信息 / 0; ,0,255) ); 50,10,遺傳算法解 題演示地圖 , 遺傳算法解 題演示地圖 ) ); ,0,0) ); 0,500, 注意 : 點(diǎn)擊鼠標(biāo)左鍵設(shè)置城市點(diǎn) ,點(diǎn)擊鼠標(biāo)右鍵清空一個點(diǎn)。 , 注意 : 點(diǎn)擊鼠標(biāo)左鍵設(shè)置城市點(diǎn) ,點(diǎn)擊鼠標(biāo)右鍵清空一個點(diǎn)。 ) ); 2,530, 點(diǎn)擊菜單開始或 進(jìn)行尋路 ,詳細(xì)信息請選菜單中幫助。 , 點(diǎn)擊菜單開始或 進(jìn)行尋路 ,詳細(xì)信息請選菜單中幫助。 ) ); /算法運(yùn)行時間顯示模塊 / ,128,128); /創(chuàng)建畫筆 10,180,960,340); ,0,0) ); 80,170,算法運(yùn)行時間 ,算法運(yùn)行時間 ) ); 30,190,算法啟動前時間 :,算法啟動前時間 :) ); %d 時 ,%d 分 ,%d 秒 ,%d 微秒 , 30,210,; 30,240,算法結(jié)束時間 :,算法結(jié)束時間 :) ); %d 時 ,%d 分 ,%d 秒 ,%d 微秒 , 30,260,; ; () ); 30,120,;/ 1 ) / 當(dāng)前未準(zhǔn)備好所有的點(diǎn) 50,120, 總距離 : 0 , 總距離 : 0 ); 總距離 :%d, ) ); 50,120,; /顯示連線總長 /默認(rèn)地圖才顯示坐標(biāo) /獲得地圖上的點(diǎn)位置 700*420 1!= /測試點(diǎn)在有效區(qū)沒有 ,0,0); /沒在無效 區(qū)域則為黑筆,只是顯示坐標(biāo)點(diǎn)的顏色 55,0,0); /在無效區(qū)域則為紅筆 當(dāng)前鼠標(biāo)的橫坐標(biāo) :

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論