人口类别#

_images/pop_no_text.png
class pygmo.population(prob=None, size=0, b=None, seed=None)#

人口类别。

这个类代表了一群个体,即给定问题的潜在候选解。在pygmo中,一个个体由以下因素决定:

  • 通过一个唯一的ID来跟踪他跨越世代和迁移,

  • 通过染色体(决策向量),

  • 通过problem评估染色体的适应度,因此包括目标、等式约束和不等式约束(如果存在)。

实现了一种特殊机制来跟踪曾经是种群一部分的最佳个体。这样的个体被称为冠军,其决策向量和适应度向量会自动保持更新。冠军不一定是当前种群中的个体。只有当种群中当前包含的问题是单目标时,冠军才被定义并通过种群接口访问。

另请参阅C++类pagmo::population的文档。

Parameters
  • prob – 用户定义的问题(可以是Python或C++),或者是problem的一个实例 (如果probNone,将使用默认构造的problem来代替)

  • size (int) – 个体数量

  • b – 用户定义的批量适应度评估器(可以是Python或C++),或者是bfe的实例 (如果bNone,则种群个体的评估将以顺序模式执行)

  • seed (int) – 随机种子(如果 seedNone,将使用随机生成的值代替)

Raises
  • TypeError – 如果 size 不是 int 或者 seed 不是 None 并且不是 int

  • OverflowError – 如果 sizeseed 为负数

  • 未指定 – 由调用的C++构造函数、问题的构造函数或bfe的构造函数抛出的任何异常,或由C++和Python之间的交互失败(例如,类型转换错误、函数签名不匹配等)引起的异常。

best_idx(tol=self.problem.c_tol)#

最佳个体的索引。

如果问题是单目标且无约束的,最佳个体就是适应度最小的个体。如果问题是单目标但有约束的,最佳个体将使用pygmo.sort_population_con()中指定的标准来定义。如果问题是多目标的,单个最佳个体并不明确。在这种情况下,用户仍然可以通过调用pygmo.sort_population_mo()函数来获得种群个体的严格排序。

Parameters

tol (float 或类似数组的对象) – 标量容差或应用于每个约束的容差向量。默认情况下,使用种群问题的 c_tol 属性。

Returns

最佳个体的索引

Return type

int

Raises
property champion_f#

冠军的健身向量。

此只读属性包含一个float数组,表示种群冠军的适应度向量。

注意

如果问题是随机的,冠军是在某个幸运种子下具有最低适应度的个体,而不是在所有种子上的平均适应度。重新评估其决策向量可能会导致不同的适应度。

Returns

冠军的适应度向量

Return type

一维NumPy浮点数数组

Raises
  • ValueError – 如果当前问题不是单目标

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

property champion_x#

冠军的决策向量。

此只读属性包含一个float数组,表示种群冠军的决策向量。

注意

如果问题是随机的,冠军是在某个幸运种子下具有最低适应度的个体,而不是在所有种子上的平均适应度。重新评估其决策向量可能会导致不同的适应度。

Returns

冠军的决策向量

Return type

一维NumPy浮点数数组

Raises
  • ValueError – 如果当前问题不是单目标

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

get_ID()#

此方法将返回个体的ID作为一维NumPy数组。

返回数组的每个元素代表种群中相应位置的个体的ID。

Returns

个人ID的深拷贝

Return type

一维NumPy整数数组

Raises

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

get_f()#

该方法将返回个体的适应度向量作为一个2D NumPy数组。

返回数组的每一行代表种群中相应位置个体的适应度向量。

Returns

个体适应度向量的深拷贝

Return type

2D NumPy 浮点数数组

Raises

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

get_seed()#

此方法将返回种群的随机种子。

Returns

种群的随机种子

Return type

int

get_x()#

此方法将返回个体的染色体作为一个2D NumPy数组。

返回数组的每一行代表种群中相应位置的个体的染色体。

Returns

个体的染色体的深度复制

Return type

2D NumPy 浮点数数组

Raises

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

property problem#

人口问题。

此只读属性允许直接访问存储在种群中的问题

Returns

对内部问题的引用

Return type

问题

push_back(x, f=None)#

向种群中添加一个决策向量(染色体)。

此方法将向种群中添加一个新的染色体x,为新出生的个体创建一个新的唯一标识符,并且如果未提供f,则评估其适应度。如果提供了f,则新个体的适应度将设置为f。用户有责任确保f实际上对应于x的适应度。

在发生异常的情况下,人口将不会被改变。

Parameters

x (数组类对象) – 要添加到种群中的决策向量

Raises
  • ValueError – 如果 xf(如果提供)的维度与种群的问题不兼容

  • 未指定 – 由pygmo.problem.fitness()抛出的任何异常或C++与Python交互时的失败(例如,类型转换错误,函数签名不匹配等)

random_decision_vector()#

此方法将在问题的边界内创建一个随机决策向量。

Returns

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

Return type

numpy.ndarray

Raises

未指定 – 由pygmo.random_decision_vector()抛出的任何异常

set_x(i, x)#

设置第\(i\)个个体决策向量。

将第\(i\)个个体的染色体设置为值x,并相应地改变其适应度。个体的ID保持不变。

注意

调用此方法会触发一次适应度函数评估。

Parameters
  • i (int) – 个体在种群中的索引

  • x (数组类对象) – 一个决策向量(染色体)

Raises
  • ValueError – 如果 i 无效,或者如果 x 的维度错误(即,维度与问题的属性不一致)

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

set_xf(i, x, f)#

设置第\(i\)个个体决策向量和适应度。

同时设置第\(i\)个个体的决策向量和适应度,从而避免触发适应度函数评估。

注意

用户必须确保输入的适应度f是有意义的,因为pygmo只会检查其维度。

Parameters
  • i (int) – 个体在种群中的索引

  • x (数组类对象) – 一个决策向量(染色体)

  • f (类似数组的对象) – 适应度向量

Raises
  • ValueError – 如果 i 无效,或者如果 xf 的维度错误(即它们的维度与问题的属性不一致)

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

worst_idx(tol=0.)#

最差个体的索引。

如果问题是单目标且无约束的,最差的个体就是适应度最大的个体。如果问题是单目标但有约束的,最差个体将使用pygmo.sort_population_con()中指定的标准来定义。如果问题是多目标的,单个最差个体并不明确。在这种情况下,用户仍然可以通过调用pygmo.sort_population_mo()函数来获得种群个体的严格排序。

Parameters

tol (float 或类似数组的对象) – 应用于每个约束的标量容差或容差向量

Returns

最差个体的索引

Return type

int

Raises