[发明专利]一种面向多移动货架的两阶段智能订单分拣方法有效
申请号: | 202010598474.6 | 申请日: | 2020-06-28 |
公开(公告)号: | CN111754176B | 公开(公告)日: | 2023-03-28 |
发明(设计)人: | 邓方;石翔;郭苗;姬艳鑫;高峰;朱佳琪;赵佳晨;陈杰 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F17/18 | 分类号: | G06F17/18 |
代理公司: | 北京理工大学专利中心 11120 | 代理人: | 田亚琪;刘芳 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 移动 货架 阶段 智能 订单 分拣 方法 | ||
1.一种面向多移动货架的两阶段智能订单分拣方法,其特征在于,包括以下步骤:
步骤一、对订单池内全部待拣选的N个订单的需求货物信息编码,建立订单编码矩阵对货架区内M个储物货架的存储货物信息进行编码,建立货架编码矩阵/其中,LGO为全部订单中包含货物种类最多的订单所需的货物种类数,LGR为全部货架中包含货物种类最多的货架所储的货物种类数;
步骤二、计算能够满足所述全部订单货物需求的具有最少货架个数的货架集合βend;
步骤三、分别建立每个订单与βend中货架的关系,得到订单-货架关系矩阵;
步骤四、基于订单-货架关系矩阵,对订单池内全部订单分批聚合处理,形成K个拣选站订单组,K为拣选站数量;
步骤五、分别计算各拣选站订单组的货架进站次数,并求和得到货架总进站次数;
步骤六、设置最大迭代次数Itermax,重复步骤四-步骤五,存储得到的货架总进站次数,直至完成Itermax次迭代,选择货架总进站次数最小的一轮,输出该轮中订单-货架关系矩阵和各拣选站订单组,形成调度方案;
步骤二具体过程为:
S201、计算初始订单货物总需求:对订单池内具有的全部待拣选的N个订单,基于各订单货物输入信息,生成订单货物总需求OG;其中,订单货物总需求中的需求货物为所有订单中的货物种类的并集,对应的货物数量为所有订单中相应货物的数量之和;
S202、定义和初始化各类变量:定义二元组状态变量(α,β):其中α表示订单货物需求,β表示已为订单提供货物的货架集合;定义包含二元组状态变量的四种不同状态:初始状态Sini、转移前状态Scur、转移后状态Strans和终止状态Send;其中初始状态为{Sini:(αini,βini)},αini为步骤S201中全部订单的货物总需求OG,βini为空集;转移前状态、转移后状态和终止状态均为状态集合,即Scur、Strans和Send中包含若干个形如(α,β)的状态变量,在初始时三者均为空集;
S203、生成初始决策货架集合DecRini,对于货架区内具有的M个储物货架,首先令i=1,计算ri存储的货物种类集合与所述初始状态下αini需求的货物种类集合的交集,若交集不为空,则将ri加入集合DecRini,否则执行i=i+1,重复上述步骤,直至i=M;记遍历全体货架后,DecRini包含的货架为
S204、计算转移前状态集合{Scur:(αcur,βcur)},具体为:
初始时Scur为空;对于所述DecRini中的货架首先令k=1,然后取αcur的初值为αini,βcur的初值为βini,并将/加入集合βcur中,遍历所述S203中/和αcur的货物交集中的全部货物,对每一种货物,若货架/中该货物的储量不少于αcur中该货物的需求,则在αcur中删除该货物;否则将αcur中需求该货物的数量减去/存储该货物的数量;遍历交集中所有货物后,将状态变量(αcur,βcur)k存入Scur中;执行k=k+1,重复上述步骤,直至k=a,此时Scur中包含数量为a的(αcur,βcur)状态变量组;
S205、对于转移前状态集合Scur中的每个状态组(αcur,βcur)k,分别生成各状态对应的决策货架集合首先令k=1,初始时/为空,对于货架区内具有的M个储物货架,令i=1,若ri已经在βcur中存在,则跳过继续判断下一个货架;否则计算ri存储的货物种类集合与所述初始状态下(αcur)k需求的货物种类集合的交集,若交集不为空,则将ri加入集合否则执行i=i+1,重复上述货架判断步骤,直至i=M,然后执行k=k+1,重复上述步骤,直至k=a;记得到的每个转移前决策货架集合/包含的货架为/
S206、计算转移后状态集合{Strans:(αtrans,βtrans)}:初始时Strans为空;首先令kf=1,对于所述中的货架/执行如下内操作:令ks=1,然后取(αtrans)ks的初值为(αcur)kf,(βtrans)ks的初值为(βcur)kf,并将/加入集合(βtrans)ks中,遍历/和(αtrans)ks的货物交集中的全部货物,对每一种货物,若货架/中该货物的储量不少于(αtrans)ks中该货物的需求,则在(αtrans)ks中删除该货物;否则将(αtrans)ks中需求该货物的数量减去/存储该货物的数量;遍历交集中所有货物后,将状态变量(αtrans,βtrans)ks存入Strans中;执行ks=ks+1,重复上述步骤,直至ks=bkf;结束内操作,执行kf=kf+1,重复上述步骤,直至kf=a,此时Strans中包含数量为/的(αtrans,βtrans)状态变量组;
S207、计算终止状态集合{Send:(αend,βend)}:初始时Send为空;首先令n=1,计算(αtrans,βtrans)n中的βtrans需求所有货物数量总和,若和值大于0,则执行n=n+1,继续判断;否则将(αtrans,βtrans)n记为(αend,βend)n,存入终止状态Send中,执行n=n+1;重复上述步骤,直至若此时Send仍为空集,则执行将/Scur=Strans,/然后重复执行步骤S205-S206;若Send不为空集,则进入步骤三,其中Send所包含的每个βend都是能够满足全部订单货物需求的具有最少货架个数的货架集合,所述βend用于步骤三中相关操作;
步骤三具体过程为:
S301、定义和初始化各类变量:定义五元组状态变量,(ε,χ,γ,η,φ),其中ε表示尚未与货架集合中货架建立关系的订单数量,χ表示订单货物信息矩阵,γ表示货架所储剩余货物信息矩阵,η表示已与订单建立关系的货架集合,φ表示订单货架关系矩阵;
定义包含五元组状态变量的四种不同状态:初始状态S′ini、转移前状态S′cur、转移后状态S′trans和终止状态S′end;其中初始状态为{S′ini:(εini,χini,γini,ηini,φini)},εini为初始订单数量N,χini为每个订单的货物需求,即订单编码矩阵γini为空集,ηini为空集,φini为N×M′的全零矩阵,其中M′为βend中货架的数量;转移前状态、转移后状态和终止状态均为状态集合,即S′cur、S′trans和S′end中可包含若干个形如(ε,χ,γ,η,φ)的状态变量;
S302、生成初始决策货架集合DecR′ini:对于步骤S207中所述的货架集合βend(ri∈βend,i∈1,2,…M′),首先令i=1,计算ri存储的货物种类集合与所述初始状态下χini需求的货物种类集合的交集,若交集不为空,则将ri加入集合DecR′ini,否则执行i=i+1,重复上述步骤,直至i=M′;记遍历全体货架后,DecRini包含的货架为
S303、计算转移前状态集合{S′cur:(εcur,χcur,γcur,ηcur,φcur)}:对于所述初始决策货架集合DecR′ini中的货架首先令k=1,然后取当前五元组状态变量(εcur,χcur,γcur,ηcur,φcur)的初值为(εini,χini,γini,ηini,φini),并将/加入集合ηcur中,通过/对(εcur,χcur,γcur,ηcur,φcur)进行状态更新运算,将更新后的状态变量(εcur,χcur,γcur,ηcur,φcur)存入S′cur中,执行k′=k′+1,重复状态更新运算操作,直至k′=a′停止;并将结果存入S′cur中,S′cur中包含数量为a′的(εcur,χcur,γcur,ηcur,φcur)状态变量组;
S304、对于转移前状态集合S′cur中的每个状态组(εcur,χcur,γcur,ηcur,φcur)k,分别生成对应的决策货架集合首先令k′=1,初始时/为空,对于步骤S207中所述的货架集合βend(ri∈βend,i∈1,2,...M′),首先令i=1,若ri已经在ηcur中存在,则跳过继续判断下一个货架;若不存在,则计算ri存储的货物种类集合与所述初始状态下(χcur)k′需求的货物种类集合的交集,若交集不为空,则将ri加入集合/否则执行i=i+1,重复上述货架判断步骤,直至i=M′,然后执行k′=k′+1,重复上述步骤,直至k′=a′;记得到的每个转移前决策货架集合/包含的货架为/
S305、计算转移后状态集合{S′trans:(εtrans,χtrans,γtrans,ηtrans,φtrans)}:初始时S′trans为空;首先令kf′=1,对于所述中的货架/执行如下内操作:令ks′=1,然后取(εtrans,χtrans,γtrans,ηtrans,φtrans)ks′的初值为(εcur,χcur,γcur,ηcur,φcur)kf′,并将/加入集合(ηtrans)ks′中,用/替换/用(εtrans,χtrans,γtrans,ηtrans,φtrans)ks′替换(εcur,χcur,γcur,ηcur,φcur),执行S303中的状态更新运算,将结果存入S′trans中;执行ks′=ks′+1,重复上述步骤,直至ks′=bkf′;结束内操作,执行kf′=kf′+1,重复上述步骤,直至kf′=a′,此时S′trans中包含数量为/的(εtrans,χtrans,γtrans,ηtrans,φtrans)状态变量组;
S306、计算终止状态集合{S′end:(εend,χend,γend,ηend,φend)}:初始时S′end为空;首先令m=1;计算(εtrans,χtrans,γtrans,ηtrans,φtrans)m中的χtrans需求所有货物数量总和,若和值大于0,则执行m=m+1;否则将(εtrans,χtrans,γtrans,ηtrans,φtrans)m记为(εend,χend,γend,ηend,φend)m,存入终止状态S′end中,执行m=m+1;重复上述步骤,直至若此时S′end仍然为空集,则执行将/S′cur=S′trans,/然后重复执行步骤S304-S305;若此时S′end不为空集,则进入步骤四,其中S′end所包含的每个φend都是全部订单与步骤二中所述的货架集合βend间的订单-货架关系矩阵,所述φend用于步骤四中订单聚合操作;
在步骤S207和S306中,用转移后状态集合Strans作为新的转移前状态集合时,若包含的状态数超过给定阈值BM,则需要对Strans的状态数量进行剪枝,使其数量减少至BM,具体方法如下:
a、设定剪枝优先级列表Prlist=({v1:s1},{v2:s2},...,{vp:sp}),其中vp和sp分别表示优先级规则和对应的排序方式,定义剪枝状态集合Sbm和临界状态集合Slimit,两者初始时都为空集;
b、分别计算Strans每个转移状态在Prlist列表中第一优先级元素v1对应的值,并按照s1进行排序;排序后依次取出前BM个值对应的状态作为当前状态,其余删除;排序后若出现“僵局”,即第BM个位置的值与该位置前后的若干个值相同,则先将序列中所有临界值之前的值对应的状态取出并存入剪枝状态Sbm中,然后计算新的阈值为BM与Sbm中状态数的差值,再将所有取值为临界值对应的状态取出,存入临界状态集合Slimit中,执行步骤c;若未出现“僵局”,则依次取出前BM个值对应的状态存入剪枝状态集合Sbm中,其余删除;
c、用Slimit给Strans赋值,优先级序号增加1,即优先级变为{v2:s2},重复步骤b,若阈值不为0则继续执行优先级序号加1和重复步骤b的操作,直至阈值为0,即Sbm中具有BM个状态为止;若Slimit在计算最后一个优先级元素vp的值后仍出现“僵局”,则随机取出数量为当前阈值的临界值对应状态存入Sbm;
d、用Sbm给Scur赋值,即得到新的转移前状态集合;
在步骤S303中,分别加入决策货架集合中的每个货架后,状态更新的具体步骤为:
a、令(εcur,χcur,γcur,ηcur,φcur)中的每个变量初始值为初始状态中各变量值(εini,χini,γini,ηini,φini);
b、对于χcur中的全部订单o1,o2,...oN,分别计算存储的货物种类集合与每个订单oi(i=1,2,...N)需求的货物种类集合的交集,若交集为空,则继续下一个订单的计算;若交集不为空,则遍历交集中的全部货物,判断对每一种货物/货架储量不少于订单需求量是否都成立;若有至少一种货物不成立,则将oi存入临时集Otemp中,继续下一个订单的计算;若全都成立,则记为完全覆盖订单,在χcur中删除订单oi并执行φcur(i,k′)=1,εcur=εcur-1,其中k′表示货架/在φcur中的列编号,更新/货物存储量,对交集中的全部货物,/存储每种货物的数量减去oi需求该种货物的数量;
c、若γcur当前为空集,则结束;否则执行以下步骤:记γcur中的全部货架编号为rγ1,rγ2,...,rγc,则定义联合货架集合RT:生成联合货架总存储量GRT,其中货物种类为RT中的货物种类的并集,对应的货物数量为RT中相应货物的数量之和;
d、对于Otemp中全部订单首先令tj=1,计算GRT存储的货物种类集合与订单需求货物种类集合的交集,对交集中的每一种货物s,若/需求s的数量均小于等于RT存储s的数量,则在χcur中删除订单/信息,执行εcur=εcur-1,tj=tj+1,并进入步骤e;否则执行tj=tj+1,重复上述计算,当j=T时停止,进入步骤f;
e、删除冗余货架:首先令k=1,在GRT中减去货架rγk的存储信息,然后用GRT代替步骤b中的用/代替步骤b中的oi,采用步骤b中方法判断RT能否完全覆盖订单/
f、若能则将货架rγk对应的货物信息存入γcur中,并更新RT=RT/rγk,对更新后的GRT和RT重复上述操作;否则执行k=k+1,重复上述操作;当k等于当前RT中包含货架数量时停止,记此时RT中剩余货架为rγ1′,rγ2′,...,rγc′,执行φcur(tj,{γ1′,γ2′,...,γc′})=1,然后用当前RT替换步骤b中的用/替换步骤b 中的oi,采用步骤b中方法对货架所储货物信息更新;更新后,将存储货物数量总和仍大于0的货架的货物信息存入γcur中,返回步骤d。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010598474.6/1.html,转载请声明来源钻瓜专利网。