2016-09-27 9 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 솔버를 사용하여이 문제를 해결하기 위해 줄리아를 사용하고 있습니다. 그러나, 나는 제약 조건의 그림자 가격을 원한다. 특히 제약 조건 인 assemblyCondition과 testingCondition에 대한 그림자 가격을 얻고 싶습니다.

누구나 코드/기능을 알고 있습니다. getdual() 시도했지만 작동하지 않았다. 당신이 얼마나 이중

I를 얻을 수

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

를 사용할 필요가 있으므로

+1

그림자 가격은 선형 프로그래밍에서 이중 변수입니다. CBC와 같은 MIP 솔버의 경우 '이중'이라는 용어는 다른 의미를 가지며 실제로 문제의 LP 완화를 나타냅니다. – mattmilten

+0

'solver = CbcSolver()'를 제거하면 기본 솔버가 사용되고 작동해야합니다. – Pafnucy

답변

3

MIP 호출에서 듀얼 변수를 지원 나던 점프, 그리고 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