我想建立一个大的线性编程模型来解决一个有趣的问题.我最熟悉Java.有哪些工具/库?
有谁知道这样一个执行数学优化的库(线性编程,凸优化或更一般类型的问题)?我正在寻找像MATLAB这样的东西,但能够处理更大的问题.我是否必须编写自己的实现,或者购买其中一种商业产品(CPLEX等)?
mathematical-optimization linear-programming convex-optimization cplex gurobi
我想打包一组矩形(例子):

因此总高度尽可能低,矩形必须在它们开始的同一列中结束. 矩形允许彼此"移动"以达到最终状态,只要它们不' t在末尾相交.
我们当前的算法是处理从最大高度到最小高度的矩形,并将它们放在可用的最低y位置.有更优化的算法吗?
编辑:我不一定需要最优解决方案,任何生成比当前解决方案更好的解决方案的算法都很有趣.此外,矩形的数量约为50.
有谁知道或有使用纯Java库来选择投资组合或进行一些类似的带有约束的二次规划的经验吗?
正如其他地方已经讨论过的 那样,似乎有很多工具- 但我想使用的是纯 Java 实现。由于我想从另一个具有 BSD 风格许可证的开源软件中调用该库,因此我更喜欢 LGPL 而不是 GPL。
任何帮助表示赞赏。如果您不知道这样的库,您建议实现的最简单的算法是什么?它必须应对不等式约束(全部x_i>= 0)和等式约束(全部之和x_i= 1)。
我试图找到一个矩阵的解决方案,其中我知道行和列的总和以及单元格可以具有的最大值。我想找到在限制范围内的可能解决方案。我已经尝试了各种方法,例如构建所有单元格值的数组并按顺序从每个单元格中挑选,但无论我尝试什么,我总是遇到问题,即我用完了单元格的值。我也尝试了递归算法,但我只能得到第一个结果,或者没有得到任何解决方案。我想我必须用回溯算法来做到这一点?没有把握...
任何帮助或指示将不胜感激。
行总和 A、B、C,列总和 X、Y、Z 以及每个的最大值?众所周知。所有值都是正整数。
C1 | C2 | C3
-----------------
R1 | ? | ? | ? | A
-----------------
R2 | ? | ? | ? | B
-----------------
R3 | ? | ? | ? | C
-----------------
X | Y | Z
Run Code Online (Sandbox Code Playgroud) algorithm ×2
java ×2
arrays ×1
cplex ×1
gurobi ×1
open-source ×1
optimization ×1
packing ×1
subset-sum ×1