批量评估器列表#

在Python中实现的批量评估器#

class pygmo.mp_bfe(chunksize=None)#

多进程批量适应度评估器。

版本2.13中的新功能。

这个用户定义的批量适应度评估器(UDBFE)将把一组决策向量的适应度评估以批量模式分派到通过标准Python multiprocessing模块创建和管理的进程池中。

决策向量的评估被分发到全局pool的进程中,该池在不同实例之间共享mp_bfe。池的创建可以通过第一个mp_bfe对象的构造隐式完成,或者通过init_pool()静态方法显式完成。池中默认的进程数量等于当前机器上的逻辑CPU数量。池的大小可以通过get_pool_size()查询,并通过resize_pool()更改。池可以通过shutdown_pool()停止。

注意

由于CPython的某些实现细节,无法从与主线程不同的线程初始化、调整大小或关闭池。通常这不是问题,但是,例如,如果第一个mp_bfe实例是在与主线程不同的线程中创建的,将会引发错误。在这种情况下,用户应确保在生成辅助线程之前从主线程调用init_pool()

警告

由于CPython的内部限制,在mp_bfe运行时发送中断信号(例如,在交互式Python会话中按下Ctrl+C)可能会导致中断信号也被发送到外部进程。这可能导致不可预测的运行时行为(例如,会话可能会挂起)。尽管pygmo努力尽可能减少这种情况的发生,但它无法完全消除。因此,建议用户在使用mp_bfe时,特别是在交互式会话中,谨慎处理中断信号。

警告

由于一个上游错误,在使用Python 3.8时,多进程机制可能会导致Python会话退出时挂起。作为在错误解决之前的临时解决方案,建议用户在退出Python会话之前显式调用shutdown_pool()

Parameters

chunksize (intNone) – 如果不是 None,这个正整数表示 每次调用操作符提交给进程池的每个任务处理的决策向量的近似数量

Raises
  • TypeError – 如果 chunksize 既不是 None 也不是整型类型的值

  • ValueError – 如果 chunksize 不是严格正数

  • 未指定 – 由init_pool()抛出的任何异常

get_extra_info()#

此评估器的额外信息。

如果进程池之前通过shutdown_pool()关闭, 调用此函数将触发创建一个新的池。

Returns

一个包含有关池中进程数量信息的字符串

Return type

str

Raises

未指定 – 由get_pool_size()抛出的任何异常

get_name()#

此评估器的名称。

Returns

"Multiprocessing batch fitness evaluator"

Return type

str

static get_pool_size()#

获取进程池的大小。

如果进程池之前通过shutdown_pool()关闭,调用此函数将触发创建一个新的进程池。

Returns

当前池的大小

Return type

int

Raises

未指定 – 由init_pool()抛出的任何异常

static init_pool(processes=None)#

初始化进程池。

如果池尚未初始化或池之前通过shutdown_pool()关闭,则此方法将初始化支持mp_bfe的进程池。否则,此方法将无效。

Parameters

processes (Noneint) – 池的大小(如果为 None,池的大小将等于系统上的逻辑CPU数量)

Raises
  • ValueError – 如果池尚不存在且函数是从不同于主线程的线程调用的,或者如果processes是非正值

  • TypeError – 如果 processes 不是 None 并且不是 int

static resize_pool(processes)#

调整池大小。

此方法将调整支持mp_bfe的进程池的大小。

如果进程池之前通过shutdown_pool()关闭,调用此函数将触发创建一个新的进程池。

Parameters

processes (int) – 池中所需的进程数量

Raises
static shutdown_pool()#

关闭池。

此方法将在池中所有待处理任务完成后关闭支持mp_bfe的进程池。

进程池关闭后,尝试使用评估器将会引发错误。可以通过显式调用init_pool()mp_bfe公共API中的某个方法来创建一个新的进程池,这些方法会触发新进程池的创建。

class pygmo.ipyparallel_bfe#

Ipyparallel 批量适应度评估器。

版本2.13中的新功能。

这个用户定义的批量适应度评估器(UDBFE)将以批量模式将一组决策向量的适应度评估分派到一个ipyparallel集群。与集群的通信通过一个ipyparallel.LoadBalancedView实例来管理,该实例在第一次运行适应度评估时隐式创建,或者通过init_view()方法显式创建。LoadBalancedView实例是一个全局对象,在所有ipyparallel批量适应度评估器之间共享。

get_extra_info()#

此评估器的额外信息。

Returns

一个包含有关评估器状态额外信息的字符串

Return type

str

get_name()#

评估者的名称。

Returns

"Ipyparallel batch fitness evaluator"

Return type

str

static init_view(client_args=[], client_kwargs={}, view_args=[], view_kwargs={})#

初始化 ipyparallel 视图。

此方法将初始化ipyparallel.LoadBalancedView,所有ipyparallel评估器都使用它来将评估任务提交到ipyparallel集群。如果ipyparallel.LoadBalancedView已经创建,则此方法将不执行任何操作。

输入参数 client_argsclient_kwargs 作为位置参数和关键字参数传递给 ipyparallel.Client 实例的构造。从构造的客户端中,通过 ipyparallel.Client.load_balanced_view() 方法创建一个 ipyparallel.LoadBalancedView 实例,并将位置参数和关键字参数 view_argsview_kwargs 传递给它。

请注意,通常不需要显式调用此方法:当第一次向ipyparallel评估器提交批量评估任务时,会自动使用默认设置构造一个ipyparallel.LoadBalancedView。只有在需要向ipyparallel.Clientipyparallel.LoadBalancedView对象的构造传递自定义参数时,才应使用此方法。

Parameters
  • client_args (list) – 用于客户端构建的位置参数

  • client_kwargs (dict) – 用于客户端构造的关键字参数

  • view_args (list) – 用于视图构造的位置参数

  • view_kwargs (dict) – 用于视图构造的关键字参数

Raises

未指定 – 由ipyparallel.Client的构造函数或ipyparallel.Client.load_balanced_view()方法抛出的任何异常

static shutdown_view()#

销毁 ipyparallel 视图。

此方法将销毁当前由ipyparallel评估器用于向ipyparallel集群提交评估任务的ipyparallel.LoadBalancedView。可以通过提交新的评估任务或调用init_view()方法隐式重新初始化视图。

从C++暴露的批量评估器#

class pygmo.default_bfe#

默认UDBFE。

这个类是一个用户定义的批量适应度评估器(UDBFE),可用于构建bfe

default_bfebfe 使用的默认 UDBFE,并且根据输入 problem 的属性,它会将其调用运算符的实现委托给另一个 UDBFE。具体来说:

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


class pygmo.thread_bfe#

线程化的UDBFE。

这个类是一个用户定义的批量适应度评估器(UDBFE),可用于构建一个bfe

thread_bfe 将使用多个执行线程来并行评估一批输入决策向量的适应度。

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


class pygmo.member_bfe#

成员 UDBFE。

这个类是一个用户定义的批量适应度评估器(UDBFE),可用于构建bfe

member_bfe 是一个简单的包装器,它将批量适应度评估委托给输入问题的 pygmo.problem.batch_fitness() 方法。

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