華冰,孫勝剛,吳云華,陳志明
(南京航空航天大學(xué) 航天學(xué)院,南京210016)
微小航天器具有體積小、質(zhì)量輕、成本低、靈活性高及研制周期短等顯著優(yōu)點(diǎn)。多個(gè)微小航天器編隊(duì)飛行,可以實(shí)現(xiàn)一些復(fù)雜的功能,且能夠大幅度降低開發(fā)成本和風(fēng)險(xiǎn)[1],在對(duì)地觀測(cè)、航天器物聯(lián)網(wǎng)、海運(yùn)和天氣監(jiān)測(cè)等方面有著廣闊應(yīng)用前景。隊(duì)形重構(gòu)是航天器編隊(duì)飛行任務(wù)的重要組成部分,在編隊(duì)重構(gòu)進(jìn)行路徑規(guī)劃時(shí),首先應(yīng)該考慮的是防止各成員之間在變軌過程中的碰撞,以及變軌燃料消耗的最優(yōu)化問題。
針對(duì)路徑規(guī)劃問題,目前的研究方法大致可以分為傳統(tǒng)算法和啟發(fā)式智能算法2類。傳統(tǒng)算法包括視圖法、人工勢(shì)場(chǎng)法、單元分解法、精確數(shù)學(xué)規(guī)劃法等[2],存在模型復(fù)雜、效率低和容易陷入局部最優(yōu)等缺點(diǎn)。啟發(fā)式智能算法包括遺傳算法、蟻群算法、粒子群(Particle Swarm Optimization,PSO)算法和鴿群(Pigeon-Inspired Optimization,PIO)算法等[3],具有模型參數(shù)少、求解速度快和收斂性好等優(yōu)點(diǎn)。
鴿群算法是2014年Duan和Qiao[4]受到鴿群自主歸巢行為啟發(fā)提出的仿生智能優(yōu)化算法。自提出后,鴿群算法在編隊(duì)路徑規(guī)劃方面取得了許多成果。林娜、黃思銘、拱長(zhǎng)青[5]利用鴿群算法解決無(wú)人機(jī)航跡規(guī)劃問題,引入自適應(yīng)權(quán)重系數(shù),解決了局部最優(yōu)和收斂速度慢的問題,但是航跡質(zhì)量和效率有待提高,另外需要經(jīng)過樣條平滑算法改進(jìn)。北京航空航天大學(xué)的胡耀龍、馮強(qiáng)等[6]為了避免標(biāo)準(zhǔn)鴿群算法陷入局部最優(yōu),提出了一種基于自適應(yīng)學(xué)習(xí)策略的改進(jìn)鴿群優(yōu)化算法,該算法提升了多峰函數(shù)優(yōu)化問題中的收斂精度和收斂速度,并且能有效避免陷入局部最優(yōu)解,但是沒有針對(duì)實(shí)際問題建模分析。哈爾濱工程大學(xué)的崔文豪[7]研究了J2攝動(dòng)下的衛(wèi)星編隊(duì)隊(duì)形重構(gòu)與隊(duì)形保持方法,利用極小值理論,運(yùn)用多重打靶法結(jié)合改進(jìn)鴿群算法,改善重構(gòu)控制精度和燃料消耗,但是并沒有考慮各成員星變軌時(shí)的碰撞問題。Zhang和Duan[8]提出了一種滿足高斯分布的鴿群算法用來解決航天器編隊(duì)重構(gòu)路徑規(guī)劃問題,考慮了各成員不發(fā)生碰撞情況下的燃料消耗最小化問題,但穩(wěn)定性需要提高。雖然已有很多研究體現(xiàn)了鴿群算法的有效性,但是鴿群算法仍然存在參數(shù)優(yōu)化、收斂速度慢、易陷入局部最優(yōu)等問題,路徑規(guī)劃的效果并不理想。
針對(duì)上述鴿群算法本身及應(yīng)用的不足之處,本文對(duì)基本鴿群算法進(jìn)行了3點(diǎn)改進(jìn):采用Tent Map混沌模型進(jìn)行鴿群初始化操作,增加種群多樣性;設(shè)計(jì)了自適應(yīng)的地圖和指南針?biāo)阕臃乐顾阉魍?;在地?biāo)算子階段引入高斯擾動(dòng),幫助算法跳出局部最優(yōu)。基于上述改進(jìn),本文提出了一種基于混沌初始化和高斯擾動(dòng)的自適應(yīng)鴿群(CGAPIO)算法,來解決航天器編隊(duì)重構(gòu)路徑規(guī)劃問題,實(shí)現(xiàn)燃料消耗最優(yōu)化。
假設(shè)地球是均勻球體,忽略任何攝動(dòng)力,參考航天器為A,伴隨航天器為B,兩航天器軌道均為圓軌道。
航天器編隊(duì)飛行時(shí),兩航天器之間的相對(duì)位置矢量δr與伴隨航天器的慣性位置矢量r0相比,相對(duì)位置矢量的模很小,如下:
編隊(duì)飛行相對(duì)參考坐標(biāo)系與地心慣性坐標(biāo)系的關(guān)系如圖1所示。O-XYZ為地心慣性坐標(biāo)系。A-xyz為參考航天器的相對(duì)運(yùn)動(dòng)坐標(biāo)系,其原點(diǎn)與參考航天器的質(zhì)心固連,y軸與參考航天器的地心矢量r重合,由地心指向參考航天器。x軸在參考航天器的軌道面內(nèi)垂直于y軸并指向運(yùn)動(dòng)方向?yàn)檎?,z軸由右手規(guī)則確定。
圖1 編隊(duì)飛行相對(duì)參考坐標(biāo)系Fig.1 Relative frame of reference for formation flight
基于上述假設(shè)和條件,根據(jù)相對(duì)運(yùn)動(dòng)動(dòng)力學(xué),可以用Clohessy-Wiltshire方程[9](C-W 方程)來描述航天器間相對(duì)運(yùn)動(dòng)。C-W 方程表示為
式中:ω為參考航天器軌道角速度的大?。粁、y、z分別為相對(duì)位置矢量在參考航天器軌道坐標(biāo)系三軸的投影。
本文提出的航天器編隊(duì)重構(gòu)路徑規(guī)劃問題,將總?cè)剂舷淖鳛槟繕?biāo)函數(shù),將碰撞概率視為約束條件。通過罰函數(shù),將帶約束條件的最優(yōu)化問題轉(zhuǎn)化為無(wú)約束條件的最優(yōu)化問題。
罰函數(shù)是目前解決帶約束優(yōu)化問題的方法之一,其思想是:對(duì)違反約束條件的非可行點(diǎn)或者試圖穿越約束邊界逃離可行域的點(diǎn)給予懲罰,使其靠近可行域[10-11]。具體實(shí)施方法是:將約束函數(shù)組成一個(gè)懲罰項(xiàng),與原目標(biāo)函數(shù)相加,迫使迭代點(diǎn)逼近可行域[12]。
構(gòu)造CGAPIO算法的適應(yīng)度函數(shù)S(X)為
式中:F(X)為航天器變軌過程中燃料的總消耗量;γ為懲罰因子;C(X)為碰撞概率[13]。
本文提出的CGAPIO算法將航天器軌跡離散化,計(jì)算所有相鄰離散點(diǎn)之間的相對(duì)速度變化量之和,以此來衡量燃料總消耗量。當(dāng)兩航天器之間的相對(duì)距離小于臨界安全距離時(shí),表示碰撞風(fēng)險(xiǎn)較大,此時(shí)C(X)起到懲罰作用使航天器遠(yuǎn)離風(fēng)險(xiǎn)區(qū)域。
本文對(duì)基本鴿群算法提出了3點(diǎn)改進(jìn),基于此,提出了CGAPIO算法。
鴿群算法將每一個(gè)鴿子個(gè)體視為可能解,每個(gè)個(gè)體包含位置和速度2個(gè)參數(shù),并且根據(jù)鴿子飛行的不同階段提出了2種算子模型。
1)地圖和指南針?biāo)阕?/p>
在距離目的地較遠(yuǎn)時(shí),鴿群主要依靠地磁場(chǎng)的指引靠近目的地。隨著鴿群越來越接近目的地,會(huì)減少對(duì)地磁場(chǎng)的依賴。此階段,個(gè)體的速度由上一代原有速度、種群的最佳位置與上一代原有位置的差值共同決定;個(gè)體的位置由其上一代原有位置和當(dāng)前速度共同決定。地圖和指南針?biāo)阕拥臄?shù)學(xué)表達(dá)式為
式中:t為迭代次數(shù);R為地圖和指南針因子,是一個(gè)[0,1]的常數(shù);rand為[0,1]的隨機(jī)數(shù);Vi(t)和Xi(t)分別為個(gè)體i在第t代的速度和位置;Xg為當(dāng)前種群最佳位置。
2)地標(biāo)算子
距離目的地較近時(shí),鴿群會(huì)依靠地標(biāo)導(dǎo)航,跟隨熟悉地標(biāo)的個(gè)體飛行,不熟悉地標(biāo)的個(gè)體將被逐漸舍棄,鴿群的中心位置成為速度的參考方向。地標(biāo)算子的數(shù)學(xué)表達(dá)式為
式中:Np(t)為第t次迭代的個(gè)體數(shù)目;Xc(t)為第t次迭代的剩余鴿群的中心位置;S(Xi(t))為個(gè)體i在第t次迭代時(shí)的適應(yīng)度函數(shù)。
基本鴿群算法的位置和速度矢量初值由隨機(jī)數(shù)產(chǎn)生,該方法盡可能地保證了隨機(jī)性,整體上可以保證初始鴿群在整個(gè)解空間均勻分布,但是通過隨機(jī)數(shù)產(chǎn)生的方法,會(huì)使某些初值遠(yuǎn)離最優(yōu)解,影響種群迭代效果。
混沌現(xiàn)象是普遍存在于非線性動(dòng)態(tài)系統(tǒng)中的偽隨機(jī)過程?;煦邕\(yùn)動(dòng)是指在一個(gè)確定性系統(tǒng)中,存在著貌似隨機(jī)的不規(guī)則運(yùn)動(dòng),具有遍歷性、隨機(jī)性和對(duì)初始條件敏感等特點(diǎn)[14]。Tent Map混沌模型[15]是研究動(dòng)力系統(tǒng)、混沌、分形等復(fù)雜系統(tǒng)行為的一個(gè)經(jīng)典模型,數(shù)學(xué)表達(dá)式為
式中:a?[0,4]為Tent Map映射參數(shù)。
初始值Y0取值影響混沌效果,Y0?(0,1)。圖2舉例說明并對(duì)比了Y0分別取0.288和0.588產(chǎn)生50個(gè)混沌隨機(jī)數(shù)的效果。
針對(duì)本文解決的問題,經(jīng)過反復(fù)測(cè)試的取值,最終選擇為0.280,可以產(chǎn)生較好的多樣性效果。本文以式(11)生成初代鴿群位置。
式中:Nmax為初代鴿群的鴿子總數(shù)。
圖2 不同初始值下的Tent Map混沌模型結(jié)果Fig.2 Results of Tent Map chaotic model with different initial values
圖3以Nmax=50,X1的模值為0.280 km 為例,對(duì)比了Tent Map混沌模型和隨機(jī)數(shù)各自產(chǎn)生初代鴿群位置的效果??梢钥闯觯S機(jī)數(shù)在矩形框圍住的區(qū)域內(nèi)基本沒有取值,初始值多樣性效果較差;而在橢圓框圍住的區(qū)域內(nèi),取值又比較集中,容易在迭代過程中形成局部最優(yōu)。使用Tent Map混沌模型產(chǎn)生的初值無(wú)明顯集中或者遠(yuǎn)離某區(qū)域的現(xiàn)象,比較均勻地分布在整個(gè)平面內(nèi),比使用隨機(jī)數(shù)產(chǎn)生的初值有更好的多樣性和覆蓋性。
為了在保持群體初值隨機(jī)性的前提下,提高多樣性和覆蓋性,本文使用Tent Map混沌模型代替隨機(jī)數(shù)賦予鴿群位置矢量和速度矢量初值。
圖3 隨機(jī)數(shù)與Tent Map混沌模型初始化結(jié)果對(duì)比Fig.3 Comparison of initialization results between random numbers and Tent Map chaotic model
基本鴿群算法對(duì)多維函數(shù)進(jìn)行求解時(shí),普遍存在易陷入局部極值的缺點(diǎn)[16]。為了提高種群個(gè)體的全局搜索能力,本文在基本鴿群算法原有的地圖和指南針?biāo)阕拥交A(chǔ)上引入了自適應(yīng)權(quán)重因子和學(xué)習(xí)因子。
通過分析基本鴿群算法地圖和指南針?biāo)阕幽P偷乃俣鹊娇梢园l(fā)現(xiàn),個(gè)體速度的更新一方面取決于上一代的速度影響,該部分影響大小主要體現(xiàn)在地圖和指南針因子;另一方面取決于上一代全局最優(yōu)的位置對(duì)個(gè)體位置的修正。
基本鴿群算法中地圖和指南針因子在迭代前期的作用是保持鴿群個(gè)體的多樣性,使種群在整個(gè)解空間內(nèi)廣泛搜索[17]。但是,在基本鴿群算法中的值是固定不變的,而且式(5)中Vi(t-1)e-Rt代表的是個(gè)體保持原來速度的大小和方向的效果,該乘積項(xiàng)包含指數(shù)函數(shù),衰減速度太快。令R=0.4,當(dāng)t=18次時(shí),e-Rt≈0即迭代到第18次,種群就完全放棄了個(gè)體原有的速度,只參考種群最佳位置。此時(shí)算法不再進(jìn)行全局搜索,使得種群圍繞在當(dāng)前全局最優(yōu)進(jìn)行搜索和迭代,陷入局部最優(yōu)的陷阱[18]。
為了解決基本鴿群算法中地圖和指南針因子的固有弊端,本文引入自適應(yīng)的權(quán)重因子w代替指數(shù)函數(shù)e-Rt,如式(12)所示;引入自適應(yīng)的學(xué)習(xí)因子c來控制種群最優(yōu)位置的影響,如式(13)所示。
式中:tmax為迭代總次數(shù);wmax為權(quán)重因子最大值,取0.9;wmin為權(quán)重因子最小值,取0.6。
引入自適應(yīng)權(quán)重因子和學(xué)習(xí)因子后,地圖和指南針?biāo)阕铀俣鹊綖?/p>
圖4顯示了權(quán)重因子和學(xué)習(xí)因子隨著迭代次數(shù)的變化情況。w的初值較大,c的初值較小,體現(xiàn)了在迭代初期,多樣化的個(gè)體在全局的搜索能力比全局最優(yōu)個(gè)體的貢獻(xiàn)更重要。隨著迭代過程的進(jìn)行,權(quán)重因子線性遞減,學(xué)習(xí)因子呈三角函數(shù)非線性遞增,體現(xiàn)了在迭代后期,篩選出來的全局最優(yōu)位置更加具有指導(dǎo)性,局部搜索能力更加重要,能夠加快收斂。
圖4 自適應(yīng)權(quán)重因子和學(xué)習(xí)因子隨迭代次數(shù)的變化Fig.4 Changes of adaptive weighting factor and learning factor with number of iterations
在地標(biāo)算子階段,鴿群整體的中心位置成為速度的參考方向,個(gè)體向中心位置靠攏。但是如果當(dāng)前鴿群中心位置是一個(gè)局部極值點(diǎn),會(huì)更加容易導(dǎo)致鴿群陷入局部最優(yōu)。為了解決這一問題,本文將高斯擾動(dòng)項(xiàng)引入到鴿群算法的地標(biāo)算子中。
以f(x)=x為例,圖5對(duì)比了加入均值為0、方差為100的高斯擾動(dòng)前后的情況??梢钥吹剑尤敫咚箶_動(dòng)后f(x)的值圍繞著原值進(jìn)行波動(dòng),波動(dòng)的大小可以由方差控制。在鴿群算法的地標(biāo)算子階段,鴿群的中心位置已經(jīng)接近最優(yōu)解,加入適宜的高斯擾動(dòng)既不會(huì)過度偏離已知解,保證了算法的收斂性,又可以避免陷入局部最優(yōu)無(wú)法擺脫。
圖5 高斯擾動(dòng)示意圖Fig.5 Schematic diagram of Gaussian disturbance
CGAPIO算法在地標(biāo)算子中增加高斯擾動(dòng)項(xiàng)后,鴿群個(gè)體位置按照式(15)更新。
式中:G(μ,σ2)為高斯擾動(dòng)項(xiàng),μ為均值,σ2為方差。
在相關(guān)的加入高斯擾動(dòng)的仿生群體智能算法研究中,通常均值取0,保證高斯分布均勻性[19-22];而方差σ2的數(shù)值大小需要根據(jù)具體問題來確定。針對(duì)本文研究的問題,在其他條件相同的情況下,經(jīng)過對(duì)比發(fā)現(xiàn)方差取值為20時(shí)得到的效果最好。
圖6為CGAPIO算法的流程。首先根據(jù)C-W方程建立航天器編隊(duì)相對(duì)運(yùn)動(dòng)的數(shù)學(xué)模型,然后利用Tent Map混沌模型給位置和速度賦初值。根據(jù)初值進(jìn)行首次適應(yīng)度排序,然后引入自適應(yīng)因子到鴿群算法的地圖和指南針?biāo)阕拥^程。在經(jīng)過規(guī)定次數(shù)的迭代后,進(jìn)入地標(biāo)算子迭代過程,在此階段利用高斯擾動(dòng)跳出局部最優(yōu)。在完成設(shè)定的總迭代次數(shù)后,輸出規(guī)劃后的路徑。
圖6 CGAPIO算法流程Fig.6 Flowchart of CGAPIO
本文算法以4個(gè)航天器從圓形編隊(duì)變換到直線形編隊(duì)為例,軌跡離散點(diǎn)設(shè)為3個(gè);鴿群總數(shù)為30個(gè),路徑規(guī)劃維度為20維。迭代次數(shù)為100次,其中地圖與指南針?biāo)阕与A段迭代66次,地標(biāo)算子階段迭代34次。在C-W 坐標(biāo)系下,航天器初始位置和目標(biāo)位置如表1所示。
表1 航天器初始位置與目標(biāo)位置Table 1 Initial and target positions of spacecraft
CGAPIO、PIO、PSO三種算法規(guī)劃的路徑結(jié)果分別如圖7~圖9所示。
觀察PIO算法和PSO算法的規(guī)劃結(jié)果,規(guī)劃路徑的起始方向與目標(biāo)位置所在的方向相差甚多,這是由于使用隨機(jī)數(shù)方法賦予初始值,種群可能選取到距離最優(yōu)解較遠(yuǎn)的初值;規(guī)劃所得到的路徑比較曲折,方向改變幅度很大。這是由于種群過早喪失了全局搜索能力,所跟隨的“最優(yōu)解”是局部最優(yōu),才導(dǎo)致規(guī)劃所得的路徑質(zhì)量不高。
相比之下,CGAPIO算法的路徑規(guī)劃結(jié)果明顯更加平滑,沒有大幅度轉(zhuǎn)折。特別是對(duì)于航天器3,CGAPIO算法規(guī)劃得到的路徑近似于連接起點(diǎn)與終點(diǎn)的直線。各航天器速度方向改變不大,保證了各航天器之間有一定安全距離余量,降低了碰撞概率;又避免了過大幅度的無(wú)效機(jī)動(dòng)。
圖7 CGAPIO算法路徑規(guī)劃結(jié)果Fig.7 Path planning results of CGAPIO
圖8 PIO算法路徑規(guī)劃結(jié)果Fig.8 Path planning results of PIO
圖9 PSO算法路徑規(guī)劃結(jié)果Fig.9 Path planning results of PSO
圖7~圖9路徑規(guī)劃結(jié)果對(duì)應(yīng)的總?cè)剂舷娜绫?所示。CGAPIO算法總?cè)剂舷呐cPIO算法相比,平均降低了12.86%;與PSO算法相比,平均降低了22.71%。
由于采用了Tent Map混沌模型進(jìn)行初始化,鴿群初始值分布比較均勻,靠近最優(yōu)解的可能性較大,在開始迭代時(shí),CGAPIO算法的適應(yīng)度值小于50,甚至優(yōu)于用PSO算法得到的最優(yōu)解。
PIO和PSO算法分別在第10次和第16次就停止了適應(yīng)度的更新,最終的適應(yīng)度值分別是49.73和45.78,都在迭代初期陷入了局部最優(yōu)的陷阱,并且始終無(wú)法擺脫。然而CGAPIO算法在迭代初期保留了全局搜索的能力,對(duì)應(yīng)的是圖10中迭代初期適應(yīng)度變化緩慢。同時(shí)CGAPIO算法保證了種群有較快的演化速度,快速淘汰距離最優(yōu)解較遠(yuǎn)的個(gè)體,對(duì)應(yīng)的是圖10中適應(yīng)度呈折線形變化,在迭代不到30次的時(shí)候就已經(jīng)十分接近用PIO算法得到的最優(yōu)解。CGAPIO算法一直保持更新適應(yīng)度到第72次迭代,最終的適應(yīng)度值為38.06,得到了更深的種群演化深度。
表2 不同算法總?cè)剂舷膶?duì)比Table 2 Comparison of total fuel consumption among different algorithms
圖10 不同算法適應(yīng)度對(duì)比Fig.10 Comparison of fitness curves among different algorithms
1)引入混沌初始化模型、自適應(yīng)因子和高斯擾動(dòng)對(duì)基本鴿群算法進(jìn)行改進(jìn),提出CGAPIO算法用于航天器編隊(duì)重構(gòu)路徑規(guī)劃。規(guī)劃結(jié)果路徑平滑,消耗燃料少,既避免了碰撞,又避免了無(wú)效機(jī)動(dòng)。
2)仿真結(jié)果表明,與PIO算法和PSO算法相比,不論是編隊(duì)的總?cè)剂舷倪€是各個(gè)航天器的燃料消耗,CGAPIO算法都是最少的。
3)CGAPIO算法有著較低的初始適應(yīng)度值,表明Tent Map混沌模型確實(shí)起到了增強(qiáng)種群的多樣性的作用;而PSO算法和PIO算法使用隨機(jī)數(shù)模型,導(dǎo)致在開始迭代時(shí),適應(yīng)度初始值均超過了CGAPIO算法。
4)CGAPIO算法兼顧了全局搜索能力和演化深度,最終的適應(yīng)度值比PSO算法和PIO算法大大降低。