Online-3D-BPP-PCT
Online-3D-BPP-PCT 是一款专注于解决在线三维装箱问题(3D Bin Packing)的开源人工智能工具。它基于深度强化学习技术,旨在优化物品在集装箱内的自动摆放策略,特别适用于物流仓储、货物装载等需要实时决策的场景。
该工具核心解决了传统算法难以兼顾实际约束与连续空间搜索的痛点。通过引入创新的“分层装箱配置树”结构,Online-3D-BPP-PCT 能够灵活处理任意尺寸的容器与物品,支持连续域内的精确放置,并有效纳入稳定性检测及自定义物理约束。相比前代方案,它在训练稳定性、算法性能以及对复杂环境的适应能力上均有显著提升,同时提供了更完善的启发式基准供对比研究。
这款工具主要面向人工智能研究人员、算法工程师及相关领域的开发者。对于希望探索强化学习在组合优化中应用的研究者,或是需要定制高精度装箱解决方案的技术团队,Online-3D-BPP-PCT 提供了从环境模拟、模型训练到可视化演示的完整代码实现。项目基于 PyTorch 构建,文档详尽且包含视频演示,是深入理解高效在线 3D 装箱技术的优质资源。
使用场景
某大型跨境电商仓储中心正在处理每日数千种尺寸各异、随机到达的包裹,需实时决定如何将其装入标准集装箱以最大化空间利用率。
没有 Online-3D-BPP-PCT 时
- 空间浪费严重:传统启发式算法难以应对连续变化的物品尺寸,导致集装箱平均空隙率高达 15%,运输成本居高不下。
- 稳定性隐患:缺乏对堆叠稳定性的有效评估,货物在运输途中易发生倒塌,造成货损和理赔纠纷。
- 约束适配困难:面对“易碎品不可重压”或“特定朝向摆放”等复杂业务约束时,旧系统往往直接报错或退化为低效的人工规则。
- 响应延迟高:在海量订单并发场景下,计算单个包裹的最优位置耗时过长,成为自动化流水线的瓶颈。
使用 Online-3D-BPP-PCT 后
- 空间极致利用:基于分层打包配置树的深度强化学习模型,能精准处理连续尺寸空间,将集装箱空隙率压缩至 5% 以内。
- 智能稳态控制:内置的近似稳定性算法自动规划重心分布,确保多层堆叠下的货物稳固,货损率显著下降。
- 灵活约束支持:模型天然支持自定义约束条件,可轻松融入各类特殊摆放要求,无需重写核心逻辑即可适应新业务。
- 实时在线决策:优化的推理速度实现了毫秒级响应,完美匹配高速分拣线节奏,大幅提升整体吞吐效率。
Online-3D-BPP-PCT 通过将复杂的三维装箱问题转化为可学习的树形结构,让物流系统在应对真实世界的不确定性与复杂约束时,实现了从“勉强能用”到“高效智能”的跨越。
运行环境要求
- Linux (Ubuntu 16.04)
未说明 (基于 PyTorch,通常建议配备 NVIDIA GPU 以加速训练,但 README 未明确强制要求)
未说明

快速开始
简介
我们致力于持续推动三维装箱技术的发展。
以下是我们开发的功能:
如果您对三维装箱感兴趣,强烈建议您查看一下。各种问题和潜在的合作都欢迎!
在装箱配置树上学习高效的在线三维装箱
我们提出通过在分层装箱配置树上进行学习来增强在线三维装箱问题(BPP)的实用性,这使得深度强化学习(DRL)模型能够轻松应对实际约束,并且即使在连续解空间中也能表现出色。 与我们之前的工作相比,此仓库的优势在于:
- 容器(箱子)尺寸和物品尺寸可以任意设置。
- 允许连续的在线三维装箱,并提供连续环境。
- 提供了近似稳定性的算法(参见我们的其他工作)。
- 性能更好,并且能够考虑更复杂的约束。
- 为领域发展提供了更合适的启发式基准。
- 训练更加稳定。
请通过以下链接观看视频演示:YouTube, bilibili
如果您感兴趣,请给这个仓库点个赞!

论文
有关更多详细信息,请参阅我们的论文《在装箱配置树上学习高效的在线三维装箱》(已接受于 ICLR 2022)。如果此代码对您的工作有所帮助,请引用我们的论文:
@inproceedings{
zhao2022learning,
title={在装箱配置树上学习高效的在线三维装箱},
author={赵航、于洋、徐凯},
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的在线三维装箱:
python main.py
训练数据是实时生成的。训练日志(tensorboard)保存在‘./logs/runs’中。相关文件备份保存在‘./logs/experiment’中。
使用方法
数据描述
在‘givenData.py’中描述您的三维容器尺寸和三维物品尺寸
container_size: 一个长度为3的向量,分别描述容器在x、y、z三个维度上的尺寸。
item_size_set: 一个列表,记录每个物品的尺寸。每个物品的尺寸也由一个长度为3的向量表示。
数据集
您可以从这里下载准备好的数据集。 该数据集包含3000条随机生成的轨迹,每条轨迹包含150个物品。物品是一个长度为3或4的向量,前三个数字表示物品的尺寸,第四个数字(如果有)表示物品的密度。
模型
我们提供了使用EMS方案在离散环境中训练的预训练模型,其中箱子尺寸为(10,10,10),物品尺寸范围为1到5。
训练
要训练设置1(80个内部节点和50个叶子节点)的在线三维装箱实例:
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 path/to/your/model
评估
要评估一个模型,您可以在‘evaluation.py’中添加‘--evaluate’标志:
python evaluation.py --evaluate --load-model --model-path path/to/your/model --load-dataset --dataset-path path/to/your/dataset
启发式算法
运行heuristic.py以测试启发式基准,启发式算法的来源已在代码中注明:
使用LSAH方法在设置1(离散)上运行启发式算法:
python heuristic.py --setting 1 --heuristic LSAH --load-dataset --dataset-path setting123_discrete.pt
使用OnlineBPH方法在设置2(连续)上运行启发式算法:
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
相似工具推荐
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
funNLP
funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。
cs-video-courses
cs-video-courses 是一个精心整理的计算机科学视频课程清单,旨在为自学者提供系统化的学习路径。它汇集了全球知名高校(如加州大学伯克利分校、新南威尔士大学等)的完整课程录像,涵盖从编程基础、数据结构与算法,到操作系统、分布式系统、数据库等核心领域,并深入延伸至人工智能、机器学习、量子计算及区块链等前沿方向。 面对网络上零散且质量参差不齐的教学资源,cs-video-courses 解决了学习者难以找到成体系、高难度大学级别课程的痛点。该项目严格筛选内容,仅收录真正的大学层级课程,排除了碎片化的简短教程或商业广告,确保用户能接触到严谨的学术内容。 这份清单特别适合希望夯实计算机基础的开发者、需要补充特定领域知识的研究人员,以及渴望像在校生一样系统学习计算机科学的自学者。其独特的技术亮点在于分类极其详尽,不仅包含传统的软件工程与网络安全,还细分了生成式 AI、大语言模型、计算生物学等新兴学科,并直接链接至官方视频播放列表,让用户能一站式获取高质量的教育资源,免费享受世界顶尖大学的课堂体验。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。
awesome-machine-learning
awesome-machine-learning 是一份精心整理的机器学习资源清单,汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点,这份清单按编程语言(如 Python、C++、Go 等)和应用场景(如计算机视觉、自然语言处理、深度学习等)进行了系统化分类,帮助使用者快速定位高质量项目。 它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库,还是资深工程师对比不同语言的技术选型,都能从中获得极具价值的参考。此外,清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源,构建了从学习到实践的全链路支持体系。 其独特亮点在于严格的维护标准:明确标记已停止维护或长期未更新的项目,确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”,awesome-machine-learning 以开源协作的方式持续更新,旨在降低技术探索门槛,让每一位从业者都能高效地站在巨人的肩膀上创新。