【问题标题】:Sensivity analysis in MATLABMATLAB 中的敏感性分析
【发布时间】:2011-11-19 18:39:57
【问题描述】:

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

最小化总和 a_i b_i 英石。 ...

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

有什么方法可以节省我在循环中的时间并且不用多次求解 LP?

谢谢

【问题讨论】:

    标签: matlab linear-programming


    【解决方案1】:

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

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

    这里是one IBM/CPLEX's link 来设置初始解决方案。

    同样,SAS/OR 也有warmstart options

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

    来自 Matlab 的文档,这里是 "force" it to use 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 的第二次和后续迭代,但系数会略有变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      • 1970-01-01
      • 2021-10-11
      相关资源
      最近更新 更多