类 MultiStartUnivariateOptimizer


public class MultiStartUnivariateOptimizer extends UnivariateOptimizer
特殊实现了UnivariateOptimizer接口,为现有优化器添加了多起点特性。
这个类将一个优化器包装起来,以便多次使用不同的起始点(尝试避免在寻找全局极值时陷入局部极值)。
  • 构造器详细资料

    • MultiStartUnivariateOptimizer

      public MultiStartUnivariateOptimizer(UnivariateOptimizer optimizer, int starts, RandomGenerator generator)
      从单起点优化器创建一个多起点优化器。
      参数:
      optimizer - 要包装的单起点优化器。
      starts - 要执行的起点数。如果starts == 1,则optimize方法将返回与optimizer相同的解。
      generator - 用于重新启动的随机生成器。
      抛出:
      MathIllegalArgumentException - 如果starts < 1
  • 方法详细资料

    • getEvaluations

      public int getEvaluations()
      获取目标函数的评估次数。评估次数对应于上一次调用optimize方法。如果尚未调用该方法,则为0。
      覆盖:
      getEvaluations 在类中 BaseOptimizer<UnivariatePointValuePair>
      返回:
      目标函数的评估次数。
    • getOptima

      public UnivariatePointValuePair[] getOptima()
      获取上一次调用optimize时找到的所有最优解。优化器存储了在一组重新启动中找到的所有最优解。optimize方法仅返回最佳点。该方法返回每次重新启动结束时找到的所有点,包括已由optimize方法返回的最佳点。
      返回的数组中每个元素对应于构造函数中指定的每个起点。它按照首次收敛的运行结果排序,按照最佳到最差的目标值顺序排序(如果最小化则为升序,如果最大化则为降序),然后是对应于未收敛的运行的null元素。这意味着如果optimize方法抛出异常,则所有元素都将是null。这也意味着如果第一个元素不是null,它将是在所有起点中找到的最佳点。
      返回:
      包含最优解的数组。
      抛出:
      MathIllegalStateException - 如果未调用optimize
    • optimize

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

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

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

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

      覆盖:
      optimize 在类中 UnivariateOptimizer
      参数:
      optData - 优化数据。除了在BaseOptimizer中记录的数据外,此方法还将注册以下数据:
      返回:
      满足收敛标准的点/值对。
      抛出:
      MathIllegalStateException - 如果optData不包含MaxEvalSearchInterval的实例。
    • doOptimize

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