批量评估器列表#
在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 (
int或None) – 如果不是None,这个正整数表示 每次调用操作符提交给进程池的每个任务处理的决策向量的近似数量- Raises
ValueError – 如果 chunksize 不是严格正数
未指定 – 由
init_pool()抛出的任何异常
- get_extra_info()#
此评估器的额外信息。
如果进程池之前通过
shutdown_pool()关闭, 调用此函数将触发创建一个新的池。- Returns
一个包含有关池中进程数量信息的字符串
- Return type
- Raises
未指定 – 由
get_pool_size()抛出的任何异常
- static get_pool_size()#
获取进程池的大小。
如果进程池之前通过
shutdown_pool()关闭,调用此函数将触发创建一个新的进程池。- Returns
当前池的大小
- Return type
- Raises
未指定 – 由
init_pool()抛出的任何异常
- static init_pool(processes=None)#
初始化进程池。
如果池尚未初始化或池之前通过
shutdown_pool()关闭,则此方法将初始化支持mp_bfe的进程池。否则,此方法将无效。
- static resize_pool(processes)#
调整池大小。
此方法将调整支持
mp_bfe的进程池的大小。如果进程池之前通过
shutdown_pool()关闭,调用此函数将触发创建一个新的进程池。- Parameters
processes (
int) – 池中所需的进程数量- Raises
ValueError – 如果 processes 参数不是严格正数
未指定 – 由
init_pool()抛出的任何异常
- 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批量适应度评估器之间共享。- static init_view(client_args=[], client_kwargs={}, view_args=[], view_kwargs={})#
初始化 ipyparallel 视图。
此方法将初始化
ipyparallel.LoadBalancedView,所有ipyparallel评估器都使用它来将评估任务提交到ipyparallel集群。如果ipyparallel.LoadBalancedView已经创建,则此方法将不执行任何操作。输入参数 client_args 和 client_kwargs 作为位置参数和关键字参数传递给
ipyparallel.Client实例的构造。从构造的客户端中,通过ipyparallel.Client.load_balanced_view()方法创建一个ipyparallel.LoadBalancedView实例,并将位置参数和关键字参数 view_args 和 view_kwargs 传递给它。请注意,通常不需要显式调用此方法:当第一次向ipyparallel评估器提交批量评估任务时,会自动使用默认设置构造一个
ipyparallel.LoadBalancedView。只有在需要向ipyparallel.Client或ipyparallel.LoadBalancedView对象的构造传递自定义参数时,才应使用此方法。- Parameters
- 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_bfe是bfe使用的默认 UDBFE,并且根据输入problem的属性,它会将其调用运算符的实现委托给另一个 UDBFE。具体来说:如果输入问题提供了一个批量适应度成员函数(由
pygmo.problem.has_batch_fitness()确定),那么将构造并调用member_bfe来生成返回值;否则,如果输入问题至少提供了
basicthread_safety保证(由pygmo.problem.get_thread_safety()确定),则将构造并调用pygmo.thread_bfe以生成返回值;否则,将构造并调用
pygmo.mp_bfe以生成返回值。
另请参阅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的文档。