我一直在寻找3天的时间来获得能够在java中进行多变量非线性优化的Java库。我想出了几个,最着名的是Apache Commons优化器包。不幸的是,我找不到很多例子,而且我没有足够的经验去弄清楚如何在没有例子的情况下使用他们的优化软件包。有人能告诉我一个关于如何用Apache Commons软件包解决多变量优化问题的例子,或者指出一些可以帮助我的文档吗?具有约束条件的Java多变量非线性优化程序库
回答
(另请参阅最近的question的答案)。
如果您正在寻找Java中可以处理(非)线性约束并且不依赖于派生的非线性优化器,那么我会推荐Michael Powell的COBYLA2算法。我已将此算法的原始FORTRAN实现转换为Java,并且您可以在Github和CodeProject上找到相应的代码。
现在,267个变量可能是对COBYLA2的挑战,或者对于这个问题,任何优化器都不依赖衍生产品。请确保您允许进行大量的目标函数计算,以确保算法有足够的空间向最佳收敛。
如果你愿意考虑基于梯度的算法,我可以推荐IPOPT。 IPOPT以C++实现,但通过JNI的Java interface是官方发行版的一部分。
使用IPOPT算法,我必须手动计算梯度吗?我试图避免使用这个267变量函数,并让算法去完成这项工作。 – Kammeot
IPOPT本身不提供任何梯度估计或[自动分化](http://en.wikipedia.org/wiki/Automatic_differentiation),但您可以在Apache Commons Math中找到AD对Java的支持。 –
如果您的变量的值范围是离散的:OptaPlanner也是一个能够进行多变量非线性优化的Java库。它有高达50000个变量的示例(每个值有5000个值)。
- 1. Java中的非线性多变量函数的约束优化
- 2. C++ WITH约束条件下的顺序非线性优化库
- 3. 非线性约束条件参数matlab
- 4. 如何使用optaplanner解决非线性约束多变量方程 - Java的
- 5. 具有两个非线性相等约束的最小二乘法优化
- 6. 如何解决Matlab中的非线性约束优化问题?
- 7. 约束线性优化设置
- 8. 带约束条件的优化
- 9. 如何在c中解决非线性约束优化问题#
- 10. Gurobi中具有底层函数的线性约束条件
- 11. java/cplex约束的线性化
- 12. 在线性编程中将条件约束转换为线性约束
- 13. Java:声明变量具有多个通用的“约束”
- 14. scipy.optimize与非线性约束
- 15. 优先约束条件
- 16. 具有约束的样本,矢量化
- 17. 非类型变量约束
- 18. Matlab:多维约束非线性最小化,如Nelder-Mead?
- 19. Matlab的:非线性方程优化
- 20. 约束的非线性优化微软求解基础VS Matlab的fmincon
- 21. matlab中的fmincon的非线性约束
- 22. Gurobi优化器(Python):线性化二次约束?
- 23. AngularJS - $ scope变量不具有约束力
- 24. Mathematica:帮助求解具有不等式约束的非线性方程组
- 25. fPortfolio工作中的非线性约束?
- 26. 约束优化R建立约束
- 27. 两个因子变量之间具有相等约束的线性模型
- 28. 对同一变量有双重约束的线性规划
- 29. Matlab的优化工具箱中的多重等式约束
- 30. 求解具有多个变量和不等式约束条件的多个方程
您一直在搜索3天的官方文档? http://commons.apache.org/proper/commons-math/userguide/optimization.html TBH我见过更糟糕的开源项目文档。 –
好的,所以我的问题是267尺寸。虽然它是可区分的,但我不想被卡住的267偏导数卡住。所以我查看了他们拥有的4个多变量直接求解器。我需要一些可以采用线性约束的东西。在他们的网站上它说他们提供了4个求解器,其中两个不能自己管理约束。所以我看了另外两个求解器,Bobyqa和CMA求解器。当谈到优化方法时,没有指示参数应该是什么。在文档中它只是说OptimizationData ... – Kammeot