如何利用内点法在大规模线性规划中得到具有最优目标值的极值点?

时间:2018-02-26 04:27:47

标签: linear-programming

我需要用很少的约束来解决线性规划,但需要很多变量:

LP with many columns

A是mxn。 m大约是15,但是n超过100万。我使用Matlab linprog和不同的算法(双单纯,内点,内点遗产).Below是他们花的时间。

  1. 双单纯形法需要近一天时间。

  2. 内点法需要一天以上。

  3. 内部点遗产只需5分钟。

  4. 众所周知,在大规模线性规划中,内点法比单纯法更快。但上面的结果1和2是出乎意料的。

    仅讨论双单纯形法(1)和内点遗传法(3)。他们得到不同的答案。 (1)得到一个只有12个非零项的答案,而(3)得到一个非零的所有项的答案。两个答案具有相同的客观价值。

    (1)的答案是我想要的(只有少数非零术语),但(1)是时间消耗的。 (3)的答案是内部点,因此所有术语都是非零的。但几乎99%的术语都非常小(小于0.001)。那不是我想要的。但是(3)很快。

    我想要的是让(3)的答案走向极端。 (让非零项的数量最多为约束数。)我使用了一些关键词,例如'大规模','内点法'线性编程' 39;在互联网上搜索,但我还没找到我想要的东西。有没有方向或建议?

    抱歉,有一件事我忘了提及。我在A和b中的系数都是正数。 c中的系数都是" -1"。

1 个答案:

答案 0 :(得分:1)

我认为你想从内部解决方案转向基本解决方案(角点)。这称为" 交叉"。像Cplex和Gurobi这样的解决方案有这种内置功能。请注意,交叉可能很昂贵(我已经看到屏障方法快速解决LP的模型,但交叉需要很长时间)。我相信Matlab优化工具箱没有交叉算法。