凸优化,java

xzabzqsa  于 2023-01-29  发布在  Java
关注(0)|答案(3)|浏览(184)

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

我们知道X是稀疏的(它的大部分条目都是零),所以X可以通过求解以下等式来恢复:

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

这是一个MATLAB代码,矩阵A和向量Y是已知的,我想要最好的X。
我看到了JOptimizer,但我不会使用它(没有好的文档或示例)。

4ioopgfo

4ioopgfo1#

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

可能的Java LP解算器选项

  1. Apache Commons (Math) Simplex Solver.See this blog post.
    1.如果您可以访问CPLEX (not-free), its Java API,将工作得很好。
    1.此外,您还可以查看SuanShu, a Java numerical and statistical library
    1.* * lpSolve有一个Java Package 器可以完成这项工作。
    1.最后,
    JOptimizer**确实是一个不错的选择。不确定你是否看过this example
    希望至少有一个能帮上忙。
6xfqseft

6xfqseft2#

据我所知,你在试图解决一个二进制整数程序的可行性

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)。

7kjnsjlb

7kjnsjlb3#

要在java中解决凸优化问题,可以使用以下库https://github.com/erikerlandson/gibbous

相关问题