【问题标题】:Shadow price of constraints in JuMP (Julia)JuMP (Julia) 中约束的影子价格
【发布时间】:2016-09-27 03:08:58
【问题描述】:

我有以下 LOP。

using JuMP, Cbc
productionProb = Model(solver = CbcSolver())

@variable(productionProb, x >= 0)
@variable(productionProb, y >= 0)

@objective(productionProb, Max, 7.8x + 7.1y)

@constraint(productionProb, assemblyCondition, (1/4)x + (1/3)y <= 90)
@constraint(productionProb, testingCondition, (1/8)x + (1/3)y <= 80)

solve(productionProb)

我正在使用 cbc 求解器并使用 julia 来解决这个问题。但是,我想获得约束的影子价格。特别是,我想获得约束、assemblyCondition 和 testingCondition 的影子价格。

有人知道执行此操作的代码/功能吗?我试过 getdual() 但没用。

【问题讨论】:

  • 影子价格是线性规划中的对偶变量。对于像 CBC 这样的 MIP 求解器,术语 dual 具有不同的含义,实际上是指问题的 LP 松弛。
  • 删除solver = CbcSolver(),所以使用默认求解器,它应该可以工作

标签: julia linear-programming coin-or-cbc


【解决方案1】:

JuMP 不支持来自 MIP 调用的对偶变量,而 Cbc 求解器是 Clp 求解器的 MIP 版本,因此您只需使用

productionProb = JuMP.Model(solver = ClpSolver())

如何获得双重

我不得不翻出一本旧的双层编程书来验证这个古怪的命名法

在 经济学术语,通常将双变量称为影子价格

所以你要找的是原始问题的对偶变量(变量的影子价格)和对偶问题的对偶变量(条件的影子价格,通常称为降低成本)

a = @variable(productionProb, x >= 0)
b = @variable(productionProb, y >= 0)

getdual(a)
getdual(b)

getdual(assemblyCondition)
getdual(testinCondition)

【讨论】:

  • 嗨,我在我的问题中提到我已经尝试 getdual() 来获取对偶变量,但它没有用。它返回为 NaN。 @isebarn
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多