随着电子商务和智能物流系统的日益发展,自动包装系统的应用日益广泛,订单包装码垛的垛型对包装的稳定性、空间利用率、效率具有较大影响。包装码垛垛型计算本质为NP问题,同时电子商务中涉及的订单数量很大,难以在有限的较短时间内计算出所有订单的最优包装垛型,实际应用中通常会采用近似算法、启发式方法或针对特定实例的快速算法计算包装垛型。因此,需要设计出良好的包装垛型提高系统效率。
卷烟配送中心在接收到客户订单后,订单处理系统根据用户的送货顺序自动将每个客户订单所需要的卷烟按分拣顺序分拣到条烟输送皮带上,条烟输送皮带将条烟输送到包装机,包装机的监控系统根据来烟的顺序和形状计算垛型,码垛模块按照计算好的垛型数据执行码垛动作,码好的条烟垛由烟垛输送模块输送到裹膜包装模块完成烟垛的包装,条烟来料和码垛模块的执行情况可参考视频“附件1:并联机器人码垛.mp4”。
如图1和图2所示为包装垛型的两个实例,图中的数字为码垛机械手从条烟输送皮带上抓取条烟,将条烟放置到码垛空间中的次序编号,图中条烟的尺寸反映条烟的实际尺寸,码垛机械手每次可以抓取1条或2条卷烟。

图1包装垛型实例1

图2包装垛型实例2
码垛空间为长:400mm,宽:440mm,高:140mm;码垛空间中条烟的长度方向和码垛空间的长度方向一致,只放置1条;条烟的宽度方向和码垛空间的宽度方向一致,可以放置多条;条烟的高度方向和码垛空间的高度方向一致,可以放置多层。因此,垛型计算实际为二维空间的垛型计算,即:在宽440mm,高140mm的矩形空间中如何放置各种宽度和高度不同的条烟。
码垛计算需要符合以下全部规则:
1、码垛空间为长:400mm,宽:440mm,高:140mm;
2、码垛的条烟不可超出码垛空间,并且在宽度方向上条烟距离码垛空间的边界至少要有5mm的距离。
3、码垛机械手每次可以抓取1条或2条卷烟;只有相邻的两条卷烟高度相差<=1mm时才能1次抓取2条;1次抓取2条卷烟时,2条卷烟之间无间隙;宽度方向上不同次抓取的卷烟之间至少要有5mm的间距。
4、码垛中条烟下面的悬空部分在宽度方向上不能大于20mm;
5、包装来料数据中的订单顺序和来料顺序不可调整,码垛机械手必须按严格次序抓取;
6、不同订单的条烟不可包装在同一个包装中;
7、一个订单中的条烟较多时可以拆分为多个包装。
设计任务
1、针对附件中的物料尺寸数据(“附件2:物料尺寸数据.xls”)和包装来料数据(“附件3:包装来料数据.xls”),编写符合码垛计算规则的包装码垛算法,输出并保存码垛数据:码垛数据至少要包含:码垛号、码垛机械手抓取顺序号、订单顺序号、来料顺序号、卷烟名称、抓取数量;
2、编写程序统计针对附件中的物料尺寸数据和包装来料数据,计算码垛算法程序的运行时间、码垛数量、机械手抓取次数;
3、选取或输入码垛号,显示该码垛号的垛型图形,图形中显示的信息不少于图1包装垛型实例中的信息。
分组说明
1、比赛以团队形式进行,每队人数2-3人。仅限选修本学期《高级程序设计与实践》课程的人员相互组队,且主体编程语言必须使用C++面向对象编程(允许混合调用其他语言的程序),图形编程可参考//easyx.cn/;其他人员自由组队且编程语言不受限制。
2、比赛时间:自发布之日起,作品提交截止日期为6月1日晚;
3、提交要求:
每支队伍提交一个压缩包,由各班班长负责收齐并提交给学院李秀洋老师,邮箱为[email protected],对于跨班组队的队伍,提交给组长所在班级的班长。
压缩包内内容必须包含:
①“算法及程序设计报告”②“分工说明(每个组员的姓名、班级、学号和在项目中的工作描述)”③“源代码包”④“执行文件及资源包”
压缩包命名为“队名+队长名.zip”;
提交时请认真核对以上内容,如果有缺失将直接影响参评资格。
本题目为开放性题目,如有没有明确定义的地方,可以自由进行合理假设,宗旨是体现创意和编程能力,详情请在相应的文档中着重说明,以备专家评判。