2010-01-17 9 views
3

MSF API를 사용하여 세미 정수 (V = 0 또는 a <= V <= b)로 변수를 지정할 수 있습니까?semi-integer 용 Microsoft Solver Foundation

다음은 "sec"및 "int"키워드를 사용하여 변수가 반 연속 및 정수임을 나타내는 LP_Solve의 예입니다.

max: 0.5 Q1 + 0.55 Q2 ; 

Q1 >= 5; 
Q1 <= 10 ; 
Q2 >= 5; 
Q2 <= 10; 
Q1 + Q2 <= 10; 

sec Q1,Q2 ; 
int Q1,Q2 ; 

MSF와 비슷한 점이 좋습니다. MSF 내에서 Gurobi Plugin DLL을 호출하는 것이 가능하지만 변수의 유형을 올바르게 설정할 수있는 API를 찾을 수는 없습니다 (Gurobi는 VTYPE이라고 생각합니다). .net api에 노출되지 않았거나 MSF에서 사용하는 Gurobi 버전에서 사용할 수 없습니까? 또는 .NET에서 LP_Solve를 호출하는 좋은 방법이 있습니까?

+0

좋아요, .NET에서 LP_Solve를 호출하는 "멋진"방법이 있지만 작업하기가 쉬운 API가 있으므로 내 이상적인 솔루션은 여전히 ​​MSF를 사용하는 것입니다. MSF를 통해 반 정수가 작동하는 사람이 있습니까? –

답변

4

Solver Foundation에서이 작업을 수행 할 수 있지만 "sec"키워드에 해당하는 작업은 없습니다. 대신 각 반 정수 변수에 더미 0-1 결정을 추가 할 수 있습니다. "V"를 포함하는 원래 예를 들어, 여기 당신이 OML에서 그것을 할 수있는 방법은 다음과 같습니다

Model[ 
    Decisions[ 
    Integers[0, 1], 
    VPositive 
    ], 
    Decisions[ 
    Reals, 
    V 
    ], 
    Constraints[ 
    constraint -> 10 * VPositive<= V <= 20 * VPositive 
    ] 
] 

것은 당신이 당신이와 똑같이 결정, 제약, 개체 모델을 사용하여 목표를 추가 해 찾기 재단 API를 사용하는 경우. 의사 결정의 유형을 지정하는 방법은 ctor에서 제공되는 도메인을 사용하는 것입니다.