梅小華 鄭力新
(華僑大學信息科學與工程學院,福建 廈門 361021)
標志工業產品性能的參數主要取決于零件的定值與容差。進行零件參數的設計,就是要確定其標定值和容差。將零件組裝成產品時,若產品參數偏離預先設定的目標值,就會造成質量損失,偏離越大,損失越大;零件的容差大小則決定了制造成本,容差設計得越小,成本越高。正確有效地設計零件的最優化參數,是保證產品質量、減少產品總費用的重要環節。
零件參數優化設計的常用方法有梯度法、單純形法和隨機尋優法等。梯度法只能對連續參數進行運算,參數數量也不能太多,且容易陷于局部最優解。單純形法受初值和計算步長的影響較大,易收斂于局部最優解。傳統的隨機尋優技術效率較低。遺傳算法[1-2]是一種全新的優化搜索算法,它不受結構模型、約束條件和參數初值的限制,以其并行性和快速尋優等特點,解決了許多領域的難題,從而得到各界的重視。
基于上述認識,本文提出了一種改進的遺傳算法,用來優化零件參數。該算法具有如下特點:①可變的交叉概率和變異概率使得尋優效率大大提高,改善了收斂性;②有效地消除了對參數初值的依賴性,不會陷入局部極值點;③具有較強的魯棒性,是較好的大規模參數尋優方法。
粒子分離器某參數(記作y)由7個零件的參數(記作 x1,x2,…,x7)決定,經驗公式為[3]:

y的目標值(記作y0)為1.50。當y偏離目標值±0.1時,產品為次產品,質量損失為1000元;當y偏離目標值±0.3時,產品為廢品,損失為9000元。
零件參數的標定值有一定的容許變化范圍,容差分為A、B、C三個等級,用與標定值的相對值表示。A級為±1%、B級為±5%、C級為±10%。7個零件參數標定值的容許范圍及不同容差等級零件的成本如表1所示。

表1 零件參數標定值及容差等級Tab.1 Scaling values and tolerance levels of parts parameters
現進行成批生產,每批產量為1000個。在原設計中,7個零件參數的標定值為:x1=0.1、x2=0.3、x3=0.1、x4=0.1、x5=1.5、x6=16、x7=0.75;容差均取最便宜的等級。綜合考慮y偏離y0造成的損失和零件成本,按照總經濟損失最低的原則,進行零件參數(標定值和容差)設計。
在設計零件參數時,作如下基本假設。
① 零件參數 x1,x2,…,xn為相互獨立的隨機變量,期望值和均方差分別記作xi0和σi,絕對容差記作ri=3σi,相對容差記作 ti=ri/xi0。
② 產品參數y由x1,…,xn決定,記作y=f(x1,…,xn)。由于xi偏離xi0很小,可在 x0=(x10,…,xn0)處對 f作泰勒級數展開,并略去二階及以上項,有y=f(x0)+),于是隨機變量y的期望值為Ey=f(x0),方差為或用ti表示為
③由y偏離目標值y0造成的(單件產品)質量損失記作L(y),根據所給數據,可設L(y)與(y-y0)2成正比,即 L(y)=k(y - y0)2,可得 k=103/0.12=105。
④批量生產時,平均每件產品質量損失費EL(y)取決于零件參數標定值x0和容差t,記作:

⑤單件產品的零件成本僅取決于容差等級ti,第i種零件的成本記作ci(ti),于是零件總成本為C(t)=。
⑥綜合考慮y偏離y0造成的損失和零件成本,將本問題的目標函數定義為成批生產時平均每件產品的總費用,即 z(x0,t)=Q(x0,t)+c(t)。
遺傳算法首先隨機地產生一組潛在的解X(該解稱為“染色體”,解的特定集合稱為“種群”,解中的變量稱為“基因”);然后采用生物進化的過程(如染色體交叉、變異、淘汰等),不斷提高解的品質;最后獲得最優解。
遺傳算法不要求具有梯度信息,就可以處理大量的離散參數運算,因此非常適用于上述粒子分離器參數的設計。
粒子分離器參數包括7個連續參數xi和7個離散參數ti,根據參數范圍的限制,采用二進制進行編碼,粒子分離器參數的二進制編碼如表2所示。

表2 參數二進制編碼Tab.2 Binary coding of parameter
表2 中,a、b、c、d 取 0 或 1,xi編碼長度為 4,t2、t7編碼長度為 1,t3、t4、t6編碼長度為 2,t1、t5不參加編碼,因此染色體長度為36。在此情況下,采用二進制編碼的精度已足夠。若精度要求發生變化,編碼的位數可根據實際的精度需要選取。
總費用的目標函數[4-5]為非線性規劃模型,由零件成本費和產品參數偏離目標值y0引起的質量損失費組成。零件成本由簡單的線性代數確定,質量損失是涉及概率分布的非線性函數。標定值或容差設計得不合理,會使產品參數遠離目標值,造成質量損失;而容差設計得太小,又會增加零件制造成本。為了使總費用Z(x0,t)達到最小,且滿足約束條件,即標定值x0落在給定的容許范圍內,本算法所采用的目標函數為:


算法設計如下。
①全局變量設定,給出群體規模m、最大迭代次數 Tmax的大小,選擇 m=100、Tmax=150,k為當前進化的次數。
②種群的產生及初始化。設進化代數計數器T=0,以零件參數為基因組成染色體X,X由36個基因組成。初始染色體中的基因(設計參數)在各自的取值范圍內隨機產生,但必須滿足所有約束條件。種群由m個染色體構成。
③適應度函數值計算和選擇操作。適應度函數是選擇操作的依據,適應度函數應是非負的,假設適應度函數為:

式中:f(x)為模型目標值。
目標函值較小的個體對應的適應度較大,在選擇操作中被選中的概率也較大。算法中采用適應度比例策略和保存最優策略相結合的方式[6]進行選擇操作,每次只保留所有進化代中適應度最大的個體。選出m個優良個體的步驟如下。
根據適應度函數,計算每個個體的適應度Fi(i=1,2,…,m),得到的每個個體的適應概率為:

根據每個個體的適應概率,得到每個個體的累積概率為:

隨機產生一個(0,1)的實數r,對m個累積概率進行判斷,若 Qi-1<r< Qi成立,則第 i個個體便是被選中并留在基因池的個體;重復以上步驟,直到選中m個個體。
④交叉概率Pc與變異概率Pm的計算。其中一種方法是采用 Pan等人[7-8]提出的 Pc和 Pm能夠隨適應度自動改變的自適應遺傳算法。當群體最大適應度fmax與平均適應度favg接近時,群體趨于收斂,即此時群體中的各個個體趨于一致,其父代間的距離比較小,群體的多樣性較弱。為了提高群體的多樣性,應增大Pm;反之,則群體多樣性較強,應減小Pm。此方法對算法時間和空間復雜度要求較高,程序運行時間較長。另一種方法是采用Pc和Pm都隨迭代次數的增加而逐級變化的遺傳算法。該方法在進化的初期交叉率較大,變異概較小,可以防止群體的早熟。在進化后期,交叉率較小,變異率較大,尋優過程加速。但該方法要求最大迭代次數較大,若最大迭代次數較小,則每代Pc和Pm變化幅度較大,不利于在規定次數內保證算法的收斂性。
針對上述問題,本文將以上兩種方法相結合,在算法中采用隨迭代次數變化的變異概率和自適應變化的交叉概率。
交叉概率為:

式中:f為變異個體的適應度;fmax為群體最大適應度;favg為平均適應度;Pm1=0.1、Pm2=0.001。
⑤交叉、變異操作。對父代群體進行兩兩配對,然后對每對個體按Pc概率進行交叉操作。采用多點交叉,在36個基因中的前28個基因中,隨機產生一個交叉點;在后6個基因中也產生一交叉點,經過交叉運算后得到子代群體編碼。對于子代群體編碼的每一位,采用多點變異,以Pm的概率進行變異,生成新一代群體。
⑥過程結束判定。當最優個體的適應度和群體適應度不再上升時,算法的迭代過程收斂、算法結束;否則,用經過選擇、交叉、變異所得到的新一代群體取代上一代群體,并返回到步驟③繼續循環執行。
以零件參數設計為例,在CPU 2.0 GB、內存512 MB的機器上用 Matlab 6.0 對其進行仿真[9-10],在遺傳代數T=80時,得到如下結果。

單位產品總費用min z=748.9349元,與原設計費用z0=6507.2相比,費用減少了5758.3元,產品質量參數值 Ey=1.4976。
目標值進化曲線如圖1所示,各種遺傳算法目標值進化曲線如圖2所示。


Jong D提出了兩個評價遺傳算法性能的指標,即在線性能指標和離線性能指標。根據圖1仿真結果可知,在線性能指標為4.0568×104,說明算法具有很好的動態性能;離線性能指標為755.3421,說明算法具有很好的收斂性能。仿真運行表明,改進的遺傳算法,其4/5的主程序(20次)的最小費用值落在(748~752)元之間,表明改進的遺傳算法在解決大規模參數設計中具有較好的穩定性。
將改進的遺傳算法應用于零件的參數尋優,尋優效率較簡單遺傳算法有了大幅提高;在保持群體多樣性的同時,又保證了算法的收斂性,可為大規模參數設計提供捷徑。
[1]Holland J.Adaptation in neural and artificial systems[M].Ann Arbor:Michigan University,1975.
[2]張文修.遺傳算法的數學基礎[M].2版.西安:西安交通大學出版社,2003:146-202.
[3]1997年全國大學生數學建模競賽(A題)[J].數學的認識與實踐,1998(1):2-4.
[4]趙靜.數學建模與數學實驗[M].北京:高等教育出版社,2000:64-73.
[5]吳新燁,徐學林.在零件的參數優化設計中的數學建模[J].煤礦機械,2004(1):10 -12.
[6]Filho J L R,Treleaven P C,Alippi C.Genetic algorithm programming environments[J].IEEE Computer,1994,27(6):28 -43.
[7]熊軍,高敦堂,都思丹,等.變異率和種群數目自適應的遺傳算法[J].東南大學學報:自然科學版,2004(4):553 -556.
[8]Pan Zhengjun,Kang Lishan,Nie Sixiang.Evolving both the topology and weights of neural network[J].Parallel Algorithms and Applications,1996,9(3):299 -307.
[9]王小平,曹立明.遺傳算法-理論、應用與軟件實現[M].西安:西安交通大學出版社,2003:104-122.
[10]雷英杰.Matlab遺傳算法工具箱及應用[M].西安:西安電子科技大學出版社,2005:95-105.