人口类别#
- class pygmo.population(prob=None, size=0, b=None, seed=None)#
人口类别。
这个类代表了一群个体,即给定问题的潜在候选解。在pygmo中,一个个体由以下因素决定:
通过一个唯一的ID来跟踪他跨越世代和迁移,
通过染色体(决策向量),
通过
problem评估染色体的适应度,因此包括目标、等式约束和不等式约束(如果存在)。
实现了一种特殊机制来跟踪曾经是种群一部分的最佳个体。这样的个体被称为冠军,其决策向量和适应度向量会自动保持更新。冠军不一定是当前种群中的个体。只有当
种群中当前包含的问题是单目标时,冠军才被定义并通过种群接口访问。另请参阅C++类
pagmo::population的文档。- Parameters
- Raises
- best_idx(tol=self.problem.c_tol)#
最佳个体的索引。
如果问题是单目标且无约束的,最佳个体就是适应度最小的个体。如果问题是单目标但有约束的,最佳个体将使用
pygmo.sort_population_con()中指定的标准来定义。如果问题是多目标的,单个最佳个体并不明确。在这种情况下,用户仍然可以通过调用pygmo.sort_population_mo()函数来获得种群个体的严格排序。- Parameters
tol (
float或类似数组的对象) – 标量容差或应用于每个约束的容差向量。默认情况下,使用种群问题的c_tol属性。- Returns
最佳个体的索引
- Return type
- Raises
ValueError – 如果问题是多目标的,因此最佳个体没有明确定义,或者如果种群为空
未指定 – 由
pagmo::sort_population_con()抛出的任何异常
- 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_x()#
此方法将返回个体的染色体作为一个2D NumPy数组。
返回数组的每一行代表种群中相应位置的个体的染色体。
- Returns
个体的染色体的深度复制
- Return type
2D NumPy 浮点数数组
- Raises
未指定 – 任何由C++和Python之间的交互失败引发的异常(例如,类型转换错误、函数签名不匹配等)
- push_back(x, f=None)#
向种群中添加一个决策向量(染色体)。
此方法将向种群中添加一个新的染色体x,为新出生的个体创建一个新的唯一标识符,并且如果未提供f,则评估其适应度。如果提供了f,则新个体的适应度将设置为f。用户有责任确保f实际上对应于x的适应度。
在发生异常的情况下,人口将不会被改变。
- Parameters
x (数组类对象) – 要添加到种群中的决策向量
- Raises
ValueError – 如果 x 或 f(如果提供)的维度与种群的问题不兼容
未指定 – 由
pygmo.problem.fitness()抛出的任何异常或C++与Python交互时的失败(例如,类型转换错误,函数签名不匹配等)
- random_decision_vector()#
此方法将在问题的边界内创建一个随机决策向量。
- Returns
问题边界内的随机决策向量
- Return type
- 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 无效,或者如果 x 或 f 的维度错误(即它们的维度与问题的属性不一致)
未指定 – 任何由C++和Python之间的交互失败引发的异常(例如,类型转换错误、函数签名不匹配等)
- worst_idx(tol=0.)#
最差个体的索引。
如果问题是单目标且无约束的,最差的个体就是适应度最大的个体。如果问题是单目标但有约束的,最差个体将使用
pygmo.sort_population_con()中指定的标准来定义。如果问题是多目标的,单个最差个体并不明确。在这种情况下,用户仍然可以通过调用pygmo.sort_population_mo()函数来获得种群个体的严格排序。- Parameters
tol (
float或类似数组的对象) – 应用于每个约束的标量容差或容差向量- Returns
最差个体的索引
- Return type
- Raises
ValueError – 如果问题是多目标的,因此最差个体没有明确定义,或者如果种群为空
未指定 – 由
pygmo.sort_population_con()抛出的任何异常