哪些 C++ 多目标优化库允许添加自定义问题和自定义算法?

计算科学 优化 C++ 约束优化 图书馆
2021-12-14 10:43:03

我正在研究一个自定义离散和受约束的多目标优化问题,我想知道哪些库或平台实现C++SPEA2之类的算法并允许添加自定义算法。NSGA

我希望它可以根据我的问题轻松定制、高效、跨平台并且可能易于使用。其中一些(例如EOMOMHOpen beagle似乎不再维护)。

PISA(用 C 编写)似乎不符合我的需求,因为我希望添加一个使用多个群体的方法来进行优化过程。

感谢您的帮助(欢迎其他平台的提议)

4个回答

看看jMetal1它是用 Java 编写的,它与 C++ 非常相似。它非常广泛,并且有几种,而且是最近的多目标方法。它可能是我在任何语言中找到的最好的 MO 库。

我还记得一些教授有NSGA III的 C++ 实现。他无法复制提出该算法的论文,但它可能完全符合您的需求。

编辑:我添加了一个讨论 NSGA III 实现的线程。另外,我想评论一下,我使用了在 Matlab 中实现的 NSGA II 的变体,具有许多目标(>10)和二进制变量,它对我的​​应用程序非常有效。所以尝试总是好的,即使人们说它仅限于一定数量的目标。您还必须智能地使用您的参数(种群大小、突变率等)

参考

  1. JJ Durillo、AJ Nebro jMetal:用于多目标优化的 Java 框架。工程软件进展 42 (2011) 760-771。
  2. AJ Nebro、JJ Durillo、M. Vergne 重新设计 jMetal 多目标优化框架。GECCO (Companion) 2015,第 1093-1100 页。2015 年 7 月。

COCO 框架有用吗?查看 GECCO 2016(及早期会议)上的比赛。 http://gecco-2016.sigevo.org/index.html/HomePage#&panel1-1

我不确定它是否确实具有 SPEA2 或 NSGA,但请查看DAKOTA它具有各种遗传算法,可以解决离散和连续优化问题。您可以直接链接到它,也可以将其用作驱动程序,将您的程序称为黑盒。这都是开源的,所以我相信你可以添加自己的自定义算法,尽管我不能说这有多容易。

总体而言,它是一个出色且功能强大的优化程序(以及许多其他相关问题)。

尽管响应较晚,但我相信openGA是符合您要求的库。

它支持 NSGA-III 的多目标问题。它基于 C++,支持 Linux、Windows 和 OSX。openGA 的模板化结构需要您自己定义解决方案并对其进行管理,但这意味着您可以对其进行最大程度的定制,甚至可以使用它实现基因编程。尽管它最初并没有为 GP 计划。

您可以在解决方案上应用您想要的任何约束,这些约束可以在成本函数的开始、过程中或结束时起作用。