微软半整数规划求解器基础库

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中找到类似的解决方案。我注意到可以在MSF中调用Gurobi插件DLL,但是我无法在该API中找到任何地方来正确设置变量类型(我认为Gurobi称其为VTYPE),因此我认为它可能没有在他们的.NET API中公开或者不可用于MSF使用的版本中?另外,是否有一种不错的方法可以从.NET中调用LP_Solve?


好的,我已经成功地从.NET中调用了LP_Solve的“好”方法,但是我的理想解决方案仍然是使用MSF,因为它具有更容易使用的API。是否有人成功地通过MSF实现了半整数? - freddy smith
1个回答

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,则可以使用对象模型添加类似的决策、约束和目标。通过在构造函数中提供域来指定决策类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接