本發(fā)明涉及計(jì)算機(jī)程序技術(shù)領(lǐng)域,包括人工智能,尤其涉及一種基于遺傳算法的全局優(yōu)化、搜索和機(jī)器學(xué)習(xí)方法。
背景技術(shù):
為了解決全局優(yōu)化、搜索和機(jī)器學(xué)習(xí)等技術(shù)問題,普通的遺傳算法利用達(dá)爾文的“適者生存”自然進(jìn)化法則,多次重復(fù)應(yīng)用了三個(gè)算子:選擇算子、交叉算子和變異算子,算法的搜索速度比較慢,搜索精度比較低;并且,遺傳算法的局部搜索能力較差,導(dǎo)致算法在進(jìn)化后期搜索效率低;在實(shí)際應(yīng)用中,遺傳算法容易產(chǎn)生早熟收斂的問題,采用何種選擇方法既要使優(yōu)良個(gè)體得以保留,又要維持群體的多樣性,一直是遺傳算法中較難解決的技術(shù)問題,限制了它在全局優(yōu)化、搜索和機(jī)器學(xué)習(xí)中產(chǎn)生更大的技術(shù)效果。
技術(shù)實(shí)現(xiàn)要素:
為了克服基于達(dá)爾文“適者生存”自然進(jìn)化法則的普通遺傳算法的上述技術(shù)問題,本發(fā)明將拉馬克獲得性遺傳原理和現(xiàn)代“表征遺傳學(xué)”與達(dá)爾文進(jìn)化論的“適者生存”自然法則相結(jié)合,構(gòu)造“獲得性遺傳優(yōu)化”技術(shù)方案和“獲得性遺傳算法”。首先,依據(jù)拉馬克獲得性遺傳自然法則,發(fā)明一個(gè)獲得性“遺傳算子”及其“重寫操作”方法,用來(lái)直接取代普通遺傳算法的兩個(gè)算子(即“選擇算子”和“交叉算子”),簡(jiǎn)化遺傳算法的結(jié)構(gòu),克服目前遺傳算法的多項(xiàng)技術(shù)缺陷,增強(qiáng)遺傳算法的全局最優(yōu)性和后期進(jìn)化的可持續(xù)性。其次,依據(jù)拉馬克用進(jìn)廢退自然法則,發(fā)明一個(gè)“用進(jìn)廢退算子”,可以用來(lái)取代普通遺傳算法中的先天變異算子,從而在同一代內(nèi)進(jìn)行后天的定向變異操作,使變異操作產(chǎn)生新的技術(shù)效果,提升遺傳算法的性能,使其解決全局優(yōu)化、搜索和機(jī)器學(xué)習(xí)等問題更多、更好。
一種基于拉馬克獲得性遺傳原理的全局優(yōu)化、搜索和機(jī)器學(xué)習(xí)方法,包括如下步驟:
步驟1:根據(jù)優(yōu)化、搜索和機(jī)器學(xué)習(xí)的問題對(duì)象構(gòu)造目標(biāo)函數(shù)f(x);
步驟2:根據(jù)問題對(duì)象的優(yōu)化需求,將問題對(duì)象編碼成遺傳算法的染色體,然后自動(dòng)計(jì)算或手動(dòng)輸入遺傳算法的運(yùn)行參數(shù),并進(jìn)行算法初始化;此處的遺傳算法為普通遺傳算法;
步驟3:根據(jù)問題對(duì)象的優(yōu)化需求,設(shè)第k代候選解種群為gk,且
(1)個(gè)體評(píng)價(jià):計(jì)算候選解種群gk中每一個(gè)染色體編碼
(2)執(zhí)行拉馬克獲得性遺傳算子重寫操作,產(chǎn)生臨時(shí)種群g′k+1,包括如下步驟:
(2a)根據(jù)交叉遺傳概率pc來(lái)從候選解種群gk中隨機(jī)選擇兩個(gè),然后比較兩個(gè)染色體編碼的目標(biāo)函數(shù)值fmm和fn的大小,并計(jì)算基因遺傳百分比pt:
pt=fm/(fm+fn),fm>fn
(2b)計(jì)算遺傳給下一代的基因數(shù)目nt為:
nt=l·pt;
l為基因串的長(zhǎng)度,pt為基因遺傳百分比;(如果計(jì)算出的nt不為整數(shù),則向上取整)
(2c)運(yùn)行遺傳算子,即執(zhí)行重寫操作:保留目標(biāo)函數(shù)值大的染色體編碼,將目標(biāo)函數(shù)值大的染色體上的nt個(gè)基因?qū)?yīng)重寫到目標(biāo)函數(shù)值小的染色體編碼的相應(yīng)位置上,形成新的染色體編碼。對(duì)應(yīng)重寫即將目標(biāo)函數(shù)值大的染色體編碼上的選擇位基因重寫到目標(biāo)函數(shù)值小的染色體編碼的相應(yīng)位置上,以此類推。
(2d)重復(fù)以上(2a)-(2c)過程pcs次,產(chǎn)生重寫操作之后的臨時(shí)種群g′k+1。s為種群大小,pc為交叉遺傳概率。
(3)使用拉馬克用進(jìn)廢退算子對(duì)臨時(shí)種群g′k+1執(zhí)行定向變異操作,獲得新候選解種群gk+1;變異算子即普通遺傳算法中的變異算子;
(4)重復(fù)迭代第(1)步到第(3)步,直到滿足預(yù)先設(shè)定的終止條件;
(5)評(píng)價(jià)解碼后該最優(yōu)解是否滿足此次優(yōu)化計(jì)算的要求,若滿足要求,獲取最終優(yōu)化解集;否則,修改運(yùn)行參數(shù),重新計(jì)算直到獲取最終優(yōu)化解集。
步驟4:輸出問題對(duì)象的最終優(yōu)化解集。
步驟2中,初始化的方法為:
(1)首先,根據(jù)遺傳算法的運(yùn)行模式,確定運(yùn)行參數(shù):候選解種群的大小s、變量維數(shù)d、變量取值范圍、交叉遺傳概率pc、變異算子中的內(nèi)部參數(shù);
(2)然后,根據(jù)優(yōu)化需要,對(duì)問題對(duì)象進(jìn)行編碼,形成個(gè)體基因串、染色體和候選解種群,確定基因串的長(zhǎng)度l。
(3)最后,根據(jù)問題對(duì)象的變量取值范圍進(jìn)行初始化,隨機(jī)產(chǎn)生一組初始候選解,當(dāng)k=0,每個(gè)染色體
在步驟2(2)中,對(duì)問題對(duì)象進(jìn)行編碼的方式為:如果d小于等于2,則選擇二進(jìn)制或十進(jìn)制編碼方法;如果d大于2,則選擇實(shí)數(shù)編碼方法。
目標(biāo)函數(shù)值為針對(duì)最大化問題的適應(yīng)度函數(shù)值或針對(duì)最小化問題的成本函數(shù)值。
在步驟3(1)中,個(gè)體評(píng)價(jià)使用多個(gè)處理器或多臺(tái)計(jì)算機(jī)。
在步驟3(2)中,拉馬克遺傳算子重寫操作時(shí)選取重寫的nt個(gè)基因?yàn)殡S機(jī)選取。
在步驟3(3)中,變異操作采用普通遺傳算法中的非定向變異方法,包括變異概率為pm的均勻變異方法,即不使用“用進(jìn)廢退算子”。
在步驟3(3)中,變異操作也可采用基于拉馬克“用進(jìn)廢退”自然法則的“用進(jìn)廢退算子”,即實(shí)施定向變異方法。
在步驟3(3)中,“用進(jìn)廢退算子”可以采用梯度優(yōu)化方法,如果梯度信息可以獲得的話。在可獲得梯度信息的情況下,根據(jù)梯度的符號(hào)和大小確定變異的方向和步長(zhǎng)的方法。
在步驟3(3)中,“用進(jìn)廢退算子”可以采用非梯度優(yōu)化方法。非梯度優(yōu)化方法包括爬山算法、退火算法、單純形方法(simplexmethod)、模式搜索(patternsearch)或鮑爾共軛定向法(powell'smethod)等。
在步驟3(2)和步驟3(3)中,每一代中的精英染色體編碼不受拉馬克遺傳算子和變異算子改變,即保留精英,不重寫與變異群體迄今為止參與進(jìn)化而出現(xiàn)的最好個(gè)體(也稱為精英個(gè)體,精英染色體編碼),而是在下一代中直接將其復(fù)制。確定精英的方法為普通遺傳算法的方法。
在步驟3(5)中,評(píng)價(jià)最優(yōu)解是否滿足此次優(yōu)化計(jì)算的要求,若滿足要求,運(yùn)算結(jié)束;否則,可以修改運(yùn)行參數(shù)中的運(yùn)行參數(shù)中的交叉遺傳概率pc或變異算子中的內(nèi)部參數(shù),重復(fù)步驟3,獲取問題對(duì)象的末代最優(yōu)解集。
在步驟3(5)中,評(píng)價(jià)最優(yōu)解是否滿足此次優(yōu)化計(jì)算的要求,若滿足要求,運(yùn)算結(jié)束;否則,還可以增大運(yùn)行參數(shù)中的種群大小和/或迭代次數(shù),重復(fù)步驟3,獲取問題對(duì)象的末代最優(yōu)解集。
在步驟2中確定的運(yùn)行參數(shù)中的交叉遺傳概率pc、變異算子中的內(nèi)部參數(shù),在步驟3的過程中,可以根據(jù)進(jìn)化狀態(tài)自動(dòng)調(diào)整。
在步驟2中,染色體中的基因編碼可以代表問題對(duì)象的結(jié)構(gòu)或結(jié)構(gòu)的數(shù)值參量。
通常,問題對(duì)象的構(gòu)成包括問題對(duì)象的結(jié)構(gòu)、每個(gè)結(jié)構(gòu)的數(shù)值參量和結(jié)構(gòu)之間的組合方式(其中有的用算數(shù)運(yùn)算符或邏輯運(yùn)算符表示)。在普通遺傳算法中,染色體上的基因編碼一般不是運(yùn)算符;在“遺傳編程”中,染色體上的基因編碼可以是運(yùn)算符。在本發(fā)明的步驟2中,問題對(duì)象的基因編碼可以是運(yùn)算符,從而使本發(fā)明的獲得性遺傳算法擴(kuò)展到“獲得性遺傳編程”,實(shí)現(xiàn)能使問題對(duì)象的結(jié)構(gòu)發(fā)生質(zhì)變的自由優(yōu)化。獲得性遺傳編程中的“遺傳算子”類似于普通遺傳編程的交叉操作,如圖4所示,但是染色體的樹狀“剪枝嫁接”是通過用獲得性遺傳算法中的重寫操作來(lái)來(lái)實(shí)現(xiàn)的。類似的,變異操作和“用進(jìn)廢退”可以將某一小分支由一個(gè)新的分支取代。因而,本發(fā)明的遺傳算子和用進(jìn)廢退算子在獲得性遺傳編程中的實(shí)現(xiàn)方式并沒有改變,但提高了遺傳編程的速度和精度。這樣,后天獲得性遺傳可以提高自由結(jié)構(gòu)優(yōu)化、自動(dòng)編程嘗試和機(jī)器學(xué)習(xí)功能。
本發(fā)明將拉馬克獲得性遺傳原理和現(xiàn)代表征遺傳學(xué)與達(dá)爾文進(jìn)化論的適者生存自然法則相結(jié)合,構(gòu)造獲得性遺傳優(yōu)化的技術(shù)方案、獲得性遺傳算法及獲得性遺傳編程方法;發(fā)明操作拉馬克獲得性遺傳自然法則的遺傳算子來(lái)直接取代普通遺傳算法的選擇算子和交叉算子;還發(fā)明操作拉馬克用進(jìn)廢退自然法則的用進(jìn)廢退算子來(lái)取代普通遺傳算法中的先天變異算子;從而在同一代內(nèi)進(jìn)行用進(jìn)廢退的后天定向變異,使變異操作產(chǎn)生新的技術(shù)效果,使更多的全局優(yōu)化、搜索和機(jī)器學(xué)習(xí)等問題得到更好的解決。具體呈現(xiàn)以下優(yōu)點(diǎn):
(1)優(yōu)化過程結(jié)構(gòu)簡(jiǎn)單,所需控制參數(shù)少,計(jì)算復(fù)雜度低,操作方便;
(2)增強(qiáng)了遺傳算法和遺傳編程的全局最優(yōu)性和后期進(jìn)化的可持續(xù)性;
(3)使全局優(yōu)化、搜索和機(jī)器學(xué)習(xí)等問題的最優(yōu)解集收斂更快,精度更高;
(4)具有更廣泛的應(yīng)用前景和領(lǐng)域:
1)復(fù)雜問題的優(yōu)化,不要求有明確的數(shù)學(xué)表達(dá)式,因此它是解決這類問題的有力工具;
2)復(fù)雜系統(tǒng)分析,應(yīng)用進(jìn)化計(jì)算從事聚類分析、模式識(shí)別、圖像處理、調(diào)度組織等工作,可將表面雜亂無(wú)章的復(fù)雜事物條理化;
3)自動(dòng)控制。進(jìn)化計(jì)算技術(shù)具有自適應(yīng)、自學(xué)習(xí)、自組織的智能行為,能夠適應(yīng)環(huán)境變化,減少波動(dòng),保證高的控制精度,保證控制的實(shí)時(shí)性和快速性;
4)硬件自動(dòng)設(shè)計(jì),它能對(duì)復(fù)雜電路設(shè)計(jì)和自適應(yīng)硬件領(lǐng)域提供一套全新的方法;
5)自動(dòng)程序設(shè)計(jì)?;谶z傳程序設(shè)計(jì)而開展的自動(dòng)程序設(shè)計(jì)方法,正在發(fā)展成進(jìn)化軟件的研究,即不必精確地告訴計(jì)算機(jī)具體怎樣去做,而由計(jì)算機(jī)自動(dòng)完成。
6)綜合應(yīng)用。和其他技術(shù)相結(jié)合,各自發(fā)揮特長(zhǎng),綜合解決問題。例如,將遺傳算法和人工神經(jīng)網(wǎng)絡(luò)相結(jié)合,解決了機(jī)器學(xué)習(xí)等問題。
附圖說明
圖1獲得性遺傳算法流程圖
圖2“遺傳算子”重寫操作流程圖
圖3一次重寫操作示意圖
圖4獲得性遺傳編程的“嫁接繁殖”示意圖
圖5本發(fā)明和普通遺傳算法在全局極小值(f1)優(yōu)化和極大值優(yōu)化(f2)中具體實(shí)施舉例的算法適應(yīng)度比較
圖6本發(fā)明和普通遺傳算法在全局極小值(f1)優(yōu)化和極大值優(yōu)化(f2)中具體實(shí)施舉例的算法精度比較
圖7神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)示意圖
圖8神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)2個(gè)變量異或問題示意圖
圖9最優(yōu)和平均函數(shù)值
圖10獲得輸出與輸入關(guān)系
圖11本發(fā)明的方法與其他粒子濾波算法在粒子數(shù)為10時(shí)的均方根誤差均值對(duì)比曲線示意圖
具體實(shí)施方式
實(shí)施測(cè)試
本實(shí)施測(cè)試通過選擇全局優(yōu)化、搜索和機(jī)器學(xué)習(xí)問題的標(biāo)準(zhǔn)函數(shù)對(duì)本發(fā)明和普通遺傳算法進(jìn)行性能測(cè)試和比較。標(biāo)準(zhǔn)函數(shù)以及相應(yīng)參數(shù)設(shè)置如表1所示:
表1全局優(yōu)化、搜索和機(jī)器學(xué)習(xí)問題的標(biāo)準(zhǔn)測(cè)試函數(shù)
1xinyao.evolutionaryprogrammingmadefaster.ieeetransevolutionarycomputation,1999,3(2):82-101.
2michalewicz,z..geneticalgorithms+datastructure=evolutionaryprograms,springer-verlag,berlin,1992.
通常,種群大小可以設(shè)置成變量數(shù)即維數(shù)的10倍,因此本實(shí)施的種群大小設(shè)為s=300,普通遺傳算法中交叉概率通常為pc=0.5,變異概率通常為pm=0.2。為了保持驗(yàn)證一致,本發(fā)明中的交叉遺傳概率也取0.5,變異概率取0.2。對(duì)每個(gè)測(cè)試函數(shù)分別獨(dú)立運(yùn)行30次。函數(shù)評(píng)價(jià)次數(shù)都為3×105。
對(duì)于兩個(gè)測(cè)試函數(shù),本發(fā)明提出的算法與普通遺傳算法搜索解的均值、標(biāo)準(zhǔn)差、最優(yōu)性以及精度結(jié)果分別如表2、表3所示:
表2全局優(yōu)化、搜索和機(jī)器學(xué)習(xí)問題的標(biāo)準(zhǔn)測(cè)試函數(shù)f1下搜索結(jié)果比較
表3全局優(yōu)化、搜索和機(jī)器學(xué)習(xí)問題的標(biāo)準(zhǔn)測(cè)試函數(shù)f2下搜索結(jié)果比較
由表2和表3的統(tǒng)計(jì)數(shù)據(jù)可以看出,本發(fā)明算法優(yōu)化的均值、標(biāo)準(zhǔn)差、最優(yōu)性和精度都要優(yōu)于普通遺傳算法,且在解的精度上要超出很多,與理論最優(yōu)值接近程度高。
圖5和圖6分別顯示了本發(fā)明和普通遺傳算法隨著函數(shù)評(píng)價(jià)次數(shù)變化的平均適應(yīng)度及平均搜索精度關(guān)系。從圖中可以看出,本發(fā)明算法在優(yōu)化測(cè)試函數(shù)f1和f2時(shí),得到的優(yōu)化解更接近于理論最優(yōu)解,同時(shí)本發(fā)明算法的搜索速度比普通遺傳算法也快很多。
綜上可以得出,本發(fā)明具有較高的優(yōu)化精度和較快的收斂速度。
為了便于公眾理解及使用本發(fā)明的技術(shù)方案,下面以兩個(gè)全局優(yōu)化、搜索和機(jī)器學(xué)習(xí)問題的應(yīng)用實(shí)例來(lái)進(jìn)行進(jìn)一步說明。
應(yīng)用實(shí)例1–基于簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)的異或機(jī)器學(xué)習(xí)問題
人工神經(jīng)網(wǎng)絡(luò)(artificialneuralnetworks,簡(jiǎn)寫為anns)也簡(jiǎn)稱為神經(jīng)網(wǎng)絡(luò)(nns),它是一種模仿動(dòng)物神經(jīng)網(wǎng)絡(luò)行為特征,進(jìn)行分布式并行信息處理和機(jī)器學(xué)習(xí)的算法模型。這種網(wǎng)絡(luò)依靠互聯(lián)的非線性神經(jīng)元節(jié)點(diǎn),通過調(diào)整節(jié)點(diǎn)之間相互連接的關(guān)系和權(quán)重,達(dá)到處理信息和學(xué)習(xí)、記憶的目的。圖7顯示了一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò),圓圈表示神經(jīng)元,輸入點(diǎn)“-1”被稱為偏置節(jié)點(diǎn)。神經(jīng)網(wǎng)絡(luò)最左邊的一層是輸入層,最右的一層是輸出層。中間所有節(jié)點(diǎn)組成隱藏層,我們不能在訓(xùn)練樣本集中直接觀測(cè)到它們的值。同時(shí)可以看到,該神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)的實(shí)施例子中,有2個(gè)輸入單元(偏置單元不計(jì)在內(nèi)),2個(gè)隱藏單元及一個(gè)輸出單元。
如圖8所示,這里用一個(gè)具有簡(jiǎn)單網(wǎng)絡(luò)的神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)2個(gè)變量的異或問題,來(lái)說明使用獲得性遺傳算法的機(jī)器學(xué)習(xí)情況,對(duì)尋找出實(shí)際而又有效的學(xué)習(xí)算法具有重要的示范意義。其中輸入神經(jīng)元為x1、x2,輸出為y,則異或問題的4種訓(xùn)練模型如表4所示。
表4異或問題的訓(xùn)練模型
輸入層神經(jīng)元到輸出層神經(jīng)元的連接權(quán)值共有9個(gè),記作wn,n=1,2,…,9。
利用本發(fā)明的全局優(yōu)化、搜索和機(jī)器學(xué)習(xí)技術(shù)方案解決神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)異或問題,訓(xùn)練網(wǎng)絡(luò)的權(quán)值wn,具體實(shí)施流程如圖1和圖2所示:
步驟1:根據(jù)異或問題構(gòu)造目標(biāo)函數(shù)f(w),w為權(quán)向量,即w={wn,n=1,2,…,9}。不失一般性,這里采用
步驟2:根據(jù)問題對(duì)象的優(yōu)化需求,自動(dòng)計(jì)算或手動(dòng)輸入普通遺傳算法的運(yùn)行參數(shù),將w編碼成染色體,并進(jìn)行初始化:
(1)首先,根據(jù)普通遺傳算法的運(yùn)行模式,s=90(一般可以取參數(shù)變量維數(shù)的10倍)、變量維數(shù)d=9、w取值范圍從-5到4.9、遺傳概率采用pc=0.6、變異概率采用pm=0.05;
(2)然后,對(duì)問題對(duì)象需要優(yōu)化的結(jié)構(gòu)及其參數(shù)進(jìn)行十進(jìn)制編碼,形成個(gè)體基因串、染色體和候選解種群,確定基因串的長(zhǎng)度l;這里采用兩位十進(jìn)制數(shù)描述權(quán)值的編碼方案,具體如表5所示,這樣基因串的長(zhǎng)度l=2×d=2×9=18。比如,w={w1,w2,w3,w4,w5,w6,w7,w8,w9}={-5,-4.9,-4.8,-4.7,0.0,4.6,4.7,4.8,4.9},則它的編碼格式為we={000102035096979899}。
表5權(quán)值的兩位十進(jìn)制編碼
(3)最后,根據(jù)問題對(duì)象的變量取值范圍進(jìn)行初始化,隨機(jī)產(chǎn)生一組初始候選解。當(dāng)k=0,每個(gè)染色體
步驟3:根據(jù)優(yōu)化需求,假設(shè)第k代種群為
(1)個(gè)體評(píng)價(jià):根據(jù)表4,訓(xùn)練輸入矩陣
(2)執(zhí)行拉馬克“遺傳算子”重寫操作產(chǎn)生新候選解種群g′k+1,如圖2所示,包括如下步驟:
(2a)根據(jù)交叉遺傳概率pc,隨機(jī)選擇兩個(gè)父代染色體(即父代候選解的基因串),即隨機(jī)產(chǎn)生一個(gè)(0,1]之間的隨機(jī)數(shù)r,如果r<pc,則選取兩個(gè)父代染色體,否則不選取,繼續(xù)產(chǎn)生隨機(jī)數(shù)r。例如
(2b)比較兩個(gè)染色體適應(yīng)度函數(shù)值
那么根據(jù)下式計(jì)算遺傳給下一代的基因數(shù)目nt為
(2c)運(yùn)行遺傳算子,執(zhí)行重寫操作:保留適應(yīng)度強(qiáng)的染色體,將適應(yīng)度強(qiáng)的染色體上的nt個(gè)基因?qū)?yīng)重寫到適應(yīng)度弱的染色體的相應(yīng)位置上,形成新的染色體。對(duì)應(yīng)重寫即將適應(yīng)度強(qiáng)的染色體上的選擇位基因重寫到適應(yīng)度弱的染色體的對(duì)應(yīng)位置上,以此類推,基本流程圖如圖2所示,一次重寫操作的示例如圖3所示(圖中未標(biāo)出所有編碼位)。根據(jù)上個(gè)步驟,那么
(2d)重復(fù)以上(2a)-(2c)過程pcs次,產(chǎn)生重寫操作之后新候選解的臨時(shí)種群g′k+1;
當(dāng)重寫次數(shù)大于或等于np=pcs(0.6×90=54;如果積不是整數(shù),則向上取整)時(shí),重寫操作結(jié)束,當(dāng)重寫次數(shù)小于54,繼續(xù)重復(fù)(2a)-(2c)。
(3)使用一個(gè)適當(dāng)?shù)摹白儺愃阕印?,?duì)臨時(shí)種群g′k+1執(zhí)行變異操作,獲得新候選解種群gk+1;這里的機(jī)器學(xué)習(xí)問題比較簡(jiǎn)單,因而此實(shí)例中沒有采用“用進(jìn)廢退”操作,而只需采用比較常用的普通遺傳算法中的先天均勻變異方法。因?yàn)樽儺惛怕蕄m=0.05,一次迭代后的新種群gk+1中將有90×18×0.05=81(如果積不是整數(shù),則向上取整)個(gè)編碼位獲得一個(gè)介于并包括0到9之間的新值。
(4)重復(fù)迭代第(1)步到第(3)步,直到滿足預(yù)先設(shè)定的終止條件。此處終止條件簡(jiǎn)單地設(shè)為進(jìn)化100代。
(5)評(píng)價(jià)解碼后該最優(yōu)解是否滿足此次優(yōu)化計(jì)算的要求,若滿足要求,運(yùn)算結(jié)束;否則,修改算法的運(yùn)行參數(shù),比如手動(dòng)修改交叉遺傳概率pc變異概率pm,或者增大種群大小和進(jìn)化迭代次數(shù),重新計(jì)算,獲取最終優(yōu)化結(jié)果。此處優(yōu)化計(jì)算的要求為f>0.95,圖9顯示已滿足要求。
步驟4:輸出問題對(duì)象的末代最優(yōu)解集w0。如圖8所示,也顯示了一個(gè)權(quán)值的最優(yōu)解集。
圖9和圖10分別顯示了本發(fā)明優(yōu)化神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)2變量異或機(jī)器學(xué)習(xí)的問題時(shí),迭代100次最優(yōu)和平均目標(biāo)函數(shù)值以及獲得的輸入輸出關(guān)系。從圖中可以看出,本發(fā)明算法在優(yōu)化神經(jīng)網(wǎng)絡(luò)異或問題權(quán)值時(shí),得到的輸出能較好地接近于期望輸出。
綜上可以得出,本發(fā)明的獲得性遺傳算法能很好地優(yōu)化神經(jīng)網(wǎng)絡(luò)、搜尋最優(yōu)權(quán)值和解決機(jī)器學(xué)習(xí)問題。
進(jìn)一步地,如圖7所示的網(wǎng)絡(luò)結(jié)構(gòu)也可以編碼入基因串,從而與權(quán)值同時(shí)優(yōu)化。
如果問題對(duì)象需求的網(wǎng)絡(luò)結(jié)構(gòu)更加復(fù)雜,可以實(shí)施獲得性遺傳編程,則網(wǎng)絡(luò)結(jié)構(gòu)還能得到更直接、更自由的優(yōu)化。
應(yīng)用實(shí)例2-信號(hào)處理問題
粒子濾波算法是非線性信號(hào)處理中的一個(gè)重要技術(shù),它不受系統(tǒng)模型特性和噪聲分布限制,從而比其它的濾波技術(shù)具有更廣泛的適用性。然而,粒子濾波算法的性能受自身粒子貧化問題的限制。利用本發(fā)明的算法解決粒子濾波算法重采樣過程的粒子匱乏問題,優(yōu)化粒子分布,使得粒子樣本更接近于真實(shí)后驗(yàn)概率密度樣本,提高濾波性能。
這里通過粒子濾波實(shí)現(xiàn)一個(gè)非線性動(dòng)態(tài)系統(tǒng)的狀態(tài)估計(jì),來(lái)說明使用獲得性遺傳算法的優(yōu)化粒子濾波處理信號(hào)情況,對(duì)尋找出性能優(yōu)越的非線性濾波算法具有重要的意義。其中系統(tǒng)的狀態(tài)空間模型如下:
xk+1=1+sin(0.04πk)+0.5xk+vk
其中,過程噪聲vk~gamma(3,2),觀測(cè)噪聲nk~n(0,0.00001)。設(shè)定觀測(cè)時(shí)間為70,運(yùn)行次數(shù)為200,粒子數(shù)n為10。
利用本發(fā)明的全局優(yōu)化、搜索和機(jī)器學(xué)習(xí)技術(shù)方案解決粒子濾波算法粒子貧化問題,優(yōu)化粒子分布,具體實(shí)施方式如下:
步驟1:根據(jù)非線性動(dòng)態(tài)系統(tǒng)的狀態(tài)估計(jì)問題構(gòu)造目標(biāo)函數(shù)f(x),這里選用粒子的權(quán)值函數(shù);
步驟2:根據(jù)問題對(duì)象的優(yōu)化需求,自動(dòng)計(jì)算或手動(dòng)輸入普通遺傳算法的運(yùn)行參數(shù),并進(jìn)行初始化:
(1)首先,根據(jù)普通遺傳算法的運(yùn)行模式,確定種群大小s=n=10,n為粒子數(shù)目、變量維數(shù)d=1、交叉遺傳概率pc=0.9、變異概率pm=0.05;
(2)然后,對(duì)問題對(duì)象需要優(yōu)化的結(jié)構(gòu)及其參數(shù)進(jìn)行編碼,形成個(gè)體基因串、染色體和候選種群,確定基因串的長(zhǎng)度l;這里采用固定有效位數(shù)lx=7的浮點(diǎn)數(shù)編碼每個(gè)重要性采樣粒子值,即系統(tǒng)的狀態(tài)值x,每個(gè)染色體表示一個(gè)粒子浮點(diǎn)數(shù)格式,浮點(diǎn)數(shù)值的第一位代表符號(hào)位,“1”代表正數(shù),“0”代表負(fù)數(shù),其中基因串長(zhǎng)度即為固定有效位數(shù),即l=d×lx=1×7。比如,k時(shí)刻第i個(gè)粒子狀態(tài)值x=10.4711那么它的浮點(diǎn)數(shù)編碼格式為xc=(1104711)。
(3)最后,根據(jù)問題對(duì)象的變量取值范圍進(jìn)行初始化,隨機(jī)產(chǎn)生一組初始候選解。這里就根據(jù)粒子自身初始化步驟隨機(jī)產(chǎn)生。當(dāng)k=0,每個(gè)染色體
步驟3:根據(jù)優(yōu)化需求,假設(shè)當(dāng)前(第k代)種群為
(1)個(gè)體評(píng)價(jià):根據(jù)粒子權(quán)值公式,計(jì)算種群gk中每一個(gè)個(gè)體
(2a)根據(jù)遺傳概率pc,隨機(jī)選擇兩個(gè)父代染色體(即父代候選解的基因串),例如
(2b)比較兩個(gè)染色體適應(yīng)度函數(shù)值
那么根據(jù)下式計(jì)算遺傳給下一代的基因數(shù)目nt為
nt=l·pt=7×3/5≈5(這里實(shí)施了向上取整)
(2c)運(yùn)行遺傳算子,執(zhí)行重寫操作:保留適應(yīng)度強(qiáng)的染色體,將適應(yīng)度強(qiáng)的染色體上的nt個(gè)基因?qū)?yīng)重寫到適應(yīng)度弱的染色體的相應(yīng)位置上,形成新的染色體。對(duì)應(yīng)重寫即將適應(yīng)度強(qiáng)的染色體上的選擇位基因重寫到適應(yīng)度弱的染色體的對(duì)應(yīng)位置上,以此類推,基本流程圖如圖2所示。根據(jù)上個(gè)步驟,那么
(2d)重復(fù)以上(2a)-(2c)過程pcs次,產(chǎn)生重寫操作之后新候選解的臨時(shí)種群g′k+1。
(3)使用一個(gè)適當(dāng)?shù)摹白儺愃阕印?,?duì)臨時(shí)種群g′k+1執(zhí)行變異操作,獲得新候選解種群gk+1;由于這里機(jī)器學(xué)習(xí)非線性濾波的問題相對(duì)復(fù)雜,因而此實(shí)例中考慮“變異算子”采用“用進(jìn)廢退”操作。
(3a)一般地,可以采用普通遺傳算法中比較常用的非定向的均勻變異方法。因?yàn)樽儺惛怕蕄m=0.05,一次迭代后的新種群gk+1中將共有10×7×0.05≈4(這里實(shí)施了向上取整)個(gè)編碼位進(jìn)行變異,其中如果隨機(jī)選擇的變異位是編碼的符號(hào)位,則按照普通遺傳算法的二進(jìn)制變異,即其可能由1變0,或由0變1。除去符號(hào)位的變異位獲得一個(gè)介于0到9之間的新值。
(3b)為了提高濾波算法的速度和精度,在此舉例說明普通遺傳算法中的非定向的“變異算子”怎樣采用獲得性遺傳算法中的定向的“用進(jìn)廢退”算子來(lái)實(shí)現(xiàn)。在這個(gè)應(yīng)用實(shí)例中,用非梯度優(yōu)化的爬山算法來(lái)實(shí)現(xiàn)“用進(jìn)廢退”操作。對(duì)新種群gk+1中的個(gè)體
(4)重復(fù)迭代以上步驟3中的第(1)步到第(3)步,直到滿足預(yù)先設(shè)定的終止條件。
(5)評(píng)價(jià)該最優(yōu)解是否滿足此次優(yōu)化計(jì)算的要求,若滿足要求,運(yùn)算結(jié)束;否則,修改算法的運(yùn)行參數(shù),增大種群大小和迭代次數(shù),重新計(jì)算,獲取最終優(yōu)化結(jié)果。
步驟4:輸出問題對(duì)象的末代最優(yōu)解集,即粒子集。
表6顯示了粒子數(shù)目n=10的情況下進(jìn)行200次蒙特卡羅實(shí)驗(yàn),統(tǒng)計(jì)本發(fā)明和其它幾種粒子濾波算法,即基本粒子濾波算法(pf),輔助粒子濾波算法(apf)和正則化粒子濾波算法(rpf),進(jìn)行均方根誤差(rmse)均值、rmse方差的比較結(jié)果。
表6:n為10的粒子濾波試驗(yàn)結(jié)果
圖11顯示了本發(fā)明與其它粒子濾波算法所產(chǎn)生的rmse均值隨時(shí)間變化圖。從表6和圖11都可以看出,本發(fā)明的獲得性遺傳算法能很好地優(yōu)化粒子濾波、搜尋最優(yōu)粒子集和解決非線性濾波問題。