張建霞,曲國慶,席換,王暉
(山東理工大學 建筑工程學院,山東 淄博 255049)
距離觀測方程為非線性方程,解算該方法的傳統方法是基于線性化的近似方法[1-2]。對于GNSS定位,由于衛星與待定點相距較遠,非線性強度較弱,可以采用線性近似法進行求解[3-4];但水下定位的浮標至水下待定點的觀測距離短,非線性強度較強,且由于浮標位于水平面上,使得方程在Z方向上存在嚴重的病態性。對這種非線性強度較強且系數矩陣伴隨有病態問題的非線性方程,普通的線性近似已經不能滿足其求解的要求,應該根據非線性觀測方程病態或秩虧程度來選擇合適的數值算法[5-7]。
信賴域方法可用來求解無約束非線性最小二乘問題,但由于迭代過程中需求解若干信賴域子問題,導致計算過程較為復雜[8]。最速下降法對初始值要求不高,但當接近極小值時,收斂速度很慢,容易發生鋸齒現象[9]。高斯-牛頓法在處理殘差小或非線性強度較低的函數模型時具有較好的數值收斂性,但該方法較為依賴初始值[10]。牛頓法在精確計算海森矩陣時需占用過多的計算空間,且對初值具有較強的依賴性[11]。共軛梯度法僅需利用一階導數信息,能避免牛頓法需要計算和存儲海森矩陣的缺點,所需存儲量小、收斂速度快、穩定性高、計算簡單,被廣泛應用于無約束優化,是求解最優化問題的一種有效算法;但在距離觀測方程存在不適定問題時,會由于觀測數據誤差而產生強烈的不穩定特征甚至不收斂[12-14]。
針對共軛梯度法在處理病態測距定位方程會產生較強烈的不穩定特征,甚至不收斂的問題,通過將穩定泛函約束作用于共軛梯度法,推導了距離觀測方程非線性平差的正則化共軛梯度法,有效降低距離觀測方程的病態性對解的影響,同時提高非線性收斂效率,最后采用模擬數據和實測數據驗證該算法的有效性。
距離觀測方程廣泛存在于大地測量與導航定位中,比如:水下定位、GNSS偽距觀測和測邊網等。在某一觀測系統中,設n個已知點的坐標為Xi=[xi,yi,zi],待定點的坐標為[x,y,z],觀測距離為Li,觀測距離誤差為Δi,i=1,2,…,n,可列出距離觀測方程的表達式為

(1)
由此可得此方程的向量表達式為
L+Δ=DX,
(2)
式中:L=[L1,L2,…,Ln]T為觀測距離向量;Δ=[Δ1,Δ2,…,Δn]T為誤差向量;X=[x,y,z]T為待定點坐標向量;D(X)為待定點到各浮標的距離函數,是一個非線性函數,將此非線性函數在初值X0=[x0,y0,z0]T處線性展開可得
L+Δ=D(X0)+J(X0)DX0+Rn(X),
(3)
式中:Rn(X)為線性化殘差;J(X0)為雅克比矩陣,即
J(X0)=
(4)
則可得誤差方程式為
V(X0)=J(X0)DX0-l,
(5)
式中l=L-D(X0)。根據最小二乘原理
VTPV=min,
(6)
式中P為觀測距離向量L的權矩陣,本文中均采用P=E即單位權陣計算。
對式(6)求偏導并結合式(5),得
(7)
將上式約分并轉置得正交條件方程
JTPV=0,
(8)
將式(5)代入式(8)求得
DX=(JTPJ)-1JTPl,
(9)
由此,可寫出高斯牛頓法的迭代公式

(10)
當殘差較小或非線性強度較弱時,采用高斯牛頓法比較好。由于涉及線性化,高斯牛頓法對初值的依賴性較強,若選取初值的精度較差,解算結果可能會發散,導致高斯牛頓法失效。由于共面或共線的影響,距離觀測方程線性化后的方程系數矩陣存在較為嚴重的病態性,高斯牛頓法在處理這類非線性方程時無法收斂[15-16]。
高斯牛頓法與共軛梯度法搜索方向的不同使得兩種方法表現出不同的性能。高斯牛頓法的搜索方向是梯度下降的方向,沿著初始點所確定的梯度下降的方向,梯度值逐漸減小,以此搜索得到極小值點作為下次迭代的初始點,搜索直到滿足迭代終止條件停止,得到最優解。此方法不能確保當前搜索方向還是上次搜索方向的極小值方向,也就是說這次的搜索方向可能不是之前梯度下降的方向。共軛梯度法的搜索方向是共軛方向,先由初始點確定梯度下降方向,此后依次找到共軛方向進行搜索。此方法能夠保證當前搜索方向與前面搜索方向都是共軛的,即當前方向搜索到的極小值也是之前方向的極小值。因此,共軛梯度法的搜索方向能夠考慮到之前所有的搜索方向;而且它迭代形式簡單、收斂速度快、穩定性高、所需存儲量小,所以共軛梯度法的總體性能較好[12]。
共軛梯度法在求解具有病態性的非線性問題時無法收斂,解算失效??紤]到正則化方法是改善病態性的有效方法,將其核心思想即穩定泛函約束思想作用于共軛梯度法,形成正則化共軛梯度法,用此方法來處理距離觀測方程,能夠有效降低方程的病態性對解的影響而使迭代收斂,并提高收斂效率。
基于穩定泛函約束思想的目標函數可寫為
VTPV+αdXTdX=min,
(11)
式中α為正則化參數。對式(11)求偏導并轉置后得
JTPV+αdX=0,
(12)
將式(5)代入式(12)求得
dX=(JTPJ+αI)-1JTPl,
(13)
由此可得正則化法的迭代公式為
(14)
由文獻[12]可知共軛梯度法的迭代公式為
Xk+1=Xk+dXk,
(15)
式中搜索方向dXk可寫為
(16)
式中gk=dXk=(J(Xk)TPJ(Xk))-1J(Xk)TPl,βk是共軛參數。
為將穩定泛函約束思想作用于共軛梯度法,將式(13)的迭代格式代入式(16)得到正則化共軛梯度法的新的搜索方向,則其中的gk可表示為
gk=dXk=
(J(Xk)TPJ(Xk)+αI)-1(J(Xk)TPl。
(17)
本文采用PRP共軛參數的計算方法[17],即
(18)
式中yk-1=gk-gk-1。
隨著迭代次數的增加,在正則化參數的約束作用下方程的病態性對解的影響逐漸減弱,此時若一直使用同一正則化參數可能會使約束作用過強而導致解過于平滑,而偏離真實值太多。因此,采用文獻[18]中描述的幾何級數方法使正則化參數隨迭代不斷更新,即采用公式αk+1=α0×qk,其中:α0為正則化參數的初始值,且α0>0,本文采用L曲線法求得[19];q為衰減因子,其經驗取值區間為q∈[0,1],使得正則化參數隨迭代次數的增加而逐漸減小,提高解的準確性。
實驗1模擬短程測距實驗
為了驗證新算法的有效性,先采用模擬數據驗證,數據包括9個已知點P1,P2,…,P9的三維坐標以及待定點P10(模擬真值為[0,0,0]T)到9個已知點的距離,根據這9個已知點的三維坐標和觀測距離求待定點的三維坐標,給定初值為X0=[0.1,-0.1,0.1]T,迭代終止條件為‖J(Xk)TPl‖≤10-6。實驗中取衰減因子q=0.9。
表1給出非線性最小二乘法、高斯牛頓法、共軛梯度法、正則化法和正則化共軛梯度法的解算結果。由表可知,對距離觀測方程進行非線性最小二乘平差所得到的待定點的坐標值與真值計算所得的殘差較大,不符合實際應用。高斯牛頓法和共軛梯度法由于距離觀測方程線性化后的系數矩陣存在嚴重的病態性而無法收斂, 這表明普通的數值迭代法無法用于求解存在病態性的距離觀測方程。正則化法和正則化共軛梯度法所求的數值收斂解相同,但通過迭代時間和迭代次數k可以看出,正則化共軛梯度法收斂更快,所以正則化共軛梯度法能有效地緩解病態性對解的影響,使迭代收斂并提高收斂效率。

表1 不同方法的解算結果(實驗1)
圖1給出了正則化法和正則化共軛梯度法的點位迭代序列,橫軸代表迭代次數,縱軸分別代表X、Y、Z三個方向上的數值收斂解。由圖1結合表1可知, 正則化共軛梯度法在提高收斂效率的同時其穩定性也很好,沒有很大的擾動。這主要是因為正則化共軛梯度法融合了正則化法改善方程病態性的優點,并對正則化參數做了更新,既能有效地降低病態性對解的影響使迭代收斂,又大大提高了收斂效率。

圖1 兩種方法的點位迭代序列(實驗1)
實驗2 水下定位實測數據驗證
通過模擬數據對算法的效果進行分析后對新方法的優點有了初步的結論,此實驗采用水下定位實測數據對此結論來進行驗證。數據中,P1,P2,…,P15為15個已知點,并給出了它們的X、Y、Z坐標以及觀測距離,數據選取的是測量船圍繞應答器航行獲取的一圈數據中的15個相鄰數據,根據這15個已知點的坐標和觀測距離求待定點P16的三維坐標。實驗所給的迭代初始值為X0=[2 438 000,491 900,1 800]T,迭代終止條件為‖J(Xk)TPl‖≤10-6。實驗中取衰減因子q=0.9。
由于水平面共面的影響,測量船所采集的數據在Z方向上存在較強的病態性,還由于選取的是相鄰數據,采集相隔時間較短,在X方向和Y方向上也存在微弱的病態性。所以,由這15個數據構建的距離觀測方程線性化后的方程的系數矩陣存在嚴重的病態性。表2給出非線性最小二乘法、正則化法和正則化共軛梯度法的解算結果。由表可知,直接采用非線性最小二乘的解算方法所得到的待定點的坐標值與真值計算所得的殘差較大,尤其表現在Z方向上,表明距離觀測方程在Z方向上存在較為嚴重的病態。正則化法和正則化共軛梯度法均采用了正則化的思想,所以均能使迭代收斂并求得相同的數值收斂解。通過迭代時間和迭代次數k可以看出,正則化共軛梯度法收斂更快,所以正則化共軛梯度法能有效地緩解病態性對解的影響,使迭代收斂的同時提高收斂效率。
圖2給出了正則化法和正則化共軛梯度法的點位迭代序列,橫軸代表迭代次數,縱軸分別代表X、Y、Z三個方向上的數值收斂解。由圖2可知,正則化共軛梯度法比正則化法開始收斂的早,同時其穩定性也很好, 沒有較大的擾動。結合表2的迭代時間和迭代次數k可知,正則化共軛梯度法既能有效地改善病態性對解的影響使迭代收斂,又大大提高了收斂效率。這主要是因為正則化共軛梯度法結合了正則化思想,通過加入約束改善方程的病態性對解的影響,并對正則化參數進行更新,使得迭代收斂,并使收斂解更快接近于真值,大大提高了收斂效率。

圖2 兩種方法的點位迭代序列(實驗2)

表2 不同方法的解算結果(實驗2)
總之,模擬數據的實驗結論通過水下定位實測數據得到了驗證,所得結果相同。正則化共軛梯度法能夠改善方程的病態性對解的影響使迭代收斂,在提高收斂效率的同時,其穩定性也沒有降低。
求解非線性模型的一般方法是先對其線性化,再根據最小二乘原理進行平差,但這樣會導致信息量的缺失和模型特征的改變,尤其是當系數矩陣呈現病態問題時,非線性最小二乘解不穩定且解算誤差大。傳統的數值方法如高斯牛頓法和共軛梯度法也會由于系數矩陣的病態性而導致解產生較強的不穩定甚至不收斂的問題。正則化數值方法通過加入約束條件來降低病態性對解的影響,并求得穩定參數解,但其收斂效率低,適用于殘差較小的方程。將其核心思想穩定泛函約束作用于共軛梯度法,推導了距離觀測方程非線性平差的正則化共軛梯度法,該方法既能克服共軛梯度法求解病態方程組不收斂的問題,又能夠提高非線性迭代收斂效率。實驗結果表明,正則化共軛梯度法能夠降低方程的病態性對解的影響使迭代收斂,而且在提高收斂效率的同時,其穩定性也沒有降低。