基于约束深度强化学习的在线3D装箱问题
在线3D装箱问题深度强化学习
本仓库包含论文《基于约束深度强化学习的在线3D装箱问题》的实现。
安装
要使该项目正常运行,你需要做两件事:
* 安装'requirements.py'中的Python包(通过'pip install -r requirements.txt')。
*(此代码适用于Python 3.7)
运行
我们在'main.py'中提供了统一的接口。以下是运行我们项目的示例。
训练:
示例:在随机生成的序列上训练新模型。
你可以运行'python main.py --mode train --use-cuda --item-seq rs'。
大约需要一天时间来获得性能令人满意的模型。
你可以运行'python main.py --help'来获取常用参数的一些信息。
我们的项目在'arguments.py'中还有许多其他参数,它们都有默认值。你可以根据需要进行更改。
测试:
示例:
如果你想测试在CUT-2算法生成的序列上训练的模型(详情请参阅我们的文章)。
你可以运行'python main.py --mode test --load-model --use-cuda --data-name cut_2.pt --load-name default_cut_2.pt'。
如果你想在预览设置中查看模型的工作情况,
你可以运行'python main.py --mode test --load-model --use-cuda --data-name cut_2.pt --load-name default_cut_2.pt --preview x',x是预览数量。
我们还提供了用户研究应用、多箱算法和用于比较的MCTS的代码,
请查看'user_study/'、'multi_bin/'、'MCTS/'以了解详情。
提示
* 不同的输入状态大小需要不同类型的CNN进行编码,你可以在./acktr/model.py中调整网络架构以满足你的需求。
* 预测掩码主要用于减少MCTS的计算成本。如果你只需要BPP-1模型,可以在训练过程中用真实掩码替换预测掩码,这样训练会更容易。
* 如果放宽稳定性规则的约束,你可能会得到更好的结果,但在实践中可能会有危险。
* 我们实现的计算开销对网络层的长度敏感,你应该避免在网络架构中出现大型网络层。
* 装箱问题的难度与其物品集有关。训练模型的性能也会受到影响。
声明
赵航和佘琪瑾是本仓库的共同作者。
部分代码修改自开源项目'pytorch-a2c-ppo-acktr-gail'(https://github.com/ikostrikov/pytorch-a2c-ppo-acktr-gail)。
许可
请注意,此源代码仅供学术使用。未经作者授权,请勿用于商业目的。该方法正在申请专利保护。如需商业使用,请联系徐凯(kevin.kai.xu@gmail.com)。
引用
如果你感兴趣,请引用以下论文:
@inproceedings{DBLP:conf/aaai/ZhaoS0Y021,
author = {Hang Zhao and
Qijin She and
Chenyang Zhu and
Yin Yang and
Kai Xu},
title = {Online 3D Bin Packing with Constrained Deep Reinforcement Learning},
booktitle = {Thirty-Fifth {AAAI} Conference on Artificial Intelligence, {AAAI}
2021, Thirty-Third Conference on Innovative Applications of Artificial
Intelligence, {IAAI} 2021, The Eleventh Symposium on Educational Advances
in Artificial Intelligence, {EAAI} 2021, Virtual Event, February 2-9,
2021},
pages = {741--749},
publisher = {{AAAI} Press},
year = {2021},
url = {https://ojs.aaai.org/index.php/AAAI/article/view/16155},
timestamp = {Wed, 02 Jun 2021 18:09:11 +0200},
biburl = {https://dblp.org/rec/conf/aaai/ZhaoS0Y021.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}