功能#

概述#

  • 支持多种类型的优化问题(连续、整数、单目标和多目标、有约束和无约束、有或无导数、随机等)。

  • 一个全面的算法库, 包括全局和局部求解器,元启发式算法, 单目标和多目标算法, 第三方求解器的封装(例如, NLopt, Ipopt, SciPy, 等)。

  • 全面支持通过广义岛屿模型进行粗粒度并行化。在岛屿模型中,多个优化实例并行运行(可能在不同的机器上),并在优化过程中交换信息,从而改善整体解决方案的时间,并允许利用现代计算机架构(包括大规模并行高性能集群)的计算能力。

  • 支持在选定的算法中实现细粒度的并行化 (即在单个目标函数评估的级别上)通过批量 适应度评估框架。这允许通过并行 处理(例如,多线程、高性能 集群、GPU、SIMD向量化等)加速单个优化。

  • 一个用于算法测试和性能评估的现成优化问题库 (Rosenbrock、Rastrigin、Lennard-Jones等)。

  • 一个面向优化的实用程序库 (例如,超体积计算、非支配 排序、绘图等)。

算法列表#

这是当前pygmo提供的用户定义算法(UDAs)列表。这些类可以用于构建pygmo.algorithm,然后提供一个统一的接口来访问算法的功能。

一般来说,算法只能解决特定的问题类别。 在下面的表格中,我们使用以下 标志来表示算法可以解决的问题类型:

  • S = 单目标

  • M = 多目标

  • C = 受约束的

  • U = 无约束

  • I = 整数规划

  • sto = 随机指标

请注意,不直接支持整数规划的算法仍然可以处理整数问题(即,它们会优化松弛问题)。还要注意的是,可以使用元问题将约束问题转化为无约束问题,将多目标问题转化为单目标问题。

启发式全局优化#

通用名称

Python类的文档

功能

扩展蚁群优化算法 (GACO)

pygmo.gaco

S-CU-I

差分进化(DE)

pygmo.de

S-U

自适应差分进化(jDE和iDE)

pygmo.sade

S-U

自适应差分进化(de_1220 也称为 pDE)

pygmo.de1220

S-U

灰狼优化器 (GWO)

pygmo.gwo

S-U

改进的和谐搜索

pygmo.ihs

SM-CU-I

粒子群优化算法 (PSO)

pygmo.pso

S-U

粒子群优化世代算法 (GPSO)

pygmo.pso_gen

S-U-sto

(N+1)-ES 简单进化算法

pygmo.sea

S-U-sto

简单遗传算法

pygmo.sga

S-U-I-sto

科拉纳的模拟退火(SA)

pygmo.simulated_annealing

S-U

人工蜂群算法 (ABC)

pygmo.bee_colony

S-U

协方差矩阵自适应进化策略 (CMA-ES)

pygmo.cmaes

S-U-sto

指数进化策略 (xNES)

pygmo.xnes

S-U-sto

非支配排序遗传算法 (NSGA2)

pygmo.nsga2

M-U-I

基于分解的多目标进化算法 (MOEA/D)

pygmo.moead

M-U

基于分解的世代多目标进化算法 (GMOEA/D)

pygmo.moead_gen

M-U

多目标基于超体积的蚁群优化算法 (MHACO)

pygmo.maco

M-U-I

非支配排序粒子群优化 (NSPSO)

pygmo.nspso

M-U

局部优化#

通用名称

Python类的文档

功能

指南针搜索 (CS)

pygmo.compass_search

S-CU

COBYLA(来自NLopt)

pygmo.nlopt

S-CU

BOBYQA(来自NLopt)

pygmo.nlopt

S-U

NEWUOA + 边界约束(来自NLopt)

pygmo.nlopt

S-U

PRAXIS(来自NLopt)

pygmo.nlopt

S-U

Nelder-Mead单纯形法(来自NLopt)

pygmo.nlopt

S-U

子复形(来自NLopt)

pygmo.nlopt

S-U

MMA(移动渐近线方法)(来自NLopt)

pygmo.nlopt

S-CU

CCSA(来自NLopt)

pygmo.nlopt

S-CU

SLSQP(来自NLopt)

pygmo.nlopt

S-CU

低存储BFGS(来自NLopt)

pygmo.nlopt

S-U

预处理截断牛顿法(来自NLopt)

pygmo.nlopt

S-U

移位的有限内存变量度量(来自NLopt)

pygmo.nlopt

S-U

Nelder-Mead单纯形法(来自SciPy)

pygmo.scipy_optimize

S-U

鲍威尔(来自 SciPy)

pygmo.scipy_optimize

S-U

CG(来自SciPy)

pygmo.scipy_optimize

S-U

BFGS(来自SciPy)

pygmo.scipy_optimize

S-U

低存储BFGS(来自SciPy)

pygmo.scipy_optimize

S-U

COBYLA(来自SciPy)

pygmo.scipy_optimize

S-CU

SLSQP(来自SciPy)

pygmo.scipy_optimize

S-CU

信任约束(来自SciPy)

pygmo.scipy_optimize

S-CU

狗腿法(来自SciPy)

pygmo.scipy_optimize

S-U

信任 Ncg(来自 SciPy)

pygmo.scipy_optimize

S-U

信任精确(来自SciPy)

pygmo.scipy_optimize

S-U

信任克雷洛夫(来自SciPy)

pygmo.scipy_optimize

S-U

Ipopt

pygmo.ipopt

S-CU

SNOPT(在pagmo_plugins_non_free附属包中)

pygmo.snopt7

S-CU

WORHP(在pagmo_plugins_non_free附属包中)

pygmo.wohrp

S-CU

元算法#

通用名称

Python类的文档

功能 1

单调盆地跳跃 (MBH)

pygmo.mbh

S-CU

Cstrs 自适应

pygmo.cstrs_self_adaptive

S-C

增强拉格朗日算法(来自NLopt)2

pygmo.nlopt

S-CU

脚注

1

元算法的能力也取决于它们所包装的算法的能力。例如,如果一个支持约束问题的元算法是从一个支持约束问题的算法构建的,那么生成的元算法将无法解决约束问题。

2

增强拉格朗日算法只能与其他NLopt算法结合使用。

问题列表#

这是当前pygmo提供的用户定义问题(UDPs)列表。 这些是可以用来构建pygmo.problem的类, 然后它将提供一个统一的接口来访问问题的功能。

在下面的表格中,我们根据以下标志对优化问题进行分类:

  • S = 单目标

  • M = 多目标

  • C = 受约束的

  • U = 无约束

  • I = 整数规划

  • sto = 随机指标

可扩展的问题#

通用名称

Python类的文档

类型

阿克雷

pygmo.ackley

S-U

戈洛姆尺

pygmo.golomb_ruler

S-C-I

Griewank

pygmo.griewank

S-U

Hock schittkowski 71

pygmo.hock_schittkowski_71

S-C

库存

pygmo.inventory

S-U-sto

伦纳德·琼斯

pygmo.lennard_jones

S-U

卢克桑·弗尔切克 1

pygmo.luksan_vlcek1

S-C

Rastrigin

pygmo.rastrigin

S-U

MINLP Rastrigin

pygmo.minlp_rastrigin

S-U-I

罗森布罗克

pygmo.rosenbrock

S-U

Schwefel

pygmo.schwefel

S-U

问题套件#

通用名称

Python类的文档

类型

CEC2006

pygmo.cec2006

S-C

CEC2009

pygmo.cec2009

S-C

CEC2013

pygmo.cec2013

S-U

CEC2014

pygmo.cec2014

S-U

ZDT

pygmo.zdt

M-U

DTLZ

pygmo.dtlz

M-U

WFG

pygmo.wfg

M-U

元问题#

元问题是UDPs,它们以另一个UDP作为输入,生成一个新的UDP,该UDP以多种方式修改原始问题的行为和/或属性。

通用名称

Python类的文档

分解

pygmo.decompose

翻译

pygmo.translate

解除约束

pygmo.unconstrain

装饰器

pygmo.decorator_problem

常量参数

pygmo.constant_arguments

岛屿列表#

这是当前pygmo提供的用户定义岛屿(UDIs)列表。这些类可用于构建pygmo.island,然后提供一个统一的接口来访问岛屿的功能。

在pygmo术语中,岛屿是一个实体,负责通过广义岛屿模型中的算法管理种群的异步进化。不同的UDI支持不同的并行化策略(例如,多线程、多处理、集群架构等)。

通用名称

Python类的文档

线程岛

pygmo.thread_island

多进程岛屿

pygmo.mp_island

Ipyparallel 岛屿

pygmo.ipyparallel_island

批量适应度评估器列表#

这是当前pygmo提供的用户定义的批量适应度评估器(UDBFEs)列表。这些类可用于构建pygmo.bfe,然后提供一个统一的接口来访问评估器的功能。

在pygmo术语中,批量适应度评估器实现了以并行和/或向量化的方式评估一组决策向量的能力。批量适应度评估器用于在pygmo中实现细粒度的并行化(例如,种群的并行初始化,或算法内循环中的并行适应度评估)。

通用名称

Python类的文档

默认 BFE

pygmo.default_bfe

线程 BFE

pygmo.thread_bfe

成员BFE

pygmo.member_bfe

多进程BFE

pygmo.mp_bfe

Ipyparallel BFE

pygmo.ipyparallel_bfe