美文网首页
深度学习结合树搜索求解集装箱预翻箱问题

深度学习结合树搜索求解集装箱预翻箱问题

作者: 番茄鸡蛋炒饭被抢注啦 | 来源:发表于2021-07-11 23:11 被阅读0次

论文阅读笔记,个人理解,如有错误请指正,感激不尽!该文分类到Machine learning alongside optimization algorithms。

01 container pre-marshalling problem (CPMP)

对集装箱进行预翻箱整理,使得集装箱的堆放顺序符合取箱顺序,以尽量减少取箱装船过程中的翻箱次数。如下图所示,出箱顺序为1234……6,灰色的集装箱2、4、5挡住了先要出来的集装箱1、3,因此需要不断移动灰色的集装箱到别处去,直到不挡住别的箱子。这样1可以顺利先出,而后是2,接着是3……目标是最小化移动集装箱的次数。

image

02 tree search中的DNN

树搜索大家不会陌生,深度优先、广度优先、分支定界等都属于树搜索策略。将Deep learning集成进tree search中,用于求解CPMP。利用深度神经网络(classification DNN)在分支选择上进行预测,给出分支的“好坏”,随后按照分支的“好坏”(好的分支得到最优解的可能性更大)继续搜索。同时,利用深度神经网络(regression DNN)对分支节点的lower bound进行预测,剪掉不必要的分支。

下图解释了搜索过程中的分支选择决策,以c节点为例,通过将c节点表示的问题和解信息输入到DNN中,经过隐藏层,在输出层通过一个softmax函数给出三个child节点e、f、g的概率(搜索该分支最终得到最优解的概率)。

image

通过DNN预测该节点的lower bound也是类似的,只不过该网络的输出只有一个数值,即当前节点的得到完整solution的cost(有可能overestimate或者underestimate)。

下图展示了预测分支(classification DNN)的具体网络形态。该神经网络依赖于算例的size,假如训练的算例size为n,那么只能预测size为n以及小于n的算例(通过设置虚拟点)。每一个集装箱位都是一个节点,从而构成了DNN的输入层。在输入层之后通过weight sharing,给每一个tier分配一个权重,w_i。这样就给每一个container分配了权重,比如第3层的container,对应的权重就是w_3。最终输出层输出每一个movement的概率,比如y_{2,1}表示的将stack 2上的container移动到stack 3上。

20210711211626

关于模型训练,样本通过精确算法求解获得,无法精确获得的,则是通过启发式算法获得近似解。

03 搜索策略

将上面的DNN应用到tree search中,搜索策略有好几种,作者实现了三种结合DNN的树搜索策略: Depth first search、Limited discrepancy search和Weighted beam search。前两个的框架如下:

image

DNN在这些搜索框架中起到的作用主要有:

  • 预测各个分支得到最优解的概率,令框架优先搜索概率高的支路。
  • 预测节点的lower bound,从而进行必要的剪枝。不过预测lower bound是搜索树深度为k的倍数才会执行一次,因为全部执行需要消耗大量的时间。

04 实验结果

通过和目前最好的启发式算法(BRKGA)进行对比,通过数据集G1训练的模型为DLTS-G1,通过数据集G123训练的模型为DLTS-G123。Gap(%)表示和最优解的对比。从下表可以看出,虽然BRKGA有着更快的求解速度,时间大概是DLTS的一半,但是得到的Gap却是DLTS的3到23倍不等。

image

05 参考文献

[1] Hottung A , Tanaka S , Tierney K . Deep Learning Assisted Heuristic Tree Search for the Container Pre-marshalling Problem[J]. Computers & Operations Research, 2019.

相关文章

  • 深度学习结合树搜索求解集装箱预翻箱问题

    论文阅读笔记,个人理解,如有错误请指正,感激不尽!该文分类到Machine learning alongside ...

  • 大厂面试:求解集装箱港口翻箱问题的最短路径

    摘要:针对集装箱港口提箱过程中的翻箱问题,以最小化翻箱次数为目标,构建基于状态结点的网络图模型,将翻箱问题转化为最...

  • 回溯法

    回溯法:穷举搜索解空间树(包含了问题求解过程中的每一种情况),以寻找最优解。一般采用深度优先方式搜索解空间,并在搜...

  • [考研]数据结构必考代码

    (十二)图的遍历 深度优先搜索 广度优先搜索 示例: BFS算法求解非带权图单源最短路径算法: (十三)最小生成树...

  • (四) 回溯法(试探算法)

    深度优先搜索 + 剪枝。回溯法的求解目标一般是找出解空间树中满足约束条件的所有解。 # 在学习回溯和分支限界法之前...

  • Python3的super详解:MRO、C3算法

    1.C3算法求解MRO 求解MRO,在Python2.3之前是基于深度优先算法,但为了解决原来基于深度优先搜索算法...

  • 二叉树--求解树的深度

    今天练习的算法是求解树的深度。 题目介绍 我们还是用这张老的二叉树来举例子吧: 求解树的深度比较好理解,简单来说就...

  • 二叉树遍历_深度_广度

    深度优先搜索(Depth First Search)是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。 深度优先...

  • 图论(六)图的深度优先遍历DFS(非递归方式)

    一、深度优先搜索 深度优先搜索是一个针对图和树的遍历算法。早在19世纪就被用于解决迷宫问题。 对于下面的树而言,D...

  • 第一节 人工智能的定义

    一、主要内容 智能体的概念 树搜索算法 无信息搜索策略 启发式搜索策略 约束满足问题求解 博弈算法 不确定性推理 ...

网友评论

      本文标题:深度学习结合树搜索求解集装箱预翻箱问题

      本文链接:https://www.haomeiwen.com/subject/grblpltx.html