基于神經(jīng)網(wǎng)絡(luò)優(yōu)化的油水界面軟測量
原油脫水過程中油水界面的準(zhǔn)確監(jiān)測對油品的含水率、污水回收及處理成本都是極為關(guān)鍵的,能開發(fā)出在線的測量技術(shù)具有十分重要的現(xiàn)實意義。
遺傳算法和神經(jīng)網(wǎng)絡(luò)都是將生物學(xué)原理應(yīng)用于科學(xué)研究的仿生學(xué)理論成果,由于它們具有極強的解決問題的能力,近年來引起了眾多科研人員和工程人員的興趣和關(guān)注[1]。但神經(jīng)網(wǎng)絡(luò)和遺傳算法作為傳統(tǒng)的算法,不僅計算量大,消耗時間多,而且還需要專家進行校驗[2-4]。因此,為了充分利用兩種算法的優(yōu)勢,彌補兩者之間的缺陷,本文采用了將兩者結(jié)合的思想。
2 問題描述
在基于BP算法的多層前饋網(wǎng)絡(luò)的應(yīng)用中,以圖1所示的單隱層網(wǎng)絡(luò)的應(yīng)用最為普遍。一般習(xí)慣將單隱層前饋網(wǎng)絡(luò)稱為三層前饋網(wǎng)或三層感知器,所謂的三層包括了輸入層、隱層和輸出層。隱層可以是單層,也可以是多層,前層至后層節(jié)點通過權(quán)連接。
圖1 BP網(wǎng)絡(luò)結(jié)構(gòu)
輸入矢量維數(shù)為R,隱層神經(jīng)元的個數(shù)為S1,輸出層神經(jīng)元的個數(shù)S2,a1表示隱層神經(jīng)元的輸出矢量,a2表示輸出層神經(jīng)元的輸出矢量,W1,1表示隱層神經(jīng)元域為任一集合。對適應(yīng)度函數(shù)唯一的要求是輸入可計算出能加以比較的非負結(jié)果。適應(yīng)度函數(shù)具體的計算方法為:將染色體上表示的各個參數(shù)分配到BP網(wǎng)絡(luò)的結(jié)構(gòu)上,結(jié)合訓(xùn)練樣本集的輸入與輸出,計算網(wǎng)絡(luò)的輸出后得到網(wǎng)絡(luò)實際輸出與希望輸出的誤差,取誤差平方和作為目標(biāo)函數(shù),即
(3)
式中為網(wǎng)絡(luò)輸入輸出樣本對個數(shù);為輸出層節(jié)點個數(shù);,為當(dāng)輸入第個樣本時,第個輸出節(jié)點的期望輸出與實際輸出。
遺傳算法以適應(yīng)度函數(shù)作為進化目標(biāo),且只能朝著適應(yīng)度函數(shù)值增大的方向進化,所以適應(yīng)度函數(shù)與目標(biāo)函數(shù)之間要進行適當(dāng)?shù)霓D(zhuǎn)換。由于進化中的網(wǎng)絡(luò)誤差是非零正數(shù),可將目標(biāo)函數(shù)的倒數(shù)作為適應(yīng)度函數(shù),即c) 遺傳算子的選擇。
① 用輪盤賭法確定選擇算子,種群中個體的選擇概率為
(5)
式中
為個體的適應(yīng)度;
為種群的總適應(yīng)度;
為個體的選擇概率。
輪盤賭法的具體實現(xiàn)是:先計算出當(dāng)前種群的總適應(yīng)度,然后產(chǎn)生一個[0,1]之間的隨機數(shù),求取,并將滿足下列條件的第個個體選中,進入交叉操作:
(6)
進行次這樣的操作,得到個個體,與最優(yōu)選擇機制保留下來的適應(yīng)度最大的個體,一起構(gòu)成個個體,進入接下來的交叉和變異操作。
② 采用自適應(yīng)的交叉概率的算法,使群體中最大適應(yīng)度值的個體的交叉率和變異率不為零,分別得到提高,這就相應(yīng)地提高了群體中表現(xiàn)優(yōu)良的個體的交叉率和變異率,使得它們不會處于一種近似停滯不前的狀態(tài)。
種群中個體的交叉概率為
(7)
其中為常數(shù);為“早熟度”,用來評價種群是否早熟的指標(biāo),其計算公式為,其中表示種群中個體適應(yīng)度的最大值,表示個體適應(yīng)度大于整體平均適應(yīng)度的個體的平均適應(yīng)度。
在二進制編碼中,采用的是單點或多點交叉。對于實數(shù)編碼來說,采用這些方法是困難的,本文采用算數(shù)交叉,即
(8)
式中,為父代個體;,是子代個體;為(0,1)間的實數(shù)。
交叉時由于碼串選取的是最大可能長度,不會產(chǎn)生混亂現(xiàn)象。
③ 采用自適應(yīng)的變異概率的算法,使遺傳算法具有局部的隨機搜索能力,在接近最優(yōu)解的鄰域時加速向最優(yōu)解收斂,維持種群多樣性,防止出現(xiàn)不成熟收斂。
種群中個體的交叉概率為
(9)
其中為常數(shù)。
非一致變異算子可以增強局部搜索能力,因此本文采用非一致變異操作進行算子的變異。假設(shè)為父代種群中的一個個體,其中。隨機選取中的一個基因,假設(shè)為第個基因,進行變異,則子代個體為。