简介
我们致力于持续推动3D装箱技术的发展。
以下是我们开发的功能:
如果你对3D装箱感兴趣,我强烈建议你看看。欢迎提出各种问题和潜在的合作!
基于装箱配置树学习高效在线3D装箱
我们提出通过在分层装箱配置树上学习来增强在线3D装箱问题(BPP)的实际应用性,这使得深度强化学习(DRL)模型易于处理实际约束,即使在连续解空间中也能表现良好。 与我们之前的工作相比,本仓库的优势包括:
- 容器(箱子)尺寸和物品尺寸可以任意设置。
- 允许连续在线3D-BPP,并提供了连续环境。
- 提供了近似稳定性的算法(参见我们的其他工作)。
- 性能更好,能够考虑更复杂的约束。
- 为领域开发提供更充分的启发式基准。
- 训练更加稳定。
如果您感兴趣,请为这个仓库点星!
论文
更多详细信息,请参阅我们的论文《基于装箱配置树学习高效在线3D装箱》,该论文已被ICLR 2022接收。如果这段代码对您的工作有用,请引用我们的论文:
@inproceedings{
zhao2022learning,
title={Learning Efficient Online 3D Bin Packing on Packing Configuration Trees},
author={Hang Zhao and Yang Yu and Kai Xu},
booktitle={国际学习表示会议},
year={2022},
url={https://openreview.net/forum?id=bfuGjlCwAq}
}
依赖项
- NumPy
- gym
- Python>=3.7
- PyTorch >=1.7
- 建议配置:Python == 3.7, gym==0.13.0, torch == 1.10, 操作系统:Ubuntu 16.04
快速开始
使用我们的PCT方法和默认参数在设置2(在我们的论文中提到)上训练在线3D-BPP:
python main.py
训练日志(tensorboard)保存在'./logs/runs'中。相关文件备份保存在'./logs/experiment'中。
使用说明
数据描述
在'givenData.py'中描述你的3D容器尺寸和3D物品尺寸
container_size: 一个长度为3的向量,描述容器在x、y、z维度的尺寸。
item_size_set: 一个列表,记录每个物品的尺寸。每个物品的尺寸也用一个长度为3的向量描述。
数据集
你可以从这里下载准备好的数据集。 数据集包含3000个随机生成的轨迹,每个轨迹有150个物品。物品是一个长度为3或4的向量,物品的前三个数字代表物品的尺寸,第四个数字(如果有)代表物品的密度。
模型
我们提供了预训练模型,这些模型是在离散环境中使用EMS方案训练的,其中箱子尺寸为(10,10,10),物品尺寸范围为1到5。
训练
在设置1(80个内部节点和50个叶节点)上训练在线3D BPP实例:
python main.py --setting 1 --internal-node-holder 80 --leaf-node-holder 50
如果你想训练一个在连续域上工作的模型,添加'--continuous',并且不要忘记在'givenData.py'中更改你的问题设置:
python main.py --continuous --sample-from-distribution --setting 1 --internal-node-holder 80 --leaf-node-holder 50
热启动
你可以使用预训练模型初始化运行:
python main.py --load-model --model-path 你的模型路径
评估
要评估一个模型,你可以在evaluation.py
中添加--evaluate
标志:
python evaluation.py --evaluate --load-model --model-path 你的模型路径 --load-dataset --dataset-path 你的数据集路径
启发式方法
运行heuristic.py来测试启发式基准,启发式算法的来源已在代码中标明:
在设置1(离散)上使用LASH方法运行启发式算法:
python heuristic.py --setting 1 --heuristic LSAH --load-dataset --dataset-path setting123_discrete.pt
在设置2(连续)上使用OnlineBPH方法运行启发式算法:
python heuristic.py --continuous --setting 2 --heuristic OnlineBPH --load-dataset --dataset-path setting2_continuous.pt
帮助
python main.py -h
python evaluation.py -h
python heuristic.py -h
许可证
本源代码仅供学术使用。未经作者授权,请勿用于商业目的。