舱位分配优化方法、装置、计算机设备和存储介质与流程

文档序号:30387275发布日期:2022-06-11 11:25阅读:208来源:国知局
舱位分配优化方法、装置、计算机设备和存储介质与流程

1.本技术涉及智能物流技术领域,特别是涉及一种舱位分配优化方法、装置、计算机设备和存储介质。


背景技术:

2.随着生活水平的提高,目前越来越多的货物需要多种货运手段运输至各地,例如可以通过公路运输、水路(轮船)运输、铁路运输以及航空运输等,货运量的显著增加让人们思考如何采用对运货舱位进行合理分配以使最大显著利用货运空间,提高物流运输效率。在传统货运手段中,由于航空运输费用高且货运空间有限,其对舱位分配优化尤为迫切。
3.具体来说,航空运输中舱位分配是为一个航空运输的所有货物分配装载舱位,一个舱位内放置一个或多个用来装载货物的航空集装器,航空集装器具有不同的形状、装载空间和装载重量。因此,航空运输的舱位分配优化涉及多个异型箱体的装箱优化。常规的舱位分配方案主要采用人工经验法制定,但这种舱位分配方法无法给出具体的舱位分配结果和具体调整建议。
4.在保障货物运输安全的基础上,对常规的舱位分配方案进行优化,得到具体舱位分配结果和调整建议,可以使舱位分配方案更加合理,对于提高运输载具的运输装载率和保障货物运输时效有非常重要的意义。


技术实现要素:

5.基于此,有必要针对上述技术问题,提供一种可以促使舱位分配更加合理的舱位分配优化方法、装置、计算机设备和存储介质。
6.一种舱位分配优化方法,方法包括:
7.获取初始舱位分配方案;
8.识别初始舱位分配方案中当前装载区域以及当前装载区域对应的装载货物;
9.当基于空间降维装箱检测、预判当前装载区域无法装载完对应的装载货物时,采用遗传算法对当前装载区域的装载方案进行优化,得到当前装载区域的最优装载情况;
10.将初始舱位分配方案中下一个装载区域重新作为当前装载区域,返回识别初始舱位分配方案中当前装载区域以及当前装载区域对应的装载货物的步骤,直至各装载区域均已完成装载预判断和装载方案的优化,归集各装载区域的最优装载情况,得到舱位分配方案优化结果。
11.在其中一个实施例中,上述舱位分配优化方法还包括:
12.获取当前装载区域对应的货物序列以及当前装载区域对应的集装器序列,货物序列以及集装器序列按照对应体积降序排列;
13.迭代更新集装器序列中集装器对应的可放置点列表,对货物序列中货物进行空间降维装箱检测,并根据可放置点列表,判断货物序列中货物是否均存在可放置点,可放置点列表中包括可放置点,可放置点为货物允许放入集装器中的点位;
14.根据每个货物在当前装载区域的集装器中是否存在可放置点,预判当前装载区域是否可以装载完对应的货物。
15.在其中一个实施例中,迭代更新集装器序列中集装器对应的可放置点列表,对货物序列中货物进行空间降维装箱检测,并根据放置点列表,判断货物序列中货物是否均存在可放置点包括:
16.选择集装器序列中初始集装器,建立初始集装器的三维空间坐标系,以集装器中预设目标角作为三维空间坐标系的原点,创建初始集装器对应的可放置点列表,可放置点列表中包括坐标系原点的可放置点;
17.在可放置点列表中搜索当前货物的可放置点;并对当前货物做空间降维装箱检测,确定当前货物对应的可放置点和摆放姿态;
18.若当前货物存在对应的可放置点和摆放姿态,使当前货物可以装入初始集装器中,则将当前货物以对应的摆放姿态放入初始集中器中对应的可放置点、并在货物序列中删除当前货物,根据货物与三维空间坐标系中坐标轴在预设方向上的交点,生成货物序列中下一件货物在初始集装器中的三个可放置点,将三个可放置点加入初始集装器的可放置点列表,并将当前货物占用的可放置点删除,以更新可放置点列表;
19.当初始集装器未装满时,将下一件货物重新作为当前货物,返回在可放置点列表中搜索当前货物对应的可放置点的步骤;
20.当初始集装器装满时,选择集装器序列中下一集装器,将下一集装器重新作为初始集装器,返回建立初始集装器的三维空间坐标系,以集装器中预设目标角作为三维空间坐标系的原点的步骤;
21.判断货物序列中货物是否均存在可放置点。
22.在其中一个实施例中,空间降维检测包括:
23.获取货物以一种摆放姿态放置于集装器可放置点时,在x轴、y轴以及z轴方向上的取值;
24.若x轴、y轴以及z轴方向上的取值均不大于对应的集装器长、宽以及高时,则判断货物是否超出集装器的内部轮廓;
25.若货物未超出集装器的内部轮廓,则判断货物与已装载货物之间是否存在空间重合;
26.若无重合,则判定当前货物的摆放姿态可行。
27.在其中一个实施例中,采用遗传算法对当前装载区域的装载方案进行优化包括:
28.将当前装载区域内所有待优化集装器中的货物与当前装载区域未装载的货物合并,将合并后的货物集合中货物按体积降序排列,得到货物的初始装箱顺序;
29.初始化进化代数,读取预设最大进化代数g,根据货物的初始装箱顺序,构建初始染色体以及初始种群p(0);
30.获取种群p(t)中个体的适应度,根据个体的适应度保留最优个体,适应度为装载区域各待优化集装器的货物装载体积与装载区域各待优化集装器的可装载容积之间的比值;
31.采用轮盘赌算法选择m个个体复制到下一代种群,并对下一代种群依次进行交叉操作、变异操作,生成下一代种群p(t+1);
32.将下一代种群p(t+1)重新作为种群p(t),进化代数加1,返回获取种群p(t)中个体的适应度,根据个体的适应度保留最优个体的步骤,直至进化代数累计等于预设最大进化代数g,输出最优个体的装载情况。
33.在其中一个实施例中,根据货物的初始装箱顺序构建初始染色体以及初始种群p(0)包括:
34.采用初始染色体表示货物的初始装箱顺序,得到初始染色体序列;
35.将初始染色体序列划分为大件货物区和小件货物区;
36.根据预设改变原则,改变初始染色体顺序,构建初始种群p(0),其中预设改变原则为对大件货物区采取较小范围随机改变初始染色体顺序、且对小件货物区采取较大范围随机改变初始染色体顺序。
37.在其中一个实施例中,交叉操作包括:
38.从种群p(t)随机取(n-m)/2对个体,作为父代个体,其中n为种群p(t)中包含的个体数据;
39.读取预设交叉概率pc,对每一对父代个体,生成一个随机数randc∈[0,1];
[0040]
若randc≤pc,则对两个父代个体染色体的大件货物区进行k次单点交叉操作,得到两个子代个体;
[0041]
若randc>pc,则复制两个父代个体作为子代个体;
[0042]
交叉操作生成n-m个子代个体。
[0043]
在其中一个实施例中,变异操作包括:
[0044]
读取预设变异概率pm;
[0045]
对交叉操作生成的每一个子代个体,在染色体的小件货物区随机选择一段连续的货物序列,生成一个随机数randm∈[0,1];
[0046]
若randm≤pm,则对选择的这段货物序列进行随机排序。
[0047]
一种舱位分配优化装置,装置包括:
[0048]
初始方案获取模块,用于获取初始舱位分配方案;
[0049]
识别模块,用于识别初始舱位分配方案中当前装载区域以及当前装载区域对应的装载货物;
[0050]
优化模块,用于当基于空间降维装箱检测、预判当前装载区域无法装载完对应的装载货物时,采用遗传算法对当前装载区域的装载方案进行优化,得到当前装载区域的最优装载情况;
[0051]
迭代模块,用于将初始舱位分配方案中下一个装载区域重新作为当前装载区域,控制识别模块以及优化模块重新执行对应的功能,直至各装载区域均已完成装载预判断和装载方案的优化,归集各装载区域的最优装载情况,得到舱位分配方案优化结果。
[0052]
一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述的舱位分配优化方法。
[0053]
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的舱位分配优化方法。
[0054]
上述舱位分配优化方法、装置、计算机设备和存储介质,获取初始舱位分配方案,识别初始舱位分配方案中当前装载区域以及当前装载区域对应的装载货物,基于空间降维
装箱检测,预判当前装载区域是否可以装载完对应的装载货物,若无法装载完时,采用遗传算法对当前装载区域的装载方案进行优化,得到当前装载区域的最优装载情况;选择下一个装载区域,重新执行上述的基于空间降维装箱检测的装载预判断以及基于遗传算法的装载方案优化,直至所有装载区域都处理完毕。整个过程中,针对初始舱位分配方案进行基于空间降维装箱检测的装载预判断以及基于遗传算法的装载方案优化,优化初始舱位分配方案中存在的不合理装载方案,得到各装载区域的最优装载情况,可以促使舱位分配更加合理。
附图说明
[0055]
图1为一个实施例中舱位分配优化方法的应用环境图;
[0056]
图2为一个实施例中舱位分配优化方法的流程示意图;
[0057]
图3为装载区域、舱位和集装器的包含关系,以及货物和装载区域的对应关系示意图;
[0058]
图4为集装器的货物装载体积和可装载容积示意图;
[0059]
图5为一个实施例中预判当前装载区域是否可以装完对应货物的流程示意图;
[0060]
图6为一个实施例中上述图5中s540的子流程示意图;
[0061]
图7为集装器的三维空间坐标系和货物在集装器中的放置方式示意图;
[0062]
图8货物的摆放姿态示意图;
[0063]
图9初始染色体的生成过程示意图;
[0064]
图10随机生成初始种群的策略示意图;
[0065]
图11交叉操作中单点交叉操作示意图;
[0066]
图12变异操作示意图;
[0067]
图13其中一个应用实例中舱位分配优化方法流程示意图;
[0068]
图14为一个实施例中舱位分配优化装置的结构框图;
[0069]
图15为一个实施例中计算机设备的内部结构图。
具体实施方式
[0070]
为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
[0071]
本技术提供的舱位分配优化方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。终端102发送舱位分配优化请求至服务器104,服务器104响应终端102发送的舱位分配优化请求,获取本次舱位分配优化任务对应的初始舱位优化方案(该初始舱位优化方案可以是终端上传的,例如操作人员在终端102上操作,选择符合当前应用场景的初始舱位优化方案上传至服务器104),服务器104识别初始舱位分配方案中当前装载区域以及当前装载区域对应的装载货物,基于空间降维装箱检测,预判当前装载区域是否可以装载完对应的装载货物,若无法装载完时,采用遗传算法对当前装载区域的装载方案进行优化,得到当前装载区域的最优装载情况;选择下一个装载区域重新作为当前装载区域,重新执行上述的基于空间降维装箱检测的装载预判断以及基于遗传算
法的装载优化,直至所有装载区域都处理完毕,得到包含所有装载区域的最优装载情况的舱位分配方案优化结果,非必要的服务器104可以将最终得到的舱位分配方案优化结果推送至终端102。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。可以理解的是本技术舱位分配优化方法可以单独在终端上实现,操作人员在终端上进行操作,终端执行本技术舱位分配优化方法,推送舱位分配方案优化结果至操作人员。
[0072]
在一个实施例中,如图2所示,提供了一种舱位分配优化方法,以该方法应用于图1中的服务器104为例进行说明,包括以下步骤:
[0073]
s200:获取初始舱位分配方案。
[0074]
初始舱位分配方案是初始生成的方案,其可以是人工基于历史经验,针对当前应用场景下生成的舱位分配方案。初始舱位分配方案具体可以存储在服务器上,当需要进行舱位分配优化时,服务器直接读取已存储的初始舱位分配方案。进一步的,服务器可以将不同应用场景下的初始舱位分配方案发送至用户终端,由用户在终端上进行选择,用户自主选择符合当前场景下的初始舱位分配方案,并且在该初始舱位分配方案中录入的相关舱位、需装载货物、货物装载特殊需求等数据以进行配置,最后终端将配置完成的初始舱位分配方案上传至服务器,服务器获取符合用户需求的初始舱位分配方案,进入后续优化处理。
[0075]
具体来说,初始舱位分配方案可以是人工制定的舱位分配方案,本技术在应用于不同运输方式时,其对应的初始舱位分配方案是基于不同运输方式的经验、由人工制定的。需要注意的是,在本技术应用场景中有舱位和集装器,舱位和集装器是固定大小的,货物是放入到集装器中,存放有货物的集装器摆放到舱位中,舱位和集装器与运输工具的属性(主要尺寸大小)相关,其不随着运输货物而改变,例如舱位可以包括航班舱位、火车货运车厢;集装器可以包括航空运输的标准集装器、铁路运输中的集装箱等。本技术具体应用于航空运输时,具体航班舱位初始舱位分配方案的内容包括航班的多个装载区域、各装载区域的货物信息、航班的备装货物信息。装载区域是多个舱位的组合;货物可以是包装成长方体,尺寸不会发生形变;货物信息包含货物的长宽高和重量;备装货物是指可以不装入当前航班的货物。装载区域、舱位和集装器的包含关系,以及货物和装载区域的对应关系如图3所示。
[0076]
s400:识别初始舱位分配方案中当前装载区域以及当前装载区域对应的装载货物。
[0077]
当前装载区域并不特指哪一个装载区域,其指的是当前处理的装载区域。具体来说,针对初始舱位分配方案中的装载区域按照体积依次排序(优先的降序排列),得到装载区域队列,在最开始时,先识别装载区域队列中首个装载区域以及首个装载区域对应的装载货物,进入后续舱位分配优化,在完成首个装载区域舱位分配优化之后,再选择装载区域队列中首个装载区域的下一个装载区域(即第二个装载区域)继续进行后续舱位分配优化,以此循环直至所有装载区域均完成舱位分配优化。
[0078]
在实际应用中,识别初始舱位分配方案中装载区域总数d,选取其中一个装载区域d=1作为当前装载区域,进行后续的舱位分配优化,待d=1的装载区域舱位分配优化完成时,d=d+1对下一个装载区域(d=2)作为当前装载区域,进行舱位分配优化,以此类推,直
至最终d=d停止循环,即完成所有装载区域的舱位分配优化。
[0079]
s600:当基于空间降维装箱检测,预判当前装载区域无法装载完对应的装载货物时,采用遗传算法对当前装载区域的装载方案进行优化,得到当前装载区域的最优装载情况。
[0080]
空间降维装箱检测是指基于三维空间坐标系确定装载区域内货物的可放置点和摆放姿态是否可以装入当前装载区域中的集装器。再进一步判断是否装载区域内所有货物均存在可放置点和摆放姿态,来预判当前装载区域是否可以装载完对应的货物。针对空间降维装箱检测的过程将在后续结合附图进一步展开描述。进一步的,可以在上述空间降维装箱检测的基础上,通过对装载区域内的所有集装器和所有货物,按集装器序列和货物序列,在集装器不断更新的可放置点列表中搜索货物的可放置点,判断货物是否均存在可放置点,实现装载区域的装载预判断。
[0081]
当预判当前装载区域无法装载完对应的装载货物时,就需要对初始舱位分配方案中设定的当前装载区域的装载方案进行优化,在这里选择遗传算法进行优化,得到当前装载区域的最优装载情况。具体来说,遗传算法是计算数学中用于解决最佳化的搜索算法,是进化算法的一种,进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等,遗传算法通常实现方式为一种计算机模拟,对于一个最优化问题,一定数量的候选解(称为个体)的抽象表示(称为染色体)的种群向更好的解进化。在这里采用遗传算法不断迭代进化,对当前装载区域的装载方案进行优化,得到当前装载区域的最优装载情况。装载情况主要包括:装载区域的可装载货物、不可装载货物、装载区域的体积装载率和各舱位集装器的体积装载率;装载区域的体积装载率和集装器的体积装载率的计算公式如下:
[0082][0083][0084]
集装器的货物装载体积和可装载容积如图4所示。
[0085]
进一步的,当基于空间降维装箱检测、预判当前装载区域可以装载完对应的装载货物时,表明在初始方位分配方案中当前装载区域的装载方案是一个合适的装载方案,其不需要进行基于遗传算法的优化,直接进入下一步s800。
[0086]
s800:将初始舱位分配方案中下一个装载区域重新作为当前装载区域,返回识别初始舱位分配方案中当前装载区域以及当前装载区域对应的装载货物的步骤,直至各装载区域均已完成装载预判断和装载方案优化,归集各装载区域的最优装载情况,得到舱位分配方案优化结果。
[0087]
上述s600已经得到本轮当前装载区域的最优装载情况,可以对初始舱位分配方案中其他装载区域进行上述s400和s600的优化,将本轮当前装载区域的下一个装载区域重新作为当前装载区域(即d=d+1),返回上述s400,直至最终整个初始装配方案中所有装载区域完成装载预判断和装载方案优化,得到舱位分配方案优化结果。具体来说,舱位分配方案优化结果包括三种,其具体分别为:若某装载区域分配到的货物能够全部装载且该装载区
域的剩余空间大于浪费阈值,则输出“xx装载区域剩余xxm3,建议增加xx件xx(备装)货物”,并输出装载区域各舱位装载的货物列表;若某装载区域分配到的货物未能全部装载,则输出“xx装载区域舱位分配不合理,还有xx件,xxkg,xxm3货物未装入”,并输出装载区域各舱位装载的货物列表;若某装载区域分配到的货物能够全部装入且该舱位的剩余空间小于浪费阈值,则输出“xx装载区域舱位分配合理”,并输出装载区域各舱位装载的货物列表。
[0088]
上述舱位分配优化方法,获取初始舱位分配方案,识别初始舱位分配方案中当前装载区域以及当前装载区域对应的装载货物,基于空间降维装箱检测,预判当前装载区域是否可以装载完对应的装载货物时,若无法装载完时,采用遗传算法对当前装载区域的装载方案进行优化,得到当前装载区域的最优装载情况;选择下一个装载区域,重新执行上述的基于空间降维装箱检测的装载预判断以及基于遗传算法的装载优化,直至所有装载区域都处理完毕。整个过程中,针对初始舱位分配方案进行基于空间降维装箱检测的装载预判断以及基于遗传算法的装载优化,优化初始舱位分配方案中存在的不合理装载方案,得到各装载区域的最优装载情况,可以促使舱位分配更加合理。
[0089]
如图5所示,在其中一个实施例中,上述舱位分配优化方法还包括:
[0090]
s520:获取当前装载区域对应的货物序列以及当前装载区域对应的集装器序列,货物序列以及集装器序列按照对应体积降序排列。
[0091]
针对装载区域对应的货物以及集装器可以先进行编码,即得到货物编码以及集装器编码,这个编码可以是简单的数字编码、或者是字母编码、又或者是数字与字母结合的编码,编码只需要具备唯一性即可。基于编码后的货物以及集装器进行排序得到货物序列以及集装器序列,排序的过程可以基于对应体积来进行,例如可以按货物体积降序的方式生成货物序列、按照集装器体积降序的方式生成集装器序列。
[0092]
s540:迭代更新集装器序列中集装器对应的可放置点列表,对货物序列中货物进行空间降维装箱检测,并根据可放置点列表,判断货物序列中货物是否均存在可放置点,可放置点列表中包括可放置点,可放置点为货物允许放入集装器中的点位。
[0093]
可放置点列表中包括一定数量的可放置点,可放置点具体是指货物允许放入集装器中的点位,即货物可以采用合适的姿态放置到集装器中该点位。具体来说,货物可以平放、竖直放等方式将其中一个角放置于集装器中的可放置点。依次确定集装器对应的可放置点列表之后,对货物进行空间降维装箱检测,确定货物对应的可放置点,进一步还可以确定货物的放置姿态,在某个货物确定可放置点后,由于该可放置点已经被占用,并且集装器的空间内会生成新的可放置点,因此需要对可放置点列表更新,并对下一个货物进行空间降维装箱检测,确定下一个货物的可放置点,以此循环,逐个判断货物序列中货物是否均存在可放置点。
[0094]
s560:根据每个货物在当前装载区域的集装器中是否存在可放置点,预判当前装载区域是否可以装载完对应的货物。
[0095]
若每个货物在当前装载区域的集装器中存在可放置点,则表明装载区可以装载完对应的装载货物;若有部分货物无法在当前装载区域所有集装器的可放置列表中匹配到可放置点时,则表明该货物无法按照初始舱位分配方案放入到分配的集装器中,即当前装载区域无法装完按照初始舱位分配方案装载完对应的货物,针对当前装载区域需要进行基于遗传算法的装载方案优化。具体来说,装载区域的装载预判断,是通过对装载区域内的所有
集装器和所有货物,按集装器序列和货物序列,在集装器不断更新的可放置点列表中搜索货物的可放置点,然后对货物进行空间降维装箱检测得到货物是否可以装入集装器的判断结果,当所有集装器都装满或所有货物都装完时,可以得到装载区域内所有货物是否可以装完的判断。在实际应用中会出现如下两种情况:1)集装器已全部装满,意味着货物序列中可能有剩余未装载货物,这些货物就不存在可放置点,即预判无法装载完对应的货物;2)所有货物已完成装载,意味着集装器序列中可能有未使用或没装满的集装器,即预判可以装载完对应的货物。
[0096]
如图6所示,在其中一个实施例中,s540包括:
[0097]
s541:选择集装器序列中初始集装器,建立初始集装器的三维空间坐标系,以集装器中预设目标角作为三维空间坐标系的原点,创建初始集装器对应的可放置点列表,可放置点列表中包括坐标系原点的可放置点。
[0098]
初始集装器可以是集装器序列中首个集装器a1,即从首个集装器a1开始进行可放置点列表更新。建立首个集装器a1的三维空间坐标系,如图6所示,在该三维空间坐标系中,以首个集装器a1的预设目标角(图6中为左后角)作为坐标原点。生成可放置点列表,在可放置点列表中包括坐标原点的可放置点。可以理解,在初始集装器最开始对应的可放置点列表中仅包括坐标原点的可放置点。
[0099]
s542:在可放置点列表中搜索当前货物的可放置点;并对当前货物做空间降维装箱检测,确定当前货物对应的可放置点和摆放姿态。
[0100]
s543:若当前货物存在对应的可放置点和摆放姿态,使当前货物可以装入初始集装器中,则将当前货物以对应的摆放姿态放入初始集中器中对应的可放置点、并在货物序列中删除当前货物,根据货物与三维空间坐标系中坐标轴在预设方向上的交点,生成货物序列中下一件货物在初始集装器中的三个可放置点,将三个可放置点加入初始集装器的可放置点列表,并将当前货物占用的可放置点删除,以更新可放置点列表。
[0101]
针对货物序列中第一个货物(当前货物),其存在坐标原点的可放置点。具体如图7所示,将货物b1以初始摆放姿态放置于三维空间坐标系的原点(0,0,0),具体可以以货物b1的其中一个角(左后角)与坐标原点重合,货物b1中围合成该角的三条边分别与三维空间坐标系中x轴、y轴以及z轴重合,根据货物b1与三维空间坐标系中x轴、y轴以及z轴在预设方向上交点,生成货物序列中下一件货物在初始集装器b1中的三个可放置点(图7中圈圈标记的点),将可放置点加入到初始集装器a1的可放置点列表中,即初始集装器a1的可放置点由1个坐标原点,变成了如图7中所示的3个可放点,由于坐标原点已经被第一个货物占用,因此,在可放置点列表中删除该可放置点。具体来说,在初始集装器a1中当放置货物b1时,其可放置点只有原点,当放置货物b1后,其可放置点增加三个,更新初始集装器的可放置点列表。
[0102]
s544:当初始集装器未装满时,将下一件货物重新作为当前货物,返回s542。
[0103]
下一件货物是指货物序列中的排在当前货物的下一件货物。具体来说,若当前货物为第一件货物,则下一件货物即为第二件货物,以此类推。将下一件货物重新作为当前货物开始新一轮的可放置点列表更新以及可放置点匹配。为简单说明上述过程,下面将以货物序列{b1,b2,
……
}为例说明,在t时刻,当前货物为b1,确定b1对应匹配的可放置点列表为初始可放置点列表,其中仅包含原点可放置点(0),经过上述s543处理,将b1放入可放置
点(0),得到更新后的可放置点列表,其中包含(1,2,3)三个可放置点;在t+1时,将货物b2重新作为当前货物,返回s542,确定b2对应的可放置点列表中包含有(1,2,3)三个可放置点,假定选择将b2放置到可放置点(1),由于可放置点(1)被占用,因此,删除该可放置点(1),同样经过上述s543处理,将b2放入可放置点(1),得到更新后的可放置点列表,其中包含(2,3,4,5,6)五个可放置点;在t+2时,将货物b3重作为当前货物,继续执行上述的处理(即返回s542)。基于上述内容可以清楚的知晓,一个集装器的可放置点列表不是一次性生成的,而是在货物一个一个装入集装器的过程中不断更新的;一件货物放入集装器中,意味着该集装器的可放置点列表中会减少一个已知的可放置点,增加三个新的可放置点。
[0104]
另外,如果当前货物存在可行放置点,其表明根据初始舱位分配方案货物可以放入初始集装器a1中,初始集装器a1在放置了目标货物之后,其可放置点列表会发生改变,例如上述实例的在放入货物b1之后集装器a1的可放置点列表由原仅包含原点变更为包含3个轴线上的交点,更新初始集装器a1的可放置点列表。进一步的,在保证货物可放置的情况下对货物做平移,以消除货物间的缝隙,使货物之间更加紧凑,然后更新集装器的可放置点列表。
[0105]
在s541得到的初始集装器a1的可放置点列表后,在该可放置点列表中搜索当前货物的可放置点,对当前货物做空间降维装箱检测,确定该当前货物的一个可放置点,即确定当前货物一个可以放置于集装器a1中的位置。进一步来说,还可以确定货物的摆放姿态,如图8所示,对于长宽高都不相同的长方体货物,只考虑3个形状不同的平面朝上放置的摆放姿态,最多有6种摆放姿态。
[0106]
空间降维装箱检测实际是基于确定的可放置点以及货物的尺寸(长、宽、高)在集装器构建的三维空间坐标系中进行检测,判断集装器是否可以允许装载放置于可放置点的货物。具体来说,空间降维装箱检测包括以下步骤:
[0107]
s1、货物以一种摆放姿态放在集装器的一个可放置点,依次在x轴、y轴、z轴正方向上检查货物放入后是否超出集装器的长宽高范围;
[0108]
s2、若存在一个方向上超出集装器的长宽高范围,则当前货物的放置方式不可行,结束检测;否则,进入步骤s3;
[0109]
s3、判断货物是否超出集装器的内部轮廓;若超出,则当前货物的放置方式不可行,结束检测;否则,进入步骤s4;
[0110]
s4、判断货物与已装载货物之间是否有空间重合部分;若有重合,则当前货物的放置方式不可行,结束检测;否则,当前货物的放置方式可行,结束检测。
[0111]
s545:当初始集装器装满时,选择集装器序列中下一集装器,将下一集装器重新作为初始集装器,返回s541。
[0112]
集装器序列若初始集装器a1被装满了,则其无法再装入新的货物,此时选择集装器序列中下一个集装器a2,将下一个集装器a2重新作为初始集装器,返回上述s541的处理过程,开始新一轮的初始集装器可放置点列表更新以及与货物的配对。
[0113]
s546:判断货物序列中货物是否均存在可放置点。
[0114]
针货物序列中每个货物均执行上述s541~s545的处理过程,判断货物序列中货物是否均存在可放置点,若是,则表明货物可以装到当前装载区域;若否,则表明有货物无法装载到当前装载区域,需要采用遗传算法对当前装载区域的装载方案进行优化。
[0115]
在其中一个实施例中,采用遗传算法对当前装载区域的装载方案进行优化包括:
[0116]
步骤一、将当前装载区域内所有待优化集装器中的货物与当前装载区域未装载的货物合并,将合并后的货物集合中货物按体积降序排列,得到货物的初始装箱顺序。
[0117]
遗传算法的优化对象是一个装载区域中所有待优化集装器的装载方案。待优化集装器是指将装载区域的所有集装器按集装器体积装载率降序排列后,低于集装器体积装载率阈值的集装器。未装载的货物是指根据初始舱位分配方案无法查找到对应可放置点的货物,即根据初始舱位分配方案无法装载到舱位中的货物。将所有待优化集装器中的货物以及当前装载区域未装载的货物合并,得到合并后的货物集合,将合并后的货物集合中货物按体积降序排序,得到货物的初始装箱顺序。
[0118]
步骤二、初始化进化代数,读取预设最大进化代数g,根据货物的初始装箱顺序,构建初始染色体以及初始种群p(0)。
[0119]
初始化进化代数具体可以将进化代数计数器g置0,进化代数用于表征在遗传优化算法中种群个体的进化代数,可以简单理解为遗传算法的迭代次数。可以理解的是在初始时,遗传算法开始迭代其对应的进化代数为0。预设最大进化代数g是预先设定的,其用于表征遗传算法中种群个体的最大进化代数,可以简单理解为遗传算法迭代进化的最大迭代次数,其设定是根据实际情况需要进行的,可以理解当需要更优种群个体时,最大进化代数g可以设定一个较大值,但是对应的其数据处理量会增加;当需要更快得到较优的种群个体时,最大进化代数g可以设定一个较小值。根据货物的初始装箱顺序排列形成一条货物编码序列,该序列构成一条初始染色体,将该初始染色体对应的个体作为初始个体,由该初始个体随机生成n-1个个体,得到初始种群p(0)。
[0120]
步骤二、获取种群p(t)中个体的适应度,根据个体的适应度保留最优个体,适应度为装载区域各待优化集装器的货物装载体积与装载区域各待优化集装器的可装载容积之间的比值。
[0121]
针对种群p(t)中个体分别进行适应度评价,根据个体适应度保留最优个体。具体来说,按染色体表示的货物装箱顺序,将货物依次装入待优化的集装器集合中,计算装载区域所有待优化集装器的货物装载体积,根据装载区域所有待优化集装器的货物装载体积与装载区域各待优化集装器的可装载容积,计算得到种群p(t)中个体的适应度。个体适应度的计算公式如下:
[0122][0123]
步骤三、采用轮盘赌算法选择m个个体复制到下一代种群,并对下一代种群依次进行交叉操作、变异操作,生成下一代种群p(t+1)。
[0124]
采用轮盘赌算法从种群p(t)中选择m个个体复制到下一代种群p(t+1),并且对下一代种群依次进行交叉操作、变异操作以生成下一代种群p(t+1)。本步骤是遗传算法中重要的处理步骤,其由种群p(t)采用轮盘赌算法、交叉操作以及变异操作之后得到下一代种群p(t+1)完成一次种群进化。上述的轮盘赌算法、交叉操作以及变异操作可以采用常规遗传算法中具体的处理方式,其还可以针对货物的初始装箱顺序这个特殊的对象提出更合理的交叉操作以及变异操作,以使最终能够得到寻找到更优的个体。
[0125]
步骤四、将下一代种群p(t+1)重新作为种群p(t),进化代数加1,返回获取种群p(t)中个体的适应度,根据个体的适应度保留最优个体的步骤,直至进化代数累计等于预设最大进化代数g,输出最优个体的装载情况。
[0126]
如上述的,遗传算法是一个迭代优化的过程,在步骤三得到下一代种群p(t+1)之后,将下一代种群p(t+1)重新作为种群p(t),返回迭代开始的步骤,继续开始新一轮的迭代,直至迭代对应的进化代数累计达到预设最大进化代数g,输出最优个体的装载情况,最优个体的装载情况包括装载区域的可装载货物、不可装载货物、装载区域的体积装载率和各舱位集装器的体积装载率。
[0127]
在其中一个实施例中,根据货物的初始装箱顺序构建初始染色体以及初始种群p(0)包括:
[0128]
采用初始染色体表示货物的初始装箱顺序,得到初始染色体序列;将初始染色体序列划分为大件货物区和小件货物区;根据预设改变原则,改变初始染色体顺序,构建初始种群p(0),其中预设改变原则为对大件货物区采取较小范围随机改变初始染色体顺序、且对小件货物区采取较大范围随机改变初始染色体顺序。
[0129]
初始染色体生成的过程如图9所示,染色体的每一个基因位表示一个货物的编码,一条染色体是一组货物的编码序列,表示该组货物在装载区域所有待优化集装器中的装箱顺序。随机生成初始种群的策略,是将初始染色体所表示的货物初始装箱序列划分为大件货物区和小件货物区,对大件货物区采取小范围随机改变货物装箱顺序,对小件货物区采取大范围随机改变货物装箱顺序,由此生成初始种群的其他个体,如图10所示。
[0130]
在其中一个实施例中,交叉操作包括:
[0131]
从种群p(t)随机取(n-m)/2对个体,作为父代个体,其中n为种群p(t)中包含的个体数据;读取预设交叉概率pc,对每一对父代个体,生成一个随机数randc∈[0,1];若randc≤pc,则对两个父代个体染色体的大件货物区进行k次单点交叉操作,得到两个子代个体;若randc>pc,则复制两个父代个体作为子代个体;交叉操作生成n-m个子代个体。
[0132]
在本实施例中,对常规遗传算法中交叉操作进一步优化,以使遗传算法应用于对货物顺序对应的个体的最优求解更加合理。上述处理过程中,k次单点交叉操作包括两步:第一步,交换两个父代个体的一个基因;第二步,调整基因交换后的个体;如图11所示,以生成子代1为例,第一步,父代1染色体中,货物27所在的基因位与父代2染色体的对应位置做交换,变成货物16,第二步,找出原父代1中货物16所在的基因位(如黑色虚线箭头所示),然后将其中的货物调整为货物27(如黑色实线箭头所示),由此得到子代1。
[0133]
在其中一个实施例中,变异操作包括:
[0134]
读取预设变异概率pm;对交叉操作生成的每一个子代个体,在染色体的小件货物区随机选择一段连续的货物序列,生成一个随机数randm∈[0,1];若randm≤pm,则对选择的这段货物序列进行随机排序。
[0135]
在染色体的小件货物区随机选择一段连续的货物序列,选择货物序列的长度可以是随机的,生成一个随机数randm∈[0,1],如果randm≤pm,则表明对这段货物序列进行变异操作,即对选择的这段货物序列进行随机排序。变异操作具体如图12所示,交叉操作生成的每一个子代个体,在染色体的小件货物区选择63、75、76、77、78、78的货物序列,生成一个随机数randm,randm≤pm时,对63、75、76、77、78、78的货物序列进行随机排序,得到75、77、63、
79、76、78的变异后的染色体。
[0136]
在将本技术舱位分配优化方法应用于航班舱位分配时,其实际处理流程如图13所示。其主要包括以下几个处理步骤:
[0137]
1、输入人工经验制定的航班舱位分配方案;
[0138]
2、将航班的装载区域总数设置为d,选择航班的第一个装载区域d=1;
[0139]
3、基于空间降维装箱检测,对装载区域d能否装载分配到的全部货物做预判断;
[0140]
4、若装载区域d的货物全部可以装完,则将该航班的备装货物装入装载区域d直至装满,然后计算装载区域d的装载情况;否则,进入步骤5;
[0141]
5、采用遗传算法对装载区域d的装载方案进行优化,并计算装载区域d的最优装载情况。
[0142]
6、若d《d,则进入步骤7;否则,选择航班的下一个装载区域d=d+1,跳转至步骤3;
[0143]
7、输出航班舱位分配方案的优化结果。
[0144]
在实际应用中应用本技术舱位分配优化方法具有以下显著的社会经济效益:1、通过优化人工经验制定的航班舱位分配方案,减少在分配航班舱位时出现舱位浪费和舱位不足的情况,提高航班舱位分配的准确性。2、定量计算舱位的装载情况,在出现舱位浪费时提供增加装载货物的建议,可以提高货物装载率,增加货运商的收益。3、定量计算舱位的装载情况,在出现舱位爆满时提供预警,从而及时对航班舱位分配方案进行调整,避免产生部分货物无法装入舱位的情况,保障客户满意度。
[0145]
应该理解的是,虽然上述各流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述各流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0146]
如图14所示,本技术还提供一种舱位分配优化装置,装置包括:
[0147]
初始方案获取模块200,用于获取初始舱位分配方案;
[0148]
识别模块400,用于识别初始舱位分配方案中当前装载区域以及当前装载区域对应的装载货物;
[0149]
优化模块600,用于当基于空间降维装箱检测、预判当前装载区域无法装载完对应的装载货物时,采用遗传算法对当前装载区域的装载方案进行优化,得到当前装载区域的最优装载情况;
[0150]
迭代模块800,用于将初始舱位分配方案中下一个装载区域重新作为当前装载区域,控制识别模块400以及优化模块600重新执行对应的功能,直至各装载区域均已完成装载预判断和装载方案优化,归集各装载区域的最优装载情况,得到舱位分配方案优化结果。
[0151]
上述舱位分配优化装置,获取初始舱位分配方案,识别初始舱位分配方案中当前装载区域以及当前装载区域对应的装载货物,基于空间降维装箱检测,预判当前装载区域是否可以装载完对应的装载货物,若无法装载完时,采用遗传算法对当前装载区域的装载方案进行优化,得到当前装载区域的最优装载情况;选择下一个装载区域,重新执行上述的
基于空间降维装箱检测的装载预判断以及基于遗传算法的装载优化,直至所有装载区域都处理完毕。整个过程中,针对初始舱位分配方案进行基于空间降维装箱检测的装载预判断以及基于遗传算法的装载优化,优化初始舱位分配方案中存在的不合理装载方案,得到各装载区域的最优装载情况,可以促使舱位分配更加合理。
[0152]
在其中一个实施例中,上述舱位分配优化装置还包括装载预判断模块,用于获取当前装载区域对应的货物序列以及当前装载区域对应的集装器序列,货物序列以及集装器序列按照对应体积降序排列;迭代更新集装器序列中集装器对应的可放置点列表,对货物序列中货物进行空间降维装箱检测,并根据可放置点列表,判断货物序列中货物是否均存在可放置点,可放置点列表中包括可放置点,可放置点为货物允许放入集装器中的点位;根据每个货物在当前装载区域的集装器中是否存在可放置点,预判当前装载区域是否可以装载完对应的货物。
[0153]
在其中一个实施例中,装载预判断模块还用于选择集装器序列中初始集装器,建立初始集装器的三维空间坐标系,以集装器中预设目标角作为三维空间坐标系的原点,创建初始集装器对应的可放置点列表,可放置点列表中包括坐标系原点的可放置点;在可放置点列表中搜索当前货物的可放置点;并对当前货物做空间降维装箱检测,确定当前货物对应的可放置点和摆放姿态;若当前货物存在对应的可放置点和摆放姿态,使当前货物可以装入初始集装器中,则将当前货物以对应的摆放姿态放入初始集中器中对应的可放置点、并在货物序列中删除当前货物,根据货物与三维空间坐标系中坐标轴在预设方向上的交点,生成货物序列中下一件货物在初始集装器中的三个可放置点,将三个可放置点加入初始集装器的可放置点列表,并将当前货物占用的可放置点删除,以更新可放置点列表;当初始集装器未装满时,将下一件货物重新作为当前货物,返回在可放置点列表中搜索当前货物对应的可放置点的步骤;当初始集装器装满时,选择集装器序列中下一集装器,将下一集装器重新作为初始集装器,返回建立初始集装器的三维空间坐标系,以集装器中预设目标角作为三维空间坐标系的原点的步骤;判断货物序列中货物是否均存在可放置点。
[0154]
在其中一个实施例中,上述舱位分配优化装置还包括空间降维检测模块用于获取货物以一种摆放姿态放置于集装器可放置点时,在x轴、y轴以及z轴方向上的取值;若x轴、y轴以及z轴方向上的取值不大于对应的集装器长、宽以及高时,则判断货物是否超出集装器的内部轮廓;若货物未超出集装器的内部轮廓,则判断货物与已装载货物之间是否存在空间重合;若无重合,则判定当前货物的摆放姿态可行。
[0155]
在其中一个实施例中,优化模块600还用于将当前装载区域内所有待优化集装器中的货物与当前装载区域未装载的货物合并,将合并后的货物集合中货物按体积降序排列,得到货物的初始装箱顺序;初始化进化代数,读取预设最大进化代数g,根据货物的初始装箱顺序,构建初始染色体以及初始种群p(0);获取种群p(t)中个体的适应度,根据个体的适应度保留最优个体,适应度为装载区域各待优化集装器的货物装载体积与装载区域各待优化集装器的可装载容积之间的比值;采用轮盘赌算法选择m个个体复制到下一代种群,并对下一代种群依次进行交叉操作、变异操作,生成下一代种群p(t+1);将下一代种群p(t+1)重新作为种群p(t),进化代数加1,返回获取种群p(t)中个体的适应度,根据个体的适应度保留最优个体的操作,直至进化代数累计等于预设最大进化代数g,输出最优个体的装载情况。
[0156]
在其中一个实施例中,优化模块600还用于采用初始染色体表示货物的初始装箱顺序,得到初始染色体序列;将初始染色体序列划分为大件货物区和小件货物区;根据预设改变原则,改变初始染色体顺序,构建初始种群p(0),其中预设改变原则为对大件货物区采取较小范围随机改变初始染色体顺序、且对小件货物区采取较大范围随机改变初始染色体顺序。
[0157]
在其中一个实施例中,优化模块600还用于从种群p(t)随机取对个体,作为父代个体,其中n为种群p(t)中包含的个体数据;读取预设交叉概率pc,对每一对父代个体,生成一个随机数randc∈[0,1];若randc≤pc,则对两个父代个体染色体的大件货物区进行k次单点交叉操作,得到两个子代个体;若randc>pc,则复制两个父代个体作为子代个体;交叉操作生成n-m个子代个体。
[0158]
在其中一个实施例中,优化模块600还用于读取预设变异概率pm;对交叉操作生成的每一个子代个体,在染色体的小件货物区随机选择一段连续的货物序列,生成一个随机数randm∈[0,1];若randm≤pm,则对选择的这段货物序列进行随机排序。
[0159]
关于舱位分配优化装置的具体限定可以参见上文中对于舱位分配优化方法的限定,在此不再赘述。上述舱位分配优化装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0160]
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图15所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储初始舱位分配方案等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种舱位分配优化方法。
[0161]
本领域技术人员可以理解,图15中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0162]
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述舱位分配优化方法。
[0163]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述舱位分配优化方法。
[0164]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器
(random access memory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。
[0165]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0166]
以上实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1