通用优化工具#

pygmo.random_decision_vector(prob)#

此函数将生成一个决策向量,其值在输入problem prob的下限\(lb\)和上限\(ub\)之间均匀随机选择。

对于决策向量的连续部分,随机生成的决策向量的第\(i\)个分量将满足\(lb_i \le x_i < ub_i\)

对于决策向量的离散部分,随机生成的决策向量的第\(i\)个分量保证是一个整数值,使得\(lb_i \le x_i \le ub_i\)

对于决策向量的连续和离散部分,如果 \(lb_i == ub_i\) 则返回 \(lb_i\)

Parameters

prob (problem) – 输入问题

Returns

问题边界内的随机决策向量

Return type

numpy.ndarray

Raises
  • ValueError – 如果问题的边界不是有限的或大于实现定义的极限

  • 未指定 – 任何由C++和Python之间的失败引发的异常(例如,类型转换错误、函数签名不匹配等)。


pygmo.batch_random_decision_vector(prob, n)#

此函数将生成一批n个决策向量,其值在输入problem prob的下限和上限\(lb\)\(ub\)之间均匀随机选择。 决策向量在返回值中连续排列:对于维度为\(x\)的问题,返回值中的第一个决策向量占据索引范围\(\left[0, x\right)\),第二个决策向量占据范围\(\left[x, 2x\right)\),依此类推。

对于决策向量的连续部分,随机生成的决策向量的第\(i\)个分量将满足\(lb_i \le x_i < ub_i\)

对于决策向量的离散部分,随机生成的决策向量的第\(i\)个分量保证是整数值,使得\(lb_i \le x_i \le ub_i\)

对于决策向量的连续和离散部分,如果 \(lb_i == ub_i\) 则返回 \(lb_i\)

Parameters
  • prob (problem) – 输入问题

  • n (int) – 将生成的决策向量的数量

Returns

一批在问题边界内的随机决策向量,连续排列在一维数组中

Return type

numpy.ndarray

Raises
  • OverflowError – 在(不太可能发生的)溢出情况下

  • ValueError – 如果问题的边界不是有限的或大于实现定义的极限

  • 未指定 – 任何由C++和Python之间的失败引发的异常(例如,类型转换错误、函数签名不匹配等)。


pygmo.set_global_rng_seed(seed)#

在pygmo中,通常可以通过各种构造函数传递的专用seed关键字参数来控制所有随机生成器的种子。如果没有传递seed,pygmo会使用其全局随机数生成器为你随机创建一个种子。

此函数允许重置全局随机数生成器的种子。这对于轻松创建pygmo的确定性行为非常有用。

Parameters

seed (int) – 用于随机数生成的新全局种子

注意

在复杂的并行演化中,即使设置了全局种子,也无法获得确定性的行为,因为pygmo实现了异步模型用于并行执行,线程和进程之间的确切交互无法确定性地重现。

示例

>>> import pygmo as pg
>>> pg.set_global_rng_seed(seed = 32)
>>> pop = pg.population(prob = pg.ackley(5), size = 20)
>>> print(pop.champion_f) 
[17.26891503]
>>> pg.set_global_rng_seed(seed = 32)
>>> pop = pg.population(prob = pg.ackley(5), size = 20)
>>> print(pop.champion_f) 
[17.26891503]