小编ebe*_*beo的帖子

Prolog(CLP)的可变装箱问题

我正在尝试使用约束逻辑编程 (CLP) 在 (Swi-) Prolog 中找到 NP-hard 2D Variable Size Bin Packing Problem (2DVSBPP) 的算法。

问题可以这样解释:一些订购的产品需要尽可能有效地包装到一些盒子(箱)中。产品有一些给定的宽度和长度(正方形或矩形,例如 2x3)。有四种不同尺寸的箱子,每种箱子都有给托运人的特定成本(例如,5x5 箱子 4 美元,5x7 箱子 5 美元)。目标是最小化盒子的总成本

一段时间以来,我一直在寻找这个问题的答案,并阅读了许多其他语言的论文和类似示例。但是,我找不到任何可行的解决方案。我特别纠结于如何处理未知数量的 Boxes (bins)


为了能够找到这个问题的解决方案,我试图适应一个类似的问题,但真的不知道如何处理可变数量的盒子。下面的代码可以选择最便宜的盒子来装所有的产品,只要只需要一个盒子就可以装所有的产品。从我们需要多个盒子的那一刻起,程序就失败了。

盒子和产品:

:- use_module(library(clpfd)).
:- use_module(library(clpr)).
:- expects_dialect(sicstus).


%% These are the possible productsizes that could need packing
% product (id, width, length)
product(1, 2, 2). 
product(2, 1, 2). 
product(2, 2, 1). % repeating product n2 because it can lay horizontal or …
Run Code Online (Sandbox Code Playgroud)

prolog swi-prolog clp clpfd

4
推荐指数
1
解决办法
468
查看次数

标签 统计

clp ×1

clpfd ×1

prolog ×1

swi-prolog ×1