一种基于组合启发式的三维集装箱装箱方法与流程

文档序号:17701782发布日期:2019-05-17 22:46阅读:348来源:国知局
一种基于组合启发式的三维集装箱装箱方法与流程

本发明涉及一种三维集装箱装箱方法,尤其是涉及一种基于组合启发式的三维集装箱装箱方法。



背景技术:

目前,三维集装箱装箱问题通常描述为:如何将给定外部尺寸以及装箱要求(头装入、尾装入、携带托盘装入、上方不能放置其他货物装入和普通装入)的多件货物,装入一个长、宽和高已知的长方形集装箱(装载总体积已知)中,且货物之间互不发生嵌入关系,最终使装入集装箱中货物的总体积最大,此时集装箱的装载率最大。三维集装箱装箱问题是物流领域的经典问题,研究如何提高集装箱空间利用率,从而降低用户成本,提高用户利润,具有重要意义。

三维集装箱装箱问题是一典型的np(非确定性多项式,non-deterministicpolynomial,缩写np)难问题,传统的方法通常是采用精确算法求解该类问题。但是传统的精确算法只适合解决小规模、货物种类较少的三维集装箱问题,但是在实际应用中货物数量规模较大、货物种类较多、约束条件多时,容易发生“组合爆炸”的现象,很难在有限的时间内求得最优解。因此,目前国内外有学者将遗传算法、禁忌算法或者模拟退火算法应用于该问题的求解,在装箱效率方面取得了一定的成果。但是上述遗传算法、禁忌算法或者模拟退火算法这些算法在装箱过程中没有考虑货物不同的装箱要求,而在实际应用中,装入同一集装箱的货物经常会存在各种不同的装箱要求,当考虑这些因素时,上述这些算法的装箱率不高。



技术实现要素:

本发明所要解决的技术问题是提供一种当货物存在多种不同的装箱要求时,在保证装箱效率的基础上,装箱率较高的基于组合启发式的三维集装箱装箱方法。

本发明解决上述技术问题所采用的技术方案为:一种基于组合启发式的三维集装箱装箱方法,包括以下步骤:

(1)以三维集装箱的箱体内部的左前方位于下方的顶角点作为坐标原点,从坐标原点开始向正后方,沿着三维集装箱箱体内部的边缘棱线,设置y轴坐标系;从坐标原点开始向正右方向,沿着三维集装箱箱体内部的边缘棱线,设置x轴坐标系;从坐标原点开始向正上方向,沿着三维集装箱箱体内部的边缘棱线,设置z轴坐标系,构建得到三维坐标系,并根据三维集装箱箱体内部尺寸确定三维集装箱箱体在三维坐标系中x轴、y轴和z轴的装箱极限坐标值;

(2)制定货物在集装箱内的摆放规则,货物外部形状分别为正方体或者长方体:将正向放置采用摆放方向编码1表示,横向放置表采用摆放方向编码2表示,正竖向放置采用摆放方向编码3表示,横竖向放置采用摆放方向编码4表示,正侧向放置采用摆放方向编码5表示,横侧向放置采用摆放方向编码6表示;正向放置指的是货物放置时宽沿x轴方向,长沿y轴方向,横向放置指的是货物放置时长沿x轴方向,宽沿y轴方向,正竖向放置指的是货物放置时宽沿x轴方向,高沿y轴方向,横竖向放置指的是货物放置时高沿x轴方向,宽沿y轴方向,正侧向放置指的是货物放置时高沿x轴方向,长沿y轴方向,横侧向放置指的是货物放置时长沿x轴方向,高沿y轴方向;

(3)设置迭代总次数为t,t为大于等于20且小于等于100的整数,将当前迭代次数记为变量t,对变量t进行初始化,令变量t=0;

(4)对待装箱的货物进行第t次模拟装箱,待装箱的货物的外部形状分别为正方体或者长方体,货物的长、宽和高已知,具体模拟装箱过程为:

a对待装箱的货物的订单号数量进行统计,若待装箱的货物全部属于一个订单号,则将这些货物的摆放方向均设置为正向放置,将其摆放方向编码记为1,若待装箱的货物属于两个或者两个以上不同的订单号,则采用随机函数生成待装箱的货物的摆放方向编码,位于同一订单号的货物的摆放方向编码相同,位于不同订单号的货物的摆放方向编码相同或者不相同;

b统计待装箱的货物中必须头装入三维集装箱的货物件数,将其记为num1,若num1等于0,则表示不存在必须头装入三维集装箱的货物;若num1不等于0,则表示存在必须头装入三维集装箱的货物,采用随机函数随机生成这些货物装入三维集装箱的装箱顺序编号,其中必须头装入三维集装箱的货物的装箱顺序编号分别为1,2,3,…,num1;

c统计货物中必须携带托盘装入三维集装箱的货物件数,将其记为num2,若num2等于0,则表示不存在必须携带托盘装入三维集装箱的货物;若num2不等于0,则表示存在必须携带托盘装入三维集装箱的货物,采用随机函数随机生成这些货物装入三维集装箱的装箱顺序编号,其中必须携带托盘装入三维集装箱的货物的装箱顺序编号分别为num1+1,num1+2,num1+3,…,num1+num2;

d统计普通装入货物件数,将其记为num3,若num3等于0,则表示不存在普通货物;若num3不等于0,则表示存在普通装入货物,采用随机函数随机生成这些货物装入三维集装箱的装箱顺序编号,其中普通装入三维集装箱的货物的装箱顺序编号分别为num1+num2+1,num1+num2+2,num1+num2+3,…,num1+num2+num3;

e统计货物中必须尾装入三维集装箱的货物件数,将其记为num4,若num4等于0,则表示不存在必须尾装入三维集装箱的货物;若num4不等于0,则表示存在必须尾装入三维集装箱的货物,采用随机函数随机生成这些货物装入三维集装箱的装箱顺序编号,其中尾装入三维集装箱的货物的装箱顺序编号分别为num1+num2+num3+1,num1+num2+num3+2,num1+num2+num3+3,…,num1+num2+num3+num4;

f统计货物中其上方不能放置其他货物装入三维集装箱的货物件数,将其记为num5,若num5等于0,则表示不存在货物上方不能放置其他货物的货物;若num5不等于0,则表示存在货物上方不能放置其他货物的货物,采用随机函数随机生成这些货物装入三维集装箱的装箱顺序编号,其中其上方不能放置其他货物装入三维集装箱的货物的装箱顺序编号分别为num1+num2+num3+num4+1,num1+num2+num3+num4+2,num1+num2+num3+num4+3,…,num1+num2+num3+num4+num5;

g构建用于存放货物的放置起始点的档案库,放置起始点为位于三维坐标系中的三维坐标点;将三维坐标系的原点(0,0,0)放入档案库中;

h将第j号货物的长度记为lj,宽度记为wj,高度记为hj,将货物总数量记为m,m=num1+num2+num3+num4+num5,将装箱顺序编号为j的货物记为第j号货物,j=1,2,…,m;

i对第1号货物进行模拟装箱,具体过程为:

i-1获取第1号货物的摆放方向编码,确定第1号货物的摆放方向;

i-2根据第1号货物的摆放方向,从三维坐标系的原点(0,0,0)开始摆放第1号货物,确定第1号货物从原点出发沿x轴、y轴和z轴的三条边的边长,将沿x轴的一条边的边长记为x1,将沿y轴的一条边的边长记为y1,将沿z轴的一条边的边长记为z1;

i-3完成第1号货物的模拟装箱;

j对档案库进行第1次更新,具体过程为:

j-1将档案库中存放的坐标点(0,0,0)删除;

j-2将坐标点(x1,0,0)、(0,y1,0)、(0,0,z1)放入档案库中;

j-3规定坐标点(x1,0,0)、(0,y1,0)、(0,0,z1)的优先级,使(0,y1,0)的优先级高于(0,0,z1)的优先级,(0,0,z1)的优先级高于(x1,0,0)的优先级;

j-4对档案库第1次更新完成;

k、设置变量i并对其进行初始化,令变量i=2;

l、同时判断第1号货物至第i-1号货物中是否存在其上方不能放置其他货物的货物以及第i号货物是否为必须携带托盘装入三维集装箱的货物,如果第1号货物至第i-1号货物中不存在其上方不能放置其他货物的货物,且第i号货物不为必须携带托盘装入三维集装箱的货物,则进入步骤l-1,否则进入步骤l-2;

l-1、对第i号货物进行模拟装箱,具体过程为:

a获取第i号货物的摆放方向编码,确定第i号货物的摆放方向;

b根据第i号货物的摆放方向,按照档案库中坐标点的优先级从高到低对第i号货物进行试摆放,每摆放一次均进行如下判断:当前试摆放的坐标点是否为档案库中优先级最高坐标点、第i号货物从该坐标点出发沿x轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中x轴的装箱极限坐标值、第i号货物从该坐标点出发沿y轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中y轴的装箱极限坐标值以及第i号货物从该坐标点出发沿z轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中z轴的装箱极限坐标值;

c如果判断结果为三个坐标值都没有超出其对应的装箱极限坐标值,则该货物试摆放完成,将该货物从当前坐标点开始进行摆放;如果判断结果中当前试摆放的坐标点是档案库中优先级最高的坐标点,但是有至少一个坐标值超出其对应的装箱极限坐标值,则进入下一次试摆放;如果判断结果中当前试摆放的坐标点为档案库中优先级最低的坐标点,且有至少一个坐标值超出其对应的装箱极限坐标值,则第i号货物无法放入集装箱;

d如果第i号货物不能够放入集装箱中,则进行如下判断:

判定i是否等于m,如果i等于m,则判断t是否等于t,如果t等于t,那么进入步骤(5),如果t不等于t,则将当前档案库中所有的坐标点删除,采用t的当前值加1的和去更新t的值,返回步骤(4)继续进行下一次模拟装箱;如果i不等于m,则采用i的当前值加1得到的值更新i,返回步骤l进行下一次模拟装箱;

如果第i号货物能够放入集装箱中,则进行如下判断:

判定i是否等于m,如果i等于m,则判断t是否等于t,如果t等于t,那么进入步骤(5),如果t不等于t,则将当前档案库中所有的坐标点删除,采用t的当前值加1的和去更新t的值,返回步骤(4)继续进行下一次模拟装箱;如果i不等于m,则先对档案库进行更新后,采用i的当前值加1得到的值更新i,返回步骤l进行下一次模拟装箱,其中档案库更新的具体过程为:从档案库中删除第i号货物的摆放起始点对应的坐标点,并将第i号货物从摆放起始点出发与x轴、y轴和z轴方向平行的的三条边的另一个端点在三维坐标系中的坐标点放入档案库中,然后按照以下方法对档案库中存放的坐标点进行优先级排序:首先获取档案库中存放的坐标点的x轴坐标值,按照x轴坐标值从大到小赋予相应的坐标点优先级,x轴坐标值越大,优先级越小,当出现x轴坐标值相等的至少两个坐标点时,判断其z轴坐标值,z轴坐标值越大,优先级越小,如果出现z轴坐标值相等的至少两个坐标点时,判断其y轴坐标值,y轴坐标值越大,优先级越小,档案库更新完成;

l-2、对第i号货物进行模拟装箱,具体过程为:

s1获取第i号货物的摆放方向编码,确定第i号货物的摆放方向;

s2判断第i号货物是否为必须携带托盘装入三维集装箱的货物,如果为,则判断档案库中是否存在z轴坐标值为0的坐标点,如果不存在,则第i号货物无法放入集装箱,进入步骤s5,如果存在,则进入步骤s3-1;如果不为,则进入步骤s3-2;

s3-1根据第i号货物的摆放方向,选取档案库中存在的z轴坐标值为0的坐标点,按照这些坐标点的优先级从高到低对第i号货物进行试摆放,每摆放一次均进行如下判断:当前试摆放的坐标点是否为这些坐标点中优先级最高的坐标点、第i号货物从该坐标点出发沿x轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中x轴的装箱极限坐标值、第i号货物从该坐标点出发沿y轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中y轴的装箱极限坐标值以及第i号货物从该坐标点出发沿z轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中z轴的装箱极限坐标值;

s3-2根据第i号货物的摆放方向,按照档案库中坐标点的优先级从高到低对第i号货物进行试摆放,每摆放一次均进行如下判断:当前试摆放的坐标点是否为档案库中优先级最高的坐标点、第i号货物从该坐标点出发沿x轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中x轴的装箱极限坐标值、第i号货物从该坐标点出发沿y轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中y轴的装箱极限坐标值、第i号货物从该坐标点出发沿z轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中z轴的装箱极限坐标值;

s4当第i号货物为必须携带托盘装入三维集装箱的货物,如果判断结果为三个坐标值都没有超出其对应的装箱极限坐标值,则该货物试摆放完成,将该货物从当前坐标点开始进行摆放;如果判断结果中当前试摆放的坐标点是这些坐标点中优先级最高的坐标点,但是有至少一个坐标值超出其对应的装箱极限坐标值,则进入下一次试摆放,如果判断结果中当前试摆放的坐标点为这些坐标点中优先级最低的坐标点,且有至少一个坐标值超出其对应的装箱极限坐标值,则第i号货物无法放入集装箱;

当第i号货物不为必须携带托盘装入三维集装箱的货物,如果判断结果为三个坐标值都没有超出其对应的装箱极限坐标值,再判断当前坐标点的z轴坐标值是否等于0,如果等于0,则该货物试摆放完成,将该货物从当前坐标点开始进行摆放,如果不等于0,则判断按照当前坐标点摆放位置下方货物是否为上方不能放置其他货物的货物,如果不是则该货物试摆放完成,将该货物从当前坐标点开始进行摆放,如果是,该货物不能摆放于当前坐标点,则判断判断结果中当前试摆放的坐标点是否为优先级最低的坐标点,如果是,则第i号货物无法放入集装箱,如果不是,则进入下一次试摆放;如果判断结果中当前试摆放的坐标点是这些坐标点中优先级最高的坐标点,但是有至少一个坐标值超出其对应的装箱极限坐标值,则进入下一次试摆放;如果判断结果中当前试摆放的坐标点为这些坐标点中优先级最低的坐标点,且有至少一个坐标值超出其对应的装箱极限坐标值,则第i号货物无法放入集装箱;

s5如果第i号货物不能够放入集装箱中,则进行如下判断:

判定i是否等于m,如果i等于m,则判断t是否等于t,如果t等于t,那么进入步骤(5),如果t不等于t,则将当前档案库中所有的坐标点删除,采用t的当前值加1的和去更新t的值,返回步骤(4)继续进行下一次模拟装箱;如果i不等于m,则采用i的当前值加1得到的值更新i,返回步骤l进行下一次模拟装箱;

如果第i号货物能够放入集装箱中,则进行如下判断:

判定i是否等于m,如果i等于m,则判断t是否等于t,如果t等于t,那么进入步骤(5),如果t不等于t,则将当前档案库中所有的坐标点删除,采用t的当前值加1的和去更新t的值,返回步骤(4)继续进行下一次模拟装箱;如果i不等于m,则先对档案库进行更新后,采用i的当前值加1得到的值更新i,返回步骤l进行下一次模拟装箱,其中档案库更新的具体过程为:从档案库中删除第i号货物的摆放起始点对应的坐标点,并将第i号货物从摆放起始点出发与x轴、y轴和z轴方向平行的的三条边的另一个端点在三维坐标系中的坐标点放入档案库中,然后按照以下方法对档案库中存放的坐标点进行优先级排序:首先获取档案库中存放的坐标点的x轴坐标值,按照x轴坐标值从大到小赋予相应的坐标点优先级,x轴坐标值越大,优先级越小,当出现x轴坐标值相等的至少两个坐标点时,判断其z轴坐标值,z轴坐标值越大,优先级越小,如果出现z轴坐标值相等的至少两个坐标点时,判断其y轴坐标值,y轴坐标值越大,优先级越小,档案库更新完成;

(5)分别统计t次模拟装箱过程中装入三维集装箱内的货物的总体积,并比较各个总体积的大小,输出装入三维集装箱内的货物的总体积最大的模拟装箱过程中的各货物的放置起始点,按照这些摆放起始点将对应的货物装入集装箱,完成集装箱装箱。

与现有技术相比,本发明的优点在于通过基于三维集装箱的箱体构建三维坐标系,制定货物在集装箱内的摆放规则,根据货物不同的装箱要求多次模拟货物的装箱过程,分别统计多次模拟装箱过程中装入三维集装箱内的货物的总体积,并比较各个总体积的大小,输出装入三维集装箱内的货物的总体积最大的模拟装箱过程中的各货物的放置起始点,按照这些摆放起始点将对应的货物装入集装箱,从而实现集装箱装箱,由此本发明的方法能够根据不同装箱要求的货物,在较短的时间内,给出三维集装箱装箱率最高的货物装箱方案,在保证装箱效率的基础上,装箱率较高。

附图说明

图1为本发明基于组合启发式的三维集装箱装箱方法中构建的三维坐标系。

具体实施方式

以下结合附图实施例对本发明作进一步详细描述。

实施例:一种基于组合启发式的三维集装箱装箱方法,包括以下步骤:

(1)以三维集装箱的箱体内部的左前方位于下方的顶角点作为坐标原点,从坐标原点开始向正后方,沿着三维集装箱箱体内部的边缘棱线,设置y轴坐标系;从坐标原点开始向正右方向,沿着三维集装箱箱体内部的边缘棱线,设置x轴坐标系;从坐标原点开始向正上方向,沿着三维集装箱箱体内部的边缘棱线,设置z轴坐标系,构建得到三维坐标系,并根据三维集装箱箱体内部尺寸确定三维集装箱箱体在三维坐标系中x轴、y轴和z轴的装箱极限坐标值,其中三维坐标系的示意图如图1所示;

(2)制定货物在集装箱内的摆放规则,货物外部形状分别为正方体或者长方体:将正向放置采用摆放方向编码1表示,横向放置表采用摆放方向编码2表示,正竖向放置采用摆放方向编码3表示,横竖向放置采用摆放方向编码4表示,正侧向放置采用摆放方向编码5表示,横侧向放置采用摆放方向编码6表示;正向放置指的是货物放置时宽沿x轴方向,长沿y轴方向,横向放置指的是货物放置时长沿x轴方向,宽沿y轴方向,正竖向放置指的是货物放置时宽沿x轴方向,高沿y轴方向,横竖向放置指的是货物放置时高沿x轴方向,宽沿y轴方向,正侧向放置指的是货物放置时高沿x轴方向,长沿y轴方向,横侧向放置指的是货物放置时长沿x轴方向,高沿y轴方向;

(3)设置迭代总次数为t,t为大于等于20且小于等于100的整数,将当前迭代次数记为变量t,对变量t进行初始化,令变量t=0;

(4)对待装箱的货物进行第t次模拟装箱,待装箱的货物的外部形状分别为正方体或者长方体,货物的长、宽和高已知,具体模拟装箱过程为:

a对待装箱的货物的订单号数量进行统计,若待装箱的货物全部属于一个订单号,则将这些货物的摆放方向均设置为正向放置,将其摆放方向编码记为1,若待装箱的货物属于两个或者两个以上不同的订单号,则采用随机函数生成待装箱的货物的摆放方向编码,位于同一订单号的货物的摆放方向编码相同,位于不同订单号的货物的摆放方向编码相同或者不相同;

b统计待装箱的货物中必须头装入三维集装箱的货物件数,将其记为num1,若num1等于0,则表示不存在必须头装入三维集装箱的货物;若num1不等于0,则表示存在必须头装入三维集装箱的货物,采用随机函数随机生成这些货物装入三维集装箱的装箱顺序编号,其中必须头装入三维集装箱的货物的装箱顺序编号分别为1,2,3,…,num1;

c统计货物中必须携带托盘装入三维集装箱的货物件数,将其记为num2,若num2等于0,则表示不存在必须携带托盘装入三维集装箱的货物;若num2不等于0,则表示存在必须携带托盘装入三维集装箱的货物,采用随机函数随机生成这些货物装入三维集装箱的装箱顺序编号,其中必须携带托盘装入三维集装箱的货物的装箱顺序编号分别为num1+1,num1+2,num1+3,…,num1+num2;

d统计普通装入货物件数,将其记为num3,若num3等于0,则表示不存在普通货物;若num3不等于0,则表示存在普通装入货物,采用随机函数随机生成这些货物装入三维集装箱的装箱顺序编号,其中普通装入三维集装箱的货物的装箱顺序编号分别为num1+num2+1,num1+num2+2,num1+num2+3,…,num1+num2+num3;

e统计货物中必须尾装入三维集装箱的货物件数,将其记为num4,若num4等于0,则表示不存在必须尾装入三维集装箱的货物;若num4不等于0,则表示存在必须尾装入三维集装箱的货物,采用随机函数随机生成这些货物装入三维集装箱的装箱顺序编号,其中尾装入三维集装箱的货物的装箱顺序编号分别为num1+num2+num3+1,num1+num2+num3+2,num1+num2+num3+3,…,num1+num2+num3+num4;

f统计货物中其上方不能放置其他货物装入三维集装箱的货物件数,将其记为num5,若num5等于0,则表示不存在货物上方不能放置其他货物的货物;若num5不等于0,则表示存在货物上方不能放置其他货物的货物,采用随机函数随机生成这些货物装入三维集装箱的装箱顺序编号,其中其上方不能放置其他货物装入三维集装箱的货物的装箱顺序编号分别为num1+num2+num3+num4+1,num1+num2+num3+num4+2,num1+num2+num3+num4+3,…,num1+num2+num3+num4+num5;

g构建用于存放货物的放置起始点的档案库,放置起始点为位于三维坐标系中的三维坐标点;将三维坐标系的原点(0,0,0)放入档案库中;

h将第j号货物的长度记为lj,宽度记为wj,高度记为hj,将货物总数量记为m,m=num1+num2+num3+num4+num5,将装箱顺序编号为j的货物记为第j号货物,j=1,2,…,m;

i对第1号货物进行模拟装箱,具体过程为:

i-1获取第1号货物的摆放方向编码,确定第1号货物的摆放方向;

i-2根据第1号货物的摆放方向,从三维坐标系的原点(0,0,0)开始摆放第1号货物,确定第1号货物从原点出发沿x轴、y轴和z轴的三条边的边长,将沿x轴的一条边的边长记为x1,将沿y轴的一条边的边长记为y1,将沿z轴的一条边的边长记为z1;

i-3完成第1号货物的模拟装箱;

j对档案库进行第1次更新,具体过程为:

j-1将档案库中存放的坐标点(0,0,0)删除;

j-2将坐标点(x1,0,0)、(0,y1,0)、(0,0,z1)放入档案库中;

j-3规定坐标点(x1,0,0)、(0,y1,0)、(0,0,z1)的优先级,使(0,y1,0)的优先级高于(0,0,z1)的优先级,(0,0,z1)的优先级高于(x1,0,0)的优先级;

j-4对档案库第1次更新完成;

k、设置变量i并对其进行初始化,令变量i=2;

l、同时判断第1号货物至第i-1号货物中是否存在其上方不能放置其他货物的货物以及第i号货物是否为必须携带托盘装入三维集装箱的货物,如果第1号货物至第i-1号货物中不存在其上方不能放置其他货物的货物,且第i号货物不为必须携带托盘装入三维集装箱的货物,则进入步骤l-1,否则进入步骤l-2;

l-1、对第i号货物进行模拟装箱,具体过程为:

a获取第i号货物的摆放方向编码,确定第i号货物的摆放方向;

b根据第i号货物的摆放方向,按照档案库中坐标点的优先级从高到低对第i号货物进行试摆放,每摆放一次均进行如下判断:当前试摆放的坐标点是否为档案库中优先级最高坐标点、第i号货物从该坐标点出发沿x轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中x轴的装箱极限坐标值、第i号货物从该坐标点出发沿y轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中y轴的装箱极限坐标值以及第i号货物从该坐标点出发沿z轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中z轴的装箱极限坐标值;

c如果判断结果为三个坐标值都没有超出其对应的装箱极限坐标值,则该货物试摆放完成,将该货物从当前坐标点开始进行摆放;如果判断结果中当前试摆放的坐标点是档案库中优先级最高的坐标点,但是有至少一个坐标值超出其对应的装箱极限坐标值,则进入下一次试摆放;如果判断结果中当前试摆放的坐标点为档案库中优先级最低的坐标点,且有至少一个坐标值超出其对应的装箱极限坐标值,则第i号货物无法放入集装箱;

d如果第i号货物不能够放入集装箱中,则进行如下判断:

判定i是否等于m,如果i等于m,则判断t是否等于t,如果t等于t,那么进入步骤(5),如果t不等于t,则将当前档案库中所有的坐标点删除,采用t的当前值加1的和去更新t的值,返回步骤(4)继续进行下一次模拟装箱;如果i不等于m,则采用i的当前值加1得到的值更新i,返回步骤l进行下一次模拟装箱;

如果第i号货物能够放入集装箱中,则进行如下判断:

判定i是否等于m,如果i等于m,则判断t是否等于t,如果t等于t,那么进入步骤(5),如果t不等于t,则将当前档案库中所有的坐标点删除,采用t的当前值加1的和去更新t的值,返回步骤(4)继续进行下一次模拟装箱;如果i不等于m,则先对档案库进行更新后,采用i的当前值加1得到的值更新i,返回步骤l进行下一次模拟装箱,其中档案库更新的具体过程为:从档案库中删除第i号货物的摆放起始点对应的坐标点,并将第i号货物从摆放起始点出发与x轴、y轴和z轴方向平行的的三条边的另一个端点在三维坐标系中的坐标点放入档案库中,然后按照以下方法对档案库中存放的坐标点进行优先级排序:首先获取档案库中存放的坐标点的x轴坐标值,按照x轴坐标值从大到小赋予相应的坐标点优先级,x轴坐标值越大,优先级越小,当出现x轴坐标值相等的至少两个坐标点时,判断其z轴坐标值,z轴坐标值越大,优先级越小,如果出现z轴坐标值相等的至少两个坐标点时,判断其y轴坐标值,y轴坐标值越大,优先级越小,档案库更新完成;

l-2、对第i号货物进行模拟装箱,具体过程为:

s1获取第i号货物的摆放方向编码,确定第i号货物的摆放方向;

s2判断第i号货物是否为必须携带托盘装入三维集装箱的货物,如果为,则判断档案库中是否存在z轴坐标值为0的坐标点,如果不存在,则第i号货物无法放入集装箱,进入步骤s5,如果存在,则进入步骤s3-1;如果不为,则进入步骤s3-2;

s3-1根据第i号货物的摆放方向,选取档案库中存在的z轴坐标值为0的坐标点,按照这些坐标点的优先级从高到低对第i号货物进行试摆放,每摆放一次均进行如下判断:当前试摆放的坐标点是否为这些坐标点中优先级最高的坐标点、第i号货物从该坐标点出发沿x轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中x轴的装箱极限坐标值、第i号货物从该坐标点出发沿y轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中y轴的装箱极限坐标值以及第i号货物从该坐标点出发沿z轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中z轴的装箱极限坐标值;

s3-2根据第i号货物的摆放方向,按照档案库中坐标点的优先级从高到低对第i号货物进行试摆放,每摆放一次均进行如下判断:当前试摆放的坐标点是否为档案库中优先级最高的坐标点、第i号货物从该坐标点出发沿x轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中x轴的装箱极限坐标值、第i号货物从该坐标点出发沿y轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中y轴的装箱极限坐标值、第i号货物从该坐标点出发沿z轴的一条边的另一个端点的坐标值是否超出三维集装箱箱体在三维坐标系中z轴的装箱极限坐标值;

s4当第i号货物为必须携带托盘装入三维集装箱的货物,如果判断结果为三个坐标值都没有超出其对应的装箱极限坐标值,则该货物试摆放完成,将该货物从当前坐标点开始进行摆放;如果判断结果中当前试摆放的坐标点是这些坐标点中优先级最高的坐标点,但是有至少一个坐标值超出其对应的装箱极限坐标值,则进入下一次试摆放,如果判断结果中当前试摆放的坐标点为这些坐标点中优先级最低的坐标点,且有至少一个坐标值超出其对应的装箱极限坐标值,则第i号货物无法放入集装箱;

当第i号货物不为必须携带托盘装入三维集装箱的货物,如果判断结果为三个坐标值都没有超出其对应的装箱极限坐标值,再判断当前坐标点的z轴坐标值是否等于0,如果等于0,则该货物试摆放完成,将该货物从当前坐标点开始进行摆放,如果不等于0,则判断按照当前坐标点摆放位置下方货物是否为上方不能放置其他货物的货物,如果不是则该货物试摆放完成,将该货物从当前坐标点开始进行摆放,如果是,该货物不能摆放于当前坐标点,则判断判断结果中当前试摆放的坐标点是否为优先级最低的坐标点,如果是,则第i号货物无法放入集装箱,如果不是,则进入下一次试摆放;如果判断结果中当前试摆放的坐标点是这些坐标点中优先级最高的坐标点,但是有至少一个坐标值超出其对应的装箱极限坐标值,则进入下一次试摆放;如果判断结果中当前试摆放的坐标点为这些坐标点中优先级最低的坐标点,且有至少一个坐标值超出其对应的装箱极限坐标值,则第i号货物无法放入集装箱;

s5如果第i号货物不能够放入集装箱中,则进行如下判断:

判定i是否等于m,如果i等于m,则判断t是否等于t,如果t等于t,那么进入步骤(5),如果t不等于t,则将当前档案库中所有的坐标点删除,采用t的当前值加1的和去更新t的值,返回步骤(4)继续进行下一次模拟装箱;如果i不等于m,则采用i的当前值加1得到的值更新i,返回步骤l进行下一次模拟装箱;

如果第i号货物能够放入集装箱中,则进行如下判断:

判定i是否等于m,如果i等于m,则判断t是否等于t,如果t等于t,那么进入步骤(5),如果t不等于t,则将当前档案库中所有的坐标点删除,采用t的当前值加1的和去更新t的值,返回步骤(4)继续进行下一次模拟装箱;如果i不等于m,则先对档案库进行更新后,采用i的当前值加1得到的值更新i,返回步骤l进行下一次模拟装箱,其中档案库更新的具体过程为:从档案库中删除第i号货物的摆放起始点对应的坐标点,并将第i号货物从摆放起始点出发与x轴、y轴和z轴方向平行的的三条边的另一个端点在三维坐标系中的坐标点放入档案库中,然后按照以下方法对档案库中存放的坐标点进行优先级排序:首先获取档案库中存放的坐标点的x轴坐标值,按照x轴坐标值从大到小赋予相应的坐标点优先级,x轴坐标值越大,优先级越小,当出现x轴坐标值相等的至少两个坐标点时,判断其z轴坐标值,z轴坐标值越大,优先级越小,如果出现z轴坐标值相等的至少两个坐标点时,判断其y轴坐标值,y轴坐标值越大,优先级越小,档案库更新完成;

(5)分别统计t次模拟装箱过程中装入三维集装箱内的货物的总体积,并比较各个总体积的大小,输出装入三维集装箱内的货物的总体积最大的模拟装箱过程中的各货物的放置起始点,按照这些摆放起始点将对应的货物装入集装箱,完成集装箱装箱。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1