纯随机搜索 (PRS)

class pypop7.optimizers.rs.prs.PRS(problem, options)[source]

纯随机搜索(PRS)。

注意

PRS 是最简单最早的黑箱优化器之一,至少可以追溯到 1950年代。尽管最近它 在一些相对低维度的问题中(特别是 超参数优化)取得了成功,但通常 在大规模黑箱优化中,由于缺乏适应性(这是大多数复杂搜索算法 非常需要的特性),它仍然受到著名的维度灾难的影响。因此,强烈建议首先尝试更先进的(例如 基于群体的)方法来进行大规模黑箱优化。

正如广为人知的书籍《概率机器学习》(由凯文·帕特里克·墨菲撰写)中指出的那样,“在我们对目标一无所知的问题中,一个出奇有效的策略是使用随机搜索。这应该始终作为基线尝试”

Parameters:
  • 问题 (字典) –

    问题参数包含以下常见设置 ():
    • ’fitness_function’ - 需要最小化的目标函数 (函数),

    • ’ndim_problem’ - 维度数 (整数),

    • ’upper_boundary’ - 搜索范围的上限 (类数组),

    • ’lower_boundary’ - 搜索范围的下限 (类数组).

  • options (dict) –

    具有以下常见设置的优化器选项 (keys):
    • ’max_function_evaluations’ - 函数评估的最大次数 (int, 默认: np.inf),

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

    • ’seed_rng’ - 需要显式设置的随机数生成种子 (int).

示例

使用PRS优化器来最小化著名的测试函数 Rosenbrock:

 1>>> import numpy
 2>>> from pypop7.benchmarks.base_functions import rosenbrock  # function to be minimized
 3>>> from pypop7.optimizers.rs.prs import PRS
 4>>> problem = {'fitness_function': rosenbrock,  # 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,  # set optimizer options
 9...            'seed_rng': 2022}
10>>> prs = PRS(problem, options)  # initialize the optimizer class
11>>> results = prs.optimize()  # run the optimization process
12>>> # return the number of used function evaluations and found best-so-far fitness
13>>> print(f"PRS: {results['n_function_evaluations']}, {results['best_so_far_y']}")
14PRS: 5000, 0.11497678820610932

关于其编码的正确性检查,请参阅此基于代码的可重复性报告以获取更多详细信息。

参考文献

Bergstra, J. 和 Bengio, Y., 2012. 随机搜索用于超参数优化。 机器学习研究杂志, 13(10), 第281-305页。

Schmidhuber, J., Hochreiter, S. 和 Bengio, Y., 2001. 通过随机猜测评估基准问题。 动态递归网络领域指南, 第231-235页。

Karnopp, D.C., 1963. Random search techniques for optimization problems. 自动控制, 1(2-3), 第111-121页.

布鲁克斯, S.H., 1959年。 最大寻求方法的比较。 运筹学, 7(4), 第430-457页。

布鲁克斯, S.H., 1958年。 关于寻找最大值的随机方法的讨论。 运筹学, 6(2), 第244-251页。

Ashby, W.R., 1952. Design for a brain: The origin of adaptive behaviour. 斯普林格出版社。