类 SimplexOptimizer


public class SimplexOptimizer extends MultivariateOptimizer
该类实现了基于单纯形的直接搜索优化。

直接搜索方法仅使用目标函数值,不需要导数,也不会尝试计算导数的近似值。根据玛格丽特·赖特(Margaret H. Wright)在1996年的一篇论文(直接搜索方法:曾经被蔑视,现在备受尊重)中指出,当计算导数不可能(嘈杂的函数,不可预测的不连续性)或困难(复杂性,计算成本)时,它们被用于。在前一种情况下,不是寻找最优解,而是寻找一个“不太糟糕”的点。在后一种情况下,虽然希望找到最优解,但实际上是不太可能的。在所有情况下,直接搜索方法都可能是有用的。

基于单纯形的直接搜索方法基于对单纯形的顶点(在n维空间中是n+1个点的集合)处的目标函数值进行比较,该单纯形会被算法的步骤更新。

必须将单纯形更新过程(NelderMeadSimplexMultiDirectionalSimplex)传递给optimize方法。

每次调用optimize都会重用当前单纯形的起始配置,并将其移动,使其第一个顶点位于优化的起始点处。如果调用optimize方法来解决不同的问题并且参数数量发生变化,则必须重新初始化单纯形,使其具有适当的维度。

通过将先前和当前单纯形的“最差”点提供给收敛检查器来检查收敛性,而不是提供最佳点。

该单纯形优化器实现不直接支持带简单边界的约束优化;因此,对于这样的优化,必须使用更专门的算法,如CMAESOptimizerBOBYQAOptimizer,或者必须将目标函数包装在适配器中,如MultivariateFunctionMappingAdapterMultivariateFunctionPenaltyAdapter
调用optimize将在传递边界时抛出MathRuntimeException

  • 构造器详细资料

    • SimplexOptimizer

      public SimplexOptimizer(ConvergenceChecker<PointValuePair> checker)
      简单构造函数。
      参数:
      checker - 收敛检查器。
    • SimplexOptimizer

      public SimplexOptimizer(double rel, double abs)
      简单构造函数。
      参数:
      rel - 相对阈值。
      abs - 绝对阈值。
  • 方法详细资料

    • optimize

      public PointValuePair optimize(OptimizationData... optData)
      存储数据并执行优化。

      参数列表是开放式的,以便子类可以使用特定于其具体实现的参数进行扩展。

      当多次调用该方法时,仅当实际存在于参数列表中时,实例数据才会被覆盖:当未指定时,上一次调用中设置的数据将被保留(因此在后续调用中是可选的)。

      重要提示:如果子类需要注册自己的选项,则必须覆盖BaseOptimizer.parseOptimizationData(OptimizationData[]);但是,它们还必须在该方法中调用super.parseOptimizationData(optData)

      覆盖:
      optimize 在类中 MultivariateOptimizer
      参数:
      optData - 优化数据。除了MultivariateOptimizer中记录的数据外,此方法还将注册以下数据:
      返回:
      满足收敛标准的点/值对。
    • doOptimize

      protected PointValuePair doOptimize()
      执行优化算法的大部分工作。
      指定者:
      doOptimize 在类中 BaseOptimizer<PointValuePair>
      返回:
      给出目标函数的最优值的点/值对。
    • parseOptimizationData

      protected void parseOptimizationData(OptimizationData... optData)
      扫描表征问题的(必需和可选的)优化数据列表。
      覆盖:
      parseOptimizationData 在类中 MultivariateOptimizer
      参数:
      optData - 优化数据。将查找以下数据: