张建霞,曲国庆,席换,王晖
(山东理工大学 建筑工程学院,山东 淄博 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)
总之,模拟数据的实验结论通过水下定位实测数据得到了验证,所得结果相同。正则化共轭梯度法能够改善方程的病态性对解的影响使迭代收敛,在提高收敛效率的同时,其稳定性也没有降低。
求解非线性模型的一般方法是先对其线性化,再根据最小二乘原理进行平差,但这样会导致信息量的缺失和模型特征的改变,尤其是当系数矩阵呈现病态问题时,非线性最小二乘解不稳定且解算误差大。传统的数值方法如高斯牛顿法和共轭梯度法也会由于系数矩阵的病态性而导致解产生较强的不稳定甚至不收敛的问题。正则化数值方法通过加入约束条件来降低病态性对解的影响,并求得稳定参数解,但其收敛效率低,适用于残差较小的方程。将其核心思想稳定泛函约束作用于共轭梯度法,推导了距离观测方程非线性平差的正则化共轭梯度法,该方法既能克服共轭梯度法求解病态方程组不收敛的问题,又能够提高非线性迭代收敛效率。实验结果表明,正则化共轭梯度法能够降低方程的病态性对解的影响使迭代收敛,而且在提高收敛效率的同时,其稳定性也没有降低。