遺傳算法與優(yōu)化問題(重要_有代碼_第1頁
遺傳算法與優(yōu)化問題(重要_有代碼_第2頁
遺傳算法與優(yōu)化問題(重要_有代碼_第3頁
遺傳算法與優(yōu)化問題(重要_有代碼_第4頁
遺傳算法與優(yōu)化問題(重要_有代碼_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗十遺傳算法與優(yōu)化問題一、問題背景與實驗?zāi)康倪z傳算法(Genetic Algorithm GA),是模擬達爾文的遺傳選擇和自然淘 汰的生物進化過程的計算模型,它是由美國Michigan大學(xué)的J.Holland教授于 1975年首先提出的.遺傳算法作為一種新的全局優(yōu)化搜索算法, 以其簡單通用、 魯棒性強、適于并行處理及應(yīng)用范圍廣等顯著特點,奠定了它作為21世紀關(guān)鍵智能計算之一的地位.本實驗將首先介紹一下遺傳算法的基本理論,然后用其解決幾個簡單的函數(shù) 最值問題,使讀者能夠?qū)W會利用遺傳算法進行初步的優(yōu)化計算1 遺傳算法的基本原理遺傳算法的基本思想正是基于模仿生物界遺傳學(xué)的遺傳過程.它把問題的參數(shù)用

2、基因代表,把問題的解用染色體代表(在計算機里用二進制碼表示),從而得到一個由具有不同染色體的個體組成的群體.這個群體在問題特定的環(huán)境里生 存競爭,適者有最好的機會生存和產(chǎn)生后代. 后代隨機化地繼承了父代的最好特 征,并也在生存環(huán)境的控制支配下繼續(xù)這一過程.群體的染色體都將逐漸適應(yīng)環(huán)境,不斷進化,最后收斂到一族最適應(yīng)環(huán)境的類似個體,即得到問題最優(yōu)的解.值得注意的一點是,現(xiàn)在的遺傳算法是受生物進化論學(xué)說的啟發(fā)提出的,這種學(xué)說對我們用計算機解決復(fù)雜問題很有用,而它本身是否完全正確并不重要(目前生 物界對此學(xué)說尚有爭議)(1 )遺傳算法中的生物遺傳學(xué)概念由于遺傳算法是由進化論和遺傳學(xué)機理而產(chǎn)生的直接搜

3、索優(yōu)化方法;故而在這個算法中要用到各種進化和遺傳學(xué)的概念.首先給出遺傳學(xué)概念、遺傳算法概念和相應(yīng)的數(shù)學(xué)概念三者之間的對應(yīng)關(guān)系.這些概念如下:序號遺傳學(xué)概念遺傳算法概念數(shù)學(xué)概念1個體要處理的基本對象、結(jié)構(gòu)也就是可行解2群體個體的集合被選定的一組可行解3染色體個體的表現(xiàn)形式可行解的編碼4基因染色體中的元素編碼中的元素5基因位某一基因在染色體中的位置元素在編碼中的位置6適應(yīng)值個體對于環(huán)境的適應(yīng)程度, 或在環(huán)境壓力下的生存能力可行解所對應(yīng)的適應(yīng)函數(shù) 值7種群被選定的一組染色體或個體根據(jù)入選概率定出的一組 可行解8選擇從群體中選擇優(yōu)勝的個體,淘汰劣質(zhì)個體的操作保留或復(fù)制適應(yīng)值大的可行解,去掉小的可行解9

4、交叉一組染色體上對應(yīng)基因段的 交換根據(jù)交叉原則產(chǎn)生的一組新解10交叉概率染色體對應(yīng)基因段交換的概 率(可能性大小)閉區(qū)間0,1上的一個值,一般為 0.650.9011變異染色體水平上基因變化編碼的某些元素被改變12變異概率染色體上基 因變化的 概率(可能性大小)開區(qū)間(0,1)內(nèi)的一個值,一般為 0.0010.0113進化、 適者生存?zhèn)€體進行優(yōu)勝劣汰的進化,一代又一代地優(yōu)化目標函數(shù)取到最大值,最優(yōu)的可行解(2 )遺傳算法的步驟遺傳算法計算優(yōu)化的操作過程就如同生物學(xué)上生物遺傳進化的過程,主要有三個基本操作(或稱為算子):選擇(Selection )、交叉(Crossover )、變異(Mutat

5、ion ).遺傳算法基本步驟主要是:先把問題的解表示成“染色體”,在算法中也就是以二進制編碼的串,在執(zhí)行遺傳算法之前,給出一群“染色體”,也就是假設(shè)1 4 3的可行解然后,把這些假設(shè)的可行解置于問題的“環(huán)境”中,并按適者生存的 原則,從中選擇出較適應(yīng)環(huán)境的“染色體”進行復(fù)制,再通過交叉、變異過程產(chǎn) 生更適應(yīng)環(huán)境的新一代“染色體”群經(jīng)過這樣的一代一代地進化,最后就會收 斂到最適應(yīng)環(huán)境的一個“染色體”上,它就是問題的最優(yōu)解.下面給出遺傳算法的具體步驟,流程圖參見圖 1:第一步:選擇編碼策略,把參數(shù)集合(可行解集合)轉(zhuǎn)換染色體結(jié)構(gòu)空間;第二步:定義適應(yīng)函數(shù),便于計算適應(yīng)值;第三步:確定遺傳策略,包括

6、選擇群體大小,選擇、交叉、變異方法以及確定交叉概率、變異概率等遺傳參數(shù);第四步:隨機產(chǎn)生初始化群體;第五步:計算群體中的個體或染色體解碼后的適應(yīng)值;第六步:按照遺傳策略,運用選擇、交叉和變異算子作用于群體,形成下一代群體;第七步:判斷群體性能是否滿足某一指標、或者是否已完成預(yù)定的迭代次數(shù), 不滿足則返回第五步、或者修改遺傳策略再返回第六步.圖1 一個遺傳算法的具體步驟遺傳算法有很多種具體的不同實現(xiàn)過程,以上介紹的是標準遺傳算法的主要步驟,此算法會一直運行直到找到滿足條件的最優(yōu)解為止.2 遺傳算法的實際應(yīng)用例 1:設(shè) f(x)x2 2x 0.5,求 max f(x), x 1,2.注:這是一個非

7、常簡單的二次函數(shù)求極值的問題,相信大家都會做在此我們要研究的不是問題本身,而是借此來說明如何通過遺傳算法分析和解決問題.在此將細化地給出遺傳算法的整個過程.(1)編碼和產(chǎn)生初始群體首先第一步要確定編碼的策略,也就是說如何把1到2這個區(qū)間內(nèi)的數(shù)用計 算機語言表示出來.編碼就是表現(xiàn)型到基因型的映射,編碼時要注意以下三個原則:完備性:問題空間中所有點(潛在解)都能成為GA編碼空間中的點(染色體位串)的表現(xiàn)型;健全性:GA編碼空間中的染色體位串必須對應(yīng)問題空間中的某一潛在解;非冗余性:染色體和潛在解必須一一對應(yīng).這里我們通過采用二進制的形式來解決編碼問題,將某個變量值代表的個體表示為一個0,1二進制串

8、當然,串長取決于求解的精度如果要設(shè)定求解精 度到六位小數(shù),由于區(qū)間長度為2 ( 1) 3,則必須將閉區(qū)間1,2分為3 106 等分因為20971522213 1062224194304所以編碼的二進制串至少需要22位.將一個二進制串(b21b20b19b1b0)轉(zhuǎn)化為區(qū)間1,2內(nèi)對應(yīng)的實數(shù)值很簡 單,只需采取以下兩步(Matlab程序參見附錄4):1) 將一個二進制串(b21b20b19b1b0)代表的二進制數(shù)化為10進制數(shù):21(b21b2ob)9 46)2 ( b 2 )10 xi 02) x對應(yīng)的區(qū)間1,2內(nèi)的實數(shù):x2 ( 1)222例如,一個二 進制串 a= 表 示實數(shù)0.63719

9、7 .x=(1000101110110101000111)2=22889673x 12288967 飛 0.6371972 1二 進 制 串 0000000000000000000000,則分別表示區(qū)間的兩個端點值 -1和2 .利用這種方法我們就完成了遺傳算法的第一步編碼,這種二進制編碼的方法完全符合上述的編碼的三個原則.首先我們來隨機的產(chǎn)生一個個體數(shù)為 4個的初始群體如下:pop(1)=% a1% a2% a3% a4 (Matlab 程序參見附錄2)0110101001101110010101化成十進制的數(shù)分別為:pop(1)= 1.523032,0.574022,-0.697235,0.

10、247238 接下來我們就要解決每個染色體個體的適應(yīng)值問題了.(2 )定義適應(yīng)函數(shù)和適應(yīng)值由于給定的目標函數(shù)f(x)x2 2x 0.5在1,2內(nèi)的值有正有負,所以必 須通過建立適應(yīng)函數(shù)與目標函數(shù)的映射關(guān)系, 保證映射后的適應(yīng)值非負,而且目 標函數(shù)的優(yōu)化方向應(yīng)對應(yīng)于適應(yīng)值增大的方向, 也為以后計算各個體的入選概率1 4 11打下基礎(chǔ).對于本題中的最大化問題,定義適應(yīng)函數(shù)g(x),采用下述方法:f(X) Fmin,若 f (X) Fmin0,其他式中Fmin既可以是特定的輸入值,也可以是當前所有代或最近K代中f(X)的最小值,這里為了便于計算,將采用了一個特定的輸入值.若取Fmin1,則當f(x)

11、 1時適應(yīng)函數(shù)g(x) 2 ;當f(X)g(x)o.g(x)min 0i.i時適應(yīng)函數(shù)由上述所隨機產(chǎn)生的初始群體,我們可以先計算出目標函數(shù)值分別如下(Matlab程序參見附錄3):f pop(1)= 1.226437,1.318543 , -1.380607,0.933350 然后通過適應(yīng)函數(shù)計算出適應(yīng)值分別如下(Matlab程序參見附錄5、附錄6 ):取 Fmin1,gpop(1)= 2.226437,2.318543 ,0 , 1.933350 (3)確定選擇標準這里我們用到了適應(yīng)值的比例來作為選擇的標準,得到的每個個體的適應(yīng)值 比例叫作入選概率.其計算公式如下:對于給定的規(guī)模為n的群體p

12、op= aa2,a3,L ,an,個體3的適應(yīng)值為g(ai),則其入選概率為Ps(a)g(ajni 1,2,3, ,ng(aji 1由上述給出的群體,我們可以計算出各個個體的入選概率.首先可得4g(aj 6.478330,i 14然后分別用四個個體的適應(yīng)值去除以g(a),得:i 1% al% a2% a3% a4 (Matlab程序參見附P(a1)=2.226437 / 6.478330 = 0.343675P(a2)=2.318543 / 6.478330 = 0.357892P(a3)=0 / 6.478330 =0P(a4)=1.933350 / 6.478330 = 0.298433錄

13、7)(4 )產(chǎn)生種群計算完了入選概率后,就將入選概率大的個體選入種群,淘汰概率小的個體, 并用入選概率最大的個體補入種群,得到與原群體大小同樣的種群(Matlab程序參見附錄8、附錄11 ).要說明的是:附錄11的算法與這里不完全相同為保證收斂性,附錄 11 的算法作了修正,采用了最佳個體保存方法(elitist model ),具體內(nèi)容將在后 面給出介紹.由初始群體的入選概率我們淘汰掉種群得到newpop(1)如下:n ewpop(1)=110101110 10011000111100110101001101110010101a3,再加入a2補足成與群體同樣大小的% a1% a2% a2%

14、a4(5)交叉交叉也就是將一組染色體上對應(yīng)基因段的交換得到新的染色體,然后得到新的染色體組,組成新的群體(Matlab程序參見附錄9).我們把之前得到的newpop(1)的四個個體兩兩組成一對,重復(fù)的不配對,進行交叉.(可以在任一位進行交叉)110101110 、11010111010100010000101000011001001100011110交叉得:101000100001001000010交叉得:1001010101101010011011通過交叉得到了四個新個體,得到新的群體jchpop (1)如下:jchpop(1)= , , ,0110101001101101000010這里采

15、用的是單點交叉的方法,當然還有多點交叉的方法,不過有些煩瑣, 這里就不著重介紹了.(6)變異變異也就是通過一個小概率改變?nèi)旧w位串上的某個基因(Matlab程序參見附錄10 )現(xiàn)把剛得到的jchpop(1)中第3個個體中的第9位改變,就產(chǎn)生了變異,得 到了新的群體pop(2)如下:pop(2)= 1101011101010001000010 ,1000011001001100011110 , , 然后重復(fù)上述的選擇、交叉、變異直到滿足終止條件為止.(7 )終止條件遺傳算法的終止條件有兩類常見條件:(1)采用設(shè)定最大(遺傳)代數(shù)的方 法,一般可設(shè)定為50代,此時就可能得出最優(yōu)解此種方法簡單易行,

16、但可能 不是很精確(Matlab程序參見附錄1); (2)根據(jù)個體的差異來判斷,通過計算 種群中基因多樣性測度,即所有基因位相似程度來進行控制.3 遺傳算法的收斂性前面我們已經(jīng)就遺傳算法中的編碼、適應(yīng)度函數(shù)、選擇、交叉和變異等主要 操作的基本內(nèi)容及設(shè)計進行了詳細的介紹作為一種搜索算法,遺傳算法通過對 這些操作的適當設(shè)計和運行,可以實現(xiàn)兼顧全局搜索和局部搜索的所謂均衡搜 索,具體實現(xiàn)見下圖2所示.圖2均衡搜索的具體實現(xiàn)圖示應(yīng)該指出的是,遺傳算法雖然可以實現(xiàn)均衡的搜索,并且在許多復(fù)雜問題的 求解中往往能得到滿意的結(jié)果,但是該算法的全局優(yōu)化收斂性的理論分析尚待解 決.目前普遍認為,標準遺傳算法并不保

17、證全局最優(yōu)收斂但是,在一定的約束 條件下,遺傳算法可以實現(xiàn)這一點.下面我們不加證明地羅列幾個定理或定義,供讀者參考(在這些定理的證明 中,要用到許多概率論知識,特別是有關(guān)馬爾可夫鏈的理論,讀者可參閱有關(guān)文 獻) 定理1如果變異概率為Pm (0,1),交叉概率為Pc 0,1,同時采用比例選 擇法(按個體適應(yīng)度占群體適應(yīng)度的比例進行復(fù)制),則標準遺傳算法的變換矩 陣P是基本的.定理2標準遺傳算法(參數(shù)如定理1 )不能收斂至全局最優(yōu)解.由定理2可以知道,具有變異概率Pm (0,1),交叉概率為Pc 0,1以及按比 例選擇的標準遺傳算法是不能收斂至全局最最優(yōu)解.我們在前面求解例1時所用 的方法就是滿足

18、定理1的條件的方法這無疑是一個令人沮喪的結(jié)論.然而,慶幸的是,只要對標準遺傳算法作一些改進,就能夠保證其收斂性.具 體如下:我們對標準遺傳算法作一定改進,即不按比例進行選擇,而是保留當前 所得的最優(yōu)解(稱作 超個體)該超個體不參與遺傳.最佳個體保存方法(elitist model )的思想是把群體中適應(yīng)度最高的個體不 進行配對交叉而直接復(fù)制到下一代中.此種選擇操作又稱復(fù)制(copy ). De Jong對此方法作了如下定義:定義 設(shè)到時刻t (第t代)時,群體中a* (t)為最佳個體.又設(shè)A (t + 1) 為新一代群體,若A (t + 1 )中不存在a* (t),則把a*(t)作為A (t

19、+ 1)中的第 n+1個個體(其中,n為群體大小)(Matlab程序參見附錄11).采用此選擇方法的優(yōu)點是,進化過程中某一代的最優(yōu)解可不被交叉和變異操 作所破壞.但是,這也隱含了一種危機,即局部最優(yōu)個體的遺傳基因會急速增加 而使進化有可能限于局部解.也就是說,該方法的全局搜索能力差,它更適合單 峰性質(zhì)的搜索空間搜索,而不是多峰性質(zhì)的空間搜索.所以此方法一般都與其他 選擇方法結(jié)合使用.定理3具有定理1所示參數(shù),且在選擇后保留當前最優(yōu)值的遺傳算法最終 能收斂到全局最優(yōu)解.當然,在選擇算子作用后保留當前最優(yōu)解是一項比較復(fù)雜的工作,因為該解 在選擇算子作用后可能丟失.但是定理3至少表明了這種改進的遺傳

20、算法能夠收 斂至全局最優(yōu)解.有意思的是,實際上只要在選擇前保留當前最優(yōu)解,就可以保 證收斂,定理4描述了這種情況.定理4具有定理1參數(shù)的,且在選擇前保留當前最優(yōu)解的遺傳算法可收斂 于全局最優(yōu)解.2例2 :設(shè)f(x) 3 x x,求maxf(x), x 0,2,編碼長度為5,采用上述 定理4所述的“在選擇前保留當前最優(yōu)解的遺傳算法”進行.此略,留作練習(xí).二、相關(guān)函數(shù)(命令)及簡介本實驗的程序中用到如下一些基本的 Matlab函數(shù):ones, zeros, sum, size, length, subs, double 等,以及for, while 等基本程序結(jié)構(gòu)語句,讀者可參考 前面專門關(guān)于Ma

21、tlab的介紹,也可參考其他數(shù)學(xué)實驗章節(jié)中的“相關(guān)函數(shù)(命 令)及簡介”內(nèi)容,此略.三、實驗內(nèi)容上述例1的求解過程為:群體中包含六個染色體,每個染色體用22位01碼,變異概率為0.01,變量區(qū)間為1,2,取Fmin= 2,遺傳代數(shù)為50代,則運用第一種終止條件(指定遺傳代數(shù))的Matlab程序為:Cou nt,Result,BestMember=Ge netic1(22,6,-x*x+2*x+0.5,-1,2,-2,0.01,50)執(zhí)行結(jié)果為:Count =50Result =1.03161.03161.03161.03161.03161.03161.49901.49901.49901.499

22、01.49901.4990BestMember =圖2例1的計算結(jié)果(注:上圖為遺傳進化過程中每一代的個體最大適應(yīng)度;而下圖為目前為止的個體最大適應(yīng)度單調(diào)遞增)我們通過Matlab軟件實現(xiàn)了遺傳算法,得到了這題在第一種終止條件下的最優(yōu)解:當 x 取 1.0316 時,Max f (x)1.4990 .當然這個解和實際情況還有一點出入(應(yīng)該是x取1時,Max f (x)1.5000 ),但對于一個計算機算法來說已經(jīng)很不錯了.我們也可以編制Matlab程序求在第二種終止條件下的最優(yōu)解.此略,留作 練習(xí).實踐表明,此時的遺傳算法只要經(jīng)過 10代左右就可完成收斂,得到另一 個“最優(yōu)解”,與前面的最優(yōu)解

23、相差無幾.四、自己動手1 .用Matlab編制另一個主程序 Genetic2.m,求例1的在第二種終止條件下 的最優(yōu)解.提示:一個可能的函數(shù)調(diào)用形式以及相應(yīng)的結(jié)果為:Cou nt,Result,BestMember=Ge netic2(22,6,-x*x+2*x+0.5,-1,2,-2,0.01,0.00001)Count =13Result =1.03921.03921.03921.03921.03921.03921.49851.49851.49851.49851.49851.4985BestMember =1.03921.4985可以看到:兩組解都已經(jīng)很接近實際結(jié)果,對于兩種方法所產(chǎn)生的最

24、優(yōu)解差異很小.可見這兩種終止算法都是可行的,而且可以知道對于例1的問題,遺傳算法只要經(jīng)過10代左右就可以完成收斂,達到一個最優(yōu)解.2 .按照例2的具體要求,用遺傳算法求上述例 2的最優(yōu)解.3 .附錄9子程序Cross in g.m中的第3行到第7行為注解語句若去掉前面的%號,則程序的算法思想有什么變化?4. 附錄9子程序 Cross in g.m 中的第8行至第13行的程序表明,當Dim=3 時,將交換數(shù)組Population的最后兩行,即交換最后面的兩個 個體.其目的是什么?5. 仿照附錄10子程序Mutatio n.m ,修改附錄9子程序Cross in g.m,使得交叉過程也有一個概率值

25、(一般取0.650.90 );同時適當修改主程序Genetic1.m 或主程序Genetic2.m,以便代入交叉概率.6 .設(shè)f(x) x2 4x 1,求maxf(x), x 2,2,要設(shè)定求解精度到15位小 數(shù).五、附錄附錄1:主程序 Genetid.mfun ctio nCou nt,Result,BestMember=Ge netic1(MumberLe ngth,MemberNumber,Fu nctio nFit ness,MinX,MaxX,Fmi n,Mutatio nProbability,Ge n)Populatio n=Populatio nln itialize(Mumb

26、erLe ngth,MemberNumber);global Count;global Curre ntBest;Cou nt=1;Populatio nCode=Populati on;Populatio nFit ness=Fit ness(Populatio nCode,F un ctio nFit ness,MinX,Ma xX,MumberLe ngth);Populatio nFit nessF=Fit nessF(Populatio nFit ness,Fmi n);Populatio nProbability=Probability(Populatio nFit nessF);

27、Populatio n,Curre ntBest,EachGe nMaxFit ness=Elitist(Populatio nCode,Populati onF it ness,MumberLe ngth);EachMaxFit ness(Co un t)=EachGe nM axFit ness;MaxFit ness(Cou nt)=Curre ntBest(le ngth(Curre ntBest);while Cou nt=0.5* on es(size(Temporary);【程序說明】子程序PopulationInitialize.m用于產(chǎn)生一個初始群體.這個初始群體含有Memb

28、erNumber個染色體,每個染色體有 MumberLength 個基因(二進制碼).附錄3:子程序Fitness.mfunctionPopulati onF it ness=Fit ness(Populatio nCode,Fu nctio nFit ness,MinX,MaxX,MumberLe ngth)Dim=size(Populati on Code);Populatio nFit ness=zeros(1,Dim(1);for i=1:Dim(1)Populatio nF it ness(i)=Tran sfer(Populati on Code(i,:),F un cti onF

29、 it ness, MinX, MaxX,MumberLe ngth);end【程序說明】子程序Fitness.m用于計算群體中每一個染色體的目標函數(shù)值.子1 5 9程序中含有5個輸入?yún)?shù):PopulationCode 表示用01代碼表示的群體,Fun ctio nFit ness表示目標函數(shù),它是一個字符串,因此寫入調(diào)用程序時,應(yīng)該用單引號括出,MumberLength表示染色體位串的二進制長度.MinX和MaxX分別指變量區(qū)間的上下限.附錄4:子程序Translate.mfun cti onPopulatio nData=Tra nslate(Populatio nCode,MinX,Ma

30、xX,MumberLe ngth)Populati on Data=0;Dim=size(Populati on Code);for i=1:Dim(2)Populatio nData=Populatio nData+Populatio nCode(i)*(2A(MumberLe ngth-i);endPopulatio nData=MinX+Populatio nData*(MaxX-MinX)/(2Pim(2)-1);【程序說明】子程序 Tran slate.m把編成碼的群體翻譯成變量的數(shù)值.含有4個輸入?yún)?shù),Populatio nCode, MinX, MaxX, MumberLe ng

31、th.附錄5:子程序Transfer.mTran sfer(Populatio nCode,F un ctio nFit ness,MinX,MaxX,MumberLe ngth)Populati onF it ness=0;Populatio nData=Tra nslate(Populatio nCode,MinX,MaxX,MumberLe ngth);Populati onF it ness=double(subs(F un cti onF it ness,x,sym(Populatio nData);【程序說明】子程序Transfer把群體中的染色體的目標函數(shù)值用數(shù)值表示出來,它是F

32、itness的重要子程序.其有5個輸入?yún)?shù)分別為PopulationCode,FunctionFitness, MinX, MaxX , MumberLength附錄6:子程序FitnessF.mfunction Populati onF it nessF=Fit nessF(Populati onF it ness,F min)Dim=size(Populatio nFit ness);Populatio nFit nessF=zeros(1,Dim(2);for i=1:Dim(2)if Populati onF it ness(i)F minPopulati onF it nessF(i

33、)=Populatio nF it ness(i)-F min;endif Populati onF it ness(i)CProbability(l ndex)In dex=In dex+1;endNewPopulati on (i,:)=Populati on (I ndex,:);end【程序說明】子程序 Select.m根據(jù)入選概率(計算累計概率)在群體中按比例 選擇部分染色體組成種群,該子程序的3個輸入?yún)?shù)分別為:群體Population , 入選概率PopulationProbability ,群體中染色體的個數(shù) MemberNumber .附錄9:子程序 Crossing.mfu

34、n ctio n NewPopulati on=Cross in g(Populatio n,Fun cti onF it ness, MinX, MaxX,MumberLe ngth)%Populati onF it ness=%Fit ness(Populatio n,FunctionF it ness, MinX, MaxX,MumberLe ngth);%Populatio nProbability=Probability(Populatio nFit ness);%SortResult,SortSite=sort(Populatio nProbability);%Populatio

35、n=Populatio n(SortSite,:);if Dim=3Temp=Populatio n( Dim(1),:);Populatio n(Dim(1),:)=Populatio n(Dim(1)-1,:);Populatio n(Dim(1)-1,:)=Temp;endfor i=1:2:Dim(1)-1SiteArray=ran dperm(Dim(2);Site=SiteArray(1);Temp=Populati on (i,1:Site);Populatio n(i,1:Site)=Populatio n(i+1,1:Site);Populatio n(i+1,1:Site)=Temp;endNewPopulatio n=Populatio n;【程序說明】子程序Crossi ng.m 用于群體中的交叉并產(chǎn)生新群體其輸入?yún)?shù)為:Population, FunctionFitness, MinX,MaxX,MumberLength附錄10 :子程序 Mutation.mfun ctio n NewPopulatio n=Mutatio n(Populatio n,

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論