雷肯伯格的 (1+1)-演化策略 (RES)

class pypop7.optimizers.es.res.RES(problem, options)[源代码]

采用 1/5 成功法则的雷肯伯格 (1+1)-演化策略 (RES)。

“在所有方差和协方差给定的情况下,正态(高斯)分布在所有分布中熵最大。”——[Hansen, N., 2023]

注意

RES 是第一个具有全局步长自适应的演化策略(由雷肯伯格设计,他是 2002 年 IEEE 演化计算先驱奖的两位获奖者之一),最初是为实验性优化而提出的。正如他在柏林工业大学的开创性博士论文中从理论上研究的那样,狭窄的演化窗口的存在解释了为了最大化局部收敛进程,进行全局步长自适应的必要性。请注意,一个类似的理论研究也由自动控制领域独立进行([Schumer&Steiglitz, 1968, IEEE-TAC])。

由于每一代(迭代)只有一个父代和一个子代,RES 在大规模黑盒优化中通常表现出有限的探索能力。因此,建议首先尝试更高级的 ES 变体(例如 LMCMALMMAES)来解决大规模黑盒优化问题。我们在此处包含 RES(也称为双成员 ES)主要是为了基准测试理论目的。有趣的是,由于其普及性,RES 如今有时仍在使用,例如 [Williams&Li, 2024, NeurIPS]

“作为一种实践中的控制机制,1/5 成功法则在很大程度上已被更复杂的方法所取代。然而,其概念上的洞见仍然非常有价值。”——[Hansen 等人, 2015]

参数:
  • problem (dict) –

    问题参数,包含以下通用设置 ()
    • 'fitness_function' - 需要被最小化的目标函数 (func),

    • 'ndim_problem' - 维度数量 (int),

    • 'upper_boundary' - 搜索范围的上边界 (array_like),

    • 'lower_boundary' - 搜索范围的下边界 (array_like).

  • options (dict) –

    优化器选项,包含以下通用设置 ()
    • 'max_function_evaluations' - 函数评估的最大次数 (int, 默认: np.inf),

    • 'max_runtime' - 允许的最大运行时间 (float, 默认: np.inf),

    • 'seed_rng' - 随机数生成器的种子,需要明确设置 (int);

    以及以下特定设置 ()
    • ‘sigma’ - 初始全局步长,也称为变异强度 (float),

    • ‘mean’ - 初始(起始)点,也称为高斯搜索分布的均值 (array_like),

      • 如果未提供,它将从一个均匀分布中随机抽取一个样本,该分布的搜索范围由 problem[‘lower_boundary’]problem[‘upper_boundary’] 限定。

    • “lr_sigma” - 全局步长自适应的学习率(浮点型,默认值:1.0/np.sqrt(problem[‘ndim_problem’] + 1.0))。

示例

使用黑盒优化器 RES 来最小化著名的测试函数 Rosenbrock

 1>>> import numpy  # engine for numerical computing
 2>>> from pypop7.benchmarks.base_functions import rosenbrock  # function to be minimized
 3>>> from pypop7.optimizers.es.res import RES
 4>>> problem = {'fitness_function': rosenbrock,  # to define problem arguments
 5...            'ndim_problem': 2,
 6...            'lower_boundary': -5.0*numpy.ones((2,)),
 7...            'upper_boundary': 5.0*numpy.ones((2,))}
 8>>> options = {'max_function_evaluations': 5000,  # to set optimizer options
 9...            'seed_rng': 2022,
10...            'mean': 3.0*numpy.ones((2,)),
11...            'sigma': 3.0}  # global step-size may need to be tuned for optimality
12>>> res = RES(problem, options)  # to initialize the black-box optimizer class
13>>> results = res.optimize()  # to run its optimization/evolution process
14>>> print(f"RES: {results['n_function_evaluations']}, {results['best_so_far_y']}")
15RES: 5000, 0.0001

关于其 Python 编码的正确性检查,请参阅这份基于代码的可复现性报告以获取所有细节。对于基于 pytest 的自动化测试,请参见 test_res.py

best_so_far_x

在整个优化过程中找到的迄今为止最优的解。

类型:

array_like

best_so_far_y

在整个优化过程中找到的迄今为止最优的适应度。

类型:

array_like

lr_sigma

全局步长自适应的学习率。

类型:

float

mean

初始(起始)点,也即高斯搜索分布的均值。

类型:

array_like

sigma

最终的全局步长,也称为变异强度(在优化过程中更新)。

类型:

float

参考文献

Auger, A., Hansen, N., López-Ibáñez, M. and Rudolph, G., 2022. 纪念 Ingo Rechenberg (1934–2021)。 ACM SIGEVOlution, 14(4), pp.1-4.

Agapie, A., Solomon, O. and Giuclea, M., 2021. 关于 RIDGE 上的 (1+1) ES 理论。 IEEE Transactions on Evolutionary Computation, 26(3), pp.501-511.

Hansen, N., Arnold, D.V. and Auger, A., 2015. Evolution strategies. In Springer Handbook of Computational Intelligence (pp. 871-898). Springer, Berlin, Heidelberg.

Kern, S., Müller, S.D., Hansen, N., Büche, D., Ocenasek, J. and Koumoutsakos, P., 2004. Learning probability distributions in continuous evolutionary algorithms–a comparative review. Natural Computing, 3, pp.77-112.

Beyer, H.G. and Schwefel, H.P., 2002. 演化策略——全面介绍。 Natural Computing, 1(1), pp.3-52.

Rechenberg, I., 2000. 演化实验与计算案例研究。 Computer Methods in Applied Mechanics and Engineering, 186(2-4), pp.125-140.

Rechenberg, I., 1989. 演化策略:自然的优化之道。 In Optimization: Methods and Applications, Possibilities and Limitations (pp. 106-126). Springer, Berlin, Heidelberg.

Rechenberg, I., 1984. 演化策略:达尔文演化的数学模型。 In Synergetics—from Microscopic to Macroscopic Order (pp. 122-132). Springer, Berlin, Heidelberg.

Rechenberg, I., 1973. Evolutionsstrategie: Optimierung technischer systeme nach prinzipien der biologischen evolution. Frommann-Holzboog Verlag, Stuttgart. (注意,我们没有阅读这篇开创性的博士论文,因为它最初是用德语写的。我们在此仍将其列出,因为它对演化计算和黑盒优化做出了具有历史意义的重大贡献。)

Schumer, M.A. and Steiglitz, K., 1968. 自适应步长随机搜索。 IEEE Transactions on Automatic Control, 13(3), pp.270-276.

https://visitor-badge.laobi.icu/badge?page_id=Evolutionary-Intelligence.pypop