一、问题简介
Bin-Packing问题可以描述为:给定一组大小不同的物品和一个容量有限的背包,如何将物品放入背包,使得背包内物品的总价值最大,且不超过背包容量。这里的物品大小和背包容量均为整数。
Bin-Packing算法的目标是:将n个物品放入最少数量的背包中,使得每个背包的容量不超过给定值。
Bin-Packing算法是一种组合优化问题,旨在将一组物品(具有不同的大小)放入有限数量的容器(或“箱子”)中,使得使用的容器数量最小化。该问题属于NP-hard问题,意味着没有已知的多项式时间算法可以解决所有实例。
二、问题分类
装箱问题可分为一维装箱问题,二维装箱问题,三维装箱问题三种:
(1)一维装箱问题只考虑一个因素,比如重量、体积、长度等。
(2)二维装箱问题考虑两个因素--给定一张矩形的纸(布料、皮革),要求从这张纸上剪出给定的大小不一的形状,求一种剪法使得剪出的废料的面积总和最小。常见问题包括堆场中考虑长和宽进行各功能区域划分、停车场区位划分、包装材料裁切时考虑怎样裁切使得材料浪费最少、服装布料裁切、皮鞋制作中的皮革裁切等。
(3)三维装箱问题考虑三个因素--一般指长、宽、高。装车、装船、装集装箱等要考虑这三个维度都不能超。
• 一维装箱问题建模:
给定一个物品的集合A = {a1,a2,...,an}和容量为s的箱子若干,物品ai的 大小为wi,i = 1,2,...,n,要求在箱子的容量范围内,把A中的物品装入到箱子中, 目标是最小化所使用箱子的数量。
由于任意一个物品的大小都不超过箱子的容量,所以最优解的箱子数不会超 过物品的数量n,可以定义箱子的集合为B = {b1,b2,...,bn}。根据装箱问题的定义, 通过引入0-1 决策变量yj和xij,定义yj = 1表示箱子bj被使用,否则,yj = 0;定 义xij &