常添淵,黃曉華
(南京理工大學(xué)機(jī)械工程學(xué)院,江蘇 南京 210094)
根據(jù)研究,在高速精密加工領(lǐng)域,機(jī)床熱變形所引起的熱誤差約占機(jī)床總誤差的40%~70%,是制約數(shù)控機(jī)床精度水平的重要原因[1]。而高速電主軸是機(jī)床的核心部件,電主軸的熱誤差將直接影響機(jī)床的加工精度,為了減少電主軸的熱誤差對(duì)機(jī)床加工精度的影響,國內(nèi)外學(xué)者提出了幾種比較具有代表性的方法:溫度控制法、熱態(tài)性能優(yōu)化以及熱誤差補(bǔ)償法[2]。其中熱誤差補(bǔ)償方法是通過實(shí)驗(yàn)、分析、測試過程建立一個(gè)熱誤差補(bǔ)償模型,并將其輸入數(shù)控系統(tǒng),在加工時(shí)將溫度數(shù)據(jù)輸入熱誤差補(bǔ)償模型預(yù)測熱誤差并進(jìn)行實(shí)時(shí)補(bǔ)償,以減小加工誤差。這種方法無需改變電主軸結(jié)構(gòu),而且應(yīng)用成本較低,因此如何建立精度較高實(shí)用性較好的熱誤差補(bǔ)償模型,成為了國內(nèi)外學(xué)者關(guān)注研究的重點(diǎn)。
近年來,國內(nèi)外學(xué)者研究出許多建立熱誤差模型的方法。謝杰等[3]提出了一種基于思維進(jìn)化算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)建立電主軸熱誤差模型的方法,其最低補(bǔ)償率高達(dá)95.29%。馬馳等[4]以精密鏜床主軸為研究對(duì)象,建立了基于PSO-BP網(wǎng)絡(luò)的熱誤差模型,并驗(yàn)證了建模的有效性。代貴松[5]建立了基于因子分析的熱誤差建模方法。Abdulshahe等[6]將人工神經(jīng)網(wǎng)絡(luò)以及模糊邏輯理論進(jìn)行結(jié)合,提出了一種自適應(yīng)神經(jīng)模糊推理系統(tǒng)建模技術(shù)。
本文基于當(dāng)前工業(yè)應(yīng)用性較強(qiáng)的BP神經(jīng)網(wǎng)絡(luò),使用免疫粒子群算法對(duì)其權(quán)值和閾值進(jìn)行優(yōu)化,以達(dá)到提高熱誤差預(yù)測精度和神經(jīng)網(wǎng)絡(luò)收斂性的目的,并通過測試數(shù)據(jù)檢驗(yàn)優(yōu)化后的模型熱誤差補(bǔ)償能力。
BP神經(jīng)網(wǎng)絡(luò)是當(dāng)前應(yīng)用最廣泛的人工神經(jīng)網(wǎng)絡(luò),它是一種多層前饋型神經(jīng)網(wǎng)絡(luò),具有較強(qiáng)的非線性映射能力,很適合對(duì)熱誤差進(jìn)行建模。BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模仿生物神經(jīng)元模型,由輸入層、隱含層和輸出層構(gòu)成,每一層的神經(jīng)元之間都不互相連接,而相鄰層的神經(jīng)元點(diǎn)之間則互相連接,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 三層BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
本文中BP神經(jīng)網(wǎng)絡(luò)以電主軸上關(guān)鍵測點(diǎn)的溫度為輸入,電主軸前端各測點(diǎn)的熱誤差值為輸出,因此輸入層神經(jīng)元數(shù)目為關(guān)鍵溫度測點(diǎn)數(shù),輸出層神經(jīng)元數(shù)目為熱誤差測點(diǎn)數(shù),隱含層神經(jīng)元個(gè)數(shù)可以根據(jù)Kolmogorov定理確定。確定神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)后,應(yīng)當(dāng)確定該神經(jīng)網(wǎng)絡(luò)的激活函數(shù)、學(xué)習(xí)率、訓(xùn)練誤差、迭代次數(shù)以及權(quán)值和閾值的初始值,完成神經(jīng)網(wǎng)絡(luò)的初始化。然后將獲取到的溫度和熱誤差樣本數(shù)據(jù)劃分為測試集和訓(xùn)練集,并進(jìn)行歸一化處理,隨后,對(duì)初始化的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,神經(jīng)網(wǎng)絡(luò)通過反向誤差傳播過程修改權(quán)值和閾值,使得BP神經(jīng)網(wǎng)絡(luò)不斷逼近電主軸熱誤差關(guān)于溫度變化的真實(shí)模型。
當(dāng)完成訓(xùn)練后,可以使用測試集對(duì)該神經(jīng)網(wǎng)絡(luò)進(jìn)行測試,確定該神經(jīng)網(wǎng)絡(luò)的精確度是否符合要求,評(píng)價(jià)標(biāo)準(zhǔn)一般可用均方誤差MSE,簡稱M。
(1)
yn為預(yù)測值的第n維;tn為實(shí)際值的第n維;N為樣本總數(shù)。
由于BP神經(jīng)網(wǎng)絡(luò)存在學(xué)習(xí)效率較低、收斂速度較慢的缺陷,單一使用BP神經(jīng)網(wǎng)絡(luò)對(duì)電主軸熱誤差進(jìn)行建模效率較低,效果也不好,容易陷入局部極小問題中。近年來,逐漸有人將PSO的思想引入神經(jīng)網(wǎng)絡(luò)的優(yōu)化中,用粒子群算法對(duì)權(quán)值和閾值的全局尋優(yōu)來替代BP神經(jīng)網(wǎng)絡(luò)的梯度修正,這種策略可以有效避免BP神經(jīng)網(wǎng)絡(luò)陷入局部最小值,也能縮短網(wǎng)絡(luò)的訓(xùn)練時(shí)間,加快算法的收斂。
經(jīng)典粒子群算法是一種模擬鳥類覓食的啟發(fā)式算法,其基本思想是:初始化一個(gè)種群數(shù)量為N存在于m維搜索空間中的粒子群,設(shè)定粒子群初始位置、初始速度、迭代次數(shù)以及誤差標(biāo)準(zhǔn)等,每個(gè)粒子所在的坐標(biāo)即可視作對(duì)神經(jīng)網(wǎng)絡(luò)權(quán)值閾值的一個(gè)解,搜索空間的維度由權(quán)值和閾值數(shù)量決定。
完成粒子群的初始化后,調(diào)用BP算法的前向傳播計(jì)算每個(gè)粒子的適應(yīng)度值,粒子xi的適應(yīng)度值f(xi)定義為
(2)
M(xi)為粒子xi對(duì)應(yīng)的BP神經(jīng)網(wǎng)絡(luò)均方誤差。然后更新粒子的個(gè)體極值和全局極值。根據(jù)個(gè)體極值和全局極值可以更新粒子的飛行速度,這種步長更新方式意味著種群中的粒子通過不斷地向自身和種群的歷史信息進(jìn)行學(xué)習(xí),從而找到最優(yōu)解,飛行速度公式為[7]
vi(t+1)=w·vi(t)+c1·r1·(pi-xi(t))+
c2·r2·(pg-xi(t))
(3)
vi為粒子i的更新步長;w為慣性因子;c1為認(rèn)知因子;c2為社會(huì)因子;r1和r2為一定范圍內(nèi)的隨機(jī)數(shù),會(huì)隨機(jī)降低學(xué)習(xí)因子的比例;xi為粒子i在當(dāng)前迭代過程中的位置;pi為粒子i的歷史最優(yōu)點(diǎn)位置;pg為粒子的全局最優(yōu)點(diǎn)位置。
設(shè)定粒子在每一維度中的飛行速度不超過設(shè)定的最大速度vmax,設(shè)vij為第i個(gè)粒子的第j維速度,若vij(t+1)>vmax,則vij(t+1)=vmax,且若vij(t+1)<-vmax,則vij(t+1)=-vmax,vmax越大則全局搜索能力越強(qiáng),vmax越小則局部搜索能力越強(qiáng),然后進(jìn)行粒子群位置更新,公式為
xi(t+1)=xi(t)+vi(t+1)
(4)
不斷迭代重復(fù)粒子速度和位置的更新,直到達(dá)到指定的迭代次數(shù)或者滿足設(shè)定的誤差標(biāo)準(zhǔn)即結(jié)束迭代。
由于PSO算法對(duì)于多維復(fù)雜問題,往往存在早熟收斂現(xiàn)象,導(dǎo)致種群多樣性迅速降低,最終陷入局部最優(yōu)。為了避免早熟現(xiàn)象,需要對(duì)粒子群算法進(jìn)行一些改進(jìn),本文在粒子群算法的基本框架下,結(jié)合了免疫算法的濃度機(jī)制和免疫,對(duì)粒子群算法進(jìn)行優(yōu)化改進(jìn),回避早熟現(xiàn)象。
1.3.1 濃度機(jī)制
向粒子群算法中引入免疫算法的抗體濃度概念,抗體濃度可以表征種群的多樣性程度,濃度過高則表示種群中有大量類似個(gè)體,這種情況下就很容易陷入局部極小值,不利于全局尋優(yōu),為了保證種群個(gè)體的多樣性,需要抑制濃度過高個(gè)體[8]。粒子xi和粒子xj之間的親和度a(xi,xj)可以用歐氏距離定義為
(5)
xik為第i個(gè)粒子的第k維;m為粒子群所在空間維度;粒子xi和xj之間相似度S(xi,xj)定義為
(6)
t為相似度閾值??贵wxi的濃度d(xi)定義為
(7)
ε為一個(gè)較小常數(shù)。
1.3.2 免疫過程
定義粒子個(gè)體的激勵(lì)度,激勵(lì)度是由粒子個(gè)體的適應(yīng)度和濃度共同決定的,粒子濃度越低,適應(yīng)度越大則激勵(lì)度越高,激勵(lì)度為
(8)
I(i)為粒子i的激勵(lì)度值;d(i)為粒子i的濃度值;dava為當(dāng)前所有粒子的濃度均值;p為控制濃度在激勵(lì)度函數(shù)中比例的系數(shù);f(i)為粒子i在當(dāng)前迭代的適應(yīng)度值;fava為所有粒子在當(dāng)前迭代中的適應(yīng)度均值。
取適應(yīng)度最高的個(gè)體放入疫苗庫,疫苗庫有a個(gè)位置,若疫苗庫滿了則用適應(yīng)度較大的個(gè)體替代適應(yīng)度較小的個(gè)體,用輪盤賭的方式從疫苗庫中選出1支疫苗,適應(yīng)度越高的個(gè)體被選中的概率越大,疫苗xi的被選擇概率p(xi)為
(9)
克隆種群中激勵(lì)度最低的b個(gè)個(gè)體,將克隆體與選出的疫苗進(jìn)行交叉,隨后進(jìn)行變異,這是為了讓濃度高且適應(yīng)度低的粒子能夠通過交叉和變異得到適應(yīng)度和濃度的改善。
其中,變異公式為
(10)
N(0,σ)為正態(tài)分布;γ為自適應(yīng)變異因子;η為調(diào)節(jié)因子,可見適應(yīng)度越大,變異程度越小。比較克隆體和原本粒子的激勵(lì)度,選擇較高激勵(lì)度的保留。算法總體流程如圖2所示。
圖2 IA-PSO-BP算法流程
以某型號(hào)銑削式高速電主軸為研究對(duì)象,研究其基本結(jié)構(gòu)及可能產(chǎn)生熱誤差的因素,在主要熱源處布置若干Pt100電阻溫度傳感器,同時(shí)記錄機(jī)床所在車間環(huán)境溫度,如表1所示。采用國家標(biāo)準(zhǔn)規(guī)定的5點(diǎn)法,將標(biāo)準(zhǔn)芯棒結(jié)合電渦流傳感器測量主軸x、y、z向熱變形,測點(diǎn)位置如圖3所示,其中,X1和X2分別為測棒前端和后端水平方向形變值,Y1和Y2為測棒前端和后端豎直方向形變值,Z為測棒前端軸向形變值。主軸轉(zhuǎn)速初始為靜止,采用遞進(jìn)式提速方式,當(dāng)在該轉(zhuǎn)速下達(dá)到熱平衡和熱位移的相對(duì)穩(wěn)定,提高轉(zhuǎn)速,最后提速至最高轉(zhuǎn)速為止。
表1 溫度傳感器分布
圖3 主軸熱位移關(guān)鍵測點(diǎn)
實(shí)驗(yàn)可得圖4以及圖5數(shù)據(jù),圖4為關(guān)鍵測點(diǎn)的溫度隨時(shí)間變化圖,圖5為關(guān)鍵測點(diǎn)的熱位移隨時(shí)間變化圖。
圖4 關(guān)鍵測點(diǎn)溫度變化
圖5 關(guān)鍵測點(diǎn)熱位移變化
取等間隔的n個(gè)時(shí)間點(diǎn)依次排列組成時(shí)間序列記為s=[s1,s2,…,sn],以時(shí)間序列s的時(shí)間點(diǎn)對(duì)各測點(diǎn)的溫度值進(jìn)行測量取樣并記錄,測點(diǎn)x的溫度序列記為ux=[tx1,tx2,tx3,…,txn],其中x=1,2,3,4。則可將所有測點(diǎn)的溫度記錄值記為溫度矩陣T1。同樣,以時(shí)間序列s的時(shí)間點(diǎn)使用位移傳感器對(duì)電主軸5個(gè)測點(diǎn)的熱位移進(jìn)行測量取樣并記錄,測點(diǎn)y的熱位移序列記為uy=[ty1,ty2,ty3,…,tyn],其中y=1,2,3,4,5。則可將所有測點(diǎn)的熱位移記錄值記為位移矩陣R1。
同一時(shí)間點(diǎn)所有溫度測點(diǎn)的溫度值和所有熱位移測點(diǎn)的熱位移值組成了一組樣本,共計(jì)有300組樣本點(diǎn)。
以下編程過程均由MATLAB完成,步驟如下:
a.確定神經(jīng)網(wǎng)絡(luò)模型輸入層節(jié)點(diǎn)數(shù)為3,隱含層為單層,節(jié)點(diǎn)數(shù)為10,輸出層節(jié)點(diǎn)數(shù)為5,神經(jīng)網(wǎng)絡(luò)激活函數(shù)選Sigmod函數(shù),經(jīng)過測試調(diào)整,設(shè)定學(xué)習(xí)率為0.01,迭代次數(shù)為1 000次,訓(xùn)練誤差為1×10-3,隨機(jī)將250個(gè)樣本劃分為訓(xùn)練集,50個(gè)樣本劃分為測試集,完成訓(xùn)練樣本歸一化。
b.設(shè)定抗體粒子群種群數(shù)量為100、最大迭代次數(shù)為100次,粒子維度為95,對(duì)應(yīng)BP神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值總數(shù),算法常數(shù)c1=c2=1.49,w=0.6,初始化抗體位置以及速度。
c.運(yùn)行BP神經(jīng)網(wǎng)絡(luò)求解粒子群適應(yīng)度,更新粒子群全局最優(yōu)和個(gè)體最優(yōu)值。
d.求解粒子群飛行速度以及位移。
e.求解粒子濃度以及激勵(lì)度。
f.取適應(yīng)度最高的個(gè)體構(gòu)建疫苗庫,根據(jù)疫苗的適應(yīng)度以輪盤賭方式選擇疫苗,克隆種群中激勵(lì)度最差的5個(gè)個(gè)體,克隆體與疫苗進(jìn)行交叉,并進(jìn)行高斯變異形成小范圍搜索。
g.比較克隆體和原本粒子的激勵(lì)度,選擇較高激勵(lì)度的保留,隨后返回步驟b,重復(fù)循環(huán),直到達(dá)到迭代次數(shù)停止算法。
根據(jù)以上算法使用訓(xùn)練樣本訓(xùn)練神經(jīng)網(wǎng)絡(luò)后,對(duì)測試樣本進(jìn)行預(yù)測,得到機(jī)床主軸熱誤差預(yù)測值,可以據(jù)此評(píng)價(jià)預(yù)測模型的準(zhǔn)確度。圖6為BP神經(jīng)網(wǎng)絡(luò)熱誤差預(yù)測模型和IA-PSO-BP神經(jīng)網(wǎng)絡(luò)熱誤差預(yù)測模型對(duì)測試集預(yù)測結(jié)果和測試集實(shí)測值的對(duì)比曲線,由圖6數(shù)據(jù)計(jì)算得出,IA-PSO-BP神經(jīng)網(wǎng)絡(luò)熱誤差補(bǔ)償能力高達(dá)98.4%。BP神經(jīng)網(wǎng)絡(luò)熱誤差預(yù)測模型和IA-PSO-BP神經(jīng)網(wǎng)絡(luò)熱誤差預(yù)測模型對(duì)測試集的預(yù)測結(jié)果殘差對(duì)比情況如圖7所示。
圖6 BP和IA-PSO-BP預(yù)測結(jié)果對(duì)比
圖7 BP和IA-PSO-BP預(yù)測殘差對(duì)比
由圖6可知,經(jīng)過免疫粒子群優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)的預(yù)測結(jié)果明顯與測試樣本的實(shí)際曲線更加貼合,而BP神經(jīng)網(wǎng)絡(luò)的預(yù)測結(jié)果經(jīng)常會(huì)有較大誤差。由圖7可知,本文采用的算法和工程常用的BP神經(jīng)網(wǎng)絡(luò)相比,熱誤差補(bǔ)償效果提高了2.8%,平均預(yù)測誤差下降了62.6%,預(yù)測誤差的均方差下降了66.4%,且收斂速度提高了25%,可知IA-PSO-BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型的預(yù)測精度和穩(wěn)定性都要明顯高于BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型。
本文以MATLAB為平臺(tái),通過免疫粒子群算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò),以達(dá)到避免陷入局部最小值,提高神經(jīng)網(wǎng)絡(luò)的收斂性以及收斂速度的目的,同時(shí)還提高了模型的預(yù)測精度以及魯棒性?;趦?yōu)化后的神經(jīng)網(wǎng)絡(luò),以高速電主軸關(guān)鍵測點(diǎn)溫度、熱誤差數(shù)據(jù)建立電主軸熱誤差預(yù)測模型,通過與BP神經(jīng)網(wǎng)絡(luò)算法對(duì)比可知,優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)的熱誤差預(yù)測更加精準(zhǔn)和穩(wěn)定。