文/李鑫 張小兵 張舒瑋
傳統(tǒng)遺傳算法對種群所有個體采用相同的變異率且不隨種群代數(shù)變化,這樣使得如果采用較小變異率,會使得算法過快收斂,容易陷入局部最優(yōu)解,采用較大變異率又會導致算法收斂速度變慢,甚至不收斂。因而算法變異率的選擇十分困難。目前許多學者對傳統(tǒng)遺傳算法提出了改進,其采用大多數(shù)是針對種群個體特征來確定變異率從而使遺傳算法具有一定的自適應性,即當種群多樣性較好時采用小變異率,而種群多樣性差時采用大變異率。但是這種改進也存在明顯的缺陷,因為在進化的后期,種群個體若均收斂到最優(yōu)解,則種群多樣性較差,但如果此時讓采用較大變異率則使得收斂速度變慢,降低了算法的效率。本文嘗試在傳統(tǒng)遺傳算法基礎上,對變異率進行改進,增加隨種群代數(shù)變化的環(huán)境變異因子,以及針對每個個體適應度特征的適應度變異因子,二者共同決定種群變異率,從而使種群個體的變異率具有自適應特性,以提高算法全局搜索能力及收斂速度。
針對上述遺傳算法存在的問題,我們分析變異率是提高遺傳算法全局搜索能力以及提高收斂速度的關鍵。因此我們將改進的重點放在對種群個體變異率的控制上。
基于上述認識,我們在種群進化全過程采用遞減的變異率,進化初期變異率較高,之后隨代數(shù)遞減,在進化后期保持較低變異率,同時在種群內(nèi)部,針對每一個種群個體的適應度,在整體變異率的基礎上對每一個個體的變異率進行調(diào)整,使得適應度較高的個體變異率較小,適應度低的個體變異率較大。相應的提出了隨種群代數(shù)減小的環(huán)境變異因子與種群適應度變異因子,二者共同作用來確定種群個體的變異率,從而解決變異率與收斂速度之間的矛盾,提高算法的全局搜索能力和收斂速度。
1.1.1 環(huán)境變異因子
高變異率可以提高種群多樣性,對于遺傳算法來著則可提高全局搜索能力。環(huán)境所導致的變異率的高低對整個種群的變異率均有影響,屬于該種群的基礎變異率。所以我們設計了隨代數(shù)變化的環(huán)境變異因子,即假設環(huán)境存在一個變化過程,即隨著時間的推移能夠促進變異的因素逐漸減少,在進化的初期通過帶有一定隨機性的高變異率來提高整個種群的多樣性,從而提高算法的全局搜索能力。在進化的后期這種隨機性的變異率逐漸降低以提高算法的收斂速度。具體形式如下:
1.1.2 適應度變異因子
在一個種群中,個體之間的適應度存在差異,如果對每一個個體采用相同的變異率則會導致許多問題。對于適應度較高的個體,如果采用較高變異率則可能會導致其優(yōu)勢消失;而對于適應度較低的個體,如果采用的變異率過低,則會導致其進化速度緩慢,算法收斂速度降低。因而應對高適應度的個體采用較低變異率,對于適應度低的個體采用較高變高變異率以提高算法的收斂速度。具體形式如下:
種群個體的變異率由環(huán)境變異因子和適應度變異因子共同決定,采用乘積形式將二者組合起來得到針對于每一個種群個體的變異率,具體形式如下:
本文提出的改進的遺傳算法繼承了基本遺傳算法的流程,其中種群個體的編碼方式采用二進制編碼,選擇運算采用經(jīng)典的輪盤賭選擇方式,交叉操作采用單點交叉,交叉概率取Pc=0.7,變異運算采用位變異,變異率Pi,j為上述由環(huán)境變異因子和適應度變異因子共同決定的變異率。改進的遺傳算法流程如下:
(1)編碼:
(2)生成初始種群X={x1,x2,……xn}。
(3)判斷是否達到最大代數(shù),若達到則輸出當前種群,若未達到則執(zhí)行步驟(4)。
(4)計算初始種群個體的適應度fitj,隨機數(shù)種子使之隨時間變化。
(5)生成本代環(huán)境變異因子fei。
(6)進行輪盤賭選擇操作。
(7)對選擇完成的個體進行交叉生成下一代的預個體。
(8)對交叉完成生成的種群個體計算適應度fitj,并且根據(jù)每個個體的適應度不同生成適應度變異因子ffitj。
(9)根據(jù)本改進型遺傳算法變異概率計算的公式,計算出該代各個個體的變異率進行變異操作,采取保優(yōu)策略生成子代種群,返回步驟(3)。
本文選取了七個測試函數(shù)對改進的遺傳算法性能進行了測試。
為了檢驗本文所提出的改進型遺傳算法的全局搜索能力和收斂速度,將改進型遺傳算法與傳統(tǒng)遺傳算法進行了對比,通過七個測試函數(shù)來測試二者的性能,取種群分散度和最優(yōu)解為評價指標,種群分散度可以表征算法的收斂特性,最優(yōu)解可以表征算法的全局搜索能力。
兩種算法均采用固定代數(shù)500 代,即imax=500,兩種算法均進行20 次計算,所示計算結果為20 次計算的平均值,各測試函數(shù)計算計算結果如表1所示。
通過表1數(shù)據(jù)主要對比了七個測試函數(shù)分別使用傳統(tǒng)遺傳算法與改進型遺傳算法運行500 代之后得到的最優(yōu)結果以及種群的分散度。通過表格數(shù)據(jù)可以看出改進后的遺傳算法經(jīng)過500 代計算后得到的最優(yōu)解更接近標準全局最優(yōu)解,且種群的分散度較小,收斂性更好。
以F1函數(shù)為例具體分析改進型遺傳算法的進化過程與傳統(tǒng)遺傳算法的區(qū)別。二者進化過程中種群的分散度如圖1所示。
由種群分散度曲線可以看出,傳統(tǒng)遺傳算法在進化初期即快速收斂,使得種群的分散度急劇降低,并保持較低水平,但種群最終未能收斂至全局最優(yōu)點。而改進型算法在進化初期種群保持較大分散度以提高種群的全局搜索能力,在進化末期種群分散度減小,算法收斂至全局最優(yōu)解。同時結合表1數(shù)據(jù),改進型算法最終代數(shù)的分散度小于傳統(tǒng)遺傳算法,因而種群具有更好地收斂性,并且種群最終收斂至全局最優(yōu)解。因而證明改進型算法的全局搜索能力與收斂速度方面都有提高。
本文提出了一種改進型遺傳算法,通過對傳統(tǒng)遺傳算法中種群的變異率進行改進,得到了可以隨種群代數(shù)變化和種群個體適應度自適應變化的變異率。利用測試函數(shù)對算法的性能進行了測試,測試結果表明改進型遺傳算法在全局搜索能力和收斂速度方面均優(yōu)于傳統(tǒng)遺傳算法。將改進型遺傳算法應用于火炮內(nèi)彈道優(yōu)化設計中,也得到了更為優(yōu)異的優(yōu)化結果,優(yōu)化的效率有所提高。通過對所得方案進行正向計算與內(nèi)彈道理論曲線進行對比,驗證了方案可行性,從而也驗證了此改進型遺傳算法在內(nèi)彈道優(yōu)化設計中的適用性,為今后此算法在彈道領域中的應用奠定了基礎。
表1:測試函數(shù)結果表
圖1:種群分散度曲線