pypop7(基于 POPulation 的优化的纯 PYthon 库)
项目描述
pypop7(基于 POPulation 的黑盒优化的纯 PYthon 库)
PyPop7是一个基于 POPulation的优化的Pure-PYthon库,用于单目标、实参数、黑盒问题(目前正在积极开发)。它的主要目标是为黑盒优化(BBO),特别是基于人口的优化器提供统一的接口和优雅的实现,以促进研究的可重复性和实际应用。
更具体地说,为了减轻臭名昭著的 BBO维数诅咒(几乎基于迭代采样),主要关注的PyPop7是涵盖其用于大规模优化 (LSO) 的最先进的 (SOTA) 实现,尽管许多他们的其他版本和变体也包括在这里(用于基准测试/混合目的,有时甚至用于实际目的)。
如何使用 PyPop7
以下三个简单的步骤足以利用PyPop7的优化能力:
$ pip install pypop7
为简单起见,所有必需的依赖项都会根据setup.cfg自动安装。
-
为手头的优化问题定义自己的目标函数,
-
pypop7从给定的优化问题上运行一个或多个黑盒优化器:
import numpy as np # for numerical computation, which is also the computing engine of pypop7
# 2. Define your own objective function for the optimization problem at hand:
# the below example is Rosenbrock, the notorious test function in the optimization community
def rosenbrock(x):
return 100 * np.sum(np.power(x[1:] - np.power(x[:-1], 2), 2)) + np.sum(np.power(x[:-1] - 1, 2))
# define the fitness (cost) function and also its settings
ndim_problem = 1000
problem = {'fitness_function': rosenbrock, # cost function
'ndim_problem': ndim_problem, # dimension
'lower_boundary': -5 * np.ones((ndim_problem,)), # search boundary
'upper_boundary': 5 * np.ones((ndim_problem,))}
# 3. Run one or more black-box optimizers from ```pypop7``` on the given optimization problem:
# here we choose LM-MA-ES owing to its low complexity and metric-learning ability for LSO
from pypop7.optimizers.es.lmmaes import LMMAES
# define all the necessary algorithm options (which differ among different optimizers)
options = {'fitness_threshold': 1e-10, # terminate when the best-so-far fitness is lower than this threshold
'max_runtime': 3600, # 1 hours (terminate when the actual runtime exceeds it)
'seed_rng': 0, # seed of random number generation (which must be explicitly set for repeatability)
'x': 4 * np.ones((ndim_problem,)), # initial mean of search (mutation/sampling) distribution
'sigma': 0.3, # initial global step-size of search distribution
'verbose_frequency': 500}
lmmaes = LMMAES(problem, options) # initialize the optimizer
results = lmmaes.optimize() # run its (time-consuming) search process
print(results)
下面的DEMO给出了一个玩具二维最小化函数,以直观地展示 和 的非常有趣/强大的进化搜索MAES过程LMCMAES:
| MA-ES | LM-CMA-ES |
|---|---|
| 胡克-吉夫斯(1961) | 内尔德米德(1965) |
公开可用的黑盒优化器 (BBO) 列表(仍在增长)
: 表示 LSO 的特定版本(例如,尺寸 >= 1000)。
: 表示相对低维问题的竞争(或事实上的)版本(尽管它在某些 LSO 情况下也可以很好地工作)。
:表示用于基准测试或理论兴趣的基线版本。
-
进化策略 (ES) [参见例如Ollivier 等人,2017,JMLR;汉森等人,2015;Bäck 等人,2013 年;鲁道夫,2012;拜耳与施韦菲尔,2002 年;雷兴伯格,1989 年;施韦菲尔,1984 ]
-
基于混合模型的进化策略 ( MMES ) [参见He et al., 2021, TEVC ]
-
有限内存矩阵自适应进化策略 ( LMMAES ) [参见Loshchilov 等人,2019,TEVC ]
-
有限记忆协方差矩阵适应 ( LMCMA ) [参见Loshchilov, 2017, ECJ ]
有限记忆协方差矩阵适应进化策略 ( LMCMAES ) [参见Loshchilov, 2014, GECCO ]
-
具有多条进化路径的 Rank-m 进化策略( RMES , Rm-ES) [参见Li&Zhang, 2018, TEVC ]
-
Rank-One Evolution Strategy ( R1ES ) [参见Li&Zhang, 2018, TEVC ]
-
基于投影的协方差矩阵自适应 ( VKDCMA , VkD-CMA) [参见Akimoto&Hansen, 2016, GECCO ]
-
线性协方差矩阵自适应 ( VDCMA , VD-CMA) [参见Akimoto et al., 2014, GECCO ]
-
Cholesky-CMA-ES-2016 ( CCMAES2016 ) [参见Krause 等人,2016,NeurIPS ]
-
(1+1)-Active-Cholesky-CMA-ES-2015 ( OPOA2015 ) [参见Krause&Igel, 2015, FOGA ]
-
(1+1)-Active-Cholesky-CMA-ES ( OPOA ) [参见Arnold&Hansen, 2010, GECCO ]
-
-
Cholesky-CMA-ES ( CCMAES ) [参见Suttorp 等人,2009,MLJ ]
-
(1+1)-Cholesky-CMA-ES-2009 ( OPOC2009 ) [参见Suttorp 等人,2009,MLJ ]
-
(1+1)-Cholesky-CMA-ES ( OPOC ) [参见Igel 等人,2006,GECCO ]
-
-
可分离协方差矩阵适应进化策略 ( SEPCMAES ) [参见Bäck et al., 2013 ; 罗斯和汉森, 2008, PPSN ]
-
主向量自适应进化策略(MVAES,MVA-ES)[参见波兰和泽尔,2001,GECCO ]
-
对角解码协方差矩阵自适应 ( DDCMA , dd-CMA) [参见Akimoto&Hansen, 2019, ECJ ]
-
具有排斥亚群的协方差矩阵自适应 ( RSCMSA , RS-CMSA) [参见Ahrari et al., 2017, ECJ ]
-
矩阵适应进化策略 ( MAES ) [参见Beyer&Sendhoff, 2017, TEVC ]
快速矩阵适应进化策略 ( FMAES ) [参见Beyer,2020,GECCO;Loshchilov 等人,2019 年,TEVC ]
-
自适应进化策略 ( SAES ) [参见例如Beyer, 2020, GECCO ; 拜尔,2007,学术百科]
-
累积步长适应进化策略 ( CSAES ) [参见例如Hansen et al., 2015 ; Ostermeier 等人,1994 年,PPSN ]
-
去随机化的自适应进化策略 ( DSAES ) [参见例如Hansen et al., 2015 ; Ostermeier 等人,1994 年,欧洲法院]
-
Schwefel 的自适应进化策略 ( SSAES ) [参见例如Hansen et al., 2015 ]
-
Rechenberg's (1+1)-Evolution Strategy with 1/5th success rule ( RES ) [参见例如Hansen et al., 2015 ; 克恩等人,2004 年;舒默和施泰格利茨,1968,IEEE-TAC ]
-
-
-
自然进化策略 (NES) [参见例如Wierstra 等人,2014,JMLR;易等人,2009,ICML;Wierstra 等人,2008 年,CEC ]
-
Rank-One 自然进化策略 ( R1NES ) [参见Sun et al., 2013, GECCO ]
-
可分离自然进化策略 ( SNES ) [参见Schaul 等人,2011,GECCO ]
-
-
分布算法估计 ( EDA ) [参见例如Larrañaga&Lozano, 2002 ; Pelikan 等人,2002 年;Mühlenbein&Paaß, 1996, PPSN ]
-
单变量边际分布算法 ( UMDA ) [参见例如Larrañaga&Lozano, 2002 ; Mühlenbein, 1997, 欧洲法院]
-
多元正态算法 ( EMNA ) 的估计 [参见例如Larrañaga&Lozano, 2002 ]
-
-
交叉熵方法 ( CEM ) [参见例如Kroese 等人,2006,MCAP;De Boer 等人,2005 年,AOR;鲁宾斯坦与克罗斯,2004 ]
-
微分进化 ( DE ) [参见例如Price, 2013;普莱斯等人,2005 年;Storn&Price, 1997, JGO ]
-
复合差分演化 ( CODE ) [参见Wang et al., 2011, TEVC ]
-
自适应差分进化 ( JADE ) [参见Zhang&Sanderson, 2009, TEVC ]
-
三角变异微分演化 ( TDE ) [参见Fan&Lampinen, 2003, JGO ]
-
经典微分演化 ( CDE ) [参见Storn&Price, 1997, JGO ]
-
-
粒子群优化器 ( PSO ) [参见例如Bonyadi&Michalewicz, 2017, ECJ;埃斯卡兰特等人,2009 年,JMLR;多里戈等人,2008 年;Poli 等人,2007 年,SI;Shi&Eberhart, 1998, CEC ; 肯尼迪和埃伯哈特,1995 年,国际有线电视新闻网]
-
协同进化粒子群优化器 ( CCPSO2 ) [参见Li&Yao, 2012, TEVC ]
-
综合学习粒子群优化器 ( CLPSO ) [参见Liang et al., 2006, TEVC ]
-
具有局部(环)拓扑 ( SPSOL ) 的标准粒子群优化器 [参见例如Shi&Eberhart, 1998, CEC ]
-
具有全局拓扑的标准粒子群优化器 ( SPSO ) [参见例如Shi&Eberhart, 1998, CEC ]
-
-
CoOperative co-Evolutionary Algorithms (COEA) [参见例如Gomez 等人,2008,JMLR;Panait 等人,2008 年,JMLR ]
- 协同突触神经进化(COSYNE,CoSyNE)[参见Gomez 等人,2008,JMLR ]
-
模拟退火 (SA) [参见Kirkpatrick et al., 1983, Science ; 黑斯廷斯,1970,Biometrika;Metropolis 等人,1953 年,JCP ]
-
增强模拟退火 ( ESA ) [参见Siarry 等人,1997,ACM-TOMS ]
-
科拉纳等人。模拟退火 ( CSA ) [参见Corana et al., 1987, ACM-TOMS ]
-
-
遗传算法 (GA) [参见Forrest, 1993, Science ; 荷兰,1962,JACM ]
-
进化规划 ( EP ) [参见Yao et al., 1999, TEVC ]
-
快速进化规划 ( FEP ) [参见Yao et al., 1999, TEVC ]
-
经典进化规划 ( CEP ) [参见Yao et al., 1999, TEVC ; Bäck&Schwefel, 1993, 欧洲法院]
-
-
直接搜索 ( DS ) [参见Powell, 1998, Acta-Numerica;赖特,1996;胡克与吉夫斯, 1961, JACM ]
-
广义模式搜索 ( GPS ) [参见Kochenderfer&Wheeler, 2019;Torczon, 1997, SIAM-JO ]
-
Nelder-Mead 单纯形法 ( NM ) [参见Nelder&Mead, 1965, Computer ]
-
Hooke-Jeeves 直接搜索法 ( HJ ) [参见Kochenderfer&Wheeler, 2019;考佩,1963 年,CACM;胡克与吉夫斯, 1961, JACM ]
-
坐标搜索 ( CS ) [参见Torczon,1997,SIAM-JO;费米与大都会,1952 ]
-
-
随机(随机)搜索 ( RS ) [参见Bergstra&Bengio, 2012, JMLR ; 拉斯特里金,1986 年;Solis&Wets,1981 年,摩尔;布鲁克斯,1958 年,或]
-
简单随机搜索 ( SRS ) [参见Rosenstein&Barto, 2001, IJCAI ]
-
Annealed Random Hill Climber ( ARHC ) [参见Schaul et al., 2010, JMLR ]
-
Random Hill Climber ( RHC ) [参见Schaul et al., 2010, JMLR ]
-
纯随机搜索 ( PRS ) [参见Bergstra&Bengio, 2012, JMLR ]
-
设计理念
-
尊重美(优雅)
-
从解决问题的角度来看,我们凭经验更愿意为手头的黑盒优化问题选择最佳优化器。但是,对于新问题,最好的优化器通常是事先未知的(没有先验知识)。根据经验,我们需要比较一组(通常很小的)所有可用/知名优化器,并根据一些预定义的性能标准从中选择最好的一个。然而,从研究的角度来看,我们喜欢漂亮的优化器,尽管始终牢记“没有免费午餐”定理。通常,美一个优化器来自以下特征:新颖性(例如,GA/PSO)、在至少一类问题(例如,BO)上的竞争性能、理论见解(例如,CMA-ES/NES)、清晰/简单(例如, CEM/EDA) 和可重复性。
- “如果这里有一个单一的主导主题……那就是数值计算的实用方法可以同时高效、聪明,而且——重要的是——清晰。” (来自 Press, WH, Teukolsky, SA, Vetterling, WT 和 Flannery, BP, 2007。数值食谱:科学计算的艺术。剑桥大学出版社。)
-
如果您发现任何符合上述标准的 BBO/DFO,欢迎发起issue或pulls。我们将考虑将其包含在
pypop库中。请注意,将不考虑对上述成熟优化器(“新瓶装旧酒” )的任何肤浅 模仿。
-
-
尊重多样性
- 鉴于黑盒优化 (BBO) 在科学和工程中的普遍性,不同的研究团体设计了不同的方法并不断增加。一方面,其中一些方法可能或多或少有相似之处。另一方面,它们也可能表现出显着差异(动机/目标/实施/从业者)。因此,我们希望涵盖来自不同研究社区的多样性,例如人工智能(特别是机器学习(进化计算和零阶优化))、数学优化/编程(特别是全局优化)、运筹学/管理科学、自动控制,开源软件,也许还有其他。
-
尊重原创
-
“直接从创作者那里听到想法既有趣又具有教育意义”。(来自 Hennessy,JL 和 Patterson,DA,2019 年。计算机体系结构:定量方法(第六版)。Elsevier。)
-
对于此处考虑的每个优化器,我们希望提供其原始/代表性参考(包括其良好的实现/改进)。如果您发现这里遗漏了一些重要的参考资料,请随时与我们联系(如有必要,我们很乐意添加)。
-
-
尊重可重复性
- 对于随机搜索,正确控制随机性对于重复数值实验非常关键。在这里,我们遵循NumPy的随机抽样建议。在其他世界中,您必须为每个优化器显式设置随机种子。
计算效率
对于 LSO 来说,计算效率是后摩尔时代DFO 不可或缺的性能标准。为了尽可能获得高性能计算,该库中大量使用NumPy和SciPy作为数值计算的基础。有时,还会使用Numba,以进一步加快挂钟时间。
开发指南
由于这个库是建立在出色的数值计算库 NumPy 之上的,我们进一步使用了 NumPy 的 Docstring Conventions:numpydoc。
参考
-
https://sites.google.com/view/benchmarking-network | PPSN-2022
-
Meunier, L.、Rakotoarison, H.、Wong, PK、Roziere, B.、Rapin, J.、Teytaud, O.、Moreau, A. 和 Doerr, C.,2022 年。重新审视黑盒优化:改进算法选择奇才通过大规模的基准测试。IEEE Transactions on Evolutionary Computation, 26(3), pp.490-500。
-
Hansen, N.、Auger, A.、Ros, R.、Mersmann, O.、Tušar, T. 和 Brockhoff, D.,2021 年。COCO :在黑盒设置中比较连续优化器的平台。优化方法和软件,36(1),第 114-144 页。
-
Auger, A. 和 Hansen, N.,2021 年 7 月。基准测试:最先进的和超越。在遗传和进化计算会议伴侣的论文集中(第 339-340 页)。ACM。
-
Varelas, K.、El Hara, OA、Brockhoff, D.、Hansen, N.、Nguyen, DM、Tušar, T. 和 Auger, A.,2020 年。对大规模连续优化器进行基准测试:bbob 大规模测试平台,a COCO 软件指南及其他。应用软计算,97,p.106737。
-
Moré, JJ 和 Wild, SM, 2009。基准测试无导数优化算法。SIAM 优化杂志,20(1),第 172-191 页。
-
Whitley, D.、Rana, S.、Dzubera, J. 和 Mathias, KE, 1996。评估进化算法。人工智能,85(1-2),第 245-276 页。
-
Salomon, R., 1996。在基准函数坐标旋转下重新评估遗传算法性能。遗传算法的一些理论和实践方面的调查。生物系统,39(3),第 263-278 页。
-
Moré, JJ, Garbow, BS 和 Hillstrom, KE, 1981。测试无约束优化软件。ACM 数学软件交易,7(1),第 17-41 页。
-
-
Hutter, F.、Kotthoff, L. 和 Vanschoren, J.,2019 年。自动化机器学习:方法、系统、挑战。施普林格自然。
- Hoos, HH, 2011。自动算法配置和参数调整。在自主搜索中(第 37-71 页)。施普林格,柏林,海德堡。
-
Berahas, AS, Cao, L., Choromanski, K. 和 Scheinberg, K., 2022。无导数优化中梯度近似的理论和经验比较。计算数学基础,22(2),pp.507-560。
-
Porcelli, M. 和 Toint, PL, 2022。在无导数优化中利用问题结构。ACM 数学软件交易,48(1),pp.1-25。
-
Gao, K. 和 Sener, O.,2022 年 6 月。为随机搜索推广高斯平滑。在机器学习国际会议上(第 7077-7101 页)。PMLR。
-
Kochenderfer, MJ 和 Wheeler, TA, 2019。优化算法。麻省理工学院出版社。
-
Larson, J.、Menickelly, M. 和 Wild, SM, 2019。无导数优化方法。数字学报,28,第 287-404 页。
-
Nesterov, Y.,2018年。关于凸优化的讲座。柏林:施普林格国际出版社。
-
Nesterov, Y. 和 Spokoiny, V., 2017。凸函数的随机无梯度最小化。计算数学基础,17(2),pp.527-566。
-
Conn, AR, Scheinberg, K. 和 Vicente, LN, 2009。无导数优化简介。工业和应用数学学会。
-
-
Ollivier, Y.、Arnold, L.、Auger, A. 和 Hansen, N.,2017 年。信息几何优化算法:通过不变性原理统一画面。机器学习研究杂志,18(18),pp.1-65。[进化策略的视觉指南]
-
Glasmachers, T. 和 Krause, O.,2022 年。Hessian估计演化策略的收敛性分析。进化计算,30(1),第 27-50 页。
-
Akimoto, Y. 和 Hansen, N.,2022 年 7 月。CMA-ES 和高级适应机制。在遗传和进化计算伴侣年会论文集上。ACM。
-
Hansel, K.、Moos, J. 和 Derstroff, C.,2021 年。对政策梯度方法和演化策略中的自然梯度进行基准测试。强化学习算法:分析和应用,pp.69-84。
-
He, X., Zheng, Z. and Zhou, Y., 2021. MMES:基于混合模型的大规模优化进化策略。IEEE Transactions on Evolutionary Computation, 25(2), pp.320-333。
-
Li, Z.、Lin, X.、Zhang, Q. 和 Liu, H.,2020 年。持续优化的进化策略:最新技术调查。群体和进化计算,56,p.100694。
-
Akimoto, Y. 和 Hansen, N.,2020 。协方差矩阵适应进化策略的对角加速。进化计算,28(3),pp.405-435。
-
Choromanski, K.、Pacchiano, A.、Parker-Holder, J. 和 Tang, Y.,2019年。从复杂到简单:用于黑盒优化的自适应 es-active 子空间。在神经信息处理系统的进展。
-
Loshchilov, I.、Glasmachers, T. 和 Beyer, HG, 2019。通过有限内存矩阵自适应进行的大规模黑盒优化。IEEE Transactions on Evolutionary Computation, 23(2), pp.353-358。
-
Li, Z.、Zhang, Q.、Lin, X. 和Zhen, HL, 2018。用于大规模黑盒优化的快速协方差矩阵自适应。IEEE 控制论汇刊,50(5),pp.2073-2083。
-
Varelas, K.、Auger, A.、Brockhoff, D.、Hansen, N.、ElHara, OA、Semet, Y.、Kassab, R. 和 Barbaresco, F.,2018 年 9 月。CMA-ES 的大规模变体的比较研究。在国际平行问题解决自然会议上(第 3-15 页)。施普林格,湛。
-
Li, Z. 和 Zhang, Q.,2018 年。一种简单而有效的大规模黑盒优化进化策略。IEEE Transactions on Evolutionary Computation, 22(5), pp.637-646。
-
Lehman, J.、Chen, J.、Clune, J. 和 Stanley, KO,2018 年 7 月。ES 不仅仅是一个传统的有限差分逼近器。在遗传和进化
-