大卫·皮辛格的优化代码

本页包含几个用C编写的优化代码可免费用于学术目的。每个算法都是简要介绍了这篇论文,并给出了参考文献提出了。


背包问题

测试实例的生成

A发电机为0-1背包问题构造测试实例,如在“背包算法的核心问题”一文中描述。生成的实例具有不同的能力,以便在更现实的条件。

再来一杯高级发电机对于0-1背包问题,在“动态规划和0-1背包问题的紧界”(合著者:S.Martello,P、 Toth),其中考虑了14种不同的实例类型。

发电机硬实例也可以使用。实例如中所述出现的“背包硬问题在哪里?”《计算机与操作》(2005年)。你也可以下载此处的所有实例(及其解决方案):小系数,大系数,硬实例.

Expknap算法

这个出口本文提出了一种扩展核算法对于0-1背包问题”。算法是基于分枝定界的,其中简单的LP边界用于边界过程。它的主要特性核心的大小与实例的硬度相适应。代码很短,可以用于教学。

Minknap算法

这个明克纳普算法是在“最小算法”一文中提出的对于0-1背包问题”。代码基于动态编程其中,枚举边界被用来研究不乐观的状态。证明了该算法能枚举出最小的可能核满足某些给定的性质。

组合算法

这个联合体算法在“0-1背包的动态规划和强边界”中描述《问题》作者:S.Martello,D.Pisinger,P.Toth。算法结合了算法使用动态规划递归明克纳普. 有效不等式是替代松弛到原始问题,因此得到一个新的(更容易)背包问题。初始核是根据一些贪婪的规则构造的确保行为非常稳定。

对应的头文件应该用于定义适当的数据结构。

Mcknap算法

在“多选背包问题的最小算法”中,提出了一种求解多选择背包问题的精确算法。这个麦克纳普算法是第一个利用“核心”思想解决多项选择的算法背包问题。首先,使用中值搜索算法来求解LP放松的问题。上下界由线性规划松弛法导出如果这些不一致,则使用动态规划来列举一个扩展的核心。

布克纳普算法

提出了一种求解有界背包问题的算法本文“有界背包的一个极小算法”问题”。这个布克纳普该算法基于有界问题的渐进变换作为扩展核心的一部分。新的上限是这使得我们可以收紧边界在每个项目类型上。

Mulknap算法

这个穆尔克纳普求多重数的算法背包问题是在“精确算法”一文中提出的对于大型多背包问题”。代码能够解决即使是在合理的时间内非常大的实例。该算法基于与MTM算法相同的框架但它包含了几个新的元素:下界是通过拆分代理解来确定的。通过求解子集和问题来收紧容量约束它决定了在不超过容量。最后给出了一个归约算法实现变量。A试验大纲, 也可以像Martello和Toth(1990)那样生成实例与对应的头文件.

分解算法

这个分解算法通过一种Horowitz-Sahni算法来解决子集和问题分解。它最初是作为上述内容的一部分呈现的多背包问题的算法用于收紧容量限制并导出下限通过分解代理松弛问题的解。然而,该代码对于解决大多数实际问题非常有效子集和问题,从而给出了一个自包含的过程。

Scknap算法

强相关背包问题被认为是最困难的背包问题,由于两者之间的差距很大LP解决方案和IP解决方案。算法卑鄙小人但是证明了紧边界可以通过替代项用原始项放宽基数约束容量限制。为了匹配上限,快速构造了两个最优启发式算法,在许多情况下都得到了解决最优性问题。启发式解的If最优性无法证明,一个基于平衡状态的动态规划被利用了。更多细节可以在“快速算法”一文中找到对于强相关背包问题。


二次背包问题

二次背包问题要求二次函数最大化单能力约束下的目标函数。“二次背包问题的精确解”一文由Caprara,Pisinger和Toth(1999)提出了这些问题可以用up来解决稠密问题到400个二进制变量。

这个四边形算法是求解二次背包问题的一个可调用程序问题。作为一个论点,它需要一个利润矩阵,一个权重向量,背包的容量,最后是一个布尔解向量应该返回解决方案的位置。

这个试验QKP算法按照上述描述生成实例并调用四元组代码。平均解决时间和报告找到的解决方案。


机器人可包装三维装箱问题

机器人可收纳三维问题的精确算法装箱问题

本文“三维装箱问题的一种算法”作者:S.Martello,D.Pisinger,D.Vigo(1998),提出了一个解决问题的代码机器人可包装三维装箱问题的最优化。代码3磅/秒是一个可调用C-过程,可作为启发式或精确算法使用。

三维装箱问题的试验实例

为3D BPP生成测试实例的C代码,如中所述论文:S.Martello,D.Pisinger,D.Vigo“三维空间”装箱问题测试3dbpp.c.该算法生成测试实例并调用3dbpp来解决最优化问题。输出被写入一个文件以便以后处理。

编制说明

A自述文件文件附有立体包装的编制说明这里有算法。


一般三维装箱问题

三维装箱问题的精确算法

一般认为是版本问题通用和机器人可包装变体的算法三维装箱问题马尔泰洛,皮辛格,维戈,登博夫,科斯特。

代码3磅/秒.
测试发生器测试3dbpp.c.
编制说明自述文件.


集装箱装载问题

集装箱装载问题的一种启发式算法

“集装箱装载问题的树搜索启发式”一文由D.Pisinger(1999)提出了一个背包装载集装箱的代码。代码容器c是一个可调用的C过程,可用于多种应用。

集装箱装载问题的测试实例

为容器装载生成测试实例的C代码问题描述在:D.Pisinger,“一个树搜索启发式“集装箱装载问题”见试验控制.该算法生成测试实例并调用“contload”来解决最优化问题。输出被写入一个文件以便以后处理。

编制说明

A自述文件文件附有集装箱装载算法的编译说明这里有。

二维和三维的启发式方法背包包装问题

论文“二维和三维的启发式方法”背包包装问题”(Jens Egblad,David Pisinger,Computers and Operations Research,2009,第36卷,1026-1049)介绍一系列系统生成的包装实例。所有实例都可以从下面的zip文件下载拉链.

(相应技术报告的测试实例见以下zip文件拉链).


列车座位预订问题

Clausen等人考虑的离线群体座位预留问题。(2010)可以看作是矩形固定的包装问题尺寸之一。上述文件中考虑的测试实例可以在以下zip文件拉链.
将此页翻译为塞尔维亚-克罗地亚语是安吉·斯科巴做的。


回到.

pisinger@diku.dk.