遺傳算法為群體優(yōu)化算法,也就是從多個(gè)初始解開始進(jìn)行優(yōu)化,每個(gè)解稱為一個(gè)染色體,各染色體之間通過競(jìng)爭(zhēng)、合作、單獨(dú)變異,不斷進(jìn)化。
優(yōu)化時(shí)先要將實(shí)際問題轉(zhuǎn)換到遺傳空間,就是把實(shí)際問題的解用染色體表示,稱為編碼,反過程為解碼,因?yàn)閮?yōu)化后要進(jìn)行評(píng)價(jià),所以要返回問題空間,故要進(jìn)行解碼。SGA采用二進(jìn)制編碼,染色體就是二進(jìn)制位串,每一位可稱為一個(gè)基因;解碼時(shí)應(yīng)注意將染色體解碼到問題可行域內(nèi)。
遺傳算法模擬“適者生存,優(yōu)勝劣汰”的進(jìn)化機(jī)制,染色體適應(yīng)生存環(huán)境的能力用適應(yīng)度函數(shù)衡量。對(duì)于優(yōu)化問題,適應(yīng)度函數(shù)由目標(biāo)函數(shù)變換而來。一般遺傳算法求解最大值問題,如果是最小值問題,則通過取倒數(shù)或者加負(fù)號(hào)處理。SGA要求適應(yīng)度函數(shù)>0,對(duì)于<0的問題,要通過加一個(gè)足夠大的正數(shù)來解決。這樣,適應(yīng)度函數(shù)值大的染色體生存能力強(qiáng)。
遺傳算法有三個(gè)進(jìn)化算子:選擇(復(fù)制)、交叉和變異。
SGA中,選擇采用輪盤賭方法,也就是將染色體分布在一個(gè)圓盤上,每個(gè)染色體占據(jù)一定的扇形區(qū)域,扇形區(qū)域的面積大小和染色體的適應(yīng)度大小成正比。如果輪盤中心裝一個(gè)可以轉(zhuǎn)動(dòng)的指針的話,旋轉(zhuǎn)指針,指針停下來時(shí)會(huì)指向某一個(gè)區(qū)域,則該區(qū)域?qū)?yīng)的染色體被選中。顯然適應(yīng)度高的染色體由于所占的扇形區(qū)域大,因此被選中的幾率高,可能被選中多次,而適應(yīng)度低的可能一次也選不中,從而被淘汰。算法實(shí)現(xiàn)時(shí)采用隨機(jī)數(shù)方法,先將每個(gè)染色體的適應(yīng)度除以所有染色體適應(yīng)度的和,再累加,使他們根據(jù)適應(yīng)度的大小分布于0-1之間,適應(yīng)度大的占的區(qū)域大,然后隨機(jī)生成一個(gè)0-1之間的隨機(jī)數(shù),隨機(jī)數(shù)落到哪個(gè)區(qū)域,對(duì)應(yīng)的染色體就被選中。重復(fù)操作,選出群體規(guī)模規(guī)定數(shù)目的染色體。這個(gè)操作就是“優(yōu)勝劣汰,適者生存”,但沒有產(chǎn)生新個(gè)體。
交叉模擬有性繁殖,由兩個(gè)染色體共同作用產(chǎn)生后代,SGA采用單點(diǎn)交叉。由于SGA為二進(jìn)制編碼,所以染色體為二進(jìn)制位串,隨機(jī)生成一個(gè)小于位串長(zhǎng)度的隨機(jī)整數(shù),交換兩個(gè)染色體該點(diǎn)后的那部分位串。參與交叉的染色體是輪盤賭選出來的個(gè)體,并且還要根據(jù)選擇概率來確定是否進(jìn)行交叉(生成0-1之間隨機(jī)數(shù),看隨機(jī)數(shù)是否小于規(guī)定的交叉概率),否則直接進(jìn)入變異操作。這個(gè)操作是產(chǎn)生新個(gè)體的主要方法,不過基因都來自父輩個(gè)體。
變異采用位點(diǎn)變異,對(duì)于二進(jìn)制位串,0變?yōu)?,1變?yōu)?就是變異。采用概率確定變異位,對(duì)每一位生成一個(gè)0-1之間的隨機(jī)數(shù),看是否小于規(guī)定的變異概率,小于的變異,否則保持原狀。這個(gè)操作能夠使個(gè)體不同于父輩而具有自己獨(dú)立的特征基因,主要用于跳出局部極值。
遺傳算法認(rèn)為生物由低級(jí)到高級(jí)進(jìn)化,后代比前一代強(qiáng),但實(shí)際操作中可能有退化現(xiàn)象,所以采用最佳個(gè)體保留法,也就是曾經(jīng)出現(xiàn)的最好個(gè)體,一定要保證生存下來,使后代至少不差于前一代。大致有兩種類型,一種是把出現(xiàn)的最優(yōu)個(gè)體單獨(dú)保存,最后輸出,不影響原來的進(jìn)化過程;一種是將最優(yōu)個(gè)體保存入子群,也進(jìn)行選擇、交叉、變異,這樣能充分利用模式,但也可能導(dǎo)致過早收斂。
由于是基本遺傳算法,所以優(yōu)化能力一般,解決簡(jiǎn)單問題尚可,高維、復(fù)雜問題就需要進(jìn)行改進(jìn)了。
下面為代碼。函數(shù)最大值為3905.9262,此時(shí)兩個(gè)參數(shù)均為-2.0480,有時(shí)會(huì)出現(xiàn)局部極值,此時(shí)一個(gè)參數(shù)為-2.0480,一個(gè)為2.0480。算法中變異概率pm=0.05,交叉概率pc=0.8。如果不采用最優(yōu)模式保留,結(jié)果會(huì)更豐富些,也就是算法最后不一定收斂于極值點(diǎn),當(dāng)然局部收斂現(xiàn)象也會(huì)有所減少,但最終尋得的解不一定是本次執(zhí)行中曾找到過的最好解。
資源簡(jiǎn)介:遺傳算法的MATLAB代碼,很好的算法啊,有需要的自己下載然后解壓就可以用了
上傳時(shí)間: 2014-11-28
上傳用戶:lingzhichao
資源簡(jiǎn)介:遺傳算法的matlab代碼,適合數(shù)學(xué)建模的同學(xué)使用
上傳時(shí)間: 2014-01-24
上傳用戶:cooran
資源簡(jiǎn)介:本程序基于matlab 遺傳算法的源程序代碼,遺傳算法是應(yīng)用于各種優(yōu)化問題的典型算法,有很高的參考價(jià)值。
上傳時(shí)間: 2015-03-15
上傳用戶:xuanchangri
資源簡(jiǎn)介:關(guān)于遺傳算法的matlab 程序代碼,或許對(duì)有些這方面的同仁有用
上傳時(shí)間: 2015-08-06
上傳用戶:1109003457
資源簡(jiǎn)介:一種遺傳算法的MATLAB實(shí)現(xiàn)代碼,調(diào)試過的
上傳時(shí)間: 2013-12-09
上傳用戶:dengzb84
資源簡(jiǎn)介:自適應(yīng)遺傳算法的MATLAB程序,自己編寫的。參照了一些高手的代碼,有些自己的特色
上傳時(shí)間: 2014-12-21
上傳用戶:wyc199288
資源簡(jiǎn)介:遺傳算法的Matlab程序,用于數(shù)值優(yōu)化
上傳時(shí)間: 2015-02-08
上傳用戶:a3318966
資源簡(jiǎn)介:遺傳算法的全部代碼!c編程源碼,有readme 和可執(zhí)性文件!
上傳時(shí)間: 2013-12-09
上傳用戶:D&L37
資源簡(jiǎn)介:遺傳算法的C代碼。如需使用可根據(jù)實(shí)際問題進(jìn)行修改。
上傳時(shí)間: 2014-12-04
上傳用戶:LouieWu
資源簡(jiǎn)介:遺傳算法的matlab程序庫(kù) 別人的辛勤勞動(dòng),請(qǐng)頂一下
上傳時(shí)間: 2015-05-03
上傳用戶:wweqas
資源簡(jiǎn)介:遺傳算法的matlab實(shí)現(xiàn)程序 多個(gè)實(shí)例與多種計(jì)算方法
上傳時(shí)間: 2015-05-25
上傳用戶:Andy123456
資源簡(jiǎn)介:BP神經(jīng)網(wǎng)絡(luò)算法的matlab代碼,本程序根據(jù)訓(xùn)練好的網(wǎng)絡(luò)文件ANN.mat預(yù)測(cè)新的數(shù)據(jù)文件,得到均方誤差,并畫出預(yù)測(cè)數(shù)據(jù)和原數(shù)據(jù)的對(duì)比圖。希望有用
上傳時(shí)間: 2014-06-14
上傳用戶:jiahao131
資源簡(jiǎn)介:提供了遺傳算法的一些代碼庫(kù)文件,國(guó)外下的很有用
上傳時(shí)間: 2013-12-20
上傳用戶:zhengzg
資源簡(jiǎn)介:基本遺傳算法的Matlab工具包,在Matlab環(huán)境下實(shí)現(xiàn)。
上傳時(shí)間: 2013-12-31
上傳用戶:jcljkh
資源簡(jiǎn)介:empirical mode decomposition(EMD)分解算法的matlab代碼
上傳時(shí)間: 2013-11-28
上傳用戶:小眼睛LSL
資源簡(jiǎn)介:我在此上傳的源代碼為遺傳算法的實(shí)現(xiàn)代碼程序運(yùn)行效果良好
上傳時(shí)間: 2013-12-30
上傳用戶:lanjisu111
資源簡(jiǎn)介:遺傳算法的matlab程序,包括三個(gè),cross,ga,myfun
上傳時(shí)間: 2014-01-18
上傳用戶:王者A
資源簡(jiǎn)介:一個(gè)不錯(cuò)的遺傳算法的實(shí)例,代碼比較好,調(diào)試方便
上傳時(shí)間: 2015-08-25
上傳用戶:zukfu
資源簡(jiǎn)介:遺傳算法的matlab語言程序,包括算法說明,和簡(jiǎn)單的應(yīng)用。
上傳時(shí)間: 2013-12-09
上傳用戶:hphh
資源簡(jiǎn)介:免疫算法的matlab代碼,應(yīng)該比較好用,謝謝支持!
上傳時(shí)間: 2013-12-02
上傳用戶:diets
資源簡(jiǎn)介:Least Square - ARMA 算法的MATLAB代碼, 是頻譜分析(通常是在高級(jí)DSP這門課中會(huì)用到的)的常用算法
上傳時(shí)間: 2013-12-21
上傳用戶:zhangjinzj
資源簡(jiǎn)介:MYW - ARMA 算法的MATLAB代碼, 是頻譜分析(通常是在高級(jí)DSP這門課中會(huì)用到的)的常用算法
上傳時(shí)間: 2013-12-21
上傳用戶:bruce5996
資源簡(jiǎn)介:這是一個(gè)關(guān)于遺傳算法的MATLAB程序,用于求某種函數(shù)的極值
上傳時(shí)間: 2014-01-17
上傳用戶:busterman
資源簡(jiǎn)介:關(guān)于遺傳算法的matlab程序,可實(shí)現(xiàn)gatool中的大部分功能。
上傳時(shí)間: 2014-01-25
上傳用戶:coeus
資源簡(jiǎn)介:有關(guān)the method of line即MOL算法的matlab代碼
上傳時(shí)間: 2015-12-21
上傳用戶:源碼3
資源簡(jiǎn)介:內(nèi)含遺傳算法的matlab 程序,有參考價(jià)值哦,趕快下載吧!
上傳時(shí)間: 2013-12-14
上傳用戶:lnnn30
資源簡(jiǎn)介:遺傳算法的matlab描述,上面有三幅算法結(jié)果的圖示
上傳時(shí)間: 2013-12-23
上傳用戶:1109003457
資源簡(jiǎn)介:詳細(xì)介紹遺傳算法的MATLAB程序 完全可以運(yùn)行 可用于對(duì)遺傳的算法的理解我相關(guān)的跟蹤中
上傳時(shí)間: 2014-01-04
上傳用戶:caozhizhi
資源簡(jiǎn)介:Leach分簇算法的matlab代碼,可以運(yùn)行,歡迎交流!
上傳時(shí)間: 2016-03-25
上傳用戶:JIUSHICHEN
資源簡(jiǎn)介:基2-FFT算法的Matlab代碼的實(shí)現(xiàn)。其中有一個(gè)子程序可以用Matlab內(nèi)部的程序來實(shí)現(xiàn),以提高程序的運(yùn)算速度。
上傳時(shí)間: 2014-02-20
上傳用戶:bcjtao