徐達, 焦慶龍
(陸軍裝甲兵學院 兵器與控制系, 北京 100072)
維修性驗證是對裝備的維修性設計指標進行檢驗,其目的是全面考核裝備是否滿足規(guī)定的維修性設計要求[1-2]。當前,基于虛擬仿真的裝備維修性驗證方法憑借其良好的集成性、時效性和經濟性等優(yōu)點,已成為裝備維修性驗證的重要方法[3-4]。在該方法應用過程中,虛擬人體維修作業(yè)姿態(tài)(以下簡稱人體姿態(tài))編輯次數繁多是較多領域的技術人員普遍反映的一個問題,且嚴重影響裝備維修性仿真驗證的效率。因此,如何對人體姿態(tài)進行預處理,是高效開展裝備維修性仿真驗證的一個難點。
針對這一難點問題,已有學者構建了人體姿態(tài)庫[5-8]。該庫中人體姿態(tài)案例的建立方法為首先建立虛擬人體的整體姿態(tài)(如蹲姿、站姿和跪姿等),并在整體姿態(tài)基礎上對虛擬人體各關節(jié)進行局部調整,進而得到各個人體姿態(tài)案例。這一方法雖然簡單易行,但對于不同型號的裝備或裝備中不同的子系統(tǒng),在較長的維修時間內,從宏觀角度來看,維修人員的維修作業(yè)姿態(tài)勢必具有目標維修任務的“烙印”。因此,文獻[5-8]中所構建的人體姿態(tài)庫的目標維修任務針對性存在不足,且難以確定有限數量條件下庫中的人體姿態(tài)案例。沈亞斌等[9]認為在建立人體姿態(tài)庫時應考慮處理相似的人體姿態(tài),但并未給出有效解決該問題的方法。綜上所述,如何在對大量相似人體姿態(tài)進行有效處理基礎上[10-12],構建滿足目標裝備維修性仿真驗證任務需求的人體姿態(tài)庫,具有十分重要的實際應用價值。目前,國內外還鮮見學者對這一問題的研究成果。
劍橋大學Yang[13]于2012年提出了花朵授粉算法(FPA)。該算法具有參數設置少、框架簡明和搜索方式易于調節(jié)等優(yōu)點[14],已廣泛應用于線性天線陣列優(yōu)化[15]、離散空間優(yōu)化[16]和拆卸序列規(guī)劃[17]等領域,取得了良好的效果。但從文獻[15-17]中FPA的尋優(yōu)過程與尋優(yōu)結果來看,F(xiàn)PA存在收斂速度慢和尋優(yōu)精度不夠理想的問題。烏鴉搜索算法(CSA)是伊朗學者Alireza[18]于2016年提出的一種新興元啟發(fā)式群體智能優(yōu)化算法,該算法具有參數設置簡便、搜索能力強和尋優(yōu)效率高等優(yōu)點。目前,國內外有關CSA應用于工程實踐的文獻較少[19-20],而對CSA進行報道的中文文獻則更為鮮見。鑒于CSA的優(yōu)異性能,本文將CSA引入FPA,提出一種改進FPA(IFPA),旨在有效地彌補FPA性能上的不足,并將IFPA與K-means算法相融合(記二者融合后的算法名稱為IFPA-K),通過IFPA-K有效地處理相似的人體姿態(tài),構建能夠有效地提高目標裝備維修性仿真驗證任務效率的人體姿態(tài)庫。
自然界中花朵憑借鳥類、昆蟲和風等多種媒介進行傳粉和授粉,Yang[13]根據花朵的這種繁衍方式和行為并通過科學地數學演化提出了FPA. FPA有兩種授粉方式:全局授粉方式和局部授粉方式,這兩種授粉方式通過轉換概率Pt進行調節(jié)。文獻[13]的研究結果表明,當Pt=0.8時,F(xiàn)PA的尋優(yōu)效果較好。
令FPA的種群為X,種群規(guī)模(即花朵總數)為N1,迭代次數為T1,k∈[1,N1],t∈[1,T1],則全局授粉方式為
(1)
(2)
(3)
局部授粉方式為
(4)
(5)
記FPA的適應度函數為F,則在個體值比較結束后進行個體更新:
(6)
(7)
至此,第t次迭代計算即完成,F(xiàn)PA繼續(xù)進行個體比較與迭代計算,直到滿足終止條件時退出循環(huán),并輸出XB及F(XB)。
烏鴉被認為是較為聰明的鳥類之一,受自然界中烏鴉覓食和藏匿食物等眾多行為的啟發(fā),Alireza[18]提出了CSA,并給出了CSA的4個準則:
1) 烏鴉是群居的鳥類。
2) 烏鴉能夠記住它們藏身的位置。
3) 烏鴉能夠相互跟蹤去完成盜竊。
4) 在完成盜竊后,烏鴉能夠以一定的概率保護它們藏身的位置。
(8)
2)烏鴉c已感知到烏鴉i跟蹤它,則烏鴉c就會避免烏鴉i知道其藏身之處,烏鴉c就會飛到烏鴉d的位置來迷惑烏鴉i,則烏鴉i在第t+1次迭代時的位置為
(9)
至此,綜合上述兩種情形,烏鴉i在第t+1次迭代時的位置為
(10)
式中:r1為服從均勻分布的隨機數,r1∈[0,1];Pp為在第t次迭代時烏鴉c感知烏鴉i跟蹤它的概率。
(11)
式中:kl與ku分別為個體取值的下限與上限。
(12)
(13)
對于調節(jié)CSA的搜索范圍,Pp具有較為關鍵的作用。如果減小Pp,則CSA趨向于尋找局部最優(yōu)解,此時CSA的搜索密集度較高;如果增大Pp,則CSA趨向于搜索局部最優(yōu)解的可能性較小,而是在更大范圍內搜索全局最優(yōu)解。
鑒于CSA能夠有效地對搜索范圍進行調節(jié),本文將CSA引入FPA,提出一種IFPA。旨在通過CSA良好的搜索能力來擴展FPA的搜索空間,增加搜索到適應度函數值更優(yōu)個體的概率,彌補FPA尋優(yōu)精度不高、易陷入局部最優(yōu)解的不足。IFPA的基本步驟如下:
步驟1算法參數初始化:N1、T1、β、σ、fl、Pp和Pt,設置X和x,令Xi=xi,i∈[1,N1],k=t=1.
步驟2計算與比較種群X中個體的適應度函數值,得到XB及F(XB)。
步驟8如果Fmin≤F(XB),則XB=S3,F(xiàn)(XB)=Fmin. 否則XB=XB,F(xiàn)(XB)=F(XB)。
步驟9如果k 步驟10如果t 步驟11迭代計算結束,輸出XB及F(XB)。 選取4個智能優(yōu)化算法測試函數對粒子群優(yōu)化(PSO)算法[21]、FPA和IFPA進行測試和比較。這4個函數[22]分別為 (14) 式中:zm∈[-100,100],該函數在zm=0時取得全局最優(yōu)適應度函數值0,即f1的理論值。 (15) 式中:zm∈[-32.768,32.768],該函數在zm=0時取得全局最優(yōu)適應度函數值0,即f2的理論值。 陳升茶廠成立于2006年,經過12年的發(fā)展,已經成為一家擁有300余名員工,數百戶簽約農戶,集普洱茶精制加工、生產、銷售及茶文化和民族風情為一體的省級產業(yè)化重點龍頭企業(yè)。而陳升茶廠所在的勐海縣被稱作“中國普洱茶第一縣”,吸引著大批企業(yè)家投資設廠,其中包括一些不規(guī)范的代加工企業(yè),他們在規(guī)范化生產、人力、設備等各方面投入成本低,有些甚至存在虛開發(fā)票等違法行為,嚴重影響和擾亂了市場秩序,對大型民營企業(yè)發(fā)展也造成了很大壓力。 (16) 式中:zm∈[-600,600],該函數在zm=0時取得全局最優(yōu)適應度函數值0,即f3的理論值。 (17) 式中:zm∈[-5,5],該函數在zm=0時取得全局最優(yōu)適應度函數值0,即f4的理論值。 3種算法的特征參數設置如下: PSO算法取慣性權重w=0.5,學習因子c1=c2=2; FPA算法取β=1,σ=0.1,Pt=0.8; IFPA算法取β=1,σ=0.1,fl=2,Pp=0.2,Pt=0.8. 令種群規(guī)模分別為30和80,迭代次數為2 000,獨立計算次數為50,則3種算法的測試結果如表1所示。 表1 PSO、FPA與IFPA的測試結果 由表1可以看出,在相同的測試條件下,相比PSO和FPA,IFPA的4項指標結果均為最小,平均值的計算結果比PSO和FPA的平均值更加接近各測試函數的理論值,表明IFPA的尋優(yōu)能力和尋優(yōu)過程的穩(wěn)定性明顯優(yōu)于PSO與FPA,驗證了IPFA的優(yōu)越性。 K-means算法是MacQueen首次提出的一種高效的聚類算法[23-24],該算法的目的是實現(xiàn)數據分類,即將M個R1維數據Y={Y1,Y2,…,Yl,…,YM}劃分為D個類{C1,C2,…,Cs,…,CD},使得同一類內的數據具有較高的相似性,不同類內的數據具有較低的相似性。數據聚類過程就是要找到一個D,使得數據聚類結果滿足以下3個條件: 1)Cs≠?,s∈[1,D]; 2)Cs∩Cu=φ,s、u∈[1,D],s≠u; 并滿足總的類間和類內的數據離散度和最?。?/p> (18) 式中:J表示總的類間和類內的數據離散度之和,J值越小,表示聚類效果越好;當Yl與Cs的中心Hs距離相比Yl與其他各類的中心距離更小時,表明Yl∈Cs,l∈[1,M];d(Yl,Hs)表示Yl與Hs的距離。 采用歐式距離來定義d(Yl,Hs): (19) 式中:Yl,o表示Yl的第o個維度數據;Hs,o表示Hs的第o個維度數據,s∈[1,D]。 K-means算法雖然具有很好的拓展性,但也存在以下兩點不足:1)初始聚類中心的選取對K-means算法的聚類效果具有重要影響,如果初始聚類中心選取不當,將會導致聚類失?。?)易陷入局部最優(yōu)解,得到全局最優(yōu)解的機會較小,這與K-means算法采用梯度法進行聚類具有一定的關系。 針對K-means算法存在的不足,部分學者將智能優(yōu)化算法引入K-means算法,以借助智能優(yōu)化算法較強的搜索能力和尋優(yōu)能力來改善K-means算法性能。實例應用結果證明了這一做法的有效性[24],使K-means算法的聚類效果有了大幅改善。為了更為準確地獲取到各類的中心,使人體姿態(tài)案例具有更好的覆蓋性,本文采用二進制編碼方式來設計個體編碼以及定義個體操作函數。 鑒于本文是采用各類中心來構建人體姿態(tài)庫,可將IFPA-K初始種群中的每個個體定義為所有類的中心順序排列,如圖1所示。 圖1 個體編碼 設每個類的中心為h位二進制數,h可根據求解精度設定,則初始種群中的每個個體共有M1=Dh位二進制數。 為了便于后文對IFPA-K進行描述,首先定義兩個個體操作函數: 1)交叉操作函數 交叉操作是遺傳算法(GA)中個體更新的重要方式[25],交叉操作使得優(yōu)秀的基因片段能夠在不同個體間進行傳播,進而增加了優(yōu)秀個體產生的概率。通常情況下交叉操作是由兩個以上個體參與完成的,并根據參與交叉操作的個體數量來設計交叉方式。本文選取兩個個體參與交叉操作,所設計的個體交叉操作方式為 Ic=λh·Ii+(D-λ)h·Ik, (20) 式中:Ic為交叉操作產生的個體;Ii、Ik為參與交叉操作的兩個父代個體,i、k∈[1,N1],i≠k;λ為繼承因子,λ∈[1,D-1]。 (20)式表示Ic分別從Ii與Ik中繼承了λh位與(D-λ)h位二進制數,即將Ii的第1~第λh位與Ik的第λh+1~第M1位二進制數進行重組。交叉操作過程如圖2所示。 交叉操作函數可定義為 Ic=fun(Ii,Ik,D). (21) 2)變異操作函數 變異操作是GA的另一種個體更新方式,不同于交叉操作是由兩個個體參與完成的,變異操作是由單一個體參與完成的,是一種基因強制突變的操作。該操作避免了基因片段重組所導致的基因更新方式受限問題,有效地豐富了種群的多樣性。為增強該操作的有效性,首先產生1~M1的全排列G,而后根據M1長度取G的前R位數,對這前R位數所在位置的元素進行取反操作。操作過程如圖3所示。 變異操作函數定義為 (22) 以商業(yè)軟件DELMIA為例,在編輯人體姿態(tài)時,技術人員通常是對虛擬人體的手臂和腿部姿態(tài)進行優(yōu)先編輯,使人體姿態(tài)初步具有目標維修作業(yè)姿態(tài)的輪廓,然后對虛擬人體的腹部、頭部和足部等部位姿態(tài)進行編輯,以實現(xiàn)人體姿態(tài)的舒展和協(xié)調。有鑒于此,選取虛擬人體的前臂、大臂、肩、大腿和小腿作為需要提取維修作業(yè)姿態(tài)特征數據的人體部位,這5個部位的動作范圍(左側、右側部位的動作編號分別采用下標l和下標r進行區(qū)分)如表2所示。 表2 部位動作范圍 目前,維修作業(yè)姿態(tài)數據采集有多種方法,例如可采用先進的動作捕捉設備,如Kinect[26]。該設備雖然對維修作業(yè)姿態(tài)數據采集具有實時、準確的特點,但價格較為昂貴。此外,在實裝維修時,維修人員通常是在裝備多個方位同時開展維修作業(yè),為了使維修作業(yè)數據采集的更為全面,就需要對多臺Kinect進行合理布局,從而進一步增加了費用。對此,本文采用人工方法來提取維修作業(yè)姿態(tài)特征數據,即采用拍照和錄像方式對實裝維修過程進行拍攝和錄制,然后參照照片或視頻中維修人員的維修作業(yè)姿態(tài),將虛擬人體姿態(tài)編輯至與其相同,進而提取維修作業(yè)姿態(tài)特征數據。 需要說明的是,商業(yè)軟件DELMIA共提供了5個國家(美國、法國、德國、日本和韓國)的虛擬人體模型,這5個國家中95%人體百分位的男性虛擬人體模型在表2中5個部位的動作范圍上不存在差異。因此,可選擇任意國家95%人體百分位的男性虛擬人體模型進行姿態(tài)編輯,實現(xiàn)維修作業(yè)姿態(tài)特征數據提取。 以維修任務“某型裝甲車輛動力艙吊艙”為例,本文共收集了400個實裝維修時維修人員的維修作業(yè)姿態(tài)特征數據。令IFPA-K中β=1,σ=0.1,fl=2,Pp=0.2,Pt=0.8,B=1. 本文所設計的算法應用程序均采用MATLAB R2010a軟件編寫。 鑒于所選取的維修作業(yè)姿態(tài)特征數據在十進制數時R1=24,在轉換為二進制數后維數較高,為了使變異操作能夠有效地提高IFPA-K的局部搜索能力,令R=30,并將J作為IFPA的適應度函數模型。此外,共設置兩組初始條件(記法為N1-D-T1)進行算法的測試和比較,分別為:初始條件1為200-5-3000;初始條件2為300-6-2000. 4.2.1 IFPA-K與未設置任何變異操作的IFPA-K對比分析 為了驗證本文所設計的IFPA-K操作步驟合理性與優(yōu)越性,現(xiàn)取消IFPA-K中所有的變異操作。實現(xiàn)這一目的需要完成以下4個步驟: 步驟1將圖4中虛線框1中左側、右側兩個實線框中的公式分別用(23)式、(24)式替換: (23) (24) 步驟2將圖4中虛線框2中實線框中的公式用(25)式替換: (25) 步驟3將圖4中虛線框3中左側、右側兩個實線框中的公式分別用(26)式、(27)式替換: S1=XB, (26) (27) 步驟4將圖4中虛線框4中左側、右側兩個實線框中的公式分別用(28)式、(29)式替換: (28) (29) 至此,本文將未設置任何變異操作的IFPA-K記為IFPAWM-K,則在初始條件1和初始條件2時,IFPA-K與IFPAWM-K的最優(yōu)適應度函數值變化情況如圖5所示。 由圖5可以看出,在相同的初始條件下,在迭代過程中的每一步,IFPA-K搜索到的最優(yōu)適應度函數值均小于IFPAWM-K搜索到的最優(yōu)適應度函數值,表明IFPA-K的尋優(yōu)能力明顯好于IFPAWM-K. 此外,IFPA-K與IFPAWM-K搜索到的最優(yōu)適應度函數值相差較大,表明變異操作對IFPA-K尋優(yōu)過程和尋優(yōu)結果具有重要影響。這是因為變異操作不同于交叉操作的基因重組,它是通過基因強制突變的方式給種群注入了“新鮮血液”,有效地剔除了原有個體中的不良基因,提高了IFPA-K的局部搜索能力。IFPAWM-K的最優(yōu)適應度函數值在迭代計算的早期存在一定程度的下跌,但這個過程極為短暫,最優(yōu)適應度函數值很快地就過早收斂,算法不易跳出局部最優(yōu)解,無法實現(xiàn)良好的數據聚類。同時對比結果表明,通過交叉操作雖然能夠改善IFPA-K的搜索能力,但改善程度較小,遠不如變異操作對IFPA-K搜索能力的改善程度。 4.2.2 IFPA-K與其他算法對比分析 將PSO算法、GA、蝙蝠算法(BA)[27]、FPA和CSA分別與K-means算法融合,并記融合后的算法名稱分別為PSO-K、GA-K、BA-K、FPA-K和CSA-K. 將這5種算法與IFPA-K進行比較。各算法的特征參數及GA-K的主要操作步驟如下: PSO-K算法取w=0.5,c1=c2=2; GA-K算法取交叉概率Pc=0.95,變異概率Pm=0.05,個體選擇方式為輪盤賭選擇,個體的交叉操作方式和變異操作方式為本文所設計的交叉操作方式和變異操作方式,令R=30; BA-K算法取脈沖響度A=0.95,脈沖頻度ν=0.05,脈沖響度衰減系數ε=0.95,脈沖頻度增強系數γ=0.05; FPA-K算法取β=1,σ=0.1,Pt=0.8; CSA-K算法取B=1,fl=2,Pp=0.2. 則在初始條件1和初始條件2時,IFPA-K與上述5種算法的最優(yōu)適應度函數值變化情況如圖6所示。 由圖6可以看出,在相同的初始條件下,IFPA-K搜索到的最優(yōu)適應度函數值明顯小于其他5種算法搜索到的最優(yōu)適應度函數值,驗證了IFPA-K尋優(yōu)能力的優(yōu)越性。此外,可以看出IFPA-K具有較快的搜索速度,在迭代計算的早期,IFPA-K相比其他5種算法,能夠以更快的搜索速度從最大的適應度函數值下跌,趨向最小的適應度函數值。且整個搜索過程平穩(wěn)有序,未出現(xiàn)GA-K在搜索過程中出現(xiàn)適應度函數值“跌宕起伏”的現(xiàn)象,表明IFPA-K的搜索過程具有良好的穩(wěn)定性。這是因為CSA通過Pp對全局搜索方式和局部搜索方式進行轉換,而FPA則通過Pt對全局授粉方式和局部授粉方式進行轉換。在將CSA引入FPA后,通過CSA的搜索方式有效地拓展了FPA的搜索空間,并將IFPA中基于CSA的搜索方式與基于FPA的授粉方式分別得到的個體適應度函數值進行比較,使IFPA能夠搜索到適應度函數值更為優(yōu)秀的個體,使IFPA-K在迭代計算結束時所求取的最優(yōu)適應度函數值為最小的適應度函數值。 鑒于圖6中FPA-K與IFPA-K的尋優(yōu)結果較為接近,令初始條件2時,IFPA-K中Pp=0.1,其余參數保持不變。將兩種算法各獨立計算15次。兩種算法求取的最優(yōu)適應度函數值分布情況如圖7所示。 在15次獨立計算結果中,IFPA-K與FPA-K搜索到的最大的最優(yōu)適應度函數值分別為41 369與41 658,最優(yōu)適應度函數值的平均值分別為40 540.5與40 873.9,最優(yōu)適應度函數值的方差分別為461.88與471.24,最小的最優(yōu)適應度函數值分別為39 651與39 744??v觀這4項指標的計算結果,IFPA-K均小于FPA-K,驗證了IFPA-K的優(yōu)越性。在圖6(b)中,IFPA-K求取的各類中心數據如表3所示。 表3 初始條件2下IFPA-K求取的各類中心 將表3中各類中心數據作為虛擬人體的各部位動作角度輸入參數,所得到的人體姿態(tài)案例如圖8所示?;趫D8的人體姿態(tài)案例所構建的動力艙吊艙人體姿態(tài)庫如圖9所示。 由圖8可以看出,動力艙吊艙的人體姿態(tài)主要體現(xiàn)為站姿、跪姿和蹲姿,其中C1~C6所包含的人體姿態(tài)數量分別為2、145、61、32、56和104,站姿(C2、C4和C5)和蹲姿(C3和C6)分別包含了233個和165個人體姿態(tài),占據人體姿態(tài)總量的99.5%. 人體姿態(tài)的聚類結果能夠體現(xiàn)出動力艙吊艙過程中維修人員在多數時間時的維修作業(yè)姿態(tài),與實際情況相符。 本文所提出的人體姿態(tài)庫構建方法有效地解決了在人體姿態(tài)案例較少情況下,如何構建人體姿態(tài)庫的難題。避免了文獻[5-8]中人體姿態(tài)庫構建方法存在的維修性仿真驗證任務針對性不足、無法確定人體姿態(tài)案例的問題。實踐應用結果表明,相比文獻[5-8]中的人體姿態(tài)庫構建方法,在開展動力艙維修性仿真驗證時,基于本文所構建的人體姿態(tài)庫,在設定目標人體姿態(tài)后,更為容易地在人體姿態(tài)庫中對人體姿態(tài)案例進行選取。同時,虛擬人體部位動作角度編輯的幅度明顯減小,人體姿態(tài)案例與目標人體姿態(tài)的貼合度較高,維修性仿真驗證的效率有了明顯提高,體現(xiàn)了本文所提出的人體姿態(tài)庫構建方法的有效性和優(yōu)越性。 裝備維修性仿真驗證對于查找和解決裝備維修性設計存在的問題,改進裝備維修性設計方案具有重要意義。本文提出了一種基于IFPA-K的人體姿態(tài)庫構建方法,旨在更好地輔助裝備維修性仿真驗證,提高裝備維修性仿真驗證的效率,并取得了良好效果。本文主要貢獻及所得結論如下: 1) 將CSA引入FPA,提出了一種IFPA,IFPA有效地拓展了FPA的搜索空間,避免了FPA尋優(yōu)精度不夠理想、易陷入局部最優(yōu)解的問題。 2) 在解決連續(xù)性優(yōu)化問題時,IFPA尋優(yōu)精度和尋優(yōu)穩(wěn)定性優(yōu)于PSO與FPA. 3) 在解決人體姿態(tài)庫構建問題時,本文所提出的IFPA-K明顯優(yōu)于PSO-K、BA-K、GA-K、CSA-K和FPA-K,較好地解決了人體姿態(tài)案例冗余或不足的問題,為構建面向裝備維修性仿真驗證的人體姿態(tài)庫提供了一種新的思路。 為了進一步改善人體姿態(tài)的聚類效果,下一步工作將圍繞改進K-means算法展開。2 仿真實驗測試
3 IFPA-K
3.1 K-means算法及其不足
3.2 IFPA-K個體編碼及其操作函數
Fig.1Individualencoding4 實例應用
4.1 維修作業(yè)姿態(tài)特征數據提取
4.2 實驗對比分析
5 結論