資源描述:
《遺傳算法及matlab實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、遺傳算法及MATLAB遺傳算法工具箱重應(yīng)用,輕研究學(xué)習(xí)它是什么,怎么用,而不是為什么參考書目MATLAB遺傳算法工具箱及應(yīng)用niuyongjie的專欄:http://blog.csdn.net/niuyongjie/archive/2009/11/24/4863979.aspx特點(diǎn)群體搜索特性:許多傳統(tǒng)的搜索方法都是單點(diǎn)搜索,遺傳算法采用的是同時(shí)處理群體中多個(gè)個(gè)體的方法使遺傳算法具有較好的全局搜索性能,不容易陷入局部最優(yōu);遺傳算法的適應(yīng)度函數(shù)(目標(biāo)函數(shù))可以解決不連續(xù)、不可微、隨機(jī)或高度非線性的問題,而且其定義域可以任意設(shè)定;遺傳算法具有可擴(kuò)展性,易于同別的技術(shù)混合使用
2、。遺傳算法的定義遺傳算法(GeneticAlgorithm:GA)是一種尋求函數(shù)(問題)最優(yōu)解的數(shù)學(xué)方法。其基本原理是:模擬自然界生物繁衍過程中基因重組與進(jìn)化的自然過程,把待解決問題的參數(shù)編成二進(jìn)制碼或十進(jìn)制碼(也可編成其他進(jìn)制碼),即基因,若干基因組成一個(gè)染色體(個(gè)體),許多染色體進(jìn)行類似于自然選擇、配對(duì)交叉和變異的運(yùn)算,經(jīng)過多次重復(fù)迭代(即世代遺傳)直至得到最后的優(yōu)化結(jié)果。遺傳算法的計(jì)算過程(隨機(jī))產(chǎn)生初始種群是否滿足停止準(zhǔn)則是輸出結(jié)果并結(jié)束計(jì)算個(gè)體適應(yīng)度值選擇運(yùn)算交叉運(yùn)算變異運(yùn)算否產(chǎn)生新一代種群隨機(jī)產(chǎn)生種群種群(種群數(shù)為2)個(gè)體1:初始解1相當(dāng)于染色體1基因1:x
3、1基因2:x2基因3:x3個(gè)體2:初始解2相當(dāng)于染色體2基因1:x1基因2:x2基因3:x3編碼與解碼在遺傳算法中如何描述問題的可行解,即把一個(gè)問題的可行解從其解空間轉(zhuǎn)換到遺傳算法所能處理的搜索空間的轉(zhuǎn)換方法就稱為編碼。而由遺傳算法解空間向問題空間的轉(zhuǎn)換稱為解碼。如二進(jìn)制編碼,格雷碼編碼,浮點(diǎn)數(shù)編碼,多參數(shù)級(jí)聯(lián)編碼等。例如:一組x1,x2,x3編碼為001011000010更高精度基因型1000101110110101000111表現(xiàn)型:0.637197編碼解碼個(gè)體(染色體)適應(yīng)度函數(shù)(FitnessFunction)定義:度量個(gè)體適應(yīng)度的函數(shù)。在某種程度上來說,適應(yīng)度
4、函數(shù)就相當(dāng)于實(shí)際問題的目標(biāo)函數(shù),只是它只求最小值,因此,當(dāng)實(shí)際問題是求最大值時(shí),需要做相應(yīng)轉(zhuǎn)換。選擇(Slection)選擇(或稱為復(fù)制)是在種群中選擇適應(yīng)度高(函數(shù)更加優(yōu)化)的個(gè)體產(chǎn)生新的種群的過程。遺傳算法中的選擇操作就是用來確定如何從父代群體中按某種方法選取哪些個(gè)體遺傳到下一代群體中的一種遺傳運(yùn)算,用來確定重組或交叉?zhèn)€體。如輪盤賭選擇,隨機(jī)競(jìng)爭(zhēng)選擇等交叉(Crossover)交叉是按較大的概率從群體中選擇兩個(gè)個(gè)體,交換兩個(gè)個(gè)體的某個(gè)或某些位。如單點(diǎn)交叉,多點(diǎn)交叉等。例如:交叉前:交叉后:個(gè)體1:00000
5、0111000000001000000000
6、000001
7、11111000101個(gè)體2:11100
8、0000011111100010111100
9、01110000000010000變異(Mutation)以較小的概率對(duì)個(gè)體編碼串上的某個(gè)或某些位值進(jìn)行改變,如二進(jìn)制編碼中0”變?yōu)椤埃薄?,“1”變?yōu)椤埃啊保M(jìn)而生成新個(gè)體。它決定了遺傳算法的局部搜索能力,同時(shí)保持種群的多樣性。交叉運(yùn)算和變異運(yùn)算的相互配合,共同完成對(duì)搜索空間的全局搜索和局部搜索。MATLAB遺傳算法工具箱Matlab遺傳算法工具箱操作打開工具箱:鍵入命令:gatool點(diǎn)擊命令:工具箱界面1243第1部分:定義函數(shù)句柄在FitnessFunction中輸入一個(gè)計(jì)算適應(yīng)
10、度函數(shù)的.M文件函數(shù)的句柄(handle),以調(diào)用文件中函數(shù)。格式:@test(與相應(yīng)的M文件名一致)在Numberofvariance中輸入變量個(gè)數(shù)生成.M文件定義對(duì)應(yīng)的函數(shù):編輯并生成適應(yīng)度函數(shù)的.M文件——便于工具箱使用時(shí)調(diào)用。格式:functionz=test(x)z=具體函數(shù)注意事項(xiàng):一個(gè)函數(shù)中變量只能是X1,X2,……,不能是x,y,z;.M文件名無需與函數(shù)名對(duì)應(yīng)。英文,自由命名第2部分:約束條件Linearinequalities(線性不等式):A*x<=b。其中A是矩陣,b是列向量,書寫格式如A中填寫[1,2,3;12,3,43;1,23,4],b中填寫
11、[5;4;7];Linearequalities(線性等式):Aeq*x=beq。其中Aeq是矩陣,beq是列向量,格式同上;Bounds(邊界):變量的最小和最大值。矩陣形式表示,負(fù)無窮大為-Inf,正無窮大為Inf。Nonlinearconstraintfunction(非線性限制函數(shù)):類似于“FitnessFunction”中的輸入,首先生成對(duì)應(yīng)的.M文件,此處輸入函數(shù)的句柄,調(diào)用其中的(非線性限制)函數(shù)。格式為:function[c,ceq]=game(x)c(1)=(x(1)^2)/9+(x(2)^2)/4-1;ceq=[];