王文慶 楊 楠
(西安郵電大學(xué)自動(dòng)化院 西安 710121)
遺傳算法(GA)[1]是一種基于生物進(jìn)化模擬的啟發(fā)式智能優(yōu)化算法,主要由Holland教授從20世70年代逐漸發(fā)展起來,其基本策略為將生物的種群代表一組實(shí)際問題的解,然后對(duì)此種群進(jìn)行選擇、交叉、變異等操作獲得新生種群,逐漸接近最優(yōu)解[2]。
自從PID控制器生產(chǎn)以來,就成為自動(dòng)化生產(chǎn)過程中使用頻率最高、使用范圍最廣的控制器[3]。在控制領(lǐng)域之中,盡管各類型新型控制器層出不窮,但PID控制器依舊因?yàn)樽陨斫Y(jié)構(gòu)原理簡(jiǎn)單、適用性強(qiáng)、魯棒性強(qiáng)等突出的優(yōu)點(diǎn)[4],處于主導(dǎo)地位。由于PID控制器的比例參數(shù)、微分參數(shù)、積分參數(shù)可以直接影響控制器控制效果的優(yōu)劣[5],所以參數(shù)整定即為PID控制器設(shè)計(jì)的核心問題[6]。
將傳統(tǒng)PID與智能控制算法相結(jié)合,從而可以產(chǎn)生許多的改進(jìn)型PID控制器[7]遺傳算法作為一種新型的智能控制算法[8],其本質(zhì)上是一種較為高效、并行、全局搜索的方法[9],但是由于標(biāo)準(zhǔn)遺傳算法中遺傳算子的靜態(tài)特征不能滿足種群的動(dòng)態(tài)進(jìn)化要求;交叉概率和變異概率的固定造成搜索過程較為遲緩和難以產(chǎn)生新個(gè)體[10],從而使得算法產(chǎn)生趨于局部最優(yōu)和收斂精度不高等問題[11]。本次研究使用改進(jìn)的遺傳算法在Matlab中進(jìn)行PID參數(shù)整定,并選用典型受控對(duì)象,進(jìn)行仿真,進(jìn)一步驗(yàn)證。
編碼:通過某種編碼方式將染色體抽象為跟編碼方式對(duì)應(yīng)的特定符號(hào),并且為按照一定順序排成的串。
適應(yīng)度:對(duì)染色體進(jìn)行編碼后,每個(gè)個(gè)體對(duì)應(yīng)一個(gè)具體問題的解,每個(gè)解對(duì)應(yīng)一個(gè)函數(shù)值。函數(shù)值為適應(yīng)度,函數(shù)為適應(yīng)度函數(shù)。適應(yīng)度值大小是遺傳算法對(duì)于一個(gè)個(gè)體好壞程度的唯一評(píng)價(jià)標(biāo)準(zhǔn)。
復(fù)制:從父代中選擇適應(yīng)度值高的字符串從而生成新一代的過程。適應(yīng)度值越高的字符串越可能獲得生成新一代的可能[12]。
交叉:模擬生物進(jìn)化中的繁殖過程,兩個(gè)染色體之間通過交叉而重組形成新染色體,從而產(chǎn)生新的優(yōu)秀品種。
變異:模擬生物進(jìn)化[13]過程中的基因突變方法,以很小的概率隨機(jī)地改變?nèi)旧w字符串某一位的值。
1)確定可以表示可行解的染色體編碼方法,從而產(chǎn)生初始種群。
2)確定個(gè)體適應(yīng)度函數(shù),計(jì)算個(gè)體適應(yīng)度值,適應(yīng)度值高的個(gè)體被選擇的概率高。
3)設(shè)計(jì)選擇算子,交叉算子,遺傳算子從而進(jìn)行遺傳操作。
4)設(shè)計(jì)終止條件,如果滿足終止條件,則進(jìn)入第5)步,否則重新計(jì)算其適應(yīng)度。
5)輸出種群中適應(yīng)度最高的值作為最優(yōu)解。基本遺傳算法的5個(gè)運(yùn)行參數(shù)[14]:
M:種群的大小,即群體所包含個(gè)體的數(shù)量,一般可以取20到100;
G:代溝,即兩代之間不相同的染色體數(shù)目,無重疊G=1,有重疊0<G<1;
Max Gen:終止進(jìn)化代數(shù),一般可以取100到1000;
Pc:交叉概率,一般可以取0.4到0.9;Pm:變異概率,一般可以取0.0001到0.1。
基本遺傳算法采用的是二進(jìn)制編碼,所以其編碼解碼操作簡(jiǎn)單便捷,且選擇、交叉、變異等遺傳操作易于實(shí)現(xiàn)。然而,面對(duì)一些精度要求很高的、多目標(biāo)的連續(xù)函數(shù)優(yōu)化時(shí),二進(jìn)制編碼有其局限性。例如,從某字符串表示的解到一個(gè)臨近的解的轉(zhuǎn)變,需要多次改變多個(gè)位的字符即海明懸崖;越高的精度,需要越長(zhǎng)的字符串,增加了遺傳算法計(jì)算的復(fù)雜性。為了改進(jìn)這些問題,本文采用浮點(diǎn)數(shù)編碼進(jìn)行編碼,浮點(diǎn)數(shù)編碼是指?jìng)€(gè)體的每個(gè)基因值用某一范圍內(nèi)的一個(gè)浮點(diǎn)數(shù)來表示,個(gè)體的編碼長(zhǎng)度等于決策變量的個(gè)數(shù)。本系統(tǒng)中有三個(gè)待優(yōu)化參數(shù)Kp,Ki,Kd,可將三個(gè)參數(shù)組合成一個(gè)三維向量,作為遺傳算法中每個(gè)獨(dú)立的個(gè)體,其中0≤Kp≤20,0≤Ki≤1,0≤Kd≤1。定義染色體編碼如下:
其中 Kp,Ki,Kd分別表示 PID 控制器的比例參數(shù),積分參數(shù),微分參數(shù);G表示個(gè)體。
適應(yīng)度函數(shù)是用來區(qū)分種群中個(gè)體好壞的唯一標(biāo)準(zhǔn)。遺傳算法在進(jìn)化搜索中,以適應(yīng)度函數(shù)作為唯一依據(jù),利用種群中每個(gè)個(gè)體的適應(yīng)度值來進(jìn)行搜索。作為參數(shù)選擇的最小目標(biāo)函數(shù)選用誤差絕對(duì)值時(shí)間積分性能,加入輸入的平方項(xiàng)[15]從而防止控制能量過大??闪钅繕?biāo)函數(shù)為如下的形式:
其中e(t)為系統(tǒng)誤差,u(t)為控制器的輸出,w1,w2,w3,為權(quán)值,tu為調(diào)節(jié)時(shí)間。
由于遺傳算法需要的是適應(yīng)度函數(shù),所以需要將目標(biāo)函數(shù)改為適應(yīng)度函數(shù),它的數(shù)值是大于等于0的,并且其值越大越容易被認(rèn)可。對(duì)于不同的問題,適應(yīng)度函數(shù)定義的方式也不同,本次研究采用適應(yīng)度函數(shù)為
此次研究采用均勻排序的方法,對(duì)群體中的所有個(gè)體計(jì)算其適應(yīng)度,根據(jù)每個(gè)個(gè)體的適應(yīng)度值占總體適應(yīng)度的比例將這個(gè)概率作為適應(yīng)度概率。概率如下所示:
其中Fcx為某代第x個(gè)個(gè)體的適應(yīng)度值,F(xiàn)∑為某代所有個(gè)體的適應(yīng)度之和。
此方法可有效避免適應(yīng)度值高的個(gè)體被淘汰,以及隨機(jī)排序中個(gè)體選擇概率相同的情況。
對(duì)于那些被選擇的個(gè)體,以某種交叉方式交換兩個(gè)字符串相對(duì)應(yīng)的基因,從而產(chǎn)生兩個(gè)新的個(gè)體,新的個(gè)體組合其父代的特點(diǎn),采用算數(shù)交叉的方法,交叉后相鄰的第i個(gè)個(gè)體和第i+1個(gè)個(gè)體如下:
其中Pc1=0.9,Pc2=0.6。
在群體中隨機(jī)選擇一個(gè)進(jìn)行過交叉的個(gè)體,以一定的概率隨機(jī)改變被選擇個(gè)體字符串中某字符的值,變異概率如下:
其中,為每代平均適應(yīng)度,為群體中最大適應(yīng)度,為要變異個(gè)體的適應(yīng)度值,為交叉的兩個(gè)個(gè)體中較大的適應(yīng)度值;β∈[0 1]為一個(gè)隨機(jī)數(shù);kpmax和kpmin分別為基因kp的上限和下限;kimax和kimin分別為基因ki的上限和下限;kdmin和kdmin分別為基因kd的上限和下限。
PID控制是一種線性控制方法,對(duì)偏差信號(hào)進(jìn)行比例、積分、微分運(yùn)算,將三種運(yùn)算的結(jié)果相加,就得到PID控制器的輸出【10】。其原理框圖如下:
圖1 PID控制原理框圖
也可將其改寫為傳遞函數(shù)形式:
其中:r(t)為輸入,e(t)為設(shè)定輸入與實(shí)際輸出的差,u(t)為控制器輸出,y(t)為系統(tǒng)輸出,kp為比例參數(shù),Ti積分時(shí)間常數(shù),Td為微分時(shí)間常數(shù),積分參數(shù) ki=kp/Ti,微分參數(shù)為 kd=kp*Td,kp、ki、kd即為本文中的尋優(yōu)參數(shù)。
改進(jìn)的遺傳算法模塊和典型PID控制器構(gòu)成了改進(jìn)遺傳算法的PID控制器。PID控制器對(duì)控制對(duì)象進(jìn)行閉環(huán)循環(huán)控制,改進(jìn)的遺傳算法模塊依據(jù)系統(tǒng)的運(yùn)行參數(shù),不斷進(jìn)行計(jì)算以此優(yōu)化三個(gè)參數(shù)的數(shù)值,直到計(jì)算出最優(yōu)參數(shù)。改進(jìn)的遺傳算法模塊將 PID 控制器的 Kp,Ki,Kd,三個(gè)參數(shù)組合在一起作為改進(jìn)遺傳算法的每個(gè)獨(dú)立個(gè)體。根據(jù)遺改進(jìn)的傳算法流程進(jìn)行編碼,對(duì)種群進(jìn)行選擇、交叉、變異操作,當(dāng)種群不斷迭代繁殖,直到找到全局最優(yōu)解。
圖2 改進(jìn)的遺傳算法PID控制器設(shè)計(jì)圖
基本遺傳算法PID參數(shù)整定仿真結(jié)果如下圖3、圖 4 所 示 ,其 中 Kp=18.7069,Ki=0.2463,Kd=0.6443。
圖3 基本遺傳算法PID階躍響應(yīng)圖
改進(jìn)的遺傳算法PID參數(shù)整定仿真結(jié)果如圖5和 圖 6所 示 ,其 中 Kp=18.4772,Ki=0.2348,Kd=0.0229。
圖4 基本遺傳算法目標(biāo)函數(shù)值優(yōu)化曲線
圖5 改進(jìn)遺傳算法PID階躍響應(yīng)圖
圖6 改進(jìn)遺傳算法目標(biāo)函數(shù)值優(yōu)化曲線
根據(jù)以上仿真結(jié)果可知,本文中改進(jìn)遺傳算法一定程度上加快了整定速度,提高算法收斂精度,保證了優(yōu)化效果,具有一定可行性。
PID參數(shù)的設(shè)定是PID控制器設(shè)計(jì)的核心環(huán)節(jié),本文在基本遺傳算法基礎(chǔ)上進(jìn)行改進(jìn),并以改進(jìn)的遺傳算法與PID參數(shù)定相結(jié)合,在Matlab上進(jìn)行仿真,實(shí)驗(yàn)結(jié)果可以表明:改進(jìn)的遺傳算法PID控制器要與基本遺傳算法PID控制器相比較,有更快的整定速度,更精確的收斂精度,更良好的控制優(yōu)化效果。