版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
6.1遺傳算法的概念6.2一種適應(yīng)度函數(shù)的改進(jìn)算法6.3遺傳算法及其遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用仿真6.4小結(jié)
習(xí)題
遺傳算法(GeneticAlgorithms,GA)是一種基于自然選擇和基因遺傳學(xué)原理的優(yōu)化搜索方法。遺傳算法的創(chuàng)立有兩個(gè)目的:一是抽象和嚴(yán)謹(jǐn)?shù)亟忉屪匀唤绲倪m應(yīng)過程;二是為了將自然生物系統(tǒng)的重要機(jī)理運(yùn)用到工程系統(tǒng)、計(jì)算機(jī)系統(tǒng)或商業(yè)系統(tǒng)等人工系統(tǒng)的設(shè)計(jì)中。遺傳算法在計(jì)算機(jī)上模擬生物進(jìn)化過程和基因的操作,并不需要對(duì)象的特定知識(shí),也不需要對(duì)象的搜索空間是連續(xù)可微的,它具有全局尋優(yōu)的能力。一些用常規(guī)的優(yōu)化算法能有效解決的問題,采用遺傳算法尋優(yōu)技術(shù)往往能得到更好的結(jié)果。有些問題采用常規(guī)的優(yōu)化算法會(huì)陷入局部次優(yōu)點(diǎn),而采用遺傳算法可以找到全局最優(yōu)解。人們常把它用于許多領(lǐng)域
的實(shí)際問題,如函數(shù)優(yōu)化、自動(dòng)控制、圖像識(shí)別、機(jī)器學(xué)習(xí)等。目前,遺傳算法正在向其他學(xué)科和領(lǐng)域滲透,正在形成遺傳算法和神經(jīng)網(wǎng)絡(luò)或模糊控制相結(jié)合的新算法,從而構(gòu)成一種新型的智能控制系統(tǒng)整體優(yōu)化的結(jié)構(gòu)形式。本章討論遺傳算法的基本原理、操作、模式理論和計(jì)算機(jī)實(shí)現(xiàn)問題;在此基礎(chǔ)上,探討基于遺傳算法尋優(yōu)的軟件編程方法、基于遺傳算法神經(jīng)網(wǎng)絡(luò)辨識(shí)的軟件開發(fā),并給出了相應(yīng)的程序及其程序剖析。6.1.1遺傳算法的定義及特點(diǎn)
遺傳算法是JohnH.Holland根據(jù)生物進(jìn)化的模型提出的一種優(yōu)化算法。自然選擇學(xué)說是進(jìn)化論的中心內(nèi)容。根據(jù)進(jìn)化論,生物的發(fā)展進(jìn)化主要有三個(gè)原因,即遺傳、變異和選擇。6.1遺傳算法的概念
遺傳算法基于自然選擇和基因遺傳學(xué)原理的搜索方法,將“優(yōu)勝劣汰,適者生存”的生物進(jìn)化原理引入待優(yōu)化參數(shù)形成的編碼串群體中,按照一定的適配值函數(shù)及一系列遺
傳操作對(duì)各個(gè)體進(jìn)行篩選,從而使適配值高的個(gè)體被保留下來,組成新的群體;新群體包含上一代的大量信息,并且引入了新的優(yōu)于上一代的個(gè)體。這樣周而復(fù)始,群體中各個(gè)體
適應(yīng)度不斷提高,直至滿足一定的極限條件。此時(shí),群體中適配值最高的個(gè)體即為待優(yōu)化參數(shù)的最優(yōu)解。正是由于遺傳算法獨(dú)特的工作原理,使它能夠在復(fù)雜空間進(jìn)行全局優(yōu)化搜索,具有較強(qiáng)的魯棒性;另外,遺傳算法對(duì)于搜索空間,基本上不需要什么限制性的假設(shè)(如連續(xù)、可微及單峰等)。常規(guī)的優(yōu)化算法,如解析法,往往只能得到局部最優(yōu)解而非全局最優(yōu)解,且要求目標(biāo)函數(shù)連續(xù)光滑及可微;枚舉法雖然克服了這些缺點(diǎn),但計(jì)算效率太低,對(duì)于一個(gè)實(shí)際問題常常由于搜索空間太大而不能將所有的情況都搜索到;即使很著名的動(dòng)態(tài)規(guī)劃法,也遇到“指數(shù)爆炸”問題,它對(duì)于中等規(guī)模和適度復(fù)雜性的問題也常常無能為力。遺傳算法通過對(duì)參數(shù)空間編碼并用隨機(jī)選擇作為工具來引導(dǎo)搜索過程朝著更高效的方向發(fā)展。同常規(guī)優(yōu)化算法相比,遺傳算法有以下特點(diǎn):
(1)遺傳算法是對(duì)參數(shù)的編碼進(jìn)行操作,而不對(duì)參數(shù)本身。遺傳算法首先基于一個(gè)有限的字母表,把最優(yōu)化問題的自然參數(shù)集編碼為有限長(zhǎng)度的字符串。
(2)遺傳算法是從許多點(diǎn)開始并行操作的,而不局限于一點(diǎn),因而可以有效地防止搜索過程收斂與局部最優(yōu)解。
(3)遺傳算法通過目標(biāo)函數(shù)來計(jì)算適配值,而不需要其他推導(dǎo)和附加信息,從而對(duì)問題的依賴性較小。
(4)遺傳算法的尋優(yōu)規(guī)則是由概率決定的,而非確定性的。
(5)遺傳算法在解空間進(jìn)行高效啟發(fā)式搜索,而非盲目地窮舉或完全隨機(jī)搜索。
(6)遺傳算法對(duì)于待尋優(yōu)的函數(shù)基本無限制,它既不要求函數(shù)連續(xù),也不要求函數(shù)可微,既可以是數(shù)學(xué)解析式所表達(dá)的顯函數(shù),又可以是映射矩陣甚至是神經(jīng)網(wǎng)絡(luò)等隱函數(shù),因而應(yīng)用范圍較廣。
(7)遺傳算法具有并行計(jì)算的特點(diǎn),因而可通過大規(guī)模并行計(jì)算來提高計(jì)算速度。
(8)遺傳算法更適合大規(guī)模復(fù)雜問題的優(yōu)化。
(9)遺傳算法計(jì)算簡(jiǎn)單,功能強(qiáng)。6.1.2遺傳操作
1.基本術(shù)語
(1)位串:群體中的個(gè)體也叫位串,如0110、1100,其個(gè)體的位數(shù)為4。
(2)群體:一組位串,一組位串的個(gè)數(shù)可在4~30之間選擇。
(3)適應(yīng)度函數(shù):
(4)選擇概率:概率最大的個(gè)體復(fù)制,概率最小的個(gè)體變異或被復(fù)制的替代,其余的位串交叉操作。(6-2)
(5)期望復(fù)制概率:一般取
(6)期望變異概率:一般取最大的變異概率
(7)配對(duì):在交叉操作中的配對(duì)可隨機(jī)、任意配對(duì),或自己定義,也可采用輪盤賭的方法配對(duì)。
2.遺傳算法的基本操作
Holland的遺傳算法通常稱為簡(jiǎn)單遺傳算法。操作簡(jiǎn)單和覆蓋面廣是遺傳算法的兩個(gè)主要特點(diǎn)。一般的遺傳算法都包含三個(gè)基本操作:復(fù)制(ReproductionOperator)、交叉(CrossoverOperator)和變異(MutationOperator)。
復(fù)制、交叉、變異操作由種群的適配值或由適應(yīng)度函數(shù)的概率確定。
1)復(fù)制
復(fù)制(又稱繁殖),是從一個(gè)舊種群中(OldPopulation)選擇生命力強(qiáng)(即適配值大或選擇概率大)的個(gè)體位串(或稱字符串)(IndividualString)產(chǎn)生新種群的過程?;蛘哒f,復(fù)制是個(gè)體位串根據(jù)其目標(biāo)函數(shù)f(即適配值函數(shù))復(fù)制自己的過程。
例如給出一種群的初始位串:一組位串的個(gè)數(shù)為4,其中個(gè)體位串為5位,取適配值f(x)=x2,可以計(jì)算出選擇概率p=fi/∑fi,如表6-1所示。表6-1復(fù)制操作前后的各項(xiàng)數(shù)據(jù)
在表6-1中,由于取變異概率Pm=0.001,因而新一代用選擇概率最大的復(fù)制個(gè)體代替,即:
2)交叉
簡(jiǎn)單的交叉操作分兩步實(shí)現(xiàn)。在由等待配對(duì)的位串構(gòu)成的匹配池中,第一步是將新復(fù)制產(chǎn)生的位串個(gè)體隨機(jī)兩兩配對(duì);第二步是隨機(jī)地選擇交叉點(diǎn),對(duì)匹配的位串進(jìn)行交叉繁殖,產(chǎn)生一對(duì)新的位串。具體過程如下:
設(shè)位串的字符長(zhǎng)度為l,在[l,l-1]的范圍內(nèi),隨機(jī)地選取一個(gè)整數(shù)值k作為交叉點(diǎn)。將兩個(gè)配對(duì)位串從位置k后的所有字符進(jìn)行交換,從而生成兩個(gè)新的位串。例如,在表6-1中的兩個(gè)初始配對(duì)個(gè)體位串為A1和A2(取交叉點(diǎn)k=4)如下:
A1=0110|1
A2=1100|0
位串的字符長(zhǎng)度l=5,假定在1和4之間隨機(jī)選取一個(gè)值k(k=4,如分隔符“|”所示),經(jīng)交叉操作后產(chǎn)生了兩個(gè)新的字符串,即
=01100
=11001
一般的交叉操作過程可用圖6-1所示的方式進(jìn)行(取交叉點(diǎn)k=2)。圖6-1交叉操作
【例6-1】求使函數(shù)f(x)=x2在[0,31]上取得最大值的點(diǎn)x0。
(1)在區(qū)間[0,31]上的整參數(shù)x可用一個(gè)5位的二進(jìn)制位串進(jìn)行編碼,x的值直接對(duì)應(yīng)二進(jìn)制位串的數(shù)值:
x=000000
x=3111111
(2)用拋硬幣的方法隨機(jī)產(chǎn)生一個(gè)由4個(gè)位串組成的初始種群,見表6-1。
(3)計(jì)算適配值及選擇率:①對(duì)初始種群中的各個(gè)體位串解碼,得到相應(yīng)的參數(shù)x的值。
②由參數(shù)值計(jì)算目標(biāo)函數(shù)值f(x)=x2。
③由目標(biāo)函數(shù)值得到相應(yīng)個(gè)體位串的適配值(直接取目標(biāo)函數(shù)值)。
④計(jì)算相應(yīng)的選擇率(選擇復(fù)制的概率):。
⑤計(jì)算期望的復(fù)制數(shù),計(jì)算結(jié)果見表6-1。(4)復(fù)制,操作結(jié)果見表6-1。
(5)交叉,操作結(jié)果見表6-2。表6-2交叉操作前后的各項(xiàng)數(shù)據(jù)
(6)變異,取變異概率pm=0.001,則平均每1000位中才有一位變異。由4個(gè)位串組成的種群共有4×5=20位,則變異的期望值為20×0.001=0.02(位)。事實(shí)上,在我們的這個(gè)單代遺傳的試驗(yàn)中沒有變異發(fā)生。
(7)由表6-1和表6-2可以看出,雖然僅經(jīng)歷了一代遺傳,第二代的平均值及最大值卻比第一代的平均值及最大值有了很大提高,即
平均值292.5→438.5
最大值576→729
這說明經(jīng)過這樣的一次遺傳算法步驟,問題的解決便朝著最優(yōu)解的方向前進(jìn)了一步,只要這個(gè)過程繼續(xù)進(jìn)行下去,最終將走向全局最優(yōu)解,而每一步的操作卻非常簡(jiǎn)單,而且對(duì)問題的依賴性小。
3)變異
變異操作是從一個(gè)舊種群中選擇生命力弱(即適配值小或選擇概率小)的個(gè)體位串(或稱字符串)產(chǎn)生新種群的過程。如果取變異概率pm=0.07,表6-1的舊種群中的個(gè)體A3=01000,選擇概率為,該個(gè)體應(yīng)變異,其新一代變異前后為
復(fù)制及變異操作前后的各項(xiàng)數(shù)據(jù)如表6-3所示。表6-3復(fù)制及變異操作前后的各項(xiàng)數(shù)據(jù)
通過上面一個(gè)簡(jiǎn)單的例子可以看到,遺傳算法與多數(shù)常規(guī)的最優(yōu)化和搜索方法的區(qū)別主要表現(xiàn)在以下幾個(gè)方面:
(1)算法只對(duì)參數(shù)集的編碼進(jìn)行操作,而不是對(duì)參數(shù)本身進(jìn)行操作。
(2)遺傳算法是從許多初始點(diǎn)開始并行操作的,而不是在一個(gè)單點(diǎn)上進(jìn)行尋優(yōu),因而可以有效地防止搜索過程收斂于局部最優(yōu)解。
(3)遺傳算法通過目標(biāo)函數(shù)來計(jì)算適配值,而不需要其他的推導(dǎo)和附屬信息,從而對(duì)問題的依賴性較小。
(4)遺傳算法使用隨機(jī)轉(zhuǎn)換規(guī)則而不是確定性規(guī)則來工作,即具有隨機(jī)操作算子。
圖6-2是遺傳算法的工作示意圖。
在遺傳算法基礎(chǔ)上,可構(gòu)成遺傳算法神經(jīng)網(wǎng)絡(luò)(GeneticAlgorithmsNeuralNetwork)。圖6-2遺傳算法工作示意圖6.2.1適應(yīng)度函數(shù)的選擇與計(jì)算
在標(biāo)準(zhǔn)的遺傳算法中,基本上不用搜索空間知識(shí)或其它輔助信息,而僅用適應(yīng)度函數(shù)來評(píng)估個(gè)體,并在此基礎(chǔ)上進(jìn)行遺傳操作。遺傳算法不采用確定性的規(guī)則,而采用概率
的變遷規(guī)則來指導(dǎo)其搜索方向。另外,遺傳算法的處理對(duì)象不是參數(shù)本身,而是對(duì)參數(shù)集進(jìn)行了編碼的個(gè)體。該編碼操作使得遺傳算法可直接對(duì)結(jié)構(gòu)對(duì)象進(jìn)行操作。6.2一種適應(yīng)度函數(shù)的改進(jìn)算法
以上具有特色的操作和方法使得遺傳算法使用簡(jiǎn)單且易于并行化,具有較好的全局搜索性。因此,遺傳算法具有廣泛的應(yīng)用領(lǐng)域。但在使用遺傳算法時(shí),適應(yīng)度函數(shù)條件太寬松,不易設(shè)定,常要經(jīng)過多次試湊才能確定。因此,我們提出了一種改進(jìn)適應(yīng)度函數(shù)算法[7],在此基礎(chǔ)上,將這種改進(jìn)的遺傳算法和神經(jīng)網(wǎng)絡(luò)結(jié)合,構(gòu)成了一種新型遺傳神經(jīng)解耦控制器。仿真和實(shí)際的爐群多變量解耦實(shí)驗(yàn)驗(yàn)證了該方法的有效性。
1.適應(yīng)度函數(shù)的作用及其選擇方法
適應(yīng)度函數(shù)的評(píng)估是遺傳算法選擇交叉、變異操作的依據(jù)。該函數(shù)不僅不受連續(xù)可微的限制,而且其定義域可以任意設(shè)定。對(duì)于適應(yīng)度函數(shù)的唯一要求是其輸入目標(biāo)函數(shù)有正
的輸出。傳統(tǒng)的適應(yīng)度函數(shù)如式(6-1)所示。式中的Cmax可采用多種方式選擇,Cmax可以是一個(gè)合適的輸入值,也可以是在進(jìn)化過程中目標(biāo)函數(shù)g(x)的最大值或當(dāng)前群體中的最大值
。從式(6-1)分析,Cmax條件太寬松,不易設(shè)定。在遺傳算法中,對(duì)于同目標(biāo)函數(shù)g(x),若由不同的技術(shù)人員來設(shè)定,結(jié)果會(huì)多種多樣,差異甚大,無法判斷哪種結(jié)果最合理,從而直接影響到遺傳操作。
為防止遺傳算法中的隨機(jī)漫游現(xiàn)象,可通過放大相應(yīng)的適應(yīng)度函數(shù)的值來提高個(gè)體的競(jìng)爭(zhēng)力。這種對(duì)適應(yīng)度函數(shù)的調(diào)節(jié)稱之為定標(biāo)。自從DeJong開始引入適應(yīng)度函數(shù)定標(biāo)以來
,定標(biāo)已成為進(jìn)化過程中競(jìng)爭(zhēng)水平的重要標(biāo)志。定標(biāo)(線性)有以下形式:
fx(x)=af(x)+b
(6-3)
式中,fx(x)為定標(biāo)后的適應(yīng)度函數(shù),a和b可通過多種途徑設(shè)置,但必須滿足原適應(yīng)度函數(shù)f(x)是定標(biāo)后的適應(yīng)度函數(shù)f
x(x)的平均值,或定標(biāo)后的適應(yīng)度函數(shù)的最大值是原適應(yīng)度函數(shù)的指定倍數(shù)。除此之外,還有σ截?cái)喽?biāo)法、乘冪定標(biāo)法等都是適應(yīng)度函數(shù)的定標(biāo)方法。無論以上哪種適應(yīng)度函數(shù)的設(shè)定及其定標(biāo)形式,均有其不確定的參數(shù)(如Cmax、a、b、σ等),需要在實(shí)際遺傳操作中多次摸索或試湊才能確定。特別是Cmax,在遺傳操作中無規(guī)律可尋,給遺傳算法在工程中的應(yīng)用帶來很大不便。
2.適應(yīng)度函數(shù)的改進(jìn)設(shè)計(jì)與算法
1)適應(yīng)度函數(shù)的改進(jìn)設(shè)計(jì)
為了克服傳統(tǒng)的遺傳算法中適應(yīng)度函數(shù)的不確定性,并且讓適應(yīng)度函數(shù)f(x)隨著輸入空間個(gè)體的變化而變化,從而使適應(yīng)度函數(shù)能合理地評(píng)價(jià)個(gè)體,進(jìn)一步完成選擇、交叉、變異等操作,本文構(gòu)造以下改進(jìn)適應(yīng)度函數(shù):(6-4)(6-5)式中,gm是當(dāng)前輸入空間的個(gè)體最大值;E[g(x)]是n個(gè)目標(biāo)函數(shù)的均值。這里利用gm和E[g(x)]之差的歐氏范數(shù)再加上E[g(x)]作為C*,并以此取代式(6-1)中當(dāng)前合適的輸入值Cmax
,這樣不僅能保證適應(yīng)度函數(shù)f(x)為非負(fù)值,且使f(x)隨著輸入空間的個(gè)體的變化而變化。在遺傳算法中,對(duì)于同一目標(biāo)函數(shù)g(x),由不同的技術(shù)人員來設(shè)定,結(jié)果會(huì)統(tǒng)一,從而由該適應(yīng)度函數(shù)f(x)來牽制遺傳操作,使得遺傳操作趨于更合理。
2)適應(yīng)度函數(shù)改進(jìn)算法
改進(jìn)適應(yīng)度函數(shù)將作為遺傳神經(jīng)解耦控制器的一個(gè)子程序。求取子程序的步驟如下:
(1)從主程序讀個(gè)體xi,計(jì)算目標(biāo)函數(shù)gi(x)。
(2)求gi(x)的均值,計(jì)算sum=sum+gi(x),并求E[gi(x)]=sum/i。
(3)判斷gx(x)<gi(x)是否成立。若是,gm(x)=gi(x);若否,直接轉(zhuǎn)(4)。
(4)根據(jù)式(6-5)計(jì)算
(5)根據(jù)式(6-1),求取適應(yīng)度函數(shù)f(x)。
(6)返回主程序。6.2.2一種改進(jìn)的遺傳神經(jīng)解耦方法
將式(6-3)、式(6-4)改進(jìn)適應(yīng)度函數(shù)用于遺傳操作,該遺傳算法和BP神經(jīng)網(wǎng)絡(luò)結(jié)合,構(gòu)成一種改進(jìn)適應(yīng)度函數(shù)的遺傳神經(jīng)解耦控制器。這種控制器既繼承了遺傳算法的“較好的全局搜索性”,又發(fā)揚(yáng)了神經(jīng)網(wǎng)絡(luò)“對(duì)非線性有較強(qiáng)的逼近能力”的特點(diǎn),因此,可以用于復(fù)雜的非線性多變量系統(tǒng)控制。該控制器的算法如下:
(1)對(duì)神經(jīng)網(wǎng)絡(luò)的權(quán)值、閾值、反傳誤差ε、循環(huán)次數(shù)M賦值。
(2)計(jì)算神經(jīng)網(wǎng)絡(luò)的輸出(見式(6-8))。
(3)調(diào)用改進(jìn)適應(yīng)度函數(shù)的遺傳算法子程序,修正神經(jīng)網(wǎng)絡(luò)權(quán)值。
(4)判斷反傳誤差是否小于等于ε。若是,結(jié)束算法。
(5)判斷循環(huán)次數(shù)是否為M。若是,結(jié)束;若否,轉(zhuǎn)(2)。
(6)結(jié)束。改進(jìn)適應(yīng)度函數(shù)的遺傳算法主程序包括:
(1)根據(jù)要解決實(shí)際問題被控量相應(yīng)的動(dòng)態(tài)調(diào)節(jié)系數(shù)或要逼近的函數(shù)的自變量,通過編碼,產(chǎn)生初始群體;設(shè)定目標(biāo)函數(shù)g(x);賦終結(jié)條件值。
(2)調(diào)用改進(jìn)適應(yīng)度函數(shù)f(x)求取子程序。
(3)執(zhí)行選擇、交叉、變異遺傳操作。
(4)統(tǒng)計(jì)結(jié)果,群體更新;計(jì)算種群大小和遺傳操作的概率。
(5)將二進(jìn)制的碼譯成十進(jìn)制的數(shù),輸出結(jié)果解決實(shí)際問題。
(6)判斷終結(jié)條件到否。若否,轉(zhuǎn)(2);若到,結(jié)束。將系統(tǒng)的解耦控制誤差作為被控量。為防止遺傳算法操作中個(gè)體太長(zhǎng),計(jì)算量大的問題,這里采用單神經(jīng)元解耦控制的方案,輸入xj(i)為三維列向量,它們分別是誤差e(i)、誤差的變化率Δe(i)及誤差關(guān)系式e(i)-2e(i-1)+e(i-2)。由遺傳算法操作來完成權(quán)值矩陣w(i)的修正,
w(i)=[w1
w2
w3
θ]T,其中w1、w2、w3分別是三個(gè)輸入量到單神經(jīng)元的權(quán)值,θ為單神經(jīng)元的閾值。如果認(rèn)為權(quán)值在-16~+16之間,對(duì)三個(gè)權(quán)值和閾值各用4位二進(jìn)制碼串表示,依次連接在一起形成一個(gè)應(yīng)用于遺傳算法的個(gè)體,該個(gè)體為16位的二進(jìn)制碼串。各連接權(quán)的字符串值和實(shí)際權(quán)值之間有如式(6-6)所示的關(guān)系,其閾值也有相同的關(guān)系:(6-6)式中,binreplace(i)是經(jīng)過遺傳操作后,權(quán)值或閾值的4位二進(jìn)制碼對(duì)應(yīng)的十進(jìn)制數(shù),并用oi代替;目標(biāo)函數(shù)選均方差值,即;適應(yīng)度函數(shù)采用改進(jìn)適應(yīng)度函數(shù)的求取子程序計(jì)算。
在執(zhí)行選擇、交叉、變異遺傳操作時(shí),選擇繼承的概率,即評(píng)價(jià)各個(gè)權(quán)值和閾值,對(duì)應(yīng)適應(yīng)度函數(shù)的選擇概率為(6-7)式中N為群體中包含個(gè)體的個(gè)數(shù),選N=60,對(duì)該個(gè)體為16位的二進(jìn)制碼串進(jìn)行一點(diǎn)交叉。在實(shí)際訓(xùn)練中,將選擇概率較大的20%,即前12個(gè)個(gè)體直接遺傳給下一代。選擇概率小于0.001的個(gè)體隨機(jī)異變16位中的任意位。選擇概率大于0.001同時(shí)處在13以后的個(gè)體碼串進(jìn)行一點(diǎn)交叉,這樣進(jìn)行遺傳操作后,再利用式(6-6)將該個(gè)體為16位的二進(jìn)制碼串
譯成相應(yīng)的權(quán)值和閾值,然后經(jīng)過sigmoid函數(shù)激勵(lì)可得(6-8)式中,yo(i)是單神經(jīng)元的輸出;θi為第i次遺傳操作時(shí)單神經(jīng)元的閾值;u(i)是直接加在被控對(duì)象上的輸入值。6.2.3遺傳神經(jīng)解耦仿真、實(shí)驗(yàn)及結(jié)論
針對(duì)多變量燃燒系統(tǒng)中的一個(gè)子系統(tǒng),其離散模型為
(6-9)
式中,yi±1(i-1)為相鄰的燃燒點(diǎn)即其它子系統(tǒng)對(duì)該子系統(tǒng)的影響,據(jù)統(tǒng)計(jì),其為幅值約是yi(i)的1/10的非線性函數(shù)[7]。針對(duì)上述多變量燃燒系統(tǒng),對(duì)于兩個(gè)相鄰的子系統(tǒng),利用MATLAB語言(離線仿真用MATLAB編程)和C語言結(jié)合(在實(shí)測(cè)時(shí)及控制接口用C編程),上機(jī)仿真,兩個(gè)相鄰的子系統(tǒng)給定溫度分別為yp1=60℃,yp2=90℃,先用常規(guī)的PI算法,并令式(6-9)的d=0,仿真結(jié)果如圖6-3所示;然后采用改進(jìn)適應(yīng)度函數(shù)的遺傳神經(jīng)解耦控制器,令式(6-9)的d=0.05,仿真結(jié)果如圖6-4所示。圖中“-”曲線為給定溫度;“×”曲線為子系統(tǒng)1的輸出yo1;“○”曲線為子系統(tǒng)2的輸出yo2。圖6-4中的wd為隨機(jī)噪聲曲線,模仿子系統(tǒng)之間的耦合信號(hào),代替相鄰的燃燒點(diǎn)即其它子系統(tǒng)對(duì)該子系統(tǒng)的影響,分別加在各子系統(tǒng)中。在同樣給定溫度下,采用改進(jìn)適應(yīng)度函數(shù)的遺傳神經(jīng)解耦控制器對(duì)多變量非線性系統(tǒng)解耦控制,并實(shí)測(cè)溫度,表6-4是兩個(gè)實(shí)際相鄰燃燒子系統(tǒng)實(shí)測(cè)的溫度值。
圖6-3常規(guī)的PI算法解耦仿真(d=0時(shí))圖6-4改進(jìn)遺傳神經(jīng)解耦仿真(d=0.05時(shí))表6-4兩個(gè)實(shí)際相鄰的燃燒子系統(tǒng)在60℃、90℃給定溫度采用改進(jìn)遺傳神經(jīng)解耦的實(shí)測(cè)溫度以上分析、仿真及爐群實(shí)驗(yàn)證明,采用改進(jìn)適應(yīng)度函數(shù)的遺傳神經(jīng)解耦控制器對(duì)多變量非線性解耦控制優(yōu)于傳統(tǒng)的PI控制,效果良好。6.3.1遺傳算法尋優(yōu)MATLAB仿真
【例6-2】用遺傳算法求下列函數(shù)的最大值:
f(x)=10cos3x-4x,x∈[0,10]
解將x
的值用一個(gè)10位的二值形式碼串表示。
編程如下(該程序包括1個(gè)主程序和9個(gè)子程序,采用M函數(shù)文件編程):6.3遺傳算法及其遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用仿真
%遺傳算法主程序(在光盤上對(duì)應(yīng)的程序名為FLch6eg1)
clear
clf
popsize=20;
%設(shè)置初始參數(shù),群體大小
chromlength=10;%字符串長(zhǎng)度(個(gè)體長(zhǎng)度),染色體長(zhǎng)度
pc=0.6;%設(shè)置交叉概率,本例中交叉概率是定值,若想設(shè)置變
%化的交叉概
率可用表達(dá)式表示,或自定義一個(gè)交叉概
%率函數(shù),例如用神經(jīng)網(wǎng)絡(luò)訓(xùn)練得到的值作為交叉概率
pm=0.001;
%設(shè)置變異概率,同理也可設(shè)置為變化的變異概率
pop=initpop(popsize,chromlength);%運(yùn)行初始化函數(shù),隨機(jī)產(chǎn)生初始群體
fori=1:30%30為迭代次數(shù)
[objvalue]=calobjvalue(pop);
%計(jì)算目標(biāo)函數(shù)
fitvalue=calfitvalue(objvalue);
%計(jì)算群體中每個(gè)個(gè)體的適應(yīng)度
[newpop]=selection(pop,fitvalue);
%復(fù)制
[newpop]=crossover(pop,pc);%交叉
[newpop]=mutation(pop,pc);%變異
[bestindividual,bestfit]=best(pop,fitvalue);%求出群體中適應(yīng)值最大的個(gè)體及其適應(yīng)值
y(i)=max(bestfit);
n(i)=i;
pop5=bestindividual;
x(i)=decodechrom(pop5,1,chromlength)*10/1023;
pop=newpop;
end
y(i)fplot('10*cos(3*x)-4*x)',[010])
gridon
holdon
plot(x,y,'g*')
holdoff
%2.1初始化(編碼)(子程序名:initpop.m)
%initpop.m函數(shù)的功能是實(shí)現(xiàn)群體的初始化,popsize表示群體的大小,chromlength表示染
%色體的長(zhǎng)度(二值數(shù)的長(zhǎng)度),長(zhǎng)度大小取決于變量的二進(jìn)制編碼的長(zhǎng)度(在本例中取10位)。
functionpop=initpop(popsize,chromlength)pop=round(rand(popsize,chromlength));%rand隨機(jī)產(chǎn)生每個(gè)單元為{0,1}行數(shù)為popsize,
%列數(shù)為chromlength的矩陣,%roud對(duì)矩陣的每個(gè)單元進(jìn)行圓整。
%2.2計(jì)算目標(biāo)函數(shù)值
%2.2.1將二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)(1)(子程序名:decodebinary.m)
%產(chǎn)生[2^n2^(n-1)...1]的行向量,然后求和,將二進(jìn)制轉(zhuǎn)化為十進(jìn)制
functionpop2=decodebinary(pop)
[px,py]=size(pop);%求pop行和例數(shù)
fori=1:py
pop1(:,i)=2.^(py-1).*pop(:,i);%pop的每一個(gè)行向量(二進(jìn)制表示),for循環(huán)語句將每
%個(gè)二進(jìn)制行向量按位置
py=py-1;%乘上權(quán)重
endpop2=sum(pop1,2);%求pop1的每行之和,即得到每行二進(jìn)制表示變?yōu)槭M(jìn)制%表示值,實(shí)現(xiàn)二進(jìn)制到十進(jìn)制的轉(zhuǎn)變
%2.2.2將二進(jìn)制編碼轉(zhuǎn)化為十進(jìn)制數(shù)(2),(子程序名:decodechrom.m)
%decodechrom.m函數(shù)的功能是將染色體(或二進(jìn)制編碼)轉(zhuǎn)換為十進(jìn)制,參數(shù)spoint表示待解碼的二進(jìn)制串的起始位置
%(對(duì)于多個(gè)變量而言,如有兩個(gè)變量,采用20位表示,每個(gè)變量10位,則第一個(gè)變量從1開始,另一個(gè)變量從11開始。本例為1)[newpop]=crossover(pop,pc);
%交叉
[newpop]=mutation(pop,pc);
%變異
[bestindividual,bestfit]=best(pop,fitvalue);
%求出群體中適應(yīng)值最大的個(gè)體
及其適應(yīng)值
y(i)=max(bestfit);
n(i)=i;
pop5=bestindividual;
x(i)=decodechrom(pop5,1,chromlength)*10/1023;
pop=newpop;
end
y(i)%參數(shù)1ength表示所截取的長(zhǎng)度(本例為10)。
%Name:decodechrom.m
%將二進(jìn)制編碼轉(zhuǎn)換成十進(jìn)制
functionpop2=decodechrom(pop,spoint,length)
pop1=pop(:,spoint:spoint+length-1);%將從第“spoint”位開始到第“spoint+length-1”%位(這段碼位表示一個(gè)參數(shù))取出
pop2=decodebinary(pop1);%利用上面函數(shù)“decodebinary(pop)”將用二進(jìn)制表示的個(gè)體%基因變?yōu)槭M(jìn)制數(shù)%2.2.3計(jì)算目標(biāo)函數(shù)值,(子程序名:calobjvalue.m)
%calobjvalue.m函數(shù)的功能是實(shí)現(xiàn)目標(biāo)函數(shù)的計(jì)算,其公式采用本文示例仿真,可根據(jù)不同%優(yōu)化問題予以修改,實(shí)現(xiàn)目標(biāo)函數(shù)的計(jì)算
function[objvalue]=calobjvalue(pop)
temp1=decodechrom(pop,1,10);%將pop每行轉(zhuǎn)化成十進(jìn)制數(shù)
x=temp1*10/1023;%將二值域中的數(shù)轉(zhuǎn)化為變量域的數(shù)
objvalue=10*cos(3*x)-4*x;%計(jì)算目標(biāo)函數(shù)值
%2.3計(jì)算個(gè)體的適應(yīng)值(子程序名:calfitvalue.m)functionfitvalue=calfitvalue(objvalue)
globalCmin;
Cmin=0;
[px,py]=size(objvalue);
fori=1:px
ifobjvalue(i)+Cmin>0
temp=Cmin+objvalue(i);
else
temp=0.0;
end
fitvalue(i)=temp;
end
fitvalue=fitvalue';%2.4選擇復(fù)制(子程序名:selection.m)
%選擇或復(fù)制操作是決定哪些個(gè)體可以進(jìn)入下一代。程序中采用賭輪盤選擇法選擇,這種方%法較易實(shí)現(xiàn)。
%根據(jù)方程pi=fi/∑fi=fi/fsum,選擇步驟:
%1)在第t代,由(1)式計(jì)算fsum和pi
%2)產(chǎn)生{0,1}的隨機(jī)數(shù)rand(.),求s=rand(.)*fsum
%3)求∑fi≥s中最小的k,則第k個(gè)個(gè)體被選中
%4)進(jìn)行N次2)、3)操作,得到N個(gè)個(gè)體,成為第t=t+1代種群
%遺傳算法子程序
%Name:selection.m
%選擇復(fù)制function[newpop]=selection(pop,fitvalue)
totalfit=sum(fitvalue);%求適應(yīng)值之和
fitvalue=fitvalue/totalfit;%單個(gè)個(gè)體被選擇的概率
fitvalue=cumsum(fitvalue);%如fitvalue=[1234],則cumsum(fitvalue)=[13610]
[px,py]=size(pop);
ms=sort(rand(px,1));%從小到大排列,將"rand(px,1)"產(chǎn)生的一列隨機(jī)數(shù)變成輪盤賭形式的表示方法,由小到大排列
fitin=1;%fivalue是一向量,fitin代表向量中元素位,即fitvalue(fitin)代表第fitin個(gè)個(gè)體的單個(gè)個(gè)體被選擇的概率
newin=1;%同理whilenewin<=px
if(ms(newin))<fitvalue(fitin)%ms(newin)表示的是ms列向量中第"newin"位數(shù)值,同理fitvalue(fitin)
newpop(newin,:)=pop(fitin,:);%賦值,即將舊種群中的第fitin個(gè)個(gè)體保留到下一代(newpop)
newin=newin+1;
else
fitin=fitin+1;
end
end%2.5交叉(子程序名:crossover.m)
%交叉(crossover),群體中的每個(gè)個(gè)體之間都以一定的概率pc交叉,即兩個(gè)個(gè)體從各自字符串的某一位置
%(一般是隨機(jī)確定)開始互相交換,這類似生物進(jìn)化過程中的基因分裂與重組。例如,假設(shè)2個(gè)父代個(gè)體x1,x2為:
%x1=0100110
%x2=1010001
%從每個(gè)個(gè)體的第3位開始交叉,交又后得到2個(gè)新的子代個(gè)體y1,y2分別為:
%y1=0100001
%y2=1010110
%這樣2個(gè)子代個(gè)體就分別具有了2個(gè)父代個(gè)體的某些特征。利用交叉我們有可能由父代個(gè)體在子代組合成具有更高適合度的個(gè)體。
%事實(shí)上交叉是遺傳算法區(qū)別于其它傳統(tǒng)優(yōu)化方法的主要特點(diǎn)之一。
%遺傳算法子程序
%交叉
function[newpop]=crossover(pop,pc)
[px,py]=size(pop);
newpop=ones(size(pop));
fori=1:2:px-1
if(rand<pc)
cpoint=round(rand*py);
newpop(i,:)=[pop(i,1:cpoint)pop(i+1,cpoint+1:py)];
newpop(i+1,:)=[pop(i+1,1:cpoint)pop(i,cpoint+1:py)];
else
newpop(i,:)=pop(i,:);
newpop(i+1,:)=pop(i+1,:);
end
end%2.6變異(子程序名:mutation.m)
%變異(mutation),基因的突變普遍存在于生物的進(jìn)化過程中。變異是指父代中的每個(gè)個(gè)體的每一位都以概率pm翻轉(zhuǎn),即由“1”變?yōu)椤?”,
%或由“0”變?yōu)椤?”。遺傳算法的變異特性可以使求解過程隨機(jī)地搜索到解可能存在的整個(gè)空間,因此可以在一定程度上求得全局最優(yōu)解。
%遺傳算法子程序function[newpop]=mutation(pop,pm)
[px,py]=size(pop);
newpop=ones(size(pop));
fori=1:px
if(rand<pm)%產(chǎn)生一隨機(jī)數(shù)與變異概率比較
mpoint=round(rand*py);
ifmpoint<=0
mpoint=1;
endnewpop(i,:)=pop(i,:);
ifany(newpop(i,mpoint))==0
newpop(i,mpoint)=1;
else
newpop(i,mpoint)=0;
end
else
newpop(i,:)=pop(i,:);
end
end%2.7求出群體中最大的適應(yīng)值及其個(gè)體(子程序名:best.m)
%求出群體中適應(yīng)值最大的值
function[bestindividual,bestfit]=best(pop,fitvalue)
[px,py]=size(pop);
bestindividual=pop(1,:);
bestfit=fitvalue(1);
fori=2:px
iffitvalue(i)>bestfit
bestindividual=pop(i,:);
bestfit=fitvalue(i);
end
end程序運(yùn)行結(jié)果如圖6-5所示。圖6-5遺傳尋優(yōu)算法運(yùn)算結(jié)果從圖6-5中的“*”點(diǎn)可見,遺傳算法找到了該非線性函數(shù)的全局極大值點(diǎn)。6.3.2遺傳神經(jīng)元辨識(shí)MATLAB仿真
【例6-3】采用基于遺傳算法的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)非線性
函數(shù):
yp=1-exp(-i/2)
解(1)編寫程序(光盤中對(duì)應(yīng)的程序名為FLch6eg2)。
由于源程序過長(zhǎng),下面只列出主程序,完整的程序見光盤。
鑒于被學(xué)習(xí)的非線性函數(shù)較簡(jiǎn)單,為了說明基于遺傳算法的神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程,選用具有3個(gè)輸入的單神經(jīng)元。3個(gè)輸入對(duì)應(yīng)的權(quán)值均選3位二進(jìn)制碼串,單神經(jīng)元的閾值選用1位二進(jìn)制碼串。由遺傳算法操作來完成權(quán)值矩陣ω(i)的修正,ω(i)=[w1
w2
w3θ]T相當(dāng)于個(gè)體,其中w1、w2、w3分別是3個(gè)輸入量到單神經(jīng)元的權(quán)值,θ為單神經(jīng)元的閾值,故個(gè)體ω(i)為10位碼串。種群選4個(gè)個(gè)體。編程中,令x=ω(i),將x的值用一個(gè)10位的二值形式表示。選用Sigmoid激發(fā)函數(shù)%主程序
clear
clf
x2=0.02;x1=0;x0=0.01;e=0;
popsize=20;%設(shè)置初始參數(shù),群體大小
chrom
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版保險(xiǎn)經(jīng)紀(jì)與代理合同7篇
- 高考英語歷年真題重點(diǎn)詞匯過關(guān)默寫清單:生活類
- 讀后續(xù)寫+被塵封的書與被點(diǎn)亮的心:漢娜的堅(jiān)持+講義 高一下學(xué)期7月期末英語試題
- 2024年標(biāo)準(zhǔn)債務(wù)承擔(dān)合同模板版B版
- 2024年度知識(shí)產(chǎn)權(quán)保護(hù)標(biāo)準(zhǔn)模板合同3篇
- 2024實(shí)習(xí)生保密工作責(zé)任與保密協(xié)議執(zhí)行標(biāo)準(zhǔn)合同3篇
- 2024年度建筑施工安全生產(chǎn)責(zé)任及綠色施工監(jiān)管合同2篇
- 賓館拆除工程合同范例
- 2024年度中介與賣方關(guān)于二手房交易服務(wù)合同文本3篇
- 《市政污泥生物質(zhì)炭陰極的制備及E-Fenton技術(shù)中的應(yīng)用》
- NGS與感染性疾病醫(yī)學(xué)課件
- 2024版《大學(xué)生職業(yè)生涯規(guī)劃與就業(yè)指導(dǎo)》 課程教案
- 人民日?qǐng)?bào)出版社有限責(zé)任公司招聘筆試題庫(kù)2024
- 2024年煤礦事故匯編
- Unit 7單元教案 2024-2025學(xué)年人教版(2024)七年級(jí)英語上冊(cè)
- Unit 6 My sweet home(教學(xué)設(shè)計(jì))-2024-2025學(xué)年外研版(三起)(2024)小學(xué)英語三年級(jí)上冊(cè)
- 北師大版教案正比例函數(shù)案例分析
- 行政文秘筆試題
- 人教版(2024)七年級(jí)地理上冊(cè)跨學(xué)科主題學(xué)習(xí)《探索外來食料作物傳播史》精美課件
- 2024-2025學(xué)年七年級(jí)數(shù)學(xué)上冊(cè)第一學(xué)期 期末模擬測(cè)試卷(湘教版)
- 職業(yè)素質(zhì)養(yǎng)成(吉林交通職業(yè)技術(shù)學(xué)院)智慧樹知到答案2024年吉林交通職業(yè)技術(shù)學(xué)院
評(píng)論
0/150
提交評(píng)論