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

pep*_*dip 3 integer pseudocode linear-programming

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

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

谢谢.

Ram*_*han 7

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

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

1.从Simplex算法开始. (即使这不适用于IP,除非你的线性程序具有"完整性"属性的"幸运"情况.)但Simplex始终是一个好的起点,尤其是.因为你对第一原理方法感兴趣

令人惊讶的是,PseudoCode并不容易找到,尽管解决的例子很多. 这是 Simplex算法中步骤的一个示例.(不是Psuedo代码)

在第3.1.4"计算过程摘要"中,有一些与伪代码相近的内容.

本文档还总结了可以实现的Simplex算法,尤其是.如果您按照前面部分中的示例进行操作.

请注意,Simplex是相对容易理解的算法之一(尤其是逐步),但是很难实现.这里可以找到一个非常好的讨论原因.

2.整数编程 - "最简单"的情况. 许多人倾向于从"背包"问题开始.

您可以在此处找到伪代码和Java实现.

3. IP越来越难以复杂化.

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

4.通用与专业 您现在可以选择:

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

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

对于4b:你可以选择一个案例,比如分配问题,因为它很容易理解并且可以一次性地教给一组学生,因此经常使用匈牙利算法. topcoder中的这个教程非常广泛地介绍了数学,伪和真实代码.

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