类 AbstractSimplex

java.lang.Object
org.hipparchus.optim.nonlinear.scalar.noderiv.AbstractSimplex
所有已实现的接口:
OptimizationData
直接已知子类:
MultiDirectionalSimplex, NelderMeadSimplex

public abstract class AbstractSimplex extends Object implements OptimizationData
该类实现了单纯形概念。它旨在与SimplexOptimizer一起使用。
单纯形的初始配置由构造函数AbstractSimplex(double[])AbstractSimplex(double[][])设置。另一个构造函数将所有步骤设置为1,从而从单位超立方体构建默认配置。
用户必须调用build方法以创建数据结构,该数据结构将受到该类其他方法的影响。
另请参阅:
  • 构造器详细资料

    • AbstractSimplex

      protected AbstractSimplex(int n)
      构建一个单位超立方体单纯形。
      参数:
      n - 单纯形的维度。
    • AbstractSimplex

      protected AbstractSimplex(int n, double sideLength)
      使用给定的边长构建超立方体单纯形。
      参数:
      n - 单纯形的维度。
      sideLength - 超立方体边长。
    • AbstractSimplex

      protected AbstractSimplex(double[] steps)
      单纯形的起始配置是从与空间的规范轴平行的盒子构建的。单纯形是与规范轴平行的盒子的顶点子集。它是作为从盒子的一个顶点到对角线相对顶点沿着盒子边缘移动时所经过的路径构建的。盒子的第一个顶点将位于优化的起始点。例如,在维度3中,单纯形有4个顶点。将步长设置为(1, 10, 2),起始点设置为(1, 1, 1)将意味着起始单纯形将是:{ (1, 1, 1), (2, 1, 1), (2, 11, 1), (2, 11, 3) }。第一个顶点将设置为起始点(1, 1, 1),最后一个顶点将设置为对角线相对顶点(2, 11, 3)。
      参数:
      steps - 沿着表示盒子边缘的规范轴的步长。它们可以是负数,但不能为零。
      抛出:
      NullArgumentException - 如果stepsnull
      MathIllegalArgumentException - 如果步长之一为零。
    • AbstractSimplex

      protected AbstractSimplex(double[][] referenceSimplex)
      真实的初始单纯形将通过移动参考单纯形设置,使其第一个点位于优化的起始点。
      参数:
      referenceSimplex - 参考单纯形。
      抛出:
      MathIllegalArgumentException - 如果参考单纯形不包含至少一个点。
      MathIllegalArgumentException - 如果参考单纯形中存在维度不匹配。
      IllegalArgumentException - 如果其中一个顶点重复。
  • 方法详细资料

    • getDimension

      public int getDimension()
      获取单纯形维度。
      返回:
      单纯形的维度。
    • getSize

      public int getSize()
      获取单纯形大小。调用build方法后,此方法将等同于getDimension() + 1
      返回:
      单纯形的大小。
    • iterate

      public abstract void iterate(MultivariateFunction evaluationFunction, Comparator<PointValuePair> comparator)
      计算算法的下一个单纯形。
      参数:
      evaluationFunction - 评估函数。
      comparator - 用于将单纯形顶点从最佳到最差排序的比较器。
      抛出:
      MathIllegalStateException - 如果算法无法收敛。
    • build

      public void build(double[] startPoint)
      构建初始单纯形。
      参数:
      startPoint - 单纯形的第一个点。
      抛出:
      MathIllegalArgumentException - 如果起始点与单纯形维度不匹配。
    • evaluate

      public void evaluate(MultivariateFunction evaluationFunction, Comparator<PointValuePair> comparator)
      评估单纯形的所有未评估点。
      参数:
      evaluationFunction - 评估函数。
      comparator - 用于将单纯形顶点从最佳到最差排序的比较器。
      抛出:
      MathIllegalStateException - 如果超过最大评估次数。
    • replaceWorstPoint

      protected void replaceWorstPoint(PointValuePair pointValuePair, Comparator<PointValuePair> comparator)
      用新点替换单纯形中的最差点。
      参数:
      pointValuePair - 要插入的点。
      comparator - 用于将单纯形顶点从最佳到最差排序的比较器。
    • getPoints

      public PointValuePair[] getPoints()
      获取单纯形的点。
      返回:
      所有单纯形点。
    • getPoint

      public PointValuePair getPoint(int index)
      获取存储在请求的index处的单纯形点。
      参数:
      index - 位置。
      返回:
      位置index处的点。
    • setPoint

      protected void setPoint(int index, PointValuePair point)
      在位置index处存储一个新点。请注意,不会执行point的深复制。
      参数:
      index - 位置。
      point - 新值。
    • setPoints

      protected void setPoints(PointValuePair[] points)
      替换所有点。请注意,不会执行points的深复制。
      参数:
      points - 新点。