超体积实用工具#

class pygmo.hypervolume(points)#

超体积类

从点构造

Parameters

points (二维数组对象) – 点

Raises

ValueError – 如果 points 不一致

示例

>>> from pygmo import *
>>> points = [[1,2],[0.5, 3],[0.1,3.1]]
>>> hv = hypervolume(points = points)

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

__init__(pop)

从总体构造

Parameters

pop (population) – 输入的人口

Raises

ValueError – 如果 pop 包含单目标或约束问题

示例

>>> from pygmo import *
>>> pop = population(prob = zdt(prob_id = 1), size = 20)
>>> hv = hypervolume(pop = pop)

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

compute(ref_point, hv_algo=auto)#

使用提供的算法计算超体积。如果没有提供算法,则会自动选择一个适用于点维度的精确超体积算法。

Parameters
  • ref_point (2d array-like object) – 点

  • hv_algo (继承自 _hv_algorithm) – 使用的超体积算法

Returns

假设ref_point为参考点计算的超体积

Return type

float

Raises

ValueError – 如果 ref_point 不被 nadir 点支配

另请参阅C++类pagmo::hypervolume::compute()的文档。

contributions(ref_point, hv_algo=auto)#

此方法返回每个点对超体积的独占贡献。 根据hv_algo,此计算可以最优地实现(与在循环中调用 exclusive()相反)。

Parameters
  • ref_point (2d array-like object) – 点

  • hv_algo (继承自 _hv_algorithm) – 使用的超体积算法

Returns

所有点对超体积的贡献

Return type

一维NumPy浮点数数组

Raises

ValueError – 如果 ref_point 不合适

另请参阅C++类pagmo::hypervolume::contributions()的文档。

exclusive(idx, ref_point, hv_algo=auto)#

计算特定点对超体积的独占贡献。

Parameters
  • idx (int) – 点的索引

  • ref_point (数组类对象) – 参考点

  • hv_algo (继承自 _hv_algorithm) – 使用的超体积算法

Returns

所有点对超体积的贡献

Return type

一维NumPy浮点数数组

Raises
  • ValueError – 如果 ref_point 不合适或 idx 超出范围

  • OverflowError – 如果 idx 为负数或大于实现定义的值

另请参阅C++类pagmo::hypervolume::exclusive()的文档。

greatest_contributor(ref_point, hv_algo=auto)#

计算对总超体积贡献最大的点。

Parameters
  • ref_point (array-like object) – 参考点

  • hv_algo (继承自 _hv_algorithm) – 使用的超体积算法

Raises

ValueError – 如果 ref_point 不合适

另请参阅C++类pagmo::hypervolume::greatest_contributor()的文档。

least_contributor(ref_point, hv_algo=auto)#

计算对总体超体积贡献最小的点。

Parameters
  • ref_point (数组类对象) – 参考点

  • hv_algo (继承自 _hv_algorithm) – 使用的超体积算法

Raises

ValueError – 如果 ref_point 不合适

另请参阅C++类pagmo::hypervolume::least_contributor()的文档。

refpoint(offset=0)#

通过获取超体积对象中保存的所有点在每个维度上的最大值来计算一个模拟参考点。 结果是一个必然被所有其他点支配的点,因此可以用于超体积计算。

这一点与通过nadir()计算的不同,因为在该方法中只考虑了非支配前沿(因此其复杂性也更高)

Parameters

offset (float) – 参考点

Returns

参考点

Return type

一维NumPy浮点数数组

另请参阅C++类pagmo::hypervolume::refpoint()的文档。


class pygmo.hvwfg(stop_dimension=2)#

来自Walking Fish Group的超体积算法(2011版本)。

此对象可以作为参数传递给类 hypervolume 的各种方法,因为它继承自隐藏基类 _hv_algorithm

Parameters

stop_dimension (int) – 输入的人口

Raises

OverflowError – 如果 stop_dimension 为负数或大于实现定义的值

示例

>>> import pygmo as pg
>>> hv_algo = pg.hvwfg(stop_dimension = 2)

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


class pygmo.hv2d#

二维点的精确超体积算法。

此对象可以作为参数传递给类 hypervolume 的各种方法,因为它继承自隐藏的基类 _hv_algorithm

示例

>>> import pygmo as pg
>>> hv_algo = pg.hv2d()

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


class pygmo.hv3d#

三维点的精确超体积算法。

此对象可以作为参数传递给类 hypervolume 的各种方法,因为它继承自隐藏基类 _hv_algorithm

示例

>>> import pygmo as pg
>>> hv_algo = pg.hv3d()

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


class pygmo.bf_fpras(eps=1e-2, delta=1e-2, seed=random)#

Bringmann-Friedrich近似方法。实现了Bringmann-Friedrich近似方案(FPRAS),简化为近似超体积指标的特殊情况。

此对象可以作为参数传递给类 hypervolume 的各种方法,因为它继承自隐藏基类 _hv_algorithm

示例

>>> import pygmo as pg
>>> hv_algo = pg.bf_fpras(eps = 1e-2, delta = 1e-2)

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


class pygmo.bf_approx#

Bringmann-Friedrich近似方法。实现了Bringmann-Friedrich近似方案(FPRAS),简化为近似最小贡献者的特殊情况。

此对象可以作为参数传递给类 hypervolume 的各种方法,因为它继承自隐藏基类 _hv_algorithm

示例

>>> import pygmo as pg
>>> hv_algo = pg.bf_approx()

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