2016-09-27 26 views
1

我有以下LOP。JuMP(Julia)約束的影子價格

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和testsCondition的影子價格。

任何人都知道要做到這一點的代碼/函數?我試過getdual(),但它沒有奏效。

+1

影子價格是線性規劃中的雙重變量。對於像CBC這樣的MIP求解器,術語「dual」具有不同的含義,實際上是指LP放鬆問題。 – mattmilten

+0

刪除'solver = CbcSolver()',所以使用默認的求解器,它應該工作 – Pafnucy

回答

3

跳犯規支持雙變量從MIP調用,而CBC求解中電求解器的MIP版本,所以你只需要使用

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

如何讓雙

我不得不挖掘一箇舊的雙層編程書來驗證這個奇怪的術語

在 經濟術語中,通常將雙變量稱爲影子價格ES

那麼你正在尋找的是原問題(變量的影子價格)和對偶問題的雙變量的雙變量(條件的影子價格,通常被稱爲降低成本)

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

getdual(a) 
getdual(b) 

getdual(assemblyCondition) 
getdual(testinCondition) 
+0

嗨,我在我的問題中提到,我已經嘗試getdual()來獲得雙變量,但它沒有工作。它返回的是NaN。 @isebarn – nana