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

时间:2008-09-27 04:52:44

标签: mathematical-optimization linear-programming cplex gurobi convex-optimization

有没有人知道这样一个执行数学优化的库(线性编程,凸优化或更常见的问题类型)?我正在寻找像MATLAB这样的东西,但能够处理更大的问题。我是否必须编写自己的实现,或者购买其中一种商业产品(CPLEX等)?

7 个答案:

答案 0 :(得分:11)

一个好的答案取决于你所说的“凸”和“更一般”的含义如果你试图解决大的或具有挑战性的线性或凸二次优化问题(特别是对它们的离散分量),那么它很难击败主要商业解决方案,gurobicplexDash,除非金钱对你来说是个大问题。它们都具有干净的JNI接口,可在大多数主要平台上使用。

coin-or项目有几个优化器,并有一个JNI接口项目。它是完全免费的(EPL许可证),但需要更多的工作来设置,可能不会给你相同的性能。

答案 1 :(得分:5)

有一个名为lpsolve的线性优化工具。它是用C语言编写的(我认为),但附带了一个Java / JNI包装器(API不是非常OO,但它可以完成这项工作)。它非常易于使用,并且我在去年的现场系统中运行起来非常愉快和稳定。

答案 2 :(得分:2)

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

答案 3 :(得分:2)

您可以尝试JOptimizer,开源并适用于一般凸优化问题(线性规划,二次规划,qcqp,锥规划,半定规划等)

答案 4 :(得分:1)

您可能需要查看JScience,它看起来非常完整。 (数学结构,线性代数求解等)

答案 5 :(得分:1)

IPOPT有interface for Java。您也可以使用适用于Java的APMonitor建模语言。我开发这个平台,所以如果他们想创建一个新的Java接口,我会很高兴与某人合作。它已经有一个Python API和MATLAB接口,包括IPOPT,APOPT,BPOPT和其他可以处理大规模系统的解算器。

答案 6 :(得分:0)

查看AMPL。基本版是免费的,但是对于更大的问题需要花钱。你不用语言付钱;你为求解者买单。也可以上传您的代码并让它在服务器上运行。