类 LevenbergMarquardtOptimizer

java.lang.Object
org.hipparchus.optim.nonlinear.vector.leastsquares.LevenbergMarquardtOptimizer
所有已实现的接口:
LeastSquaresOptimizer

public class LevenbergMarquardtOptimizer extends Object implements LeastSquaresOptimizer
该类使用Levenberg-Marquardt算法解决最小二乘问题。

该实现即使对于超定系统(即点数多于方程数的系统)也应该有效。超定系统通过忽略对雅可比列的影响最小的点来解决。仅更改矩阵的秩和一些循环边界以实现此目的。

解决引擎是MINPACK lmder例程的简单转换,其中包括超定解决方案、继承的收敛检查器的使用以及QR分解,后者根据P. Lascaux和R. Theodor的书Analyse numérique matricielle appliquée à l'art de l'ingénieur中描述的算法进行了重写,该书于1986年由Masson出版。

原始Fortran版本的作者是:

  • Argonne National Laboratory. MINPACK项目。1980年3月
  • Burton S. Garbow
  • Kenneth E. Hillstrom
  • Jorge J. More

MINPACK的再分发政策可在此处找到,为方便起见,下面是再现的版权声明。

Minpack版权声明(1999年)芝加哥大学。保留所有权利

允许在源代码和二进制形式中重新分发和使用,无论是否经过修改,只要满足以下条件:

  1. 源代码的再分发必须保留上述版权声明、此条件列表和以下免责声明。
  2. 以二进制形式再分发时,必须在文档和/或其他提供的材料中复制上述版权声明、此条件列表和以下免责声明。
  3. 随再分发的最终用户文档(如果有)必须包括以下声明:本产品包括由芝加哥大学作为Argonne国家实验室的运营商开发的软件。或者,如果适用,此声明可以出现在软件本身中,无论在何处通常出现第三方声明。
  4. 担保免责声明。本软件按原样提供,不附带任何形式的担保。版权持有人、美国、美国能源部及其雇员:(1)不声明任何担保,明示或暗示,包括但不限于对适销性、特定用途适用性、所有权或非侵权的任何暗示担保,(2)不承担任何法律责任或责任,对于软件的准确性、完整性或有用性,(3)不保证使用软件不会侵犯私人所有权权利,(4)不保证软件将无中断地运行,不含错误或任何错误将被纠正。
  5. 责任限制。在任何情况下,版权持有人、美国、美国能源部或其雇员:不对任何间接、附带、后果性、特殊或惩罚性的任何种类或性质的损害承担责任,包括但不限于利润损失或数据损失,无论出于任何原因,无论此类责任是基于合同、侵权(包括疏忽或严格责任)还是其他方面主张的,即使已经警告过可能发生此类损失或损害。
  • 构造器详细资料

    • LevenbergMarquardtOptimizer

      public LevenbergMarquardtOptimizer()
      默认构造函数。

      算法设置的默认值为:

      • 初始步长边界因子:100
      • 成本相对容差:1e-10
      • 参数相对容差:1e-10
      • 正交容差:1e-10
      • QR排名阈值:Precision.SAFE_MIN
    • LevenbergMarquardtOptimizer

      public LevenbergMarquardtOptimizer(double initialStepBoundFactor, double costRelativeTolerance, double parRelativeTolerance, double orthoTolerance, double qrRankingThreshold)
      使用指定的所有参数构造一个实例。
      参数:
      initialStepBoundFactor - 初始步长边界因子
      costRelativeTolerance - 成本相对容差
      parRelativeTolerance - 参数相对容差
      orthoTolerance - 正交容差
      qrRankingThreshold - QR分解中的阈值。列的2范数小于此阈值被视为全为0。
  • 方法详细资料

    • withInitialStepBoundFactor

      public LevenbergMarquardtOptimizer withInitialStepBoundFactor(double newInitialStepBoundFactor)
      使用初始步长边界因子构建新实例。
      参数:
      newInitialStepBoundFactor - 用于确定初始步长边界的正输入变量。如果非零,则此边界设置为initialStepBoundFactor和diag * x的欧几里德范数的乘积,否则设置为newInitialStepBoundFactor本身。在大多数情况下,因子应该位于区间(0.1, 100.0)内。一般推荐值为100
      返回:
      一个新实例。
    • withCostRelativeTolerance

      public LevenbergMarquardtOptimizer withCostRelativeTolerance(double newCostRelativeTolerance)
      使用成本相对容差构建新实例。
      参数:
      newCostRelativeTolerance - 求和平方的期望相对误差。
      返回:
      一个新实例。
    • withParameterRelativeTolerance

      public LevenbergMarquardtOptimizer withParameterRelativeTolerance(double newParRelativeTolerance)
      使用参数相对容差构建新实例。
      参数:
      newParRelativeTolerance - 近似解参数的期望相对误差。
      返回:
      一个新实例。
    • withOrthoTolerance

      public LevenbergMarquardtOptimizer withOrthoTolerance(double newOrthoTolerance)
      使用正交容差构建新实例。
      参数:
      newOrthoTolerance - 函数向量与雅可比矩阵列之间正交性的最大余弦值。
      返回:
      一个新实例。
    • withRankingThreshold

      public LevenbergMarquardtOptimizer withRankingThreshold(double newQRRankingThreshold)
      使用排名阈值构建新实例。
      参数:
      newQRRankingThreshold - QR排名的期望阈值。如果在QR分解期间列向量的平方范数小于或等于此阈值,则认为它是零向量,因此矩阵的秩会降低。
      返回:
      一个新实例。
    • getInitialStepBoundFactor

      public double getInitialStepBoundFactor()
      获取调整参数的值。
      返回:
      参数的值。
      另请参阅:
    • getCostRelativeTolerance

      public double getCostRelativeTolerance()
      获取调整参数的值。
      返回:
      参数的值。
      另请参阅:
    • getParameterRelativeTolerance

      public double getParameterRelativeTolerance()
      获取调整参数的值。
      返回:
      参数的值。
      另请参阅:
    • getOrthoTolerance

      public double getOrthoTolerance()
      获取调整参数的值。
      返回:
      参数的值。
      另请参阅:
    • getRankingThreshold

      public double getRankingThreshold()
      获取调整参数的值。
      返回:
      参数的值。
      另请参阅:
    • optimize

      解决非线性最小二乘问题。
      指定者:
      optimize 在接口中 LeastSquaresOptimizer
      参数:
      problem - 问题定义,包括模型函数和收敛准则。
      返回:
      最优解。