3

我正在开发一个需要大大提高速度的 matlab 应用程序。我正在使用 linprog 来求解一个 2 约束线性程序,该程序有大约 10,000 个以零和一为界的变量。Linprog 对我的应用程序来说非常慢。有什么办法可以重新制定以提高速度吗?或者您是否知道一些有用的与 matlab 兼容的共享软件(我的预算很紧)?

4

2 回答 2

1

如果您不介意不在 matlab 中但使用 MEX 接口的实现,glpk 和 glpkmex 可能会有所帮助

http://glpkmex.sourceforge.net/

或者,lpsolve 也可以提供帮助,但它不如 glpk 库解决大规模问题: http ://web.mit.edu/lpsolve/doc/MATLAB.htm

如果您能掌握它,IBM ILOG CPLEX 实际上是处理大规模问题的最佳解决方案之一。matlab有一个接口(http://www-01.ibm.com/software/integration/optimization/cplex-optimizer/connectors/),如果没有license可以尝试获取扩展试用版.

在特殊情况下,通过查看目标函数中的系数并根据您的约束条件确定哪个约束条件将处于活动状态,可以显着简化您的问题。假设您正在最小化目标函数,则不参与主动约束的变量可以设置为最小值或最大值(根据您的描述为 0 或 1),具体取决于它们在目标函数中的系数是正还是负。如果你正在做最大化然后做相反的事情。这减少了变量的数量 =)。

于 2012-07-17T13:14:25.563 回答
0

对我来说,这听起来像是一个带有框约束(可能称为绑定约束)的线性程序。您是否正确设置了这些框约束?有关详细信息,请参阅参考资料

于 2010-06-24T09:01:31.400 回答