public class BatchLSEstimator extends Object
最小二乘估计器可以与Orekit中的不同轨道传播器一起使用。当前传播器列表包括可用的传播器:numerical
、DSST
、Brouwer-Lyddane
、Eckstein-Hechler
、SGP4
、Keplerian
和ephemeris-based
。
Constructor and Description |
---|
BatchLSEstimator(org.hipparchus.optim.nonlinear.vector.leastsquares.LeastSquaresOptimizer optimizer, PropagatorBuilder... propagatorBuilder)
简单构造函数。
|
Modifier and Type | Method and Description |
---|---|
void |
addMeasurement(ObservedMeasurement<?> measurement)
添加一个测量。
|
Propagator[] |
estimate()
估计轨道、传播和测量参数。
|
int |
getEvaluationsCount()
获取上次估计中使用的评估次数。
|
int |
getIterationsCount()
获取上次估计中使用的迭代次数。
|
Map<ObservedMeasurement<?>,EstimatedMeasurement<?>> |
getLastEstimations()
获取执行的最后一次估计。
|
ParameterDriversList |
getMeasurementsParametersDrivers(boolean estimatedOnly)
获取此估计器支持的测量参数(包括测量和修饰器)。
|
org.hipparchus.optim.nonlinear.vector.leastsquares.LeastSquaresOptimizer.Optimum |
getOptimum()
获取找到的最佳值。
|
ParameterDriversList |
getOrbitalParametersDrivers(boolean estimatedOnly)
获取此估计器支持的轨道参数。
|
org.hipparchus.linear.RealMatrix |
getPhysicalCovariances(double threshold)
获取空间飞行动力学中的协方差矩阵。
|
ParameterDriversList |
getPropagatorParametersDrivers(boolean estimatedOnly)
获取此估计器支持的传播器参数。
|
void |
setConvergenceChecker(org.hipparchus.optim.ConvergenceChecker<org.hipparchus.optim.nonlinear.vector.leastsquares.LeastSquaresProblem.Evaluation> convergenceChecker)
设置自定义收敛检查器。
|
void |
setMaxEvaluations(int maxEvaluations)
设置模型评估的最大次数。
|
void |
setMaxIterations(int maxIterations)
设置最大迭代次数。
|
void |
setObserver(BatchLSObserver observer)
设置迭代的观察者。
|
void |
setParametersConvergenceThreshold(double parametersConvergenceThreshold)
设置收敛阈值。
|
public BatchLSEstimator(org.hipparchus.optim.nonlinear.vector.leastsquares.LeastSquaresOptimizer optimizer, PropagatorBuilder... propagatorBuilder)
如果设置了多个传播器构建器
,则将同时使用多个航天器的轨道。如果传播器共享某些模型或测量参数(通常是极移、本初子午线校正或地面站位置),这将非常有用。
设置多个传播器构建器
在使用星间测量时也很有用,即使只估计一个轨道,其他轨道也是固定的。这通常用于需要非常高精度的GNSS测量,导航公告不够准确,导航星座必须进行数值传播。
optimizer
- 最小二乘问题的求解器
propagatorBuilder
- 用于传播的构建器
public void setObserver(BatchLSObserver observer)
observer
- 每次迭代结束时要通知的观察者
public void addMeasurement(ObservedMeasurement<?> measurement)
measurement
- 要添加的测量
public void setMaxIterations(int maxIterations)
迭代次数对应于最小二乘优化器
的顶层迭代。
maxIterations
- 最大迭代次数
setMaxEvaluations(int)
、getIterationsCount()
public void setMaxEvaluations(int maxEvaluations)
评估对应于使用一组估计参数执行的轨道传播和测量估计。
对于Gauss-Newton优化器
,每次迭代都有一个评估,因此最大次数可以设置为相同的值。对于Levenberg-Marquardt优化器
,在某些迭代中可能有几次评估(通常是前几次迭代),因此最大评估次数可以设置为比最大迭代次数更高的值。
maxEvaluations
- 模型评估的最大次数
setMaxIterations(int)
、getEvaluationsCount()
public ParameterDriversList getOrbitalParametersDrivers(boolean estimatedOnly)
如果有多个传播器构建器,则驱动程序的名称将附加在方括号中的索引标记后面,以区分各个轨道。因此,例如,如果一个构建器生成Kepler轨道,则名称将简单地是"a"、"e"、"i"...但如果有几个构建器,则名称将是"a[0]"、"e[0]"、"i[0]"..."a[1]"、"e[1]"、"i[1]"...
estimatedOnly
- 如果为true,则仅返回估计参数
public ParameterDriversList getPropagatorParametersDrivers(boolean estimatedOnly)
estimatedOnly
- 如果为true,则仅返回估计参数
public ParameterDriversList getMeasurementsParametersDrivers(boolean estimatedOnly)
estimatedOnly
- 如果为true,则仅返回估计参数
public void setParametersConvergenceThreshold(double parametersConvergenceThreshold)
用于估计的收敛基于估计参数的归一化值
。当所有参数的前后归一化值之差小于所有参数的收敛阈值时,认为已达到收敛。由于参数是归一化的,因此对所有参数使用相同的值。
归一化值计算为(current - reference)/scale
,因此当对所有估计参数都满足以下条件时,即认为已达到收敛:|current[i] - previous[i]| <= threshold * scale[i]
因此,在此处指定的收敛阈值可以视为应用于比例的乘法因子。由于所有参数的比例通常很小(例如,轨道位置通常约为1米),因此阈值不应太小。10⁻³的值通常相当准确。
调用此方法会覆盖之前通过调用setConvergenceChecker(ConvergenceChecker)
设置的任何检查器。这两种方法是互斥的。
parametersConvergenceThreshold
- 归一化参数(无量纲,与参数比例有关)的收敛阈值
setConvergenceChecker(ConvergenceChecker)
、EvaluationRmsChecker
public void setConvergenceChecker(org.hipparchus.optim.ConvergenceChecker<org.hipparchus.optim.nonlinear.vector.leastsquares.LeastSquaresProblem.Evaluation> convergenceChecker)
调用此方法会覆盖之前通过调用setParametersConvergenceThreshold(double)
设置的任何检查器。这两种方法是互斥的。
convergenceChecker
- 要设置的收敛检查器
setParametersConvergenceThreshold(double)
public Propagator[] estimate()
在调用此方法之前,必须使用getOrbitalParametersDrivers(boolean)
、getPropagatorParametersDrivers(boolean)
和getMeasurementsParametersDrivers(boolean)
设置所有参数的初始猜测,然后通过设置参数的值
。
对于参考日期尚未在调用此方法之前设置为非空日期的参数(即ParameterDriver.getReferenceDate()
返回null
的参数),将自动在估算开始时将默认参考日期设置为第一个传播器构建器的初始轨道日期
。对于参考日期已设置为非空日期的参数,此参考日期保持不变。
此方法返回后,可以使用getOrbitalParametersDrivers(boolean)
、getPropagatorParametersDrivers(boolean)
和getMeasurementsParametersDrivers(boolean)
然后通过获取参数的值
检索估算的参数。
作为便利,该方法还返回一个完全配置好且准备好使用的传播器,其中包含所有估算值。
要获取更详细的信息,getOptimum()
方法提供详细元素(协方差矩阵、估算参数标准差、加权雅可比、RMS、χ²、残差等)。
public Map<ObservedMeasurement<?>,EstimatedMeasurement<?>> getLastEstimations()
public org.hipparchus.optim.nonlinear.vector.leastsquares.LeastSquaresOptimizer.Optimum getOptimum()
LeastSquaresOptimizer.Optimum
对象包含详细元素(协方差矩阵、估算参数标准差、加权雅可比、RMS、χ²、残差等)。
请注意,返回的对象是底层数学库的原始视图。在这个原始级别上,参数具有归一化值
,而航天飞行参数具有物理值
及其单位。因此,在使用这些元素时需要应用缩放因子
。
estimate()
后找到的最优解
public org.hipparchus.linear.RealMatrix getPhysicalCovariances(double threshold)
此方法从[@link optimum
中检索covariances
并对其应用缩放因子,以将其从原始归一化值转换回物理值。
threshold
- 用于识别矩阵奇异性的阈值
public int getIterationsCount()
setMaxIterations(int)
public int getEvaluationsCount()
setMaxEvaluations(int)
Copyright © 2002-2023 CS GROUP. All rights reserved.