2016-09-27 5 views
1

私は以下のLOPを持っています。JuMP(ジュリア)の制約の影の価格

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()を試みたが、それは仕事をしなかった。あなたはちょうど私が

をデュアル取得する方法

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

を使用する必要があるので、MIPから二重の変数をサポートしdoesntの

+1

シャドウ価格は、線形計画法では2変数です。 CBCのようなMIPソルバーの場合、「二重」という用語は異なる意味を持ち、実際には問題のLP緩和を指します。 – mattmilten

+0

'solver = CbcSolver()'を削除するので、デフォルトソルバーが使用されています。 – Pafnucy

答えて

3

ジャンプ呼び出し、CBCソルバーは、CLPソルバーのMIPバージョンです 経済面では、このvierd命名

を確認するために、古いバイレベルプログラミングの本を掘る必要があった、影のpricとして二重の変数を参照するのが一般的ですES

だから何あなたが探していることは原初の問題(変数のシャドープライス)と双対問題のデュアル変数のデュアル変数であり(条件の影の価格は、通常、コスト削減と呼ばれる)

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

getdual(a) 
getdual(b) 

getdual(assemblyCondition) 
getdual(testinCondition) 
+0

こんにちは、私は二重変数を取得するためにgetdual()を試みたが、うまくいきませんでした。それはNaNに返されました。 @isebarn – nana