public class SequentialBatchLSEstimator extends BatchLSEstimator
当轨道已经被估计并且给出新的测量时,重新优化整个问题并不高效。仅考虑新的测量进行优化也不会得到良好的结果,因为旧的测量不会被考虑在内。因此,使用顺序估计器来估计轨道,它利用了估计的旧结果和新的测量。
为了执行顺序优化,用户必须配置一个SequentialGaussNewtonOptimizer
。根据其输入数据是空的LeastSquaresProblem.Evaluation
,完整的Evaluation
还是先验状态和协方差,不同的配置是可能的。
1. 没有来自先前估计的输入数据
然后,可以使用SequentialBatchLSEstimator
来执行估计,就像使用BatchLSEstimator
一样。用户可以使用默认构造函数初始化SequentialGaussNewtonOptimizer
。
final SequentialGaussNewtonOptimizer optimizer = new SequentialGaussNewtonOptimizer();
默认情况下,使用QRDecomposer
作为分解算法。此外,不形成正规方程。可以通过以下方式更新这两个默认配置:
withDecomposer
方法:optimizer.withDecomposer(newDecomposer);
withFormNormalEquations
方法:optimizer.withFormNormalEquations(newFormNormalEquations);
2. 使用先前的Evaluation
进行初始化
在这种情况下,建议使用优化器类的第二个构造函数。
final SequentialGaussNewtonOptimizer optimizer = new SequentialGaussNewtonOptimizer(decomposer, formNormalEquations, evaluation);
使用此构造函数,用户可以直接配置MatrixDecomposer并设置正规方程的标志,而无需调用前面介绍的两个方法。
注意:此构造函数也可用于执行1.的初始化。在这种情况下,Evaluation evaluation
为null
。
3. 使用先验估计的状态和协方差进行初始化
这种情况是经典的卫星操作需求。实际上,一个经典的操作是使用前一天进行的先前轨道确定的结果(估计的状态和协方差),以改进当天进行的轨道确定的初始化和结果。在这种情况下,用户可以使用默认构造函数初始化SequentialGaussNewtonOptimizer
。
final SequentialGaussNewtonOptimizer optimizer = new SequentialGaussNewtonOptimizer();
MatrixDecomposer和关于正规方程的标志可以再次使用前面介绍的两种方法进行更新。可以使用以下方式设置先验状态和协方差矩阵:
withAPrioriData
方法:optimizer.withAPrioriData(aPrioriState, aPrioriCovariance);
Constructor and Description |
---|
SequentialBatchLSEstimator(org.hipparchus.optim.nonlinear.vector.leastsquares.SequentialGaussNewtonOptimizer sequentialOptimizer, PropagatorBuilder... propagatorBuilder)
简单构造函数。
|
addMeasurement, estimate, getEvaluationsCount, getIterationsCount, getLastEstimations, getMeasurementsParametersDrivers, getOptimum, getOrbitalParametersDrivers, getPhysicalCovariances, getPropagatorParametersDrivers, setConvergenceChecker, setMaxEvaluations, setMaxIterations, setObserver, setParametersConvergenceThreshold
public SequentialBatchLSEstimator(org.hipparchus.optim.nonlinear.vector.leastsquares.SequentialGaussNewtonOptimizer sequentialOptimizer, PropagatorBuilder... propagatorBuilder)
如果设置了多个propagator builders
,则将同时使用多个航天器的轨道。如果传播器共享某些模型或测量参数(通常是极移动、本初子午线校正或地面站位置),这将非常有用。
设置多个propagator builders
也在使用星间测量时非常有用,即使只有一个轨道被估计,其他轨道被固定。当需要非常高精度的GNSS测量时,导航公告不够准确且导航星座必须通过数值传播时,通常会使用这种情况。
用于顺序最小二乘问题的求解器是顺序高斯牛顿优化器
。有关如何初始化它的详细信息,请参阅类JavaDoc。
sequentialOptimizer
- 用于顺序最小二乘问题的求解器
propagatorBuilder
- 用于传播的构建器。
Copyright © 2002-2023 CS GROUP. All rights reserved.