掌桥专利:专业的专利平台
掌桥专利
首页

一种基于混合遗传协同进化算法的多载式堆垛机调度方法

文献发布时间:2024-04-18 19:59:31


一种基于混合遗传协同进化算法的多载式堆垛机调度方法

技术领域

本发明属于立体仓库调度相关技术领域,更具体地,涉及一种基于混合遗传协同进化算法的多载式堆垛机调度方法。

背景技术

立体仓库(AS/RS)于20世纪50年代引入以来,一直被用来提供更好的运营规划,如配送中心、仓库和交叉对接的存储和检索活动,现在已成为现代物流业中最重要的工具之一。存储和检索订单的效率需求持续增长,对立体仓库及多载式堆垛机调度的要求也越来越高。

目前,大部分立体仓库大多是采用先到先服务(First Come First Serve,FCFS)的方式一个接一个地完成现有订单池里的存储和检索请求。这种方式没有考虑到堆垛机路径的优化,也没有做到货物对存储位置的动态选择,效率较低。尤其在面对出入库高峰期密集订单的情况下,更是容易由于堆垛机存储检索路径和存储位置安排的不合理,导致后续订单的延误。由此可见,立体仓库亟需科学合理的调度方法对多载式堆垛机进行有效地调度。

发明内容

针对现有技术的以上缺陷或改进需求,本发明提供了一种基于混合遗传协同进化算法的多载式堆垛机调度方法,解决了现有立体仓库中的堆垛机完成订单池里的存储和检索请求时效率较低的问题,充分利用了多载式堆垛机执行双指令循环时多载量的优势,降低完成存储检索清单的时间和能量消耗,提升立体仓库的调度效率和工作效果。

为实现上述目的,按照本发明,提供了一种基于混合遗传协同进化算法的多载式堆垛机调度方法,包括:

S1,确定堆垛机的订单池中存储请求和检索请求的数量、所述堆垛机的最大额定载量以及货架上的初始空位信息,其中,所述初始空位信息包括空位的数量及位置;

S2,以所述堆垛机完成订单池中所有订单的能量消耗与完成存储请求时在不同存储位置间产生的潜在能量消耗之和得到的预估能量消耗最小化为目标构建调度方案的全局目标函数;

S3,基于混合遗传协同进化算法优化求解所述全局目标函数,获得最优调度方案,具体包括:

S31,初始化全局种群:将所述存储请求和所述检索请求随机分配到所述堆垛机的多个工作循环内,构成由多个可行解个体形成的全局种群,每个所述可行解个体包括所述堆垛机在多个工作循环中分别对应的移动路线;

S32,将所述全局种群中的多个所述可行解个体按照工作循环的个数对应分解成多个子种群,每个所述子种群包括对应一个工作循环的多条移动路线;

S33,对每个所述子种群中的多条移动路线分别进行优化;

S34,将优化后的多个所述子种群合并,运用全局目标函数评估优化所述可行解个体;

S35,判定是否满足结束要求,若是输出最优的所述可行解个体作为最优调度方案,否则回到S32。

根据本发明提供的基于混合遗传协同进化算法的多载式堆垛机调度方法,S2中所述堆垛机完成存储请求时在不同存储位置间产生的潜在能量消耗根据存储请求对应的货物重量、吞吐频率计算;具体地,所述全局目标函数为:

其中,f

根据本发明提供的基于混合遗传协同进化算法的多载式堆垛机调度方法,S33中运用子种群目标函数评估优化每条移动路线,子种群目标函数为:

其中,f

根据本发明提供的基于混合遗传协同进化算法的多载式堆垛机调度方法,S31中所述可行解个体在任一工作循环中的移动路线内,堆垛机取送货过程的货物载量需满足以下载量约束:

其中,m

根据本发明提供的基于混合遗传协同进化算法的多载式堆垛机调度方法,S31中所述可行解个体采用多层编码方式,其中第一层编码为所有所述存储请求的随机排序;第2-T+1层编码为自适应长度编码,与所述堆垛机T个工作循环中的移动路线相对应,第2-T+1层编码为货架上的空位序号与所述检索请求的序号的随机组合,且以最后一个检索请求的位置为编码的最大长度位置,超出部分为无效编码。

根据本发明提供的基于混合遗传协同进化算法的多载式堆垛机调度方法,所述堆垛机的任意一次移动是存储请求(S请求)、检索请求(R请求)和检索存储请求(RS请求)中的一种;

通过以下方式调整所述可行解个体第2-T+1层的编码,使得移动路线符合载量约束:

调整编码使得首编码为空位序号;

将编码中空位序号的出现个数达到所述堆垛机的最大额定载量之后出现的空位序号移至编码末端;

通过对编码进行解码在移动路线中确定检索存储操作的数量和位置。

根据本发明提供的基于混合遗传协同进化算法的多载式堆垛机调度方法,所述可行解个体第2-T+1层的编码中空位序号对应E请求,所述检索请求的序号对应R请求,通过对编码进行解码在移动路线中确定检索存储操作的数量和位置,具体包括:

先删去无效编码部分;

之后从编码左侧起向右方向寻找第一个E请求,找到之后再寻找其右侧第一个与之匹配的R请求,二者匹配的条件是,R请求的下一个请求不再是R请求;

将匹配完毕的E请求和R请求从编码中删除;

从原E请求的位置开始,继续向右寻找下一个E请求,重复这一过程,直到所有E请求都被删除完毕,此时剩下的所述检索请求的序号,即为RS请求。

根据本发明提供的基于混合遗传协同进化算法的多载式堆垛机调度方法,S3中在每条移动路线的每次移动之后更新空位序号对应的货位坐标。

根据本发明提供的基于混合遗传协同进化算法的多载式堆垛机调度方法,S1中所述存储请求和所述检索请求的数量分别为N。

根据本发明提供的基于混合遗传协同进化算法的多载式堆垛机调度方法,S31中所述可行解个体在任一工作循环中的移动路线内,堆垛机取送货过程还需满足以下位置约束:

1≤x

1≤z

其中,x

总体而言,通过本发明所构思的以上技术方案与现有技术相比,本发明提供的基于混合遗传协同进化算法的多载式堆垛机调度方法:

1.将多载式堆垛机工作周期内的路径规划问题和存储请求选择问题集成在一起解决,以堆垛机完成当前所有货物请求的能量消耗与完成存储请求时在不同存储位置间产生的潜在能量消耗之和得到的预估能量消耗最小化为目标构建目标函数,建立了新的目标函数,有利于降低完成存储检索清单的时间和能量消耗,提升立体仓库的调度效率和工作效果,且覆盖范围更广,可以对立体仓库运行过程进行更长期的优化;

2.将混合遗传算法嵌入到协同进化框架当中来强化搜索性能,在子种群优化阶段采用进化操作优化子种群编码,在全局优化阶段对可行解进行选择操作、变异操作和局部搜索来优化所有个体,提高了搜索效率,加快了算法的收敛速度;

3.提出了一种多层自适应长度编码,可以完整地实现从解空间到问题空间的映射,编码长度的自适应性可以很好地解决工作周期内途径货位点个数不同带来的编码困难问题;

4.将共享存储货位的思想做了进一步的使用,将检索存储操作(RS操作)作为了堆垛机的一个工作循环内的可选择项,更具调度灵活性。

附图说明

图1是本发明提供的多载式堆垛机调度方法适用的立体仓库的场景示意图;

图2是本发明提供的基于混合遗传协同进化算法的多载式堆垛机调度方法的流程图;

图3是本发明提供的算法初始化阶段中使用多层自适应长度编码对全局种群、子种群和可行解个体进行编码的编码组成剖析图;

图4是本发明提供的对不可行解的编码进行修复时,两种修复方式的过程示意图;

图5是本发明提供的多载式堆垛机工作循环内检索存储请求(RS请求)解析过程图;

图6是本发明提供的在多载式堆垛机工作循环中空位的转移演示;

图7是本发明提供的具体实例中堆垛机完成所有存储和检索请求的最佳工作路线的示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

请参阅图1及图2,本发明提供一种基于混合遗传协同进化算法的多载式堆垛机调度方法,以如图1所示的立体仓库场景为例,堆垛机在巷道内的X-Z平面上移动,负责维护单排或双排货架,完成货台与货架之间的货物转运,堆垛机从离开货台到返回货台完成一个工作循环。该调度方法包括:

S1,确定堆垛机的订单池中存储请求和检索请求的数量、所述堆垛机的最大额定载量以及货架上的初始空位信息,其中,所述初始空位信息包括空位的数量及位置;

S2,以所述堆垛机完成订单池中所有订单的能量消耗与完成存储请求时在不同存储位置间产生的潜在能量消耗之和得到的预估能量消耗最小化为目标构建调度方案的全局目标函数;

S3,基于混合遗传协同进化算法优化求解所述全局目标函数,获得最优调度方案,具体包括:

S31,初始化全局种群:将所述存储请求和所述检索请求随机分配到所述堆垛机的多个工作循环内,构成由多个可行解个体形成的全局种群,每个所述可行解个体包括所述堆垛机在多个工作循环中分别对应的移动路线;

S32,将所述全局种群中的多个所述可行解个体按照工作循环的个数对应分解成多个子种群,每个所述子种群包括对应一个工作循环的多条移动路线;

S33,对每个所述子种群中的多条移动路线分别进行优化;

S34,将优化后的多个所述子种群合并,运用全局目标函数评估优化所述可行解个体;

S35,判定是否满足结束要求,若是输出最优的所述可行解个体作为最优调度方案,否则回到S32。

以如图1所示的立体仓库场景为例,堆垛机在巷道内的X-Z平面上移动,负责维护单排或双排货架,完成货台与货架之间的货物转运。立体仓库多载式堆垛机调度问题可以表述为:对于一个堆垛机,其订单池里有N个存储请求和N个检索请求,堆垛机的最大额定载量为M,因此在堆垛机离开取货台到再次返回取货台的一个工作循环内,最多可以完成M个存储请求和M个检索请求。堆垛机完成所有请求所需的工作循环个数为T,T可为N/M。在这个调度问题中,需要合理地将存储和检索请求分配到每一个工作循环内,并为所有存储请求选择合适的货架位置,使得整个过程顺利进行,并产生最少的预估能量消耗。

堆垛机不同工作循环的编号为i∈{1,2,...,T},每个工作循环中堆垛机的移动编号为j,第i个工作循环内堆垛机移动的次数为j

因此在堆垛机的第i次任务中,每次移动的编号进一步表示为j∈{1,2,...,j

堆垛机通过水平移动电机和垂直移动电机,来控制自身在水平方向和垂直方向上的移动。本发明的全局目标函数从能源的角度出发,以堆垛机完成当前所有货物的能量消耗和根据当前货物重量、吞吐频率预估的潜在能量消耗之和得到的预估能量消耗最小化为目标构建全局目标函数,表示为:

其中,f

解决该问题时,需要做出如下假设:

(1)所有的出库请求的检索位置是预先知道的;

(2)货架上的所有空位位置是预先知道的;

(3)堆垛机工作周期内的第一个请求开始时,货架上空位的个数大于堆垛机的最大额定载量;

(4)不考虑堆垛机在到达目标位置后存取货物时产生的额外能量消耗,例如驱动托举货物的机械手移动产生的能量消耗;

(5)同种货物的存取频率在一段时间内是较为均匀的;

(6)订单池中存储请求和检索请求的数量是相同的。

具体的,如图2所示,本申请基于混合遗传协同进化算法的多载式堆垛机调度方法,包括以下五个阶段。

(1)初始化阶段:

初始化算法参数;采用多层自适应长度编码方式对初始可行解个体进行编码;将N个存储请求和N个检索请求随机分配到最大额定载量为M的堆垛机的T个工作循环内,构成初始可行解个体编码的初始化种群,即每个可行解个体在T个工作循环内完成N个存储和N个检索请求。

如图3所示,将堆垛机完成所有存储请求和检索请求的方式进行编码,所得到多层自适应长度编码的层数为T+1,其中编码的第1层为固定长度编码,表示所有存储请求序列(即S请求),为所有存储请求随机排序生成。第2-T+1层为自适应长度编码,表示堆垛机每个工作循环内的移动路线。移动路线中既包括空货位的序号即空位序号,也包括检索请求的序号,可为所有空位序号与分配至该工作循环中的检索请求的序号的随机排列,其中分配至该工作循环中的检索请求的数量可为堆垛机的最大额定载量。当编码为空货位(E)时,堆垛机移动到相应的空货位上,可完成一次存储请求;当编码为检索请求(R)时,堆垛机则移动到检索请求所在的货位上,可完成一次检索请求或检索存储请求。第2-T+1层的自适应长度编码部分,以最后一个检索请求(R)的位置为编码的最大长度位置,超出部分为无效编码。通过第一层中的存储请求序列与第2-T+1层中的空位序号和检索请求的序号之间的结合,可形成堆垛机的一个可行调度方案即可行解个体,包括与多个工作循环对应的多个移动路线。图3主要展示可行解个体的编码结构以及自适应长度编码的方式,并不对实际参数造成限定。

在一个具体实例中,本实施例以存储请求/检索请求数量为N=12,堆垛机最大额定载量为M=3,工作循环数T=4为例进行说明,所有存储请求/检索请求的相关信息如表1所示:

表1具体实例中所有存储请求/检索请求的相关信息

频率χ为存储请求对应的货物种类在过去一段时间内的出入库频率,可为过去一段时间内的出入库次数与时间的比值。由于在堆垛机的首个工作循环开始之前,货架上空货位的数量要大于堆垛机的最大额定载量,堆垛机的最大额定载量即堆垛机的最大载货数量。此例假设一开始时货架上的空货位数量为5,空货位的相关信息如表2所示:

表2具体实例中空货位的信息表

根据算法设置,以同样的方式初始化相应种群数量的可行解个体,随机初始化后其中一个可行解个体的第1层编码如表3所示,第2~T+1层自适应长度编码如表4所示。

表3具体实例中一个初始可行解个体的第1层编码

表4具体实例中一个初始可行解个体的第2-5层编码

(2)问题的分解:将整个全局种群分解成若干个子种群。如图3所示,所有可行解个体合并起来即为全局种群。将不同可行解个体间层号相同的编码合并起来,即组成子种群。由于多层自适应长度编码共有T+1层,因此共可以生成T+1个子种群。但由于第1层固定长度编码为存储请求序列,无法建立有效的目标评价函数。因此实际起到协同优化作用的子种群为:由第2~T+1层自适应长度编码所组成的T个子种群。

(3)子种群优化阶段:运用子种群目标函数评估优化任一子种群中的每个移动路线,运用子种群的进化操作更新子种群中每个移动路线的编码;优化堆垛机在单个工作循环的移动路线;输出优化后的移动路线即输出最优移动路线个体。

所述子种群目标函数的表达式为:

其中f

进一步用到进化操作来更新子种群编码,优化堆垛机在单个工作循环内的移动路线。所有子种群中的每条堆垛机工作路线,都可以看成是一个特殊的车辆路径问题(VRP),因此在子种群优化过程中,采用现成的解决VRP问题的先进搜索算子,可以高效地对所有工作路线进行优化。即采用解决VRP问题的先进搜索算子对任一移动路线进行搜索,然后利用子种群目标函数进行求优,以对任一移动路线进行优化。

初始化阶段中,多层自适应长度编码出的堆垛机工作路线内,由于堆垛机在一个工作循环内的任意时刻存在载量约束:

其中,m

上述载量约束的第一个公式即在一个工作循环的初始堆垛机可为满载,因此,堆垛机在初始满载的情况下,一定会首先造访第一个空格并放入一件单位载荷:

其中,

其中,存储请求和检索请求的总数均为N:

表明所有存储请求和检索请求都需要被分配到堆垛机工作循环的路线上。

堆垛机的任意一次移动必须只能是存储请求(S请求)、检索请求(R请求)和检索存储(RS请求)中的一种,不能重复也不能缺省,表示为

另外,堆垛机取送货过程还必须满足货架空间约束,堆垛机在一次循环中,不能重复访问同一地点,也不能超出货架的范围:

1≤x

1≤z

其中x

上述载量约束的第二个公式即堆垛机的载量不能小于0,在无效移动时载量不能减少。上述载量约束的第三个公式即堆垛机的载量不能超过最大额定载量。在堆垛机单个工作循环内的取货和送货过程中,当最大载货容量超过额定容量,不满足约束要求时,通过调整自适应编码长度和顺序的方式满足堆垛机容量的约束要求,具体表现为给堆垛机优先安排存储任务以腾出载货空间满足约束要求。

具体可通过以下方式调整所述可行解个体第2-T+1层的编码,使得移动路线符合载量约束:

调整编码使得首编码为空位序号;

将编码中空位序号的出现个数达到所述堆垛机的最大额定载量之后出现的空位序号移至编码末端;

通过对编码进行解码在移动路线中确定检索存储操作的数量和位置。

具体地,当一个工作循环不满足堆垛机最大额定载量的约束要求时,需要对该工作循环的编码进行调整修复,编码的调整修复过程如图4所示。主要存在两个步骤。第一步是将所有首编码不是E类型请求的无效编码找出,向后寻找出现的第一个E请求,将其插入到编码头部。第二步是在堆垛机的工作循环中,当编码中空位序号的出现个数达到所述堆垛机的最大额定载量之后,即堆垛机已经在E请求所在的空位置卸下最后一个货物后,编码指定的下一位置仍为空位置,则将该E请求移动至编码尾部。图4中是以堆垛机的最大额定载量为2的示例,主要展示为满足载量约束对编码进行的两种修复方式,并不对实际参数造成限定。

为了保证这个载量约束要求,还需要对堆垛机的每个工作循环进行解码。工作循环内的解码过程如图5所示,其中,编码中空位序号即E序号对应E请求,所述检索请求的序号即R序号对应R请求。解码的主要目的是找出检索存储请求(RS请求)的数量和位置。在RS请求解析的过程中,需要先删去无效编码部分,之后从编码左侧起向右方向寻找第一个E请求,找到之后再寻找其右侧第一个与之匹配的R请求。二者匹配的条件是,R请求的下一个请求不再是R请求(可以是E请求或无效编码)。随后,将匹配完毕的E和R从编码中删除。从原E请求的位置开始,继续向右寻找下一个E请求,重复这一过程,直到所有E请求都被删除完毕,此时剩下的请求,即为RS请求,RS请求即在一个货位处先完成一个检索请求取出一个货物再完成一个存储请求放入一个货物。若在这一过程的最后仍存在未被删除完毕的E请求,则表示在此次堆垛机的工作循环中违反了载量约束,前往了不必要的空货位,以表4中的自适应长度编码为例,解析出的RS请求如表5所示。

表5具体实例中解析出的RS请求

/>

通过上述修复编码以及解析RS请求的步骤,就可以将堆垛机路径规划问题完美地转化为TSP/VRP问题,并使用成熟且高效的进化算子对子种群中的所有编码进行同步优化,并且这一过程中不再会有不可行解产生。图5为对三种编码的RS请求解析过程示例,并不对实际参数造成限定。

进一步地,堆垛机在执行出入库任务的过程中,货架上的空位是不断变化的,而编码中的空位编号是不变的,因此需要用到空位记录表对变化的空位进行记录并实时更新;即S3中在每条移动路线的每次移动之后更新空位序号对应的货位坐标。如图6中(a)所示,在第1个工作循环开始后,首先堆垛机移动到E1位置,并放入一个货物,此时E1空位消失;接着堆垛机移动到R1位置,取回一个货物,此时在R1位置产生了一个空位,因此空位实际上是从E1位置转移到了R1的位置上,与此同时在空位记录表中记下E1与R1的键值对。下一步堆垛机继续依次移动到E2和R2位置,同样空位从E2位置转移到了R2位置,在空位记录表中记录下E2和R2的关系。如图6中(b)所示,到了堆垛机的第2个工作循环,在自适应长度编码中再次出现了E2,此时E2的位置已经转移到了R2的位置上。于是堆垛机通过空位记录表上E2与R2,直接移动到R2所在位置,并放入一个货物,此时空位再次消失;接着堆垛机移动到R3位置,得知R3是一个RS请求,不会造成空位变化;最后堆垛机移动到R4位置,取回一个货物并产生了一个空位,因此空位实际上是从E2位置转移到了R4的位置上,在空位记录表上将E2和R2键值对更新为E2和R4,最后堆垛机回到原点,完成第2个工作循环。

(4)全局优化阶段:运用全局目标函数评估所有可行解个体,获取精英个体;对精英个体进行选择、变异以及局部搜索操作中的至少一种进行新个体的产生;然后运用全局目标函数评估新个体,输出最优解。

先将优化后的各子种群合并,形成多个局部优化后的可行解个体,再用全局目标函数评估所有个体。所述全局目标函数的表达式为:

其中,f

进一步地,对精英个体进行选择、变异操作具体包括:在这一部分当中,一方面,针对第1层的S编码,通过轮盘赌的方式,在每n个可行解个体中挑选出1个精英个体,再使用交换、头插、区间反转等操作算子对精英个体进行变异。另一方面,针对第2-T+1层堆垛机的工作循环编码,采用同样的方式挑选出精英个体,在同一个个体第2-T+1层编码的众多序列中提取出所有的R编码,对R编码进行交换、头插、区间反转等变异操作,再放回同样的序列位置,从而实现了与精英个体相似的新个体的产生。其中通过轮盘赌的方式挑选精英个体时,全局目标函数较优的个体被挑中的概率越大。

进一步地,对精英个体进行局部搜索操作具体包括:在局部搜索的过程中,针对第2-T+1层编码,在其中随机选取若干个工作循环序列,改变堆垛机工作路线上的空货位序位,即E编码在序列中的位置进行局部搜索并选择性地接受新解,即需要对新解进行编码修复使其满足载量约束,即用如图4所示的修复方式对不满足约束的不可行解进行修复。

(5)结束阶段:判定是否满足结束要求,若是输出最优解,否则回到阶段(2)重新进行子种群划分和优化。结束要求即预设的迭代次数,在迭代次数达到最大迭代次数时,输出最优解即为最优的调度方案。

具体表现为算法判断是否满足终止条件,如果未满足终止条件,则回到阶段(2)再次将更新后的全局种群划分为多个子种群并进行阶段(3)子种群优化和阶段(4)全局优化。如果算法满足终止条件后,则会输出搜索得到的最优解,并根据最优解解析出堆垛机的最优工作路线图,在本示例的具体实例中,最后得到堆垛机工作路线如图7所示,具体路线表如下表6所示:

表6具体实例中的最优调度方案

本发明提供了一种基于混合遗传协同进化算法的多载式堆垛机调度方法,方法包括:将N个存储请求和N个检索请求分配到最大额定载量为M的堆垛机的T个工作循环中;以堆垛机完成当前所有货物清单的能量消耗和根据当前货物重量、吞吐频率预估的潜在能量消耗之和得到的预估能量消耗最小化为目标构建目标函数;对应堆垛机在同一个货位上存储检索产生单个工作循环内移动次数变化的多层自适应长度编码方式;将混合遗传算法嵌入协同进化框架中,利用全局搜索改变编码解的结构,以及利用局部搜索提升堆垛机在单个工作循环内解的子空间内的优化效率。本方法可以充分利用多载式堆垛机执行双指令循环时多载量的优势,降低完成存储检索清单的时间和能量消耗,提升立体仓库的调度效率和工作效果。

本发明将多载式堆垛机工作周期内的路径规划问题和存储请求选择问题集成在一起解决,建立了新的目标函数,以堆垛机完成当前所有货物的能量消耗和根据当前货物重量、吞吐频率预估的潜在能量消耗之和得到的预估能量消耗最小化为目标构建目标函数,覆盖范围更广,可以对立体仓库运行过程进行更长期的优化。

本发明将共享存储货位的思想做了进一步的使用,将检索存储操作(RS操作)作为了堆垛机的一个工作循环内的可选择项,更具调度灵活性。

本发明提出了一种多层自适应长度编码,可以完整地实现从解空间到问题空间的映射,编码长度的自适应性可以很好地解决工作周期内途径货位点个数不同带来的编码困难问题。

本发明将混合遗传算法嵌入到协同进化框架当中来强化搜索性能。在子种群优化阶段采用进化操作优化子种群编码,在全局优化阶段对可行解进行选择操作、变异操作和局部搜索来优化所有个体,提高了搜索效率,加快了算法的收敛速度。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种基于区块链存证平台自定义存证系统的方法和装置
  • 一种网页信息搜索方法及装置
  • 网页信息提取方法和装置
  • 一种网页信息获取方法、装置以及设备
  • 一种基于区块链存证的识别证据真实性的方法及装置
  • 网页信息存证方法及装置
  • 网页信息存证方法及装置
技术分类

06120116518575