寻找“简单”整数线性编程源代码/伪代码

时间:2012-10-09 05:43:56

标签: integer pseudocode linear-programming

我今天可能需要实现整数线性规划,我想知道是否有任何伪代码或相对无痛(评论很好)的源代码解释如何实现它?强烈偏好伪代码。

请注意,我并不是在寻找一个具有所有“微调”的严肃完整项目,以获得最佳性能。我正在寻找最基本的解算器来演示整数线性编程如何工作而不是逐个尝试所有选项。

感谢。

1 个答案:

答案 0 :(得分:7)

这个问题是一个很大的问题,所以让我一步一步地尝试:

当您说整数线性程序时,我假设您的意思是具有线性约束和目标函数的IP。

<强> 1。从Simplex算法开始。 (尽管这不适用于IP,除非你的线性程序具有“完整性”属性的“幸运”情况。)但 Simplex 始终是一个好的起点,尤其是。因为你对第一原则方法感兴趣

令人惊讶的是,PseudoCode并不容易找到,尽管解决的例子很多。 Simplex算法中的Here's one example步骤。 (不是Psuedo代码)

3.1.4 Summary of Computation Procedure节中,有一些与伪代码相近的东西。

This document还有可以实现的Simplex算法的摘要,尤其是。如果您按照前面几节中的示例进行操作。

注意,Simplex是相对容易理解的算法之一(尤其是一步一步),但是很难实现。可以在这里找到really good discussion为什么会这样。

<强> 2。整数编程 - “最简单”的情况。 许多人倾向于从"Knapsack" problem开始。

您可以找到pseudo-code and a Java implementation here

第3。 IP越来越难以复杂化。

  • 资本预算问题
  • 作业问题
  • 运输问题

<强> 4。通用与专业 您现在可以选择:

  • 4A。您可以构建“通用”IP解算器(但需要很长时间才能运行)
  • 4b中。为特殊类型的问题构建专用IP解算器。

对于4a:您可以假设0/1变量并演示分支定界技术。您可以找到树的实现并根据自己的目的进行修改。 (基本上,是穷举搜索的巧妙实现。)

对于4b:您可以选择一个案例,比如说分配问题,因为它很容易理解并且可以在以下的情况下教授匈牙利算法一个人坐在一群学生面前。 This tutorial in topcoder用数学,伪代码和真实代码广泛涵盖了它。

答案很长,但我希望这与你所希望的一致。