类 CMAESOptimizer


public class CMAESOptimizer extends MultivariateOptimizer
用于非线性、非凸、非光滑、全局函数最小化的主动协方差矩阵适应进化策略(CMA-ES)的实现。

CMA-Evolution Strategy(CMA-ES)是一种可靠的随机优化方法,应用于当基于导数的方法(例如拟牛顿BFGS或共轭梯度)由于目标函数的崎岖搜索景观(例如噪声、局部最优、异常值等)而失败时。像拟牛顿方法一样,CMA-ES学习并应用于基础搜索空间的可变度量。与拟牛顿方法不同,CMA-ES既不估计也不使用梯度,因此在找到良好或接近最优解方面更加可靠。

一般来说,在光滑的目标函数上,CMA-ES比BFGS慢大约十倍(计算目标函数评估,不提供梯度)。对于最多\(n=10\)个变量,无导数的单纯形直接搜索方法(Nelder和Mead)可能更快,但比CMA-ES可靠性要低得多。

CMA-ES特别适用于非可分离和/或条件糟糕的问题。要观察CMA相对于传统进化策略的优势,通常需要大约\(30 n\)个函数评估。在困难问题上,完整的优化(单次运行)预计需要大约\(30 n\)到\(300 n^2\)个函数评估。

此实现是从CMA-ES算法的Matlab版本(在模块cmaes.m版本3.51中实现)翻译和调整而来。

有关更多信息,请参考以下链接:

  • 构造器详细资料

    • CMAESOptimizer

      public CMAESOptimizer(int maxIterations, double stopFitness, boolean isActiveCMA, int diagonalOnly, int checkFeasableCount, RandomGenerator random, boolean generateStatistics, ConvergenceChecker<PointValuePair> checker)
      简单构造函数。
      参数:
      maxIterations - 最大迭代次数。
      stopFitness - 如果目标函数值小于stopFitness,是否停止。
      isActiveCMA - 选择协方差矩阵更新方法。
      diagonalOnly - 初始迭代次数,协方差矩阵保持对角线的次数。
      checkFeasableCount - 确定在超出边界时新生成随机目标变量的频率。
      random - 随机生成器。
      generateStatistics - 是否收集统计数据。
      checker - 收敛检查器。
  • 方法详细资料