我需要编写一个整数程序。它非常简单,但是问题在于,几乎没有关于如何使用可调用库为GLPK编写整数程序的好信息,更不用说GLPK#了。

我的整数程序看起来非常像这样:

Maximise: X[0] + X[1] + ... + X[n];

s.t.      X[1] + X[5] <= 1;
          X[1] + X[7] <= 1;
          X[2] + X[4] <= 1;
          X[3] + X[9] <= 1;
          ...
          X[i] = {0,1}


我有一堆二进制X,我想最大化总和。某些X排除了某些其他X。

到目前为止,我要做的就是

LPProblem lp = new LPProblem()
{
  ModelClass = MODELCLASS.MIP,
  ObjectiveDirection = OptimisationDirection.MAXIMISE,
  ObjectiveName = "Z"
};

// Stuff goes here, I'm not sure how to represent the model

SOLVERSTATUS status = lp.SolveInteger();

最佳答案

也许您可以使用GLPK#以外的其他东西。如果您是学者,则可以免费获得CPLEX或Gurobi。否则,Google OR Tools在过去的一年中一直提供C#支持。根据Google OR Tools page,它包括GLPK和CBC的包装。仅出于您可以在两个求解器之间切换的事实,建议您使用Google OR工具。对于您的特定实例,您可能会找到一个比其他解决方案更好的解决方案。

关于c# - GLPK#整数编程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15016702/

10-09 03:53