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参数支持并行执行。
相关
- 项目
- 项目
- 项目
- 项目
- 项目