Python中的多目标优化工具【pymoo】

1,670 阅读4分钟

该框架提供了最先进的单目标和多目标优化算法以及更多与多目标优化相关的功能,如可视化和决策。 pymoo可在PyPi上使用,可以通过以下方式安装。

pip install -U pymoo

请注意,一些模块可以被编译以加快计算速度(可选)。上面的命令试图编译这些模块;但是,如果不成功,就会安装纯Python版本。更多信息可在我们的 安装指南.

特性

此外,我们的框架提供了各种不同的功能,涵盖了多目标优化的各个层面。

接口

问题

算法

自定义

Operators

可视化

散点图 (2D/3D/ND)平行坐标图 (PCP) Radviz星座坐标热图花瓣图Spider Web / RadarVideo

多标准决策

性能指标

GDGD+IGDIGD+HypervolumeKKTPM

分解

加权和ASFAASF切比雪夫PBI

案例研究

子集选择投资组合配置矩阵反转

算法列表

算法ClassConvenience目标(s)约束描述
Genetic AlgorithmGAsinglex遗传算法的一个模块化实现。它可以很容易地用不同的进化算子进行定制,并适用于广泛的问题类别。
Differential EvolutionDEsinglex微分演化的不同变体是连续优化中的一个著名概念,特别是在全局优化中。
Biased Random Key Genetic AlgorithmBRKGAsinglex大多用于组合优化,而不是自定义进化算子,其复杂性被放入高级变量编码。
Nelder MeadNelderMeadsinglex一个基于逐点的算法,它跟踪一个单线的扩展反映或收缩。
Pattern SearchPatternSearchsinglex迭代法,通过围绕当前最佳解决方案形成特定的探索模式来估计搜索方向。
CMAESCMAESsingle著名的基于模型的算法,在每次迭代中从动态更新的正态分布中采样。
Evolutionary StrategyESsingle针对实值优化问题提出的进化策略算法。
Stochastic Ranking Evolutionary StrategySRESsinglex一个使用随机排名的约束处理的进化策略。
Improved Stochastic Ranking Evolutionary StrategyISRESsinglex一个改进的SRES版本,能够有效地处理因变量。
NSGA-IINSGA2multix知名的多目标优化算法,基于非支配性排序和拥挤。
R-NSGA-IIRNSGA2multixNSGA-II的一个扩展,用户可以提供参考/启发点。
NSGA-IIINSGA3manyx针对有两个以上目标的多目标优化问题,对NSGA-II进行了改进。
U-NSGA-IIIUNSGA3manyxNSGA-III的泛化,对单目标和双目标优化问题更有效率。
R-NSGA-IIIRNSGA3manyx允许为NSGA-III定义愿望点,以纳入用户的偏好。
MOEADMOEADmany另一个著名的基于分解的多目标优化算法。
AGE-MOEAAGEMOEAmany与NSGA-II类似,但估计Pareto-front的形状来计算取代拥挤距离的得分。
C-TAEACTAEAmanyx一种对多目标优化算法进行更复杂约束处理的算法。
SMS-EMOACTAEAmanyx一种在环境生存期间使用超容积的算法。
RVEARVEAmanyx一个基于参考方向的算法使用了一个角度惩罚性的度量。

pymoo 0.6.0中:

  • 新版本可用于预编译Python 3.7-3.10,适用于Linux、Mac和Windows。
  • 模块pymoo.factory已被废弃。请直接实例化对象。
  • 约束的数量现在由n_ieq_constr和n_eq_constr定义,以区分平等和不平等约束(现在也检查目标和约束的正确数量)。
  • 不要忘记查看标有的功能,以了解进一步的变化。混合变量优化,超参数优化,更新的约束处理方法,以及更多。