遺傳算法(Genetic Algorithm)是一類借鑒生物界的進(jìn)化規(guī)律(適者生存,優(yōu)勝劣汰遺傳機(jī)制)演化而來的隨機(jī)化搜索方法。
成都創(chuàng)新互聯(lián)公司專注于寧強(qiáng)企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站開發(fā)。寧強(qiáng)網(wǎng)站建設(shè)公司,為寧強(qiáng)等地區(qū)提供建站服務(wù)。全流程按需定制,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
遺傳算法(Genetic Algorithms簡稱GA)是由美國Michigan大學(xué)的John Holland教授于20世紀(jì)60年代末創(chuàng)建的。它來源于達(dá)爾文的進(jìn)化論和孟德爾、摩根的遺傳學(xué)理論,通過模擬生物進(jìn)化的機(jī)制來構(gòu)造人工系統(tǒng)。遺傳算法作為一種全局優(yōu)化方法,提供了一種求解復(fù)雜系統(tǒng)優(yōu)化問題的通用框架,它不依賴于問題的具體領(lǐng)域,對(duì)優(yōu)化函數(shù)的要求很低并且對(duì)不同種類的問題具有很強(qiáng)的魯棒性,所以廣泛應(yīng)用于計(jì)算機(jī)科學(xué)、工程技術(shù)和社會(huì)科學(xué)等領(lǐng)域。John Holland教授通過模擬生物進(jìn)化過程設(shè)計(jì)了最初的遺傳算法,我們稱之為標(biāo)準(zhǔn)遺傳算法。
標(biāo)準(zhǔn)遺傳算法流程如下:
1)初始化遺傳算法的群體,包括初始種群的產(chǎn)生以及對(duì)個(gè)體的編碼。
2)計(jì)算種群中每個(gè)個(gè)體的適應(yīng)度,個(gè)體的適應(yīng)度反映了其優(yōu)劣程度。
3)通過選擇操作選出一些個(gè)體,這些個(gè)體就是母代個(gè)體,用來繁殖子代。
4)選出的母代個(gè)體兩兩配對(duì),按照一定的交叉概率來進(jìn)行交叉,產(chǎn)生子代個(gè)體。
5)按照一定的變異概率,對(duì)產(chǎn)生的子代個(gè)體進(jìn)行變異操作。
6)將完成交叉、變異操作的子代個(gè)體,替代種群中某些個(gè)體,達(dá)到更新種群的目的。
7)再次計(jì)算種群的適應(yīng)度,找出當(dāng)前的最優(yōu)個(gè)體。
8)判斷是否滿足終止條件,不滿足則返回第3)步繼續(xù)迭代,滿足則退出迭代過程,第7)步中得到的當(dāng)前最優(yōu)個(gè)體,通過解碼,就作為本次算法的近似最優(yōu)解。
具體你可以到百度文庫去搜索遺傳算法相關(guān)的論文,很多的。
你也可以參考百度百科里對(duì)遺傳算法的介紹。
根據(jù)問題的目標(biāo)函數(shù)構(gòu)造一個(gè)適值函數(shù),對(duì)一個(gè)由多個(gè)解(每個(gè)解對(duì)應(yīng)一個(gè)染色體)構(gòu)成的種群進(jìn)行評(píng)估、遺傳、選擇,經(jīng)多代繁殖,獲得適應(yīng)值最好的個(gè)體作為問題的最優(yōu)解。
1,產(chǎn)生一個(gè)初始種群
2,根據(jù)問題的目標(biāo)函數(shù)構(gòu)造適值函數(shù)
3,根據(jù)適應(yīng)值的好壞不斷選擇和繁殖
4,若干代后得到適應(yīng)值最好的個(gè)體即為最優(yōu)解
1.種群和種群大小
一般越大越好,但是規(guī)模越大運(yùn)算時(shí)間越大,一般設(shè)為100~1000
2. 編碼方法 (基因表達(dá)方法
3. 遺傳算子
包括交叉和變異,模擬了每一代中創(chuàng)造后代的繁殖過程。是遺傳算法的精髓
交叉:性能在很大程度上取決于交叉運(yùn)算的性能,交叉率Pc:各代中交叉產(chǎn)生的后與代數(shù)與種群中的個(gè)體數(shù)的比。Pc越高,解空間就越大,越耗時(shí)/
變異:Pm:種群中變異基因數(shù)在總基因數(shù)中的百分比。它控制著新基因?qū)敕N群的比例。太低,一些有用的基因就難以進(jìn)入選擇;太高,后代就可能失去從雙親繼承下來的良好特性,也就失去了從過去中搜索的能力。
4.選擇策略
適者生存,優(yōu)勝劣汰
5.停止準(zhǔn)則
最大迭代數(shù)
初始種群的產(chǎn)生:隨機(jī)產(chǎn)生,具體依賴于編碼方法
編碼方法 :二進(jìn)制編碼法、浮點(diǎn)編碼法、符號(hào)編碼法。順序編碼,實(shí)數(shù)編碼,整數(shù)編碼。
適值函數(shù) :根據(jù)目標(biāo)函數(shù)設(shè)計(jì)
遺傳運(yùn)算 : 交叉 :單切點(diǎn)交叉,雙切點(diǎn)交叉,均勻交叉,算術(shù)交叉
變異 :基本位變異(Simple Mutation):對(duì)個(gè)體編碼串中以變異概率、隨機(jī)指定的某一位或某幾位僅因座上的值做變異運(yùn)算。
均勻變異(Uniform Mutation):分別用符合某一范圍內(nèi)均勻分布的隨機(jī)數(shù),以某一較小的概率來替換個(gè)體編碼串中各個(gè)基因座上的原有基因值。(特別適用于在算法的初級(jí)運(yùn)行階段)
邊界變異(Boundary Mutation):隨機(jī)的取基因座上的兩個(gè)對(duì)應(yīng)邊界基因值之一去替代原有基因值。特別適用于最優(yōu)點(diǎn)位于或接近于可行解的邊界時(shí)的一類問題。
非均勻變異:對(duì)原有的基因值做一隨機(jī)擾動(dòng),以擾動(dòng)后的結(jié)果作為變異后的新基因值。對(duì)每個(gè)基因座都以相同的概率進(jìn)行變異運(yùn)算之后,相當(dāng)于整個(gè)解向量在解空間中作了一次輕微的變動(dòng)。
高斯近似變異:進(jìn)行變異操作時(shí)用符號(hào)均值為P的平均值,方差為P**2的正態(tài)分布的一個(gè)隨機(jī)數(shù)來替換原有的基因值。
選擇策略 :1.輪盤賭選擇(Roulette Wheel Selection):是一種回放式隨機(jī)采樣方法。每個(gè)個(gè)體進(jìn)入下一代的概率等于它的適應(yīng)度值與整個(gè)種群中個(gè)體適應(yīng)度值和的比例。選擇誤差較大。
2.隨機(jī)競(jìng)爭(zhēng)選擇(Stochastic Tournament):每次按輪盤賭選擇一對(duì)個(gè)體,然后讓這兩個(gè)個(gè)體進(jìn)行競(jìng)爭(zhēng),適應(yīng)度高的被選中,如此反復(fù),直到選滿為止。
3.最佳保留選擇:首先按輪盤賭選擇方法執(zhí)行遺傳算法的選擇操作,然后將當(dāng)前群體中適應(yīng)度最高的個(gè)體結(jié)構(gòu)完整地復(fù)制到下一代群體中。
4.無回放隨機(jī)選擇(也叫期望值選擇Excepted Value Selection):根據(jù)每個(gè)個(gè)體在下一代群體中的生存期望來進(jìn)行隨機(jī)選擇運(yùn)算。方法如下:
(1) 計(jì)算群體中每個(gè)個(gè)體在下一代群體中的生存期望數(shù)目N。
(2) 若某一個(gè)體被選中參與交叉運(yùn)算,則它在下一代中的生存期望數(shù)目減去0.5,若某一個(gè)體未 被選中參與交叉運(yùn)算,則它在下一代中的生存期望數(shù)目減去1.0。
(3) 隨著選擇過程的進(jìn)行,若某一個(gè)體的生存期望數(shù)目小于0時(shí),則該個(gè)體就不再有機(jī)會(huì)被選中。
5.確定式選擇:按照一種確定的方式來進(jìn)行選擇操作。具體操作過程如下:
(1) 計(jì)算群體中各個(gè)個(gè)體在下一代群體中的期望生存數(shù)目N。
(2) 用N的整數(shù)部分確定各個(gè)對(duì)應(yīng)個(gè)體在下一代群體中的生存數(shù)目。
(3) 用N的小數(shù)部分對(duì)個(gè)體進(jìn)行降序排列,順序取前M個(gè)個(gè)體加入到下一代群體中。至此可完全確定出下一代群體中M個(gè)個(gè)體。
6.無回放余數(shù)隨機(jī)選擇:可確保適應(yīng)度比平均適應(yīng)度大的一些個(gè)體能夠被遺傳到下一代群體中,因而選擇誤差比較小。
7.均勻排序:對(duì)群體中的所有個(gè)體按期適應(yīng)度大小進(jìn)行排序,基于這個(gè)排序來分配各個(gè)個(gè)體被選中的概率。
8.最佳保存策略:當(dāng)前群體中適應(yīng)度最高的個(gè)體不參與交叉運(yùn)算和變異運(yùn)算,而是用它來代替掉本代群體中經(jīng)過交叉、變異等操作后所產(chǎn)生的適應(yīng)度最低的個(gè)體。
9.隨機(jī)聯(lián)賽選擇:每次選取幾個(gè)個(gè)體中適應(yīng)度最高的一個(gè)個(gè)體遺傳到下一代群體中。
10.排擠選擇:新生成的子代將代替或排擠相似的舊父代個(gè)體,提高群體的多樣性。
之前在網(wǎng)上看到的一個(gè)比方,覺得很有趣:
{
既然我們把函數(shù)曲線理解成一個(gè)一個(gè)山峰和山谷組成的山脈。那么我們可以設(shè)想所得到的每一個(gè)解就是一只袋鼠,我們希望它們不斷的向著更高處跳去,直到跳到最高的山峰。所以求最大值的過程就轉(zhuǎn)化成一個(gè)“袋鼠跳”的過程。
下面介紹介紹“袋鼠跳”的幾種方式。
爬山算法:一只袋鼠朝著比現(xiàn)在高的地方跳去。它找到了不遠(yuǎn)處的最高的山峰。但是這座山不一定是最高峰。這就是爬山算法,它不能保證局部最優(yōu)值就是全局最優(yōu)值。
模擬退火:袋鼠喝醉了。它隨機(jī)地跳了很長時(shí)間。這期間,它可能走向高處,也可能踏入平地。但是,它漸漸清醒了并朝最高峰跳去。這就是模擬退火算法。
遺傳算法:有很多袋鼠,它們降落到喜瑪拉雅山脈的任意地方。這些袋鼠并不知道它們的任務(wù)是尋找珠穆朗瑪峰。但每過幾年,就在一些海拔高度較低的地方射殺一些袋鼠。于是,不斷有袋鼠死于海拔較低的地方,而越是在海拔高的袋鼠越是能活得更久,也越有機(jī)會(huì)生兒育女。就這樣經(jīng)過許多年,這些袋鼠們竟然都不自覺地聚攏到了一個(gè)個(gè)的山峰上,可是在所有的袋鼠中,只有聚攏到珠穆朗瑪峰的袋鼠被帶回了美麗的澳洲。
}
(把那些總是愛走下坡路的袋鼠射殺,這就是遺傳算法的精粹?。?/p>
遺傳算法并不保證你能獲得問題的最優(yōu)解,但是使用遺傳算法的最大優(yōu)點(diǎn)在于你不必去了解和操心如何去“找”最優(yōu)解。(你不必去指導(dǎo)袋鼠向那邊跳,跳多遠(yuǎn)。)而只要簡單的“否定”一些表現(xiàn)不好的個(gè)體就行了。(把那些總是愛走下坡路的袋鼠射殺,這就是遺傳算法的精粹?。?/p>
改進(jìn)與變形
編碼方法:
遺傳算法的基本原理和方法
一、編碼
編碼:把一個(gè)問題的可行解從其解空間轉(zhuǎn)換到遺傳算法的搜索空間的轉(zhuǎn)換方法。
解碼(譯碼):遺傳算法解空間向問題空間的轉(zhuǎn)換。
二進(jìn)制編碼的缺點(diǎn)是漢明懸崖(Hamming Cliff),就是在某些相鄰整數(shù)的二進(jìn)制代碼之間有很大的漢明距離,使得遺傳算法的交叉和突變都難以跨越。
格雷碼(Gray Code):在相鄰整數(shù)之間漢明距離都為1。
(較好)有意義的積木塊編碼規(guī)則:所定編碼應(yīng)當(dāng)易于生成與所求問題相關(guān)的短距和低階的積木塊;最小字符集編碼規(guī)則,所定編碼應(yīng)采用最小字符集以使問題得到自然的表示或描述。
二進(jìn)制編碼比十進(jìn)制編碼搜索能力強(qiáng),但不能保持群體穩(wěn)定性。
動(dòng)態(tài)參數(shù)編碼(Dynamic Paremeter Coding):為了得到很高的精度,讓遺傳算法從很粗糙的精度開始收斂,當(dāng)遺傳算法找到一個(gè)區(qū)域后,就將搜索現(xiàn)在在這個(gè)區(qū)域,重新編碼,重新啟動(dòng),重復(fù)這一過程,直到達(dá)到要求的精度為止。
編碼方法:
1、 二進(jìn)制編碼方法
缺點(diǎn):存在著連續(xù)函數(shù)離散化時(shí)的映射誤差。不能直接反映出所求問題的本身結(jié)構(gòu)特征,不便于開發(fā)針對(duì)問題的專門知識(shí)的遺傳運(yùn)算算子,很難滿足積木塊編碼原則
2、 格雷碼編碼:連續(xù)的兩個(gè)整數(shù)所對(duì)應(yīng)的編碼之間僅僅只有一個(gè)碼位是不同的,其余碼位都相同。
3、 浮點(diǎn)數(shù)編碼方法:個(gè)體的每個(gè)基因值用某一范圍內(nèi)的某個(gè)浮點(diǎn)數(shù)來表示,個(gè)體的編碼長度等于其決策變量的位數(shù)。
4、 各參數(shù)級(jí)聯(lián)編碼:對(duì)含有多個(gè)變量的個(gè)體進(jìn)行編碼的方法。通常將各個(gè)參數(shù)分別以某種編碼方法進(jìn)行編碼,然后再將他們的編碼按照一定順序連接在一起就組成了表示全部參數(shù)的個(gè)體編碼。
5、 多參數(shù)交叉編碼:將各個(gè)參數(shù)中起主要作用的碼位集中在一起,這樣它們就不易于被遺傳算子破壞掉。
評(píng)估編碼的三個(gè)規(guī)范:完備性、健全性、非冗余性。
二、選擇
遺傳算法中的選擇操作就是用來確定如何從父代群體中按某種方法選取那些個(gè)體遺傳到下一代群體中的一種遺傳運(yùn)算,用來確定重組或交叉?zhèn)€體,以及被選個(gè)體將產(chǎn)生多少個(gè)子代個(gè)體。
常用的選擇算子:
1、 輪盤賭選擇(Roulette Wheel Selection):是一種回放式隨機(jī)采樣方法。每個(gè)個(gè)體進(jìn)入下一代的概率等于它的適應(yīng)度值與整個(gè)種群中個(gè)體適應(yīng)度值和的比例。選擇誤差較大。
2、 隨機(jī)競(jìng)爭(zhēng)選擇(Stochastic Tournament):每次按輪盤賭選擇一對(duì)個(gè)體,然后讓這兩個(gè)個(gè)體進(jìn)行競(jìng)爭(zhēng),適應(yīng)度高的被選中,如此反復(fù),直到選滿為止。
3、 最佳保留選擇:首先按輪盤賭選擇方法執(zhí)行遺傳算法的選擇操作,然后將當(dāng)前群體中適應(yīng)度最高的個(gè)體結(jié)構(gòu)完整地復(fù)制到下一代群體中。
4、 無回放隨機(jī)選擇(也叫期望值選擇Excepted Value Selection):根據(jù)每個(gè)個(gè)體在下一代群體中的生存期望來進(jìn)行隨機(jī)選擇運(yùn)算。方法如下
(1) 計(jì)算群體中每個(gè)個(gè)體在下一代群體中的生存期望數(shù)目N。
(2) 若某一個(gè)體被選中參與交叉運(yùn)算,則它在下一代中的生存期望數(shù)目減去0.5,若某一個(gè)體未被選中參與交叉運(yùn)算,則它在下一代中的生存期望數(shù)目減去1.0。
(3) 隨著選擇過程的進(jìn)行,若某一個(gè)體的生存期望數(shù)目小于0時(shí),則該個(gè)體就不再有機(jī)會(huì)被選中。
5、 確定式選擇:按照一種確定的方式來進(jìn)行選擇操作。具體操作過程如下:
(1) 計(jì)算群體中各個(gè)個(gè)體在下一代群體中的期望生存數(shù)目N。
(2) 用N的整數(shù)部分確定各個(gè)對(duì)應(yīng)個(gè)體在下一代群體中的生存數(shù)目。
(3) 用N的小數(shù)部分對(duì)個(gè)體進(jìn)行降序排列,順序取前M個(gè)個(gè)體加入到下一代群體中。至此可完全確定出下一代群體中M個(gè)個(gè)體。
6、無回放余數(shù)隨機(jī)選擇:可確保適應(yīng)度比平均適應(yīng)度大的一些個(gè)體能夠被遺傳到下一代群 體中,因而選擇誤差比較小。
7、均勻排序:對(duì)群體中的所有個(gè)體按期適應(yīng)度大小進(jìn)行排序,基于這個(gè)排序來分配各個(gè)個(gè)體被選中的概率。
8、最佳保存策略:當(dāng)前群體中適應(yīng)度最高的個(gè)體不參與交叉運(yùn)算和變異運(yùn)算,而是用它來代替掉本代群體中經(jīng)過交叉、變異等操作后所產(chǎn)生的適應(yīng)度最低的個(gè)體。
9、隨機(jī)聯(lián)賽選擇:每次選取幾個(gè)個(gè)體中適應(yīng)度最高的一個(gè)個(gè)體遺傳到下一代群體中。
10、排擠選擇:新生成的子代將代替或排擠相似的舊父代個(gè)體,提高群體的多樣性。
三、交叉
遺傳算法的交叉操作,是指對(duì)兩個(gè)相互配對(duì)的染色體按某種方式相互交換其部分基因,從而形成兩個(gè)新的個(gè)體。
適用于二進(jìn)制編碼個(gè)體或浮點(diǎn)數(shù)編碼個(gè)體的交叉算子:
1、單點(diǎn)交叉(One-point Crossover):指在個(gè)體編碼串中只隨機(jī)設(shè)置一個(gè)交叉點(diǎn),然后再該點(diǎn)相互交換兩個(gè)配對(duì)個(gè)體的部分染色體。
2、兩點(diǎn)交叉與多點(diǎn)交叉:
(1) 兩點(diǎn)交叉(Two-point Crossover):在個(gè)體編碼串中隨機(jī)設(shè)置了兩個(gè)交叉點(diǎn),然后再進(jìn)行部分基因交換。
(2) 多點(diǎn)交叉(Multi-point Crossover)
3、均勻交叉(也稱一致交叉,Uniform Crossover):兩個(gè)配對(duì)個(gè)體的每個(gè)基因座上的基因都以相同的交叉概率進(jìn)行交換,從而形成兩個(gè)新個(gè)體。
4、算術(shù)交叉(Arithmetic Crossover):由兩個(gè)個(gè)體的線性組合而產(chǎn)生出兩個(gè)新的個(gè)體。該操作對(duì)象一般是由浮點(diǎn)數(shù)編碼表示的個(gè)體。
四、變異
遺傳算法中的變異運(yùn)算,是指將個(gè)體染色體編碼串中的某些基因座上的基因值用該基因座上的其它等位基因來替換,從而形成以給新的個(gè)體。
以下變異算子適用于二進(jìn)制編碼和浮點(diǎn)數(shù)編碼的個(gè)體:
1、基本位變異(Simple Mutation):對(duì)個(gè)體編碼串中以變異概率、隨機(jī)指定的某一位或某幾位僅因座上的值做變異運(yùn)算。
2、均勻變異(Uniform Mutation):分別用符合某一范圍內(nèi)均勻分布的隨機(jī)數(shù),以某一較小的概率來替換個(gè)體編碼串中各個(gè)基因座上的原有基因值。(特別適用于在算法的初級(jí)運(yùn)行階段)
3、邊界變異(Boundary Mutation):隨機(jī)的取基因座上的兩個(gè)對(duì)應(yīng)邊界基因值之一去替代原有基因值。特別適用于最優(yōu)點(diǎn)位于或接近于可行解的邊界時(shí)的一類問題。
4、非均勻變異:對(duì)原有的基因值做一隨機(jī)擾動(dòng),以擾動(dòng)后的結(jié)果作為變異后的新基因值。對(duì)每個(gè)基因座都以相同的概率進(jìn)行變異運(yùn)算之后,相當(dāng)于整個(gè)解向量在解空間中作了一次輕微的變動(dòng)。
5、高斯近似變異:進(jìn)行變異操作時(shí)用符號(hào)均值為P的平均值,方差為P2的正態(tài)分布的一個(gè)隨機(jī)數(shù)來替換原有的基因值。
姓名:袁卓成;學(xué)號(hào):20021210612; 學(xué)院:電子工程學(xué)院
轉(zhuǎn)自
【嵌牛導(dǎo)讀】 本文介紹了各類多目標(biāo)優(yōu)化算法
【嵌牛鼻子】 ?多目標(biāo)優(yōu)化, pareto
【嵌牛提問】 多目標(biāo)優(yōu)化算法有哪些?
【嵌牛正文】
1)無約束和有約束條件;
2)確定性和隨機(jī)性最優(yōu)問題(變量是否確定);
3)線性優(yōu)化與非線性優(yōu)化(目標(biāo)函數(shù)和約束條件是否線性);
4)靜態(tài)規(guī)劃和動(dòng)態(tài)規(guī)劃(解是否隨時(shí)間變化)。
使多個(gè)目標(biāo)在給定區(qū)域同時(shí)盡可能最佳,多目標(biāo)優(yōu)化的解通常是一組均衡解(即一組由眾多 Pareto最優(yōu)解組成的最優(yōu)解集合 ,集合中的各個(gè)元素稱為 Pareto最優(yōu)解或非劣最優(yōu)解)。
①非劣解——多目標(biāo)優(yōu)化問題并不存在一個(gè)最優(yōu)解,所有可能的解都稱為非劣解,也稱為Pareto解。
②Pareto最優(yōu)解——無法在改進(jìn)任何目標(biāo)函數(shù)的同時(shí)不削弱至少一個(gè)其他目標(biāo)函數(shù)。這種解稱作非支配解或Pareto最優(yōu)解。
多目標(biāo)優(yōu)化問題不存在唯一的全局最優(yōu)解 ,過多的非劣解是無法直接應(yīng)用的 ,所以在求解時(shí)就是要尋找一個(gè)最終解。
(1)求最終解主要有三類方法:
一是求非劣解的生成法,即先求出大量的非劣解,構(gòu)成非劣解的一個(gè)子集,然后按照決策者的意圖找出最終解;(生成法主要有加權(quán)法﹑約束法﹑加權(quán)法和約束法結(jié)合的混合法以及多目標(biāo)遺傳算法)
二為交互法,不先求出很多的非劣解,而是通過分析者與決策者對(duì)話的方式,逐步求出最終解;
三是事先要求決策者提供目標(biāo)之間的相對(duì)重要程度,算法以此為依據(jù),將多目標(biāo)問題轉(zhuǎn)化為單目標(biāo)問題進(jìn)行求解。
(2)多目標(biāo)優(yōu)化算法歸結(jié)起來有傳統(tǒng)優(yōu)化算法和智能優(yōu)化算法兩大類。
傳統(tǒng)優(yōu)化算法包括加權(quán)法、約束法和線性規(guī)劃法等,實(shí)質(zhì)上就是將多目標(biāo)函數(shù)轉(zhuǎn)化為單目標(biāo)函數(shù),通過采用單目標(biāo)優(yōu)化的方法達(dá)到對(duì)多目標(biāo)函數(shù)的求解。
智能優(yōu)化算法包括進(jìn)化算法(Evolutionary Algorithm, 簡稱EA)、粒子群算法(Particle Swarm Optimization, PSO)等。
兩者的區(qū)別——傳統(tǒng)優(yōu)化技術(shù)一般每次能得到Pareo解集中的一個(gè),而用智能算法來求解,可以得到更多的Pareto解,這些解構(gòu)成了一個(gè)最優(yōu)解集,稱為Pareto最優(yōu)解(任一個(gè)目標(biāo)函數(shù)值的提高都必須以犧牲其他目標(biāo)函數(shù)值為代價(jià)的解集)。
①M(fèi)OEA通過對(duì)種群 X ( t)執(zhí)行選擇、交叉和變異等操作產(chǎn)生下一代種群 X ( t + 1) ;
②在每一代進(jìn)化過程中 ,首先將種群 X ( t)中的所有非劣解個(gè)體都復(fù)制到外部集 A ( t)中;
③然后運(yùn)用小生境截?cái)嗨阕犹蕹鼳 ( t)中的劣解和一些距離較近的非劣解個(gè)體 ,以得到個(gè)體分布更為均勻的下一代外部集 A ( t + 1) ;
④并且按照概率 pe從 A ( t + 1)中選擇一定數(shù)量的優(yōu)秀個(gè)體進(jìn)入下代種群;
⑤在進(jìn)化結(jié)束時(shí) ,將外部集中的非劣解個(gè)體作為最優(yōu)解輸出。
NSGA一II算法的基本思想:
(1)首先,隨機(jī)產(chǎn)生規(guī)模為N的初始種群,非支配排序后通過遺傳算法的選擇、交叉、變異三個(gè)基本操作得到第一代子代種群;
(2)其次,從第二代開始,將父代種群與子代種群合并,進(jìn)行快速非支配排序,同時(shí)對(duì)每個(gè)非支配層中的個(gè)體進(jìn)行擁擠度計(jì)算,根據(jù)非支配關(guān)系以及個(gè)體的擁擠度選取合適的個(gè)體組成新的父代種群;
(3)最后,通過遺傳算法的基本操作產(chǎn)生新的子代種群:依此類推,直到滿足程序結(jié)束的條件。
非支配排序算法:
考慮一個(gè)目標(biāo)函數(shù)個(gè)數(shù)為K(K1)、規(guī)模大小為N的種群,通過非支配排序算法可以對(duì)該種群進(jìn)行分層,具體的步驟如下:
通過上述步驟得到的非支配個(gè)體集是種群的第一級(jí)非支配層;
然后,忽略這些標(biāo)記的非支配個(gè)體,再遵循步驟(1)一(4),就會(huì)得到第二級(jí)非支配層;
依此類推,直到整個(gè)種群被分類。
擁擠度 ——指種群中給定個(gè)體的周圍個(gè)體的密度,直觀上可表示為個(gè)體。
擁擠度比較算子:
設(shè)想這么一個(gè)場(chǎng)景:一群鳥進(jìn)行覓食,而遠(yuǎn)處有一片玉米地,所有的鳥都不知道玉米地到底在哪里,但是它們知道自己當(dāng)前的位置距離玉米地有多遠(yuǎn)。那么找到玉米地的最佳策略,也是最簡單有效的策略就是是搜尋目前距離玉米地最近的鳥群的周圍區(qū)域。
基本粒子群算法:
粒子群由 n個(gè)粒子組成 ,每個(gè)粒子的位置 xi 代表優(yōu)化問題在 D維搜索空間中潛在的解;
粒子在搜索空間中以一定的速度飛行 , 這個(gè)速度根據(jù)它本身的飛行經(jīng)驗(yàn)和同伴的飛行經(jīng)驗(yàn)來動(dòng)態(tài)調(diào)整下一步飛行方向和距離;
所有的粒子都有一個(gè)被目標(biāo)函數(shù)決定的適應(yīng)值(可以將其理解為距離“玉米地”的距離) , 并且知道自己到目前為止發(fā)現(xiàn)的最好位置 (個(gè)體極值 pi )和當(dāng)前的位置 ( xi ) 。
粒子群算法的數(shù)學(xué)描述 :
每個(gè)粒子 i包含為一個(gè) D維的位置向量 xi = ( xi1, xi2, …, xiD )和速度向量 vi = ( vi1, vi2,…, viD ) ,粒子 i搜索解空間時(shí) ,保存其搜索到的最優(yōu)經(jīng)歷位置pi = ( pi1, pi2, …, piD ) 。在每次迭代開始時(shí) ,粒子根據(jù)自身慣性和經(jīng)驗(yàn)及群體最優(yōu)經(jīng)歷位置 pg = ( pg1, pg2, …, pgD )來調(diào)整自己的速度向量以調(diào)整自身位置。
粒子群算法基本思想:
(1)初始化種群后 ,種群的大小記為 N?;谶m應(yīng)度支配的思想 ,將種群劃分成兩個(gè)子群 ,一個(gè)稱為非支配子集 A,另一個(gè)稱為支配子集 B ,兩個(gè)子集的基數(shù)分別為 n1、n2 。
(2)外部精英集用來存放每代產(chǎn)生的非劣解子集 A,每次迭代過程只對(duì) B 中的粒子進(jìn)行速度和位置的更新 ;
(3)并對(duì)更新后的 B 中的粒子基于適應(yīng)度支配思想與 A中的粒子進(jìn)行比較 ,若 xi ∈B , ? xj ∈A,使得 xi 支配 xj,則刪除 xj,使 xi 加入 A 更新外部精英集 ;且精英集的規(guī)模要利用一些技術(shù)維持在一個(gè)上限范圍內(nèi) ,如密度評(píng)估技術(shù)、分散度技術(shù)等。
(4)最后 ,算法終止的準(zhǔn)則可以是最大迭代次數(shù) Tmax、計(jì)算精度ε或最優(yōu)解的最大凝滯步數(shù) Δt等。
文章標(biāo)題:遺傳最優(yōu)子代java代碼 遺傳算法java代碼
標(biāo)題路徑:http://jinyejixie.com/article18/dochgdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、App設(shè)計(jì)、移動(dòng)網(wǎng)站建設(shè)、域名注冊(cè)、全網(wǎng)營銷推廣、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)