摘要:针对集装箱港口提箱过程中的翻箱问题,以最小化翻箱次数为目标,构建基于状态结点的网络图模型,将翻箱问题转化为最短路径问题,并采用最短路径算法进行求解,最后给出一组计算样例。

1.集装箱堆场翻箱问题

在集装箱码头作业过程中,由于船舶抵港时间具有不确定性,可能出现集装箱提箱顺序与初始堆放位置不完全相符的情况,导致需要较早离场集装箱被压在后续离场集装箱下层现象。所以提箱过程中不可避免需要进行翻箱,甚至当被翻箱落箱位置选取不当,会造成后续提箱的二次翻箱;翻箱过程存在如下定义:

(1)目标箱:某一堆存状态下,预最先发箱的集装箱为该堆存状态下的目标箱;

(2)必翻箱:若某集装箱下方存在比其优先取箱的箱子,则该集装箱为相应堆存状态下的必翻箱;

(3)阻塞箱:连续堆存在某集装箱上方的必翻箱,为相应堆存状态下该集装箱的阻塞箱;

如图1所示为某一贝位内的堆存状态(6*6的贝位,且均为20FT集装箱,底部横轴为栈编号,左侧纵轴为层编号);当提箱顺序为C21->C15->C12时,可知当前堆存状态的目标箱位C21,C12处于栈顶,不存在阻塞箱,可直接发出;而C15作为后续堆存状态的目标箱,其上方还有其他集装箱;此时,定义C12,C13,C14为目标箱C15的阻塞箱,同时C12,C13,C14称为当前堆存状态的必翻箱;

图1 堆存状态

2. 基于状态结点的网络图模型

(1)堆存状态:指某堆存范围内集装箱的堆存情况,如图1所示,即为栈6-11的一组堆存状态;翻箱过程中可行的堆存状态应具有如下特点:

a):集装箱不能悬空放置;

b):不考虑轻压重等重量原则;

c):不允许超过堆存区域既定的最大堆高;

d):集装箱位置不能超过作业机械所能达到的最大堆高;

(2)状态结点:每一个可行的堆存状态即可作为一个状态结点;

(3)结点可达:针对某一目标箱,若状态结点A中的某一集装箱经过翻箱操作后得到的堆存状态与状态结点B一致,则称结点A可达结点B;

(4)权重取值: 且若结点A可达结点B,那么结点A、B间存在方向A->B,且可计算A->B的翻箱次数,并将其作为连接权重;

(5)网络图构建原理:以初始堆存状态作为根节点,将目标箱作为层级划分的标识。同时,将提箱过程中各层可能的堆存状态作为该层的叶子节点,完成提箱操作的堆存状态作为结束节点;构造形如图2所示的树状网络图结构,并增加虚拟结束节点:

图2状态结点树状网络图

(4)网络图性质:分析可知,上述构造的堆存状态树状网络图具有以下特征:

特征0:结束状态层中,不存在待提集装箱,此时堆存状态可能为空,也可能包括非待提箱;

特征1:图中入度为0的点和出度为0的点有且仅有一个(分别为根节点和虚拟结束节点);其他节点的出度、入度均大于等于1;

特征2:虚拟节点作为后续节点与所有结束节点相连,且权重均等于0;

特征3:上一层的目标箱在当前堆存状态一定处于栈顶或已被提箱离场;

特征4:由于提箱顺序有优先级要求,结合特征3,因此不存在跨层节点连接;

特征5:由于不涉及预翻箱作业,则中间层每层至少存在一个状态叶子节点,且两两状态之间不可达;

特征6:结合特征4和特征5可知,网络图为有向无环图;

至此,通过构建具有上述特征的树状网络图,可将翻箱问题转化为寻找从根节点到虚拟结束节点的最短路径问题,并采用最短路径问题算法进行精确求解。

3. 计算样例

(1)初始堆存状态Node0;

(2)构造树型网络图结构

结点信息如下:

(3)最短路径问题求解

当前最短路径支持Dijkstra's 算法(正权有向图)、Floyd算法、0-1整数规划等方式求解;此外,进一步结合特征6可知,上述构建的最短路径问题为有向无环图,因此可采用更为高效的基于拓扑排序的快速求解算法求解;最终得到翻箱方案如下,翻箱次数为1次;

参考文档

  • da Silva Firmino A, de Abreu Silva R M, Times V C. An exact approach for the container retrieval problem to reduce crane's trajectory[C]//2016 IEEE 19th international conference on intelligent transportation systems (ITSC). IEEE, 2016: 933-938.
  • 有向无环图最短路径问题及其变种问题的快速求解算法.

本文分享自华为云社区《集装箱港口翻箱问题的最短路径求解算法》,原文作者:CKW@10270 。

点击关注,第一时间了解华为云新鲜技术~

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

  1. 多码头多式联运集装箱港口的全局规划

    Global planning in a multi-terminal and multi-modal maritime container port Xavier Schepler:Stefan B ...

  2. 10w字!前端知识体系+大厂面试总结(算法篇)

    内容超肝,慎入! 系列文章(一)(基础知识篇) 作者主页: https://juejin.cn/user/2594503172831208 正文 之前我对算法的理解,仅仅是为了应付大厂的面试 但是在两 ...

  3. 集装箱港口智能化管理解决方案

    该方案以一系列运算规则为核心,应用物联网.移动互联网.OCR识别.PLC控制.GPS定位.云计算等多种高新技术通过资源重组和流程优化实现了对装卸船作业.堆场作业.闸口作业.集卡作业等集装箱码头业务的智 ...

  4. 我是如何在天猫、蚂蚁金服、百度等大厂面试中被拒的 | 掘金技术征文

    本人16年毕业于普通二本院校网络相关专业,工作经验两年半,目前就职业于一家普通民营企业. 由于非985.211学历硬伤,校招进大厂的门槛远高于同届985.211的毕业生.于是乎,从毕业到现在经历了三家 ...

  5. 如何从菜鸡变成收割机,大厂面试的算法,你懂了吗?

    是什么?让大厂面试显得逼格很高,是算法和数据结构吗? 是的!!! Google工程师曾总结过,大厂之所以爱考察算法和数据结构是因为: 算法能力能够准确辨别一个程序员的技术功底是否扎实: 算法能力是发掘 ...

  6. 去大厂面试,说了没高并发经验,面试官还是抓着这个问!

    我真服了,我tm现在满脑子都是"高并发",不得不说这个词真是技术圈的一个高频词. 如果不拿出这个说道说道就感觉技术非常欠缺似的.不过确实,高并发几乎是每个程序员都想拥有的经验. 原 ...

  7. 只需 9.9 元!前 Facebook 工程师 7 天带你掌握 7 大数据结构,大厂面试必备!

    数据结构与算法是互联网大厂面试的敲门砖,也是开发者精益求精.持续提升的内功基础.工作中选择合适的数据结构,往往能达到事半功倍的效果.然而真正学习算法的时候,又是另外一番景象,因为真正基础.真正核心的东 ...

  8. 互联网大厂面试,谈索引就直逼这些底层?难的是我不懂这些原理

    01 为啥BAT大厂,在数据库上都喜欢深入的问索引呢? 一线大厂,是很多人梦寐以求的盛典天堂.因为存在的无限的可能,可以帮你实现自己的远大抱负.大平台机会.视野.格局往往都比小厂多很多.但随之而来也是 ...

  9. 大厂面试通关图鉴:骚话走一走,百万薪到手!

    来源 | 抓码青年(ID:SparkDaily) 今日不学习,明日变垃圾 面对越来越内卷的互联网各厂 除了拼命刷题提升自己 是否还有捷径可抄? 孙子曾言"兵贵神速,出奇制胜" 面试 ...

最新文章

  1. Java按钮哪个方法响应_当用户点击按钮时,Java程序采用什么方法来响应?()
  2. 20165315 第八周考试课下补做
  3. Jenkins - 构建Allure Report
  4. 记录一下CUDA-opencv联合编程
  5. 微软欢迎所有热爱开源软件的朋友们来投稿![征稿开放时间:2015年8月17日]
  6. 人脸分割 人脸解析 源码推荐
  7. instance-based与model-based 区别
  8. Solaris 10绝非儿戏
  9. java web微服务是什么_java微服务是什么
  10. Docker nginx部署阿里https(最新的方案)
  11. StringEscapeUtils类的使用
  12. 揭秘阿里云 RTS SDK 是如何实现直播降低延迟和卡顿
  13. 交际过程的两个基本环节_跨文化交际学概论笔记(二)
  14. 【面向对象】面向对象程序设计测试题12-设计模式测试题
  15. 付出与收获对等的自然法则,执行力离开去做马上去做
  16. ViewPager左右滑动
  17. 应用phpexcel导出excel文件后打不开的问题解决方法
  18. notepad++批量操作笔记(持续更新..)
  19. 人脸识别主要算法原理
  20. IDC发布中国AI云服务市场报告 百度智能云排名第一

热门文章

  1. TMS320C6748_UART_EDMA
  2. 智慧景区整体规划建设运营解决方案
  3. html中怎样变英文月份,JS中文月份转化为英文月份
  4. python提交淘宝订单_python实现同步淘宝客订单到本地数据库
  5. wfilters小波滤波器
  6. websocket系列:基于spring-boot-starter-websocket实现
  7. HDU 1488(Flavius Josephus Reloaded)
  8. 解决xshell无法登陆以及网络配置排错
  9. 项目33-教师兼干部类
  10. MATLAB 不断计算100以内加减法