Java的数学优化库——免费或开源推荐?

16
有没有人知道这样的图书馆可以执行数学优化(线性规划,凸优化或更一般类型的问题)?我正在寻找类似MATLAB的东西,但能够处理更大的问题。我需要编写自己的实现,还是购买其中一个商业产品(如CPLEX)?
7个回答

11
一个好的答案取决于您对“凸”和“更一般”的理解。如果您试图解决大型或具有离散组件的挑战性线性或凸二次优化问题,那么除非您在乎金钱问题,否则很难击败主要商业求解器gurobicplexDash。它们都有干净的JNI接口,并可在大多数主要平台上使用。 coin-or项目有几个优化器,并有一个JNI接口项目。它完全免费(EPL许可证),但需要更多的设置工作,并且可能无法给您相同的性能。

5

有一个名为lpsolve的线性优化工具。它是用C语言编写的,但带有Java/JNI包装器(API不是非常面向对象,但它能够完成工作)。它很容易使用,我在过去的一年里已经在一个实时系统中成功地运行了它。


2

您可以尝试使用JOptimizer,它是一款开源工具,适用于一般的凸优化问题(线性规划、二次规划、qcqp、锥规划、半定规划等)。


2

OptaPlanner(Java,开源,ASL)可以处理大规模问题,并且没有任何约束类型限制(例如线性与凸性)。


这些概念最近受到了很多关注。如果在Java领域中有任何新的库或API集合,那将是非常好的了解。 - Gana
是的,有Choco、jacop、jsprit等。据我所知,OptaPlanner是迄今为止下载量最多的一个(尽管我有偏见)。最近发布的7.0版本针对Java 8和9(lamba等)进行了优化。 - Geoffrey De Smet
OptaPlanner能够保证最优解吗? - renan-eccel
它不使用分支限界,但可以在你有的时间内(时间越多越好),尤其是在扩展时找到最佳解决方案(接近最优解)。花费数年时间寻找的最优解毫无用处。完美是好的敌人。 - Geoffrey De Smet

1

IPOPT拥有一个Java接口。您还可以尝试将APMonitor建模语言适配到Java上。我开发了这个平台,如果有人想创建一个新的与Java的接口,我很乐意合作。它已经拥有Python API和MATLAB接口,并包含可以处理大规模系统的求解器,如IPOPT、APOPT、BPOPT等。


1
你可能想看看JScience,它看起来相当完整。(数学结构,线性代数求解等)

感谢您的回答。不幸的是,JScience没有实际实现优化算法。 - Zach Scrivena
lol............. - Nicholas Hamilton

0

可以看看AMPL。基础版是免费的,但处理更大的问题需要付费。你不是为语言付费,而是为求解器付费。此外,还可以上传代码并在他们的服务器上运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接