功能#
概述#
支持多种类型的优化问题(连续、整数、单目标和多目标、有约束和无约束、有或无导数、随机等)。
一个全面的算法库, 包括全局和局部求解器,元启发式算法, 单目标和多目标算法, 第三方求解器的封装(例如, NLopt, Ipopt, SciPy, 等)。
全面支持通过广义岛屿模型进行粗粒度并行化。在岛屿模型中,多个优化实例并行运行(可能在不同的机器上),并在优化过程中交换信息,从而改善整体解决方案的时间,并允许利用现代计算机架构(包括大规模并行高性能集群)的计算能力。
支持在选定的算法中实现细粒度的并行化 (即在单个目标函数评估的级别上)通过批量 适应度评估框架。这允许通过并行 处理(例如,多线程、高性能 集群、GPU、SIMD向量化等)加速单个优化。
一个用于算法测试和性能评估的现成优化问题库 (Rosenbrock、Rastrigin、Lennard-Jones等)。
一个面向优化的实用程序库 (例如,超体积计算、非支配 排序、绘图等)。
算法列表#
这是当前pygmo提供的用户定义算法(UDAs)列表。这些类可以用于构建pygmo.algorithm,然后提供一个统一的接口来访问算法的功能。
一般来说,算法只能解决特定的问题类别。 在下面的表格中,我们使用以下 标志来表示算法可以解决的问题类型:
S = 单目标
M = 多目标
C = 受约束的
U = 无约束
I = 整数规划
sto = 随机指标
请注意,不直接支持整数规划的算法仍然可以处理整数问题(即,它们会优化松弛问题)。还要注意的是,可以使用元问题将约束问题转化为无约束问题,将多目标问题转化为单目标问题。
启发式全局优化#
通用名称 |
Python类的文档 |
功能 |
|---|---|---|
扩展蚁群优化算法 (GACO) |
S-CU-I |
|
差分进化(DE) |
S-U |
|
自适应差分进化(jDE和iDE) |
S-U |
|
自适应差分进化(de_1220 也称为 pDE) |
S-U |
|
灰狼优化器 (GWO) |
S-U |
|
改进的和谐搜索 |
SM-CU-I |
|
粒子群优化算法 (PSO) |
S-U |
|
粒子群优化世代算法 (GPSO) |
S-U-sto |
|
(N+1)-ES 简单进化算法 |
S-U-sto |
|
简单遗传算法 |
S-U-I-sto |
|
科拉纳的模拟退火(SA) |
S-U |
|
人工蜂群算法 (ABC) |
S-U |
|
协方差矩阵自适应进化策略 (CMA-ES) |
S-U-sto |
|
指数进化策略 (xNES) |
S-U-sto |
|
非支配排序遗传算法 (NSGA2) |
M-U-I |
|
基于分解的多目标进化算法 (MOEA/D) |
M-U |
|
基于分解的世代多目标进化算法 (GMOEA/D) |
M-U |
|
多目标基于超体积的蚁群优化算法 (MHACO) |
M-U-I |
|
非支配排序粒子群优化 (NSPSO) |
M-U |
局部优化#
通用名称 |
Python类的文档 |
功能 |
|---|---|---|
指南针搜索 (CS) |
S-CU |
|
COBYLA(来自NLopt) |
S-CU |
|
BOBYQA(来自NLopt) |
S-U |
|
NEWUOA + 边界约束(来自NLopt) |
S-U |
|
PRAXIS(来自NLopt) |
S-U |
|
Nelder-Mead单纯形法(来自NLopt) |
S-U |
|
子复形(来自NLopt) |
S-U |
|
MMA(移动渐近线方法)(来自NLopt) |
S-CU |
|
CCSA(来自NLopt) |
S-CU |
|
SLSQP(来自NLopt) |
S-CU |
|
低存储BFGS(来自NLopt) |
S-U |
|
预处理截断牛顿法(来自NLopt) |
S-U |
|
移位的有限内存变量度量(来自NLopt) |
S-U |
|
Nelder-Mead单纯形法(来自SciPy) |
S-U |
|
鲍威尔(来自 SciPy) |
S-U |
|
CG(来自SciPy) |
S-U |
|
BFGS(来自SciPy) |
S-U |
|
低存储BFGS(来自SciPy) |
S-U |
|
COBYLA(来自SciPy) |
S-CU |
|
SLSQP(来自SciPy) |
S-CU |
|
信任约束(来自SciPy) |
S-CU |
|
狗腿法(来自SciPy) |
S-U |
|
信任 Ncg(来自 SciPy) |
S-U |
|
信任精确(来自SciPy) |
S-U |
|
信任克雷洛夫(来自SciPy) |
S-U |
|
Ipopt |
S-CU |
|
SNOPT(在pagmo_plugins_non_free附属包中) |
S-CU |
|
WORHP(在pagmo_plugins_non_free附属包中) |
S-CU |
元算法#
通用名称 |
Python类的文档 |
功能 1 |
|---|---|---|
单调盆地跳跃 (MBH) |
S-CU |
|
Cstrs 自适应 |
S-C |
|
增强拉格朗日算法(来自NLopt)2 |
S-CU |
脚注
问题列表#
这是当前pygmo提供的用户定义问题(UDPs)列表。
这些是可以用来构建pygmo.problem的类,
然后它将提供一个统一的接口来访问问题的功能。
在下面的表格中,我们根据以下标志对优化问题进行分类:
S = 单目标
M = 多目标
C = 受约束的
U = 无约束
I = 整数规划
sto = 随机指标
可扩展的问题#
通用名称 |
Python类的文档 |
类型 |
|---|---|---|
阿克雷 |
S-U |
|
戈洛姆尺 |
S-C-I |
|
Griewank |
S-U |
|
Hock schittkowski 71 |
S-C |
|
库存 |
S-U-sto |
|
伦纳德·琼斯 |
S-U |
|
卢克桑·弗尔切克 1 |
S-C |
|
Rastrigin |
S-U |
|
MINLP Rastrigin |
S-U-I |
|
罗森布罗克 |
S-U |
|
Schwefel |
S-U |
问题套件#
通用名称 |
Python类的文档 |
类型 |
|---|---|---|
CEC2006 |
S-C |
|
CEC2009 |
S-C |
|
CEC2013 |
S-U |
|
CEC2014 |
S-U |
|
ZDT |
M-U |
|
DTLZ |
M-U |
|
WFG |
M-U |
元问题#
元问题是UDPs,它们以另一个UDP作为输入,生成一个新的UDP,该UDP以多种方式修改原始问题的行为和/或属性。
通用名称 |
Python类的文档 |
|---|---|
分解 |
|
翻译 |
|
解除约束 |
|
装饰器 |
|
常量参数 |
岛屿列表#
这是当前pygmo提供的用户定义岛屿(UDIs)列表。这些类可用于构建pygmo.island,然后提供一个统一的接口来访问岛屿的功能。
在pygmo术语中,岛屿是一个实体,负责通过广义岛屿模型中的算法管理种群的异步进化。不同的UDI支持不同的并行化策略(例如,多线程、多处理、集群架构等)。
通用名称 |
Python类的文档 |
|---|---|
线程岛 |
|
多进程岛屿 |
|
Ipyparallel 岛屿 |
批量适应度评估器列表#
这是当前pygmo提供的用户定义的批量适应度评估器(UDBFEs)列表。这些类可用于构建pygmo.bfe,然后提供一个统一的接口来访问评估器的功能。
在pygmo术语中,批量适应度评估器实现了以并行和/或向量化的方式评估一组决策向量的能力。批量适应度评估器用于在pygmo中实现细粒度的并行化(例如,种群的并行初始化,或算法内循环中的并行适应度评估)。
通用名称 |
Python类的文档 |
|---|---|
默认 BFE |
|
线程 BFE |
|
成员BFE |
|
多进程BFE |
|
Ipyparallel BFE |