王 輝, 阿迪娜
(中國民航大學 航空工程學院, 天津 300300)
六自由度運動平臺作為一種并聯(lián)Stewart平臺, 是飛行模擬器的重要組成部分, 此外, 為了完成從真實運動軌跡到模擬信號的變換過程, 洗出算法成為了模擬與復現(xiàn)真實運動軌跡的重要環(huán)節(jié)之一.
經(jīng)典洗出算法由Conrad等人[1]首次提出, 該算法具有參數(shù)設置容易、算法結(jié)構(gòu)簡單、運行性能穩(wěn)定等特點, 所以該算法的被運用率一直都比較高. 但隨著人們對模擬逼真度要求的提高, 經(jīng)典洗出算法也暴露出了一些缺點, 如算法的洗出結(jié)果存在相位延遲、部分信號丟失、運動空間使用效率低下等問題. 因此, 為了獲取更好地模擬效果, 許多研究人員對算法進行了優(yōu)化研究. Parrish等人[2]基于連續(xù)最速下降法推導出了一種非線性的自適應濾波器, 協(xié)調(diào)了平移方向上的比力和旋轉(zhuǎn)運動中的轉(zhuǎn)速, 此外還設計了一種數(shù)字控制器以改善模擬平臺的響應特征. 通過仿真發(fā)現(xiàn)運動的穩(wěn)態(tài)幅度和相位響應都優(yōu)于線性濾波器, 但由于定義代價函數(shù)時還需考慮針對不同情況下的成本權(quán)重, 因此導致計算量增大. 為了改善模擬器恢復到中立位置過程中的物理極限問題, 一種基于模糊控制邏輯和人體感知誤差模型[3]的優(yōu)化方法可以有效地改善經(jīng)典洗出算法較為保守的問題, 并且能夠為飛行員提供更好的感知效果. 之后, 隨著進化算法的發(fā)展, Asadi等人[4,5]利用魯棒性高且搜索可靠的遺傳算法, 綜合考慮包括傾斜協(xié)調(diào)時的人類感知閾值、平臺運動極限等因素,設計了基于遺傳算法的運動洗出算法. 該算法增強了人體對運動的感知, 改善了模擬平臺對信號形狀的跟蹤, 還提高了對平臺運動空間的使用效率. 郭盛等人[6]對洗出算法的結(jié)構(gòu)進行了改進, 在原始洗出過程中增加了比例限制及頻率限制環(huán)節(jié), 從而使得模擬機運動平臺不會產(chǎn)生運動超限的情況, 此外還提高了洗出算法運行的穩(wěn)定性. 王輝等人[7]基于人體感知誤差模型和模糊控制邏輯對濾波器的參數(shù)進行動態(tài)調(diào)節(jié),再通過誤差的補償環(huán)節(jié)實現(xiàn)了對經(jīng)典洗出算法中丟失信號的補償效果, 通過仿真實驗可以發(fā)現(xiàn), 該改進方法可以較好地解決模擬逼真度不高的問題. 王輝等人[8]也采用了模糊補償?shù)乃枷雽ο闯鏊惴ㄟM行改進, 其主要改進思想是利用補償信號替代洗出算法中的低通濾波器, 從而提高模擬器的動感逼真度. 之后王輝等人[9]考慮到經(jīng)典洗出算法中信號丟失嚴重, 提出了一種基于雙路濾波校正的自適應洗出算法, 該算法通過不同信號分路合成補償信號, 并借助自適應控制器實現(xiàn)對洗出位移的補償和調(diào)目的, 仿真證明改進后的洗出算法對于相位延遲的問題有較明顯的改善效果, 但是在運動信息的感知方面存在一些不足. 李煒增等人[10]基于運動誤差模型和遺傳算法對濾波器參數(shù)進行了尋優(yōu)與優(yōu)化, 通過該方法獲得的濾波器參數(shù)可以保證算法在每次模擬過程中都可以獲得足夠的運動空間, 從而為下一次模擬運動做足準備, 同時改進后的算法在減少虛擬暗示方面也有較好的改善效果. 王輝等人[11]為改進經(jīng)典洗出算法中信號丟失嚴重的問題, 結(jié)合人體感知模型對洗出算法的結(jié)構(gòu)進行了再設計, 通過引入帶通濾波器及自適應濾波器使得信號丟失及空間利用率等方面得到了明顯改善, 但對于角速度的感知情況沒有得到解決, 反而超出了人體的感知閾值. 劉偉超等人[12]在人體感知誤差的基礎上加入了對于平臺運動余量的分析, 然后對截取到的丟失信號進行多重濾波并以自適應的比例情況再分別補償?shù)浇?jīng)典洗出算法的每一通道中, 從而實現(xiàn)對丟失信號的補償, 最大程度地還原真實運動信號. 而新型仿生算法的產(chǎn)生給優(yōu)化類問題帶來了新的解決思路, 如李曉磊等人提出的人工魚群算法(artificial fish swarm algorithm, AFSA)[13], 由于該算法具有魯棒性強、參數(shù)設置簡單、搜索能力強等優(yōu)點, 因此被廣泛運用于路徑規(guī)劃、參數(shù)尋優(yōu)等多種問題中. 如文獻[14]中利用AFSA對魯棒PID的參數(shù)進行整定, 通過仿真結(jié)果可以發(fā)現(xiàn), AFSA的尋優(yōu)能力可以有效保證整定效果. 文獻[15,16]也通過AFSA實現(xiàn)了對參數(shù)的優(yōu)化, 并且仿真結(jié)果證明: 通過AFSA得到的新參數(shù)可以提高相應優(yōu)化系統(tǒng)的運行性能. 但是,AFSA作為一種優(yōu)化方法還是存在些許的不足之處, 需要提高全局搜索的能力以及算法尋優(yōu)的精度. 張英杰等人[17]提出了一種基于動態(tài)調(diào)整人工魚視野大小及擁擠度因子值的改進人工魚群算法此外還引入了再尋優(yōu)算子, 將改進后的算法代入到旅行商問題并分析其實驗結(jié)果發(fā)現(xiàn), 改進后的AFSA對于提高算法的尋優(yōu)能力具有良好表現(xiàn). 馬憲民等人[18]提出的自適應視野的AFSA, 通過分析視野對于魚群覓食行為的影響并進行改進后, 解決了基礎人工魚群算法中存在的算法后期收斂容易陷入局部最優(yōu)值的問題. 為了能夠?qū)崿F(xiàn)更好的全局搜索效果, 劉東林等人[19]借助混沌變換實現(xiàn)了魚群的初始化, 使得人工魚的分布能夠更加均勻且具有遍歷性, 該思路對于優(yōu)化群智能算法的來說十分具有參考價值.
基于上述對經(jīng)典洗出改進方法的分析與總結(jié), 本文提出了一種改進的人工魚群算法, 即在基礎AFSA中融入引力搜索算法(gravitational search algorithm,GSA)從而提高基礎算法的收斂速度和求解精度, 更好地保證洗出結(jié)果具有良好的運動復現(xiàn)效果.
AFSA算法的核心思想是: 水域環(huán)境中的魚類會偏向于朝著食物濃度較高且擁擠度不高的位置聚集或覓食. 基于這一思想, 算法的行為可描述如下(見圖1,以極大值問題為例)[13]:
圖1 基礎人工魚群算法執(zhí)行流程
1) 覓食行為是指人工魚個體在視野范圍內(nèi)搜索到某個食物濃度優(yōu)于當前狀態(tài)的位置時所采取的移動行為. 該行為的移動方式為:
其中,為當前人工魚所在位置,Xj為視野范圍Visual內(nèi)對應最優(yōu)食物濃度的位置,Step為移動步長,Rand()是[ 0,1]內(nèi)的隨機數(shù).
2)追尾和聚群行為分別向視野范圍內(nèi)食物濃度最高位置Xj和伙伴中心位置Xe移動的行為, 其移動方式分別如式(1)、式(2)所示.
3)如果經(jīng)上述3種行為后, 人工魚的探索次數(shù)達到嘗試次數(shù)trynumber時, 算法仍然沒有搜索到新的較優(yōu)解, 則人工魚將執(zhí)行隨機行為, 其移動方式如式(3)所示:
在AFSA中聚群行為與追尾行為主要負責向鄰域內(nèi)最優(yōu)值處聚集, 覓食行為奠定了算法收斂的基礎, 這幾種行為使得AFSA具備了高效、穩(wěn)定的全局尋優(yōu)能力, 且對于多種優(yōu)化問題都具備較強的適應性. 但是基礎的AFSA也具有一定的不足, 如人工魚在執(zhí)行覓食為時若采用固定的步長對搜索空間進行探索和移動, 則有可能導致以下兩種情況發(fā)生: 第一, 選擇較大移動步長進行搜素時, 雖然加快了算法收斂的速度, 但當步長超過一定值后, 就會在算法迭代后期產(chǎn)生人工魚個體在全局最優(yōu)解處來回震蕩的現(xiàn)象, 從而降低了算法的收斂速度. 第二, 假如選擇較小步長進行搜索,雖然能夠保證算法的搜索精度, 并且不會產(chǎn)生震蕩現(xiàn)象, 但是較小的移動步長會導致算法在達到嘗試次數(shù)時只對較小搜索空間進行了探索, 從而使得收斂速度減慢, 有時還可能導致人工魚個體陷入局部最優(yōu)值情況的發(fā)生.
由于算法在設置步長時存在的隨機性使得算法尋優(yōu)精度難以保證, 因此, 本文考慮一種能夠改進人工魚覓食行為中移動方式的方法, 以削弱因步長設置不合理而對算法迭代結(jié)果產(chǎn)生的不良影響.
引力搜索算法由Rashedi等人于2009年提出[20],它是一種可以針對所有優(yōu)化問題實現(xiàn)最佳解決方案的啟發(fā)式優(yōu)化算法. 該算法基于萬有引力定律和牛頓第二定律, 即“物體的加速度與其受到的作用力成正比,與其質(zhì)量成反比”, “宇宙中每個粒子之間的相互引力都與其質(zhì)量的乘積成正比, 與它們之間距離的平方成反比的力吸引所有其他粒子 ”.
對于一個優(yōu)化問題來說, GSA的執(zhí)行流程如下:
2) 在萬有引力的作用下, 該空間內(nèi)的所有粒子都將受到來自其他粒子的吸引力, 與此同時, 每一個粒子的質(zhì)量大小與其適應度值的大小成正相關(guān), 即: 粒子的質(zhì)量越大其所處的位置就更優(yōu).
3) 所有粒子將遵循牛頓第二定律并沿著具有較大質(zhì)量粒子的方向移動, 最終聚集在位置最優(yōu)的粒子附近, 從而達到全局尋優(yōu)的效果.
由表1的計算內(nèi)容可知, 在引力搜索算法中, 人工魚個體在每一次迭代獲取的是本次迭代結(jié)果中的最優(yōu)、最差適應度值, 而每一粒子的加速度與速度信息是基于當次迭代的全局環(huán)境以及自身的適應度信息得到的. 因此, GSA可以針對人工魚覓食行為中的每一個體提供不同的移動信息, 這一信息除了具備移動的步長大小以外, 還具備了單次迭代中指向全局最優(yōu)解的方向信息. 即, 借助GS算法可以有效地提高人工魚群算法對全局環(huán)境的敏感度和收斂效率.
表1 引力搜索算法計算內(nèi)容
由于AFSA和GSA中的步長值及速度大小都表示個體在單位時長內(nèi)移動的距離大小, 于是就有但是, 在GSA中運動個體的加速度大小受全局合力以及自身重力的影響, 因此GSA中的加速度和速度為矢量信息. 此外, 通過GSA的加速度計算公式和速度更新公式可以得出: 每一條人工魚的速度信息存在個體差異性, 并且隨著迭代的進行, 加速度的增量將逐漸減小,這可以彌補基礎AFSA迭代后期出現(xiàn)的因步長過大而導致收斂震蕩或搜索精度降低的不足.
于是, 基于GS算法的位置更新公式, 基礎AFSA覓食行為中位置更新方式將改變?yōu)槭?4)的形式:
經(jīng)典洗出算法由高通加速度通道、傾斜協(xié)調(diào)通道以及高通角速度通道組成, 如圖2所示[1].
圖2 經(jīng)典洗出算法原理圖
高通加速度通道利用三階高通濾波器采集高頻加速度信號, 經(jīng)過一系列處理后輸出模擬機運動平臺的線位移信息. 其中, 高通加速度濾波器的傳遞函數(shù)表示如下:
傾斜協(xié)調(diào)通道通過為運動平臺提供一個較小的傾斜角, 從而實現(xiàn)對真實飛機持續(xù)加速運動模擬的效果.低通加速度濾波器的傳遞函數(shù)表示如下:
高通角速度通道負責對二階高通角速度濾波器所洗出平臺運動的姿態(tài)角信號進行處理, 從而得到平臺運動的角位移信息. 其中, 高通角速度濾波器的傳遞函數(shù)表示如下:
人體的前庭器官位于人耳的內(nèi)耳之中, 包括感知線加速度的耳石, 以及感知角速度變化的半規(guī)管. 為了提高洗出算法的模擬效果, 減小人體對運動的感知誤差, 因此以人體感知前庭系統(tǒng)為基礎, 建立人體在不同運動方向上感知加速度和角速度的誤差模型. 以x軸為例, 該模型的結(jié)構(gòu)如圖3.
圖3 縱向感知誤差模型
該模型獲取的是飛行員對實際運動狀態(tài)的感知情況與對模擬運動狀態(tài)的感知情況之間的誤差, 包括感知加速度和感知角速度誤差, 然后在此基礎上建立以濾波器參數(shù)為自變量的目標函數(shù). 以縱向(x方向)運動為例, 在該方向上的加速度感知誤差函數(shù)和滾轉(zhuǎn)角速度感知誤差函數(shù)分別為:
其中,L[eax(t)]表 示加速度誤差函數(shù);L[ax(t)]表示縱向加速度的拉氏變換;Fhx(S)表示高通加速度通道濾波器傳遞函數(shù);Flx(S)表示傾斜協(xié)調(diào)通道濾波器傳遞函數(shù);G(S)0表示人體耳石模型的傳遞函數(shù).
其中,L[ep(t)]表 示角速度誤差函數(shù);L[px(t)]表示滾轉(zhuǎn)加速度的拉氏變換;Fhp(S)表示滾轉(zhuǎn)角速度高通濾波器傳遞函數(shù);G(S)v表示人體半規(guī)管模型的傳遞函數(shù).
根據(jù)拉氏變換與傅里葉變換對上述兩函數(shù)化簡便可得[21]:
其中,x1、x2、x3分別對應高通加速度通道濾波器、高通角速度通道濾波器、傾斜協(xié)調(diào)通道濾波器傳遞函數(shù)的自然截止頻率ωah、ωωh、 ωωl.x4為濾波器阻尼.
優(yōu)化前首先對算法的基本參數(shù)設置如下: 種群數(shù)目N=50 , 步長Step=0.1 , 視野Visual=1, 嘗試次數(shù)Try_number=100 , 擁擠度因子δ =0.618, 最大迭代次數(shù)Genmax=50. 優(yōu)化后結(jié)果見表2.
表2 優(yōu)化后濾波器參數(shù) (rad/s)
圖4中紅色曲線代表算法公告牌中記錄的目標函數(shù)值, 黑色曲線表示的是算法在每一次迭代結(jié)束時獲取到的最優(yōu)值及其對應解, 而藍色曲線代表上述兩條曲線的差值. 由圖可知, 改進后人工魚群算法在第17次迭代時就搜索到了全局最優(yōu)解, 且從第38次迭代開始波動逐漸減小. 所以, GSAFSA具有較快的收斂速度且尋優(yōu)效果也較為穩(wěn)定.
圖4 算法收斂曲線
為了驗證GSAFSA的優(yōu)化效果, 將新得到的一組濾波器參數(shù)放入在Simulink中建立的洗出算法仿真模型中, 并對實際的運動狀態(tài)進行仿真模擬. 首先設置輸入的加速度和角速度信號分別如圖5、圖6所示.
圖5 輸入加速度信號
圖6 輸入角速度信號
圖7為3種洗出算法優(yōu)化后的洗出位移, 其中, 經(jīng)典洗出算法、AFSA改進的洗出算法和經(jīng)GSAFSA改進的洗出算法洗出的位移極限值分別為0.055 m、0.027 m和0.019 m, 即經(jīng)GSAFSA洗出的縱向線位移極限值最小. 這一結(jié)果表明, GSAFSA能夠節(jié)約34%左右的運動空間, 即在運動的極限位置處, 經(jīng)GSAFSA洗出的運動信號只需較小的運動空間就可以完成相同的飛行運動, 而節(jié)約下來的空間也可以用于之后的飛行模擬環(huán)節(jié), 使模擬過程更加流暢. 同時, 在3種算法中, GSAFSA回歸到初始狀態(tài)所需時間更短, 這使得運動平臺能夠為下一次運動做充足準備. 圖8經(jīng)3種洗出算法洗出的縱向線加速度對比曲線. 由圖可知, 相比于其他2種算法的洗出情況, 經(jīng)GSAFSA洗出線加速度的恢復時間更符合輸入信號的設置情況, 而且只需相對較少的時間就能夠完成對線加速度的模擬過程,再一次證明了經(jīng)GSAFSA改進后的洗出算法能夠節(jié)約運動空間.
圖7 洗出線位移對比
圖8 洗出線加速度對比
圖9所示的是人體對洗出線加速度的感知曲線,該曲線反映了模擬器駕駛員對于運動的感知情況. 通過對比可知, 雖然3種洗出算法的感知曲線都與實際感知曲線存在差異, 但是相比于其他兩種算法, 改進后的洗出算法與實際感知曲線之間的誤差減少了5%左右. 即經(jīng)GSAFSA改進后的洗出算法減小感知誤差的效果更好, 其感知曲線也更接近實際感知情況, 可在一定程度上降低因運動洗出造成的虛假暗示. 圖10是經(jīng)3種算法洗出的角位移對比曲線. 經(jīng)計算, 3種洗出算法洗出的角速度都未超過人體感知門限的0.062 8 rad/s.其中, 經(jīng)典洗出算法、AFSA改進的洗出算法和經(jīng)GSAFSA改進的洗出算法洗出的角位移極限值分別為0.18 m、0.17 m和0.16 m. 即經(jīng)GSAFSA的洗出結(jié)果滿足感知閾值的要求基礎上不會產(chǎn)生額外的錯誤暗示.
圖9 感知加速度對比
圖10 洗出角位移對比
為了檢驗改進的濾波器參數(shù)在實際模擬平臺中的運行效果, 對經(jīng)典洗出算法還有經(jīng)AFSA 和GSAFSA改進的洗出算法進行信號處理, 并應用于基于Lab VIEW語言開發(fā)的飛行模擬器運動試驗平臺中, 通過對六自由度運動平臺的實時桿長情況的分析, 來驗證改進算法的有效性. 同樣地, 以縱向運動模擬信號為例,試驗采用的輸入信號為一段如圖11所示的階躍信號(在4 s時由0變?yōu)?.5 m/s2, 10 s時再由1.5 m/s2變?yōu)?).
圖11 運動平臺輸入信號
圖12所示的是經(jīng)3種洗出算法洗出時, 六自由度運動平臺中1、2號桿的實時桿長變化情況. 該兩桿的初始桿長為71.8 mm, 而在經(jīng)典洗出算法、AFSA洗出算法和GSAFSA洗出算法中桿長的極限長度分別為43.80 mm、47.94 mm和49.04 mm, 由此可知, 經(jīng)GSAFSA改進后洗出算法的桿長變化曲線最接近到初始桿長. 在模擬結(jié)束后, 改進后的洗出算法能夠保證液壓桿以較快速度恢復到初始位置, 而在其他兩種算法中, 液壓桿恢復到中立位置的速度較慢, 甚至出現(xiàn)了反向加速運動. 所以, 試驗再一次證明了相比于其他兩種洗出算法, 改進后的AFSA算法能夠達到優(yōu)化濾波器參數(shù)的目的, 同時改進后的洗出算法可以更好地節(jié)約運動空間, 從而為之后的模擬運動做更為充足的準備.
圖12 1、2號桿的桿長對比
本文針對AFSA搜索精度不高以及收斂緩慢的問題, 提出了一種結(jié)合GSA的改進算法. 該算法充分利用了GSA的快速收斂能力以及對全局環(huán)境的敏感度,提高了基礎AFSA的收斂速度以及全局尋優(yōu)的能力,從而提高了算法的搜索精度. 通過仿真的結(jié)果也可以發(fā)現(xiàn): 改進后算法的洗出結(jié)果相比于其他兩種算法的結(jié)果來說, 在減小相位延遲和虛假暗示以及提高模擬逼真度和空間利用率等方面, 具有一定程度上的改進和優(yōu)化效果. 但是針對人工魚群算法的初始化分布還可以繼續(xù)加以思考與研究, 以更大程度的提高算法搜索到全局性, 從而得到更好的運動感知效果.