我正在寻找一个 java 库来解决这个问题:
我们知道X是稀疏的(大多数条目为零),因此可以通过求解来恢复X:
variable X;
minimize(norm(X,1)+norm(A*X - Y,2));
这是一个MATLAB代码,矩阵A和向量Y是已知的,我想要最好的X.
我看到JOptimizer,但我无法使用它。 (没有好的文件或例子)。
感谢。
答案 0 :(得分:1)
你需要的是一个相当不错的LP解算器。
如果您有CPLEX (not-free), its Java API的访问权限,那就可以了。
lpSolve 有一个Java包装器可以完成这项工作。
最后, JOptimizer 确实是一个不错的选择。不确定您是否查看了this example。
希望至少有一个帮助。
答案 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)。