1

我有一个大规模的线性规划问题。我可以使用“linprog”在matlab中解决它。但是,它在一个循环内,我需要从第二次迭代绕过它到循环结束。这是一个简单的LP,形式如下:

最小化总和 a_i b_i st。...

其中 a_is 是我的变量, b_is 是系数​​。在每次循环迭代中,只有 b_is 略有变化。在此更改后,我想要变量的新值。(请注意,matlab 对大规模问题不使用单纯形法)。

有什么办法可以节省我在循环中的时间并且不多次解决 LP 问题?

谢谢

4

1 回答 1

2

请注意,LP/IP 的敏感性分析不是 MATLAB 的优势之一。

选项 1:如果您可以使用 CPLEX 或 SAS,它们都具有“热启动”方法,这些方法将具有您以前的基础并快速提出一些建议。(这是真正的敏感性分析。)

这是一个 IBM/CPLEX设置初始解决方案的链接。

同样,SAS/OR 也有热启动选项

选项 2:如果您只能访问 MATLAB

从 Matlab 的文档中,这里是如何“强制”它使用 Simplex

To use the simplex method, set 'LargeScale' to 'off' and 'Simplex' to 'on' in options.

options = optimset('LargeScale','off','Simplex','on')

注意:如果默认的内点法更适合您的特定 LP,首先像在迭代 1 中那样求解它。然后将基本变量的上限和下限设置为解值,现在设置 linprog调用 Simplex 的选项。它会轻而易举地解决它。

尝试将解决方案引擎切换为使用simplex,看看这是否有助于 LP 的第二次和后续迭代,但系数会略有变化。

于 2012-01-13T03:43:49.503 回答