freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

遺傳算法在求解tsp問題—計算機畢業(yè)設(shè)計-文庫吧資料

2024-12-09 15:32本頁面
  

【正文】 x]=population[j].Path[x]。 for(x=0。 population[j].fitness=population[i].fitness 。 population[i].value=temp_value。i++) { if(population[j].valuepopulation[i].value) { temp_value=population[j].value。j++) { for(i=j+1。 for(j=0。 double temp_fitness。 int x。 } rate(int m) { population[m].fitness=(double)population[m].value/(double)rightvalue_sum。iPOPSIZE。 population[i].value=_ _length+l[population[i].Path[Pathlength1]1][population[i].Path[0]1]。jPathlength1。i++) { length=0。 for(i=0。 int length。 break。 else { if(code[n][i]+k==j+1) { population[n].Path[i]=j+1。jPathlength。i++) { k=0。 for(i=0。iMaxPathlength。 int i,j,k。 mode()。xPOPSIZE。 rightvalue(POPSIZE)。xPOPSIZE。 最優(yōu)保存策略算法的 C語言描述: SelectionOperator() { int x。 (2)若當前群體中最佳個體的適應(yīng)度比總的迄今為止最好的個體適應(yīng)度還要高,則以當前群體中的最佳個體作為新的迄今為止最好的個體。我們希望適應(yīng)度最好的個體要盡可 能的保存到下一代群體中,為達到這個目的我們使用最優(yōu)保存策略進化模型。概率越大所占轉(zhuǎn)盤面積越大,被選中的機率越大。 在該遺傳算法中用到的輪盤賭選擇和最佳個體保存策略。Konstantin Boukreev[5]采用聯(lián)賽選擇方法和最優(yōu)個體保存方法相結(jié)合的方法 ,通過在 VC++ TSP問題的遺傳算法 , 取得了很好的效果 。 為了保證遺傳算法的全局收斂性 , 就要維持群體中個體的多樣性 , 避免有效基因的丟失 。 } } } 針對 TSP的遺傳操作算子 選擇算子 對于求解 TSP問題 , 常用的選擇機制有輪盤賭選擇 (roulette wheel selection)機制 , 最佳個體保存 (elitist model)選擇機制 , 期望值模型(expected value model)機制 , 排序模型 (rankbased model)選擇機制 , 聯(lián)賽選擇模型 (tournament selection model)機制 , 排擠模型 (crowding model)等 。 break。j++) { if((b[j]==0)) { if(population[n].Path[i]==j) { code[n][i]=jk。 for(j=1。iPathlength。i++) b[i]=0。 for(i=0。 path_code(int n) /*path change into code */ { int b[MaxPathlength]。 按照這種編碼方法 , 這條旅程的編碼為表 L=(5 1 5 5 5 3 3 3 2 1)。處理完所有城市以后 , 將每個城市的遺傳因子表示連接起來 ,就是一條旅程的基因表示 。 在求解 TSP問題時 , 1985年 , Grefenstette[9]等提出了基于順序表示 (ordinal representation)的遺傳基因編碼方法 。 在遺傳算法中有兩種基于串的基因編碼形式 , 一種是基于二進制的遺傳算法 (binary coded GA), 一種是基于順序的遺傳算法 (the orderbased GA)。 } } 對 TSP的遺傳基因編碼方法 在遺傳算法的應(yīng)用中 , 遺傳基因的編碼是一個很重要的問題 。y++) printf(%3d,code[x][y]) 。 for(y=0。xPOPSIZE。x++) code_path(x)。 } } for(x=0。y++) { if(y==0) code[x][y]=1。x++) { for(y=0。 for(x=0。 GenerateInitialPopulation() /*random*/ { int x,y。這樣選擇 初始種群可使遺傳算法更快地到達最優(yōu)解。一種是完全隨機的方法產(chǎn)生,它適合與對問題的解無任何先驗知識的情況 。式中的 d ( vi, vi + 1) 表示城市 vi 到城市 vi + 1 的距離。 遺傳算法流程圖 通過前幾節(jié)的了解,容易看出遺傳算法的流程可用 下圖進行描述: 圖 21遺傳算法流程圖 第3章 遺傳算法在 TSP上的應(yīng)用 TSP問題的建模與描述 TSP問題屬于 NP完全問題,給定一組 n個城市和他們兩兩之間地直達距離,尋找一條閉合的旅程,使得每個城市剛好經(jīng)過一次而且總的旅行距離最短。表示每一代群體中被替換掉的個體中所占的百分率,即每一代中有 (M G個個體被替換掉 )。一般為 100~ 1000。 (5) 終止代數(shù) T。取值較大,雖然能產(chǎn)生較多的新個體,但有可能破壞掉很多的較好模式,使得遺傳算法的性能近似于隨機 搜索算法的性能;取值過大的話,則變異操作產(chǎn)生新個體的能力和抑制早熟的能力就差。一般取 ~ 。 (3) 交叉概率 pc。當 M較小時,可提高遺傳算法的運算速度,卻降低了群體的多樣性,有可能會引起遺傳算法早熟現(xiàn)象;而當 M較大時,又會使得遺傳算法的運行效率降低。編碼串長度 l由問題的編碼方式來確定;另外,也可以使用變長度的編碼來表示個體。 (1) 編碼串長度 L。 較常用的基本位變異、均勻變異、邊界變異、非均勻變異和高斯變異等。 變異算子有以下兩個作用: (1) 改善遺傳算法的局部搜索能 力。從遺傳運算過程中產(chǎn)生新個體的能力方面來說,交叉運算是產(chǎn)生新個體的主要方法,它決定了遺傳算法的全局搜索能力;而變異運算只是產(chǎn)生新個體的輔助方法,但它也是一個必不可少的運算步驟,因為它決定了遺傳算法的局部搜索能力。 例如 :以下兩個個體選取第三、六個基因座之后進行交叉運算,得到兩個新個體: 變異算子 在生物的遺傳和自然進化中,其細胞分裂復(fù)制環(huán)節(jié)有可能會因為某些偶然因素的影響而產(chǎn)生一些復(fù)制差錯,就會導(dǎo)致生物的某些基因發(fā) 生某種變異,從而產(chǎn)生新的染色體,表現(xiàn)出新的生物性狀。交叉對象一般是符號編 碼表示的個體。 例例 如如 :: 以以 下下 兩兩 個個 個個 體體 進進 行行 交交 叉叉 運運 算算 , 得得 到到 兩兩 個個 新新 個個 體體 :: 部分映射交叉 (PMX)算子 整個交叉操作由兩步來完成 :首先對個體編碼 串進行常規(guī)的雙點交叉操作。 (2) 交換兩個個體在所設(shè)定的兩個交叉點之間的部分染色體。 雙點交叉算子 雙點交叉 (Twopoint Crossover):是指在個體編碼串中隨機設(shè)置了兩個交叉點,然后進行部分基因交換。它是在個體編碼串中只隨機設(shè)置一個交叉點,然后在該點相互交換兩個配對個體的部分染色體 。交叉運算是遺傳算法區(qū)別于其他進化算法的重要特征,在遺傳算法中起關(guān)鍵作用,是產(chǎn)生新個體的主要方法。模仿這個環(huán)節(jié),在遺傳算法中也使用交叉算子來產(chǎn)生新個體。 (7) 隨機聯(lián)賽選擇 (Stuchastic Tournament Selection) 每次選取幾個適應(yīng)度最高的一個個體 遺傳到下一代群體中。 (5) 確定式采樣選擇( Determinstic Sampling selection) 基本思想是按照一種確定的方式進行選擇操作。 (4) 比例選擇 (proportional selection) 個體被選中的概率與其適應(yīng)度大小成正比。我們希望適應(yīng)度最好的個體要盡可能的保存到下一代群體中,為達到這個目的我們使用最優(yōu)保存策略進化模型。概率越大所占轉(zhuǎn)盤面積越大,被選中的機率越大。有以下幾種常用的選擇算子的操作方法:比例選擇 、最優(yōu)保存策略、確定式采樣選擇、無放回隨機選擇、無放回余數(shù)隨機選擇、排序選擇和隨機聯(lián)賽選擇等。 選擇操作建立在對個體的適應(yīng)度進行評價的基礎(chǔ)上。 選擇算子 遺 傳算法中使用選擇算子(也叫復(fù)制算子 Reproduction Operator)來對群體中的個體進行優(yōu)勝劣汰操作:適應(yīng)度較高的個體被遺傳到下一代的概率較大;適應(yīng)度較低的個體被遺傳到下一代的概率較小。 乘冪尺度變換公式如下: F' =F ? 冪指數(shù) n與所求解的問題有關(guān)。 適應(yīng)度尺度變換 (Fitness Scaling):對個體的適應(yīng)度進行適當?shù)臄U大或縮小變換。 (3)根據(jù)最優(yōu)化問題的類型,由目標函數(shù)值按一定的轉(zhuǎn)換 規(guī)則求出個體的適應(yīng)度。評價個體適應(yīng)度的一般過程: (1)對個體編碼串進行解碼處理后,可得到個體的表現(xiàn)型。目標函數(shù)值的使用是通過評價個體適應(yīng)度來體現(xiàn)的。個體適應(yīng)度大小決定該個體被遺傳到下一代群體中的概率。度量個體適應(yīng)度的函數(shù)就稱為適應(yīng)度函數(shù)。對生存環(huán)境適應(yīng)程度較高的物種將有更多的繁殖機會;而對生存環(huán)境適應(yīng)度較低的物種,其繁殖的機會就相對較少,甚至?xí)饾u滅絕。 多參數(shù)交叉編碼方法:將各個參數(shù)中起主要作用的碼位集中在一起。 最后,簡要介紹一下參數(shù)編碼方法。 (3)便于遺傳算法與相近似算法之間的混合使用。 符號編碼方法是指個體染色體編碼串中的基因值取自一個無數(shù)值含義,而只有代碼含義的符號集.它的主要優(yōu)點如下: (1)符合有意義積木塊編碼原則。 (6)便于設(shè)計針對問題的專門知識的知識型遺傳算子。 (4)改善了遺傳算法的復(fù)雜性,提高了運算效率。 (2)適合于精度較高的遺傳算法。 由于二進制編碼存在著連續(xù)函數(shù)離散化時的映射誤差,而且不便于反映所求問題的特定知識,因而人們提出了用符點數(shù)來對個 體進行編碼。 假設(shè)一個二進制編碼為 B=bnbn1? b2b1,其對應(yīng)的格雷碼為 G=gngn1?g2g1。 (3)符合最小字符集編碼原則。格雷碼編碼 方法的主要優(yōu)點是: (1)便于提高遺傳算法的局部搜索能力。格雷碼有這樣一個特點:任意兩個整數(shù)的差是這兩個整數(shù)所對應(yīng)的海明距離( Hamming distance)。 由于二進制不便于反映所求問題的結(jié)構(gòu)特征,對于一些連續(xù)函數(shù)的優(yōu)化問題等,也由于遺傳運算的隨機特性而使得其局部搜索能力較差,因而人們提出了用格雷碼來對個體進行編碼。 (4)便于利用模式定理對算法進行理論分析。 (2)交叉,變異等遺傳操作便于實現(xiàn)。 二進制編碼 二進制編碼方法是遺傳算法中最常用的一種編碼方法,它使用的編碼符號集是由二進制符號 0和 0組成的二值符號集{ 0, 1},它所構(gòu)成的個體基因型是一個二進制編碼符號串。 編碼原則二 (最小字符集編碼原則 ):應(yīng)使用能使問題得到自然表示或描述的具有最小字符集的編碼方案。目前還沒有一套既嚴密有完整的指導(dǎo)理論及評價準則能夠指導(dǎo)我們設(shè)計編碼方案。編碼方法除了決定個體染色體排列形式之外,還決定了個體從搜索空間的基因型變換到解空間的表現(xiàn)型時的解碼方法,編碼方法也影響到交叉算子、變異算子等遺傳算子的運算方法。 遺傳算法構(gòu)造流程 遺傳算法的構(gòu)造過程可以用下圖進行描述: 圖 1- 1 遺傳算法的主要構(gòu)造過程示意圖 第二章 遺傳算法的實現(xiàn)技術(shù) 編碼方法 在遺傳算法中如何描述問題的可行解,即把一個問題的可行解從其解空間轉(zhuǎn)換到遺傳算法所能處理的搜索空間的轉(zhuǎn)換方法稱為編碼。 第六步:設(shè)計遺傳算子,即確定出選擇運算、 交叉運算、變異運算等遺傳算子的具體操作方法。 第四步:確定解碼方法,即確定出個體基因型 X到個體表現(xiàn)型 X的對應(yīng)關(guān)系轉(zhuǎn)換方法。 第二步: 建立優(yōu)化模型,即確定出目標函數(shù)的類型 (是求目標函數(shù)的最大值還是求目標函數(shù)的最小值? )及其數(shù)學(xué)描述形式或量化方法。 基本遺傳算法可以形式化定義為一個八元組: SGA=(C,E,Po,M,φ ,τ ,ψ ,T) C —— 個體的編碼方法 ; E —— 個體適應(yīng)度評價函數(shù) ; Po—— 初始群體 ; M —— 群體大小 ; φ —— 選擇算子 ; τ —— 交叉算子 ; ψ —— 變異算子 ; T —— 遺傳
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1