我已经搜索了 3 天来寻找能够在 Java 中进行多元非线性优化的 Java 库。我想出了一些,最值得注意的是 Apache Commons 优化器包。不幸的是,我找不到很多例子,而且我没有足够的经验来弄清楚如何在没有一些例子的情况下使用他们的优化包。有人可以给我举一个例子,说明如何使用 Apache Commons 包解决多变量优化问题,或者给我一些可以帮助我的文档吗?
问问题
6173 次
2 回答
4
(另请参阅您最近的问题的答案)。
如果您正在寻找可以处理(非线性)线性约束并且不依赖导数的 Java 非线性优化器,我会推荐 Michael Powell 的 COBYLA2 算法。我已经将该算法的原始 FORTRAN 实现转换为 Java,您可以在Github和CodeProject上找到相应的代码。
现在,267 个变量可能对 COBYLA2 或任何不依赖导数的优化器构成挑战。请确保允许进行大量目标函数计算,以确保算法有足够的空间收敛到最优值。
如果您愿意考虑基于梯度的算法,我可能会推荐IPOPT。IPOPT 是用 C++ 实现的,但是通过 JNI 的Java 接口是官方发行版的一部分。
于 2013-06-07T13:08:38.823 回答
2
如果变量的值范围是离散的:OptaPlanner也是一个能够进行多变量非线性优化的 Java 库。它有多达 50000 个变量的示例(每个变量有 5000 个值)。
于 2014-02-17T13:50:49.127 回答