【问题标题】:Are shadow prices valid after an infeasible solve from COIN using PULP在使用 PULP 从 COIN 解决不可行后,影子价格是否有效
【发布时间】:2018-02-06 17:42:38
【问题描述】:

我正在使用 COIN-OR 的 CLP 求解器和 Python 中的 PULP 求解一个最小化线性程序。

问题中包含的变量是可能变量总数的子集,有时我的定价启发式方法会选择导致不可行解决方案的变量子集。之后,我使用影子价格为新变量定价。

我的问题是,如果问题不可行,我仍然可以通过调用 prob.constraints[c].pi 获得值,但这些值本身似乎并不总是“有效”或“好”。

现在,像 Gurobi 这样的求解器甚至不允许我在求解不可行后调用影子价格。

【问题讨论】:

  • 有趣的问题,我不知道是不是答案,我假设不是因为第一阶段的目标(可行性解决)与实际目标不同。如果我是你,我会首先解决问题以尽量减少不可行(放入人工变量,然后尝试删除它们),然后在可行时切换到实际目标。
  • 谢谢斯图尔特,也许我不完全理解你的策略,但我认为它可能行不通,因为行生成步骤最终导致不可行,其中添加了一个从未有过的新约束以前见过;

标签: python pulp coin-or-cbc


【解决方案1】:

其实斯图,这可能行得通! - 在我的例子中,“虚拟变量”可能是源/汇节点,我可以放松对它的流量限制,允许无限流入/流出,但成本很高。这使得该解决方案在非常糟糕的高最优成本下可行;那么新变量的定价应该会起作用,并告诉我在下一次迭代中哪些变量要添加到问题中。我会试一试并报告。我唯一担心的是源/汇节点上的 bigM 成本系数可能会扭曲变量的定价,使所有变量看起来都相对有吸引力。这将适得其反,因为将大多数变量添加回问题中首先会破坏我的列生成的目的。我去测试一下……

【讨论】:

    猜你喜欢
    • 2016-12-19
    • 1970-01-01
    • 2020-10-29
    • 2019-02-20
    • 2018-06-07
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多