是否可以使用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中类似的东西会很好。我注意到可以在MSF中调用Gurobi插件DLL但是我找不到该api中的任何地方能够正确设置变量的类型(我认为Gurobi称之为VTYPE),所以我认为它要么没有暴露在他们的.net api中或在MSF使用的Gurobi版本中没有?或者,是否有一种从.NET调用LP_Solve的好方法?
答案 0 :(得分:4)
您可以使用Solver Foundation执行此操作,但“sec”关键字没有等效项。相反,您可以为每个半整数变量添加一个虚拟0-1决策。对于涉及“V”的原始示例,以下是如何在OML中执行此操作:
Model[
Decisions[
Integers[0, 1],
VPositive
],
Decisions[
Reals,
V
],
Constraints[
constraint -> 10 * VPositive<= V <= 20 * VPositive
]
]
如果您使用的是Solver Foundation API,那么您可以使用对象模型添加类似的决策,约束和目标。指定决策类型的方法是使用ctor中提供的域。