劉 超, 王 宸,2, 鐘毓寧
(1.湖北汽車工業(yè)學(xué)院,湖北 十堰 442002;2.上海市智能制造與機(jī)器人重點(diǎn)實(shí)驗(yàn)室,上海 200072)
隨著精密制造技術(shù)的不斷發(fā)展,有效、準(zhǔn)確地評定平面度誤差具有重要的現(xiàn)實(shí)意義。在相關(guān)的國際標(biāo)準(zhǔn)和國家標(biāo)準(zhǔn)中,評定平面度誤差的方法主要有:最小區(qū)域法(minimum zone method,MZM)、最小二乘法(least square method,LSM)及智能優(yōu)化算法等。MZM評定平面度誤差可以得到理想誤差值,但是尋找最小區(qū)域相對耗時(shí),不能滿足現(xiàn)代工業(yè)測量的高效需求[1],因而目前采用最小二乘原理的三坐標(biāo)測量機(jī)(CMM)測量平面度時(shí),不能滿足最小區(qū)域條件,這使得測量的評定結(jié)果難以滿足實(shí)際情況[2],由于CMM成本的限制,CMM獲取的測量樣本數(shù)量有限,費(fèi)蘭等[3]采用空間插值方法,獲取更準(zhǔn)確的平面度誤差估計(jì)??祹r輝等[4]介紹了一種基于多角度旋轉(zhuǎn)的全面形測量方法,該方法使用波前分離技術(shù),得到相對較低的平面度的絕對誤差值。隨著群體智能優(yōu)化算法的發(fā)展,各種新型算法不斷涌現(xiàn),改變以往算法復(fù)雜度較高且計(jì)算耗時(shí)等問題。
Chakraborti N等[5]提出了一種基于遺傳算法(genetic algorithm,GA)的平面度誤差求解算法,建立了完全滿足最小區(qū)域條件的平面度評價(jià)數(shù)學(xué)模型,通過仿真計(jì)算和實(shí)驗(yàn)數(shù)據(jù)驗(yàn)證了該算法的有效性,表明該算法具有全局優(yōu)化和快速收斂的特點(diǎn)。溫秀蘭等[6]提出了基于實(shí)數(shù)編碼的遺傳算法平面度誤差求解算法,通過三坐標(biāo)測量機(jī)測量的實(shí)際數(shù)據(jù)進(jìn)行驗(yàn)證,取得了更優(yōu)效果。羅鈞等[7]提出將改進(jìn)人工蜂群算法(modified artificial bee colony, MABC)用于平面度誤差最小區(qū)域的評定,該算法在基本人工蜂群算法(artificial bee colony, ABC)模型的基礎(chǔ)上引入兩個(gè)牽引蜂和禁忌搜索策略。通過實(shí)驗(yàn)驗(yàn)證了該算法在優(yōu)化效率、求解質(zhì)量和穩(wěn)定性上均優(yōu)于ABC算法,但是該算法的后期的收斂速度慢。劉浩然[8]等針對粒子群算法易陷入局部最優(yōu)的問題,提出了基于雁群啟示的擴(kuò)展粒子群算法( an improved extended PSO algorithm based on geese flight,GeEPSO),該算法融合了所有粒子的個(gè)體極值信息,同時(shí)提高了種群多樣性。畢立恒等[9]基于分群粒子群算法(grouped particle swarm optimization algorithm, GPSO)對平面度誤差進(jìn)行了研究。在不增加粒子的數(shù)量和維度的情況下,使用兩個(gè)粒子群分別進(jìn)行全局搜索和局部搜索,實(shí)驗(yàn)結(jié)果驗(yàn)證該算法具有較強(qiáng)的優(yōu)化能力,評定精度較高,但是粒子群算法(particle swarm optimization algorithm, PSO)的局部搜索能力相比于天牛須搜索算法(beetle antennae search algorithm, BAS)較弱,會使得GPSO算法的整體尋優(yōu)效率降低。
針對上述問題,本文設(shè)計(jì)基于天牛須改進(jìn)粒子群算法(particle swarm optimization algorithm based on beetle antennae search algorithm, BAS-PSO),按最小包容區(qū)域法來建立平面度誤差評定數(shù)學(xué)模型,PSO算法用于全局搜索,BAS算法用來局部尋優(yōu),提高了搜索效率,實(shí)例驗(yàn)證結(jié)果表明:本文算法具有較強(qiáng)的優(yōu)化能力,評定精度較高。
根據(jù)最小區(qū)域法對平面度誤差的評定,本質(zhì)上是找到兩個(gè)理想的平行平面,這兩個(gè)平面包含要測量的實(shí)際平面并且具有最短的距離,這是非線性最優(yōu)化問題。
設(shè)平面上的測量點(diǎn)為Pjk(x,y,z),j=1,2,…,m;k=1,2,…,n,其中m、n分別為x和y方向的分段數(shù),由最小包容區(qū)域確定的公式(1)和各測點(diǎn)相對于最小包容平面的偏離量公式(2)[10],得到平面度誤差公式(3)。
z=ax+by+c
(1)
(2)
f=Dmax-Dmin=
(3)
因?yàn)閍,b=1[10],所以
(4)
故求解平面誤差就轉(zhuǎn)變?yōu)閷で骯,b的值,使目標(biāo)函數(shù)f為最小。所以適應(yīng)度函數(shù)為
fitness(i)=1/[0.001+f(i)]
(5)
其中,
(6)
根據(jù)函數(shù)性質(zhì),滿足最小條件的平面度誤差的適應(yīng)度函數(shù)fitness是二維空間上的凸函數(shù),并且具有唯一的全局極小值[11]。本文根據(jù)平面度誤差評定最小原則,設(shè)計(jì)BAS-PSO來求解目標(biāo)函數(shù)的最優(yōu)解。
BAS是根據(jù)天牛覓食原理開發(fā)的算法。當(dāng)天牛根據(jù)食物氣味來尋找食物時(shí),天牛有2只長觸角,如果右邊觸角收到的氣味強(qiáng)度高于左邊,則往右搜索食物,反之亦然[12~14]。該算法具有全局搜索速度快、求解精度高等特點(diǎn)。
PSO是一種模擬鳥群的捕食行為的優(yōu)化算法,其特點(diǎn)是程序簡單、易實(shí)現(xiàn)。通過記錄每個(gè)位置的適應(yīng)度來確定個(gè)體極值pbest和粒子群體的極值gbest,較快地找到全局最優(yōu)解,并由此來調(diào)整自己的位置與速度[15~17]。雖然PSO算法在局部搜索速度上更有優(yōu)勢,但是由于缺乏粒子速度的動(dòng)態(tài)調(diào)節(jié),算法運(yùn)行到后期收斂速度較慢,求解精度不能達(dá)到要求,容易陷入局部最優(yōu)。
本文BAS-PSO算法使用局部搜索能力較強(qiáng)的BAS算法,在算法前期快速逼近目標(biāo)函數(shù)的適應(yīng)度值,為粒子的速度和位置調(diào)節(jié)提供自主尋優(yōu)的能力,從而快速得到全局最優(yōu)解。目標(biāo)函數(shù)的適應(yīng)度值計(jì)算如下:
Fleft=f(xL)
(7)
Fright=f(xR)
(8)
式中:f(xL)和f(xR)分別為天牛左須、 右須目標(biāo)函數(shù)值。
適應(yīng)度函數(shù)值越低則表明:實(shí)驗(yàn)所測平面度誤差越低,故通過設(shè)計(jì)比較函數(shù)獲取個(gè)體極值pbest和群體極值gbest:
pbest=min(Fleft,F(xiàn)right)
(9)
gbest=min[pbest(1),pbest(2),…,pbest(i)]
(10)
在每次循環(huán)后都進(jìn)行個(gè)體極值和群體極值的及時(shí)更新。當(dāng)個(gè)體極值或者群體極值確定時(shí),PSO的速度和位置也做相應(yīng)的調(diào)整。
更新速度公式為
vi(t+1)=vi(t)+c1r1(pbest(i)-xi(t))+
c2r2(gbest-xi(t))
(11)
更新位置公式為
xi(t+1)=xi(t)+vi(t+1)
(12)
式中:vi(t)和xi(t)分別為第i個(gè)粒子t時(shí)刻的速度和位置;c1和c2是學(xué)習(xí)因子;r1和r2是介于(0,1)之間的隨機(jī)數(shù)。
這樣利用BAS算法與PSO算法進(jìn)行結(jié)合,可以充分發(fā)揮PSO的全局搜索能力,同時(shí)也能夠發(fā)揮BAS算法的局部搜索能力,使得兩種尋優(yōu)算法在優(yōu)勢上進(jìn)行互補(bǔ),可以大大提升算法的搜索性能。
具體步驟如下:
Step1:初始化各項(xiàng)參數(shù),包括:種群大小np,初始步長step,學(xué)習(xí)因子c1、c2,最大和最小慣性權(quán)重ωmax、ωmin,最大和最小速度Vmax、Vmin,最優(yōu)值條件dmax、dmin,迭代次數(shù)n,在(0,1)之間來保證粒子群的隨機(jī)性所設(shè)置的隨機(jī)數(shù)r1、r2,隨機(jī)初始解x。
Step2:計(jì)算天牛左須坐標(biāo)為
xL=X+d0·dir/2
(13)
計(jì)算天牛右須坐標(biāo)為
xR=x-d0·dir/2
(14)
其中dir=rand(0,1)為(0,1)之間的隨機(jī)數(shù)。
Step3:通過式(7)和式(8)計(jì)算須的氣味強(qiáng)度(即函數(shù)適應(yīng)度值)。
Step4:通過式(9)和式(10)獲取個(gè)體極值和群體極值gbest。
Step5:判斷是否達(dá)到迭代最優(yōu)值條件,若是則終止,否則進(jìn)入Step6。
Step6:通過式(11)和式(12)更新群體的速度和位置,主導(dǎo)粒子向全局最優(yōu)靠近。
Step7:判斷是否達(dá)到最大迭代次數(shù),若不滿足,則轉(zhuǎn)向Step2,否則跳出循環(huán),輸出最優(yōu)解。
函數(shù)流程圖如下:
圖1 算法流程圖
為了驗(yàn)證BAS-PSO算法的有效性,本文中選用二維Rosenbrock和二維Schaffer作為測試函數(shù)。
二維Rosenbrock函數(shù)性質(zhì)如下:
(15)
最優(yōu)解為f1(1,1)=0。
二維Schaffer函數(shù)性質(zhì)如下:
-100≤xi≤100
(16)
最優(yōu)解為f2(0,0)=0。
f1(x)是一個(gè)用來測試最優(yōu)化算法性能的非凸函數(shù),它有一個(gè)全局極小點(diǎn),但它卻是病態(tài)的,由于函數(shù)極小值點(diǎn)附近有一條彎曲而狹長的山谷,使得全局極小值點(diǎn)附近函數(shù)值更新極為緩慢,很難找到全局極小值,因此一般用它來評價(jià)算法的搜索性能;f2(x)是二維的復(fù)雜函數(shù),具有無數(shù)個(gè)極小值點(diǎn),由于該函數(shù)具有強(qiáng)烈震蕩的性態(tài),優(yōu)化過程中極易停滯在這些局部極值點(diǎn)處,故很難找到全局最優(yōu)值。
選擇這2個(gè)函數(shù)作為測試函數(shù),一是因?yàn)樗鼈兒推矫娑日`差函數(shù)一樣都有2個(gè)待優(yōu)化的函數(shù)變量;二是它們都很難找到全局最優(yōu)值,而且一旦陷入局部最優(yōu)就很難跳出。故采用以上2個(gè)測試函數(shù)可以很好地衡量BAS-PSO算法的綜合性能。
圖2 Rosenbrock函數(shù)測試結(jié)果
圖3 Schaffer函數(shù)測試結(jié)果
BAS-PSO算法部分參數(shù)設(shè)置如表1所示,該算法使用matlab2019a進(jìn)行編程,運(yùn)行于內(nèi)存為8 G,CPU為3.20 GHz雙核,操作系統(tǒng)為Windows10的高性能計(jì)算機(jī)。對以上2個(gè)測試函數(shù),分別使用BAS-PSO,BAS和PSO進(jìn)行25次實(shí)驗(yàn),得到測試函數(shù)結(jié)果如圖2和圖3所示;迭代次數(shù)設(shè)置為50,得到各算法對測試函數(shù)的迭代圖形如圖4和圖5所示。
表1 算法參數(shù)設(shè)置表
圖4 Rosenbrock函數(shù)迭代結(jié)果
圖5 Schaffer函數(shù)迭代結(jié)果
從圖2和圖3的性能測試結(jié)果可以得出,BAS-PSO相對BAS和PSO算法精度更高、穩(wěn)定性更好。從圖4和圖5的函數(shù)迭代結(jié)果可以看出,BAS-PSO算法的迭代速度更快,迭代結(jié)果更逼近測試函數(shù)的最優(yōu)解值,并且數(shù)據(jù)波動(dòng)性比較小。綜上所述,BAS-PSO相比BAS和PSO算法性能更優(yōu)。
采用意大利COORD3公司的ARES7三坐標(biāo)測量儀對一塊規(guī)格為400 mm×400 mm的一級平板進(jìn)行測試,采集的受測點(diǎn)為50個(gè),其采樣點(diǎn)坐標(biāo)X、Y、Z數(shù)據(jù)如表2所示。
表2 測量數(shù)據(jù)
對表2采樣點(diǎn)數(shù)據(jù),分別使用LSM、GA、BAS、PSO和BAS-PSO算法進(jìn)行平面度測量并對比分析如圖6,各算法的耗時(shí)如圖7所示。
根據(jù)國家計(jì)量檢定規(guī)程[10],一級平板要求最大公差為0.009 mm,由圖6的測量結(jié)果可知,本文的各算法都滿足最大公差的要求,但是BAS-PSO算法的測量精度最高,為0.006 15 mm,相對LSM、GA、BAS、PSO算法測量的平面度公差值分別減少了0.002 3 mm,0.001 27 mm,0.000 58 mm,0.000 37 mm,可知BAS-PSO精度優(yōu)于其他算法。從圖7中各算法的耗時(shí)圖可以看出BAS-PSO算法的求解用時(shí)最少,因此其求解速度較高。
圖6 測量平面度誤差對比
圖7 各算法耗時(shí)比較
為了準(zhǔn)確快速評定平面度誤差,本文提出了BAS-PSO算法,對平面度誤差進(jìn)行了評定研究。利用Rosenbrock和Schaffer測試函數(shù),驗(yàn)證了BAS-PSO算法的有效性,采用BAS-PSO算法對目標(biāo)函數(shù)進(jìn)行求解,結(jié)果顯示該算法相對于BAS和PSO算法更具有較好的尋優(yōu)效果。最后,將BAS-PSO算法應(yīng)用到平面度誤差實(shí)例測量中,得出了平面度公差值為0.006 15 mm,與國家規(guī)定的一級平板最大公差值的差值為0.002 85 mm,相比LSM、GA、BAS和PSO,公差值分別減少了0.002 3 mm,0.001 27 mm,0.000 85 mm,0.000 37 mm,相對比其他算法,BAS-PSO算法計(jì)算的平面度誤差值與國家規(guī)定的一級平板最大公差值的差值最大并且耗時(shí)較少,驗(yàn)證了該算法的可行性及優(yōu)越性。為平面度誤差評定提供了一種新的參考方法。