2010-01-17 57 views
3

是否有可能使用MSF API來指定一個變量,半整數(V = 0,或a <= V <= b)?微軟求解基金會半整數

以下是LP_Solve一個使用「SEC」和「INT」的關鍵字來表示該變量是半連續和整數的例子。

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中調用Gurobi插件DLL,但是我無法在該API中找到任何可以正確設置變量類型的地方(我認爲Gurobi將其稱爲VTYPE),所以我認爲它是沒有暴露在.net api中,或者在無國界醫生使用的Gurobi版本中沒有提供?另外,有沒有一種很好的方式從.NET調用LP_Solve?

+0

好吧,我已得到.NET工作調用LP_Solve的「好」的方式,但是我的理想的解決辦法仍然是使用MSF,因爲它有一個更簡單的感覺API一起工作。有沒有人設法通過MSF獲得半整數? – 2010-01-18 07:11:16

回答

4

你可以用Solver基金會來做到這一點,但沒有「sec」關鍵字的等價物。相反,您可以爲每個半整數變量添加一個虛擬0-1決策。爲了您的參與「V」原來的例子,這裏是你如何能做到這一點的OML:

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

如果您使用的是求解基礎API,那麼你會添加analagous決策,約束,使用對象模型的目標。指定決策類型的方法是使用ctor中提供的域。