CMA-ES/pycma

Python implementation of CMA-ES

解决的问题

pycma 是协方差矩阵自适应进化策略(CMA-ES)的 Python 实现,是一种随机的、无需梯度的数值优化算法。它旨在解决非凸、病态、多峰、崎岖或存在噪声的优化问题,适用于连续和混合整数搜索空间。

工作原理

该库提供工具,无需梯度信息即可找到给定目标函数的最优解。它能够处理多种复杂的现实世界约束:

  • 边界约束:通过 bounds 选项或专用的 BoundDomainTransform 包装器进行管理。
  • 线性和非线性约束:通过 fmin2 或 fmin_con2 函数中的特定参数处理。
  • 噪声:通过 noise_handler 管理,以在噪声环境中保持稳定性。
  • 混合整数问题:通过 integer_variables 索引列表支持整数变量。

适用人群

适用于需要优化复杂数学函数的研究人员和工程师,传统基于梯度的方法在此类问题上失效,或目标函数为“黑箱”时。

主要亮点

  • 无需梯度:无需梯度信息,适用于崎岖或噪声较大的场景。
  • 混合整数支持:可同时优化连续变量和整数变量。
  • 约束处理:内置对边界、线性和非线性约束的支持。
  • 灵活接口:提供高层 fmin 接口和低层 ask-and-tell 接口,便于自定义控制。
  • 并行化:通过 OOOptimizer 中的 n_jobs 参数支持并行执行。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目