强制C#SolverFoundation SimplexSolver找到一个int解决方案

时间:2016-04-05 21:08:06

标签: c# linear-programming ms-solver-foundation

SimplexSolver表示return View(new { url = returnUrl }); "定义用于优化混合整数问题的分支定界搜索。{34}这应该意味着它找到给定任务的整数解,但它找到一个具有double值的精确解。

有没有办法强制它找到一个整数解决方案,或者我应该在给定的双解决方案之上实现我自己的分支和绑定?

1 个答案:

答案 0 :(得分:1)

  

有没有办法强制它找到一个整数解决方案,或者我应该在给定的双解决方案之上实现我自己的分支和绑定?

无需实现B& B算法,只需将变量声明为整数,SimplexSolver应该能够解决它并提供整数最优解。见example here。以下相关摘要:

SimplexSolver solver = new SimplexSolver();

// ...

for (int i = 0; i < 5; i++) {
  solver.AddVariable(string.Format("project{0}", i),
                      out chooseProjectX[i]);
  solver.SetBounds(chooseProjectX[i], 0, 1);
  solver.SetIntegrality(chooseProjectX[i], true);
  // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  solver.SetCoefficient(profit, chooseProjectX[i],
                         estimatedProfitOfProjectX[i]);
  solver.SetCoefficient(expenditure, chooseProjectX[i],
                         capitalRequiredForProjectX[i]);
}