凸优化,java

时间:2013-07-14 12:15:41

标签: java mathematical-optimization linear-programming

我正在寻找一个 java 库来解决这个问题:

enter image description here

我们知道X是稀疏的(大多数条目为零),因此可以通过求解来恢复X:

   variable X;
   minimize(norm(X,1)+norm(A*X - Y,2));

这是一个MATLAB代码,矩阵A和向量Y是已知的,我想要最好的X.

我看到JOptimizer,但我无法使用它。 (没有好的文件或例子)。

感谢。

2 个答案:

答案 0 :(得分:1)

你需要的是一个相当不错的LP解算器。

可能的Java LP解算器选项

  1. Apache Commons (Math) Simplex Solver. See this blog post.

  2. 如果您有CPLEX (not-free), its Java API的访问权限,那就可以了。

  3. 此外,您可以查看SuanShu, a Java numerical and statistical library

  4. lpSolve 有一个Java包装器可以完成这项工作。

  5. 最后, JOptimizer 确实是一个不错的选择。不确定您是否查看了this example

  6. 希望至少有一个帮助。

答案 1 :(得分:1)

据我所知,您正在尝试解决二进制整数程序的可行性

Ax = b, x in {0,1}.

我不完全确定,但似乎您可能对优化问题感兴趣

min 1'*x
s.t. Ax = b, x in {0,1}

其中1是与x具有相同维度的1的向量。

实践中的可行性问题可能比优化问题容易得多 - 这一切都取决于特定的A和b。

如果您可以获得CPLEX或Gurobi的许可证(如果您是学术人员),这些都是优秀的整数编程求解器,具有良好的Java API。如果您无法访问这些内容,lpsolve可能是个不错的选择。

据我所知,JOptimizer无法解决您的问题,因为您的变量是整数(尽管我从未使用过JOptimizer)。