我正在研究一个自定义离散和受约束的多目标优化问题,我想知道哪些库或平台实现了C++SPEA2之类的算法并允许添加自定义算法。NSGA
我希望它可以根据我的问题轻松定制、高效、跨平台并且可能易于使用。其中一些(例如EO,MOMH或Open beagle似乎不再维护)。
PISA(用 C 编写)似乎不符合我的需求,因为我希望添加一个使用多个群体的方法来进行优化过程。
感谢您的帮助(欢迎其他平台的提议)
我正在研究一个自定义离散和受约束的多目标优化问题,我想知道哪些库或平台实现了C++SPEA2之类的算法并允许添加自定义算法。NSGA
我希望它可以根据我的问题轻松定制、高效、跨平台并且可能易于使用。其中一些(例如EO,MOMH或Open beagle似乎不再维护)。
PISA(用 C 编写)似乎不符合我的需求,因为我希望添加一个使用多个群体的方法来进行优化过程。
感谢您的帮助(欢迎其他平台的提议)
看看jMetal库1它是用 Java 编写的,它与 C++ 非常相似。它非常广泛,并且有几种,而且是最近的多目标方法。它可能是我在任何语言中找到的最好的 MO 库。
我还记得一些教授有NSGA III的 C++ 实现。他无法复制提出该算法的论文,但它可能完全符合您的需求。
编辑:我添加了一个讨论 NSGA III 实现的线程。另外,我想评论一下,我使用了在 Matlab 中实现的 NSGA II 的变体,具有许多目标(>10)和二进制变量,它对我的应用程序非常有效。所以尝试总是好的,即使人们说它仅限于一定数量的目标。您还必须智能地使用您的参数(种群大小、突变率等)
参考
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 计划。
您可以在解决方案上应用您想要的任何约束,这些约束可以在成本函数的开始、过程中或结束时起作用。