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

资源分配的方法、装置、设备、存储介质及程序产品

文献发布时间:2023-06-19 11:39:06


资源分配的方法、装置、设备、存储介质及程序产品

技术领域

本申请涉及智能仓储技术,尤其涉及一种资源分配的方法、装置、设备、存储介质及程序产品。

背景技术

在智能仓储系统中,当订单进入仓储系统并将其分配到操作台后,需为订单匹配库存箱中所存储的SKU(Storage Keeping Unit,库存量单位)及拣选数量,以满足每个操作台对该SKU的需求。所生成的匹配结果, 可认为是一个任务的集合,这些任务集合会下发到机器人或拣货人员进行拣货。对于同一批订单,更合理的生成任务,可使得总体拣货过程所消耗的时间资源更少。

目前,为操作台分配库存SKU的计算过程是基于订单需求、SKU库存等初始输入环境数据确定资源分配结果,实现资源分配。资源分配过程需要较长的时间,如果在资源分配过程中环境数据发生改变,会影响资源分配结果在实际执行中的可行性,资源分配结果的可行性差。

发明内容

本申请提供一种资源分配的方法、装置、设备、存储介质及程序产品,用以提高为操作台分配库存的结果的可行性。

一方面,本申请提供一种资源分配方法,包括:

在根据第一时刻的需求的数据和资源的库存数据,为每个所述需求分配资源,得到每个需求的第一分配结果之后,根据第二时刻的需求的数据和资源的库存数据,确定在所述第一时刻至所述第二时刻期间发生变化的需求和资源,其中,所述第一分配结果中包括为需求分配的资源;释放发生变化的需求对应的第一分配结果,和/或,发生变化的资源对应的第一分配结果;根据当前时刻的需求的数据和资源的库存数据,为所述发生变化的需求重新分配资源,得到第二分配结果。

一种可选地实施方式中,所述根据第一时刻的需求的数据和资源的库存数据,为每个所述需求分配资源,得到每个需求的第一分配结果,包括:响应于资源分配请求,所述资源分配请求包括第一时刻的需求的数据和资源的库存数据,根据所述第一时刻的需求的数据和资源的库存数据,为每个所述需求分配资源,得到每个所述需求的第一分配结果。

一种可选地实施方式中,所述根据第二时刻的需求的数据和资源的库存数据,确定在所述第一时刻至所述第二时刻期间发生变化的需求和资源,包括:响应于资源分配结果请求,所述资源分配结果请求包括所述第二时刻的需求的数据和资源的库存数据,根据所述第二时刻的需求的数据和资源的库存数据,确定在所述第一时刻至所述第二时刻期间发生变化的需求和资源。

一种可选地实施方式中,根据第一时刻的需求的数据和资源的库存数据,为每个所述需求分配资源,得到每个需求的第一分配结果,包括:根据所述第一时刻的需求的数据和资源的库存数据,利用启发式构造算法,对每个所述需求进行以下资源分配处理:根据第一库存箱中的未分配资源,为当前需求分配所述第一库存箱中的未分配资源,所述第一库存箱为与当前需求对应的第一操作台关联的库存箱;若所述第一库存箱中的未分配资源不满足所述当前需求,则为所述当前需求分配第二库存箱中的资源,所述第二库存箱为未关联到任何操作台的库存箱;若所述第二库存箱中的资源不满足所述当前需求,则根据与第二操作台关联的第三库存箱中的未分配资源,为所述当前需求分配所述第三库存箱中的未分配资源,所述第二操作台为除所述第一操作台之外的任意操作台;其中,任一操作台关联的库存箱是指箱内的至少一个资源已分配给该操作台的库存箱。

一种可选地实施方式中,所述根据第一库存箱中的未分配资源,为当前需求分配所述第一库存箱中的未分配资源,包括:若所述第一库存箱中存在至少一个第四库存箱,任一所述第四库存箱内的未分配资源满足所述当前需求,则根据任一所述第四库存箱内的未分配资源,为所述当前需求分配资源;若所述第一库存箱中不存在所述第四库存箱,则将未分配资源最多的第一库存箱中的未分配资源,分配给所述当前需求。

一种可选地实施方式中,所述根据任一所述第四库存箱内的未分配资源,为所述当前需求分配资源,包括:根据未分配资源最少的第四库存箱内的未分配资源,为所述当前需求分配资源。

一种可选地实施方式中,所述为所述当前需求分配第二库存箱中的资源,包括:若所述第二库存箱中存在至少一个第五库存箱,任一所述第五库存箱内的未分配资源满足所述当前需求,则根据任一所述第五库存箱内的未分配资源,为所述当前需求分配资源;若所述第二库存箱中不存在所述第五库存箱,则将未分配资源最多的第二库存箱中的未分配资源,分配给所述当前需求。

一种可选地实施方式中,所述根据任一所述第五库存箱内的未分配资源,为所述当前需求分配资源,包括:根据与所述第一操作台距离最近的第五库存箱内的未分配资源,为所述当前需求分配资源。

一种可选地实施方式中,所述根据与第二操作台关联的第三库存箱中的未分配资源,为所述当前需求分配所述第三库存箱中的未分配资源,包括:若所述第三库存箱中存在至少一个第六库存箱,任一所述第六库存箱内的未分配资源满足所述当前需求,则根据任一所述第六库存箱内的未分配资源,为所述当前需求分配资源;若所述第三库存箱中不存在所述第六库存箱,则将未分配资源最多的第三库存箱中的未分配资源,分配给所述当前需求。

一种可选地实施方式中,所述根据任一所述第六库存箱内的未分配资源,为所述当前需求分配资源,包括:确定每个所述第六库存箱关联的操作台的数量;根据关联的操作台的数量最少的第六库存箱中的未分配资源,为所述当前需求分配资源。

一种可选地实施方式中,所述根据所述第一时刻的需求的数据和资源的库存数据,利用启发式构造算法,对每个所述需求进行以下资源分配处理,包括:根据所述第一时刻的需求的数据和资源的库存数据,对所述需求进行筛选处理,得到第一需求集合,所述第一需求集合包括:对应的第一资源的数量与目标资源的未分配需求数量的差最小的需求,其中所述第一资源是所述需求对应的操作台关联的库存箱内未分配的所述目标资源;对所述第一需求集合中的每个需求进行所述资源分配处理;若存在未满足的需求,则对未满足的需求进行所述筛选处理,得到新的第一需求集合,并对新的第一需求集合中的每个需求进行所述资源分配处理,直至满足所有需求。

一种可选地实施方式中,所述利用启发式构造算法,对每个所述需求进行以下资源分配处理之前,还包括:根据所述第一时刻的需求的数据和资源的库存数据,确定初始的需求集合和初始的资源集合,所述初始的需求集合包含所有需求,每个所述需求包括任一操作台对任一资源的需求数量,所述初始的资源集合包含多个资源库存信息,每个所述资源库存信息用于记录任一资源在任一存储箱的库存数量。

一种可选地实施方式中,所述根据所述第一时刻的需求的数据和资源的库存数据,确定初始的需求集合和初始的资源集合之后,还包括:根据所述初始的需求集合和初始的资源集合,确定每个所述需求对应的候选资源集合,所述候选资源集合包括所述需求所需资源对应的资源库存信息;在为任一需求分配资源时,从所述需求对应的候选资源集合中确定为所述需求分配的资源。

一种可选地实施方式中,所述根据所述第一时刻的需求的数据和资源的库存数据,利用启发式构造算法,对每个所述需求进行以下资源分配处理,还包括:存储并更新每个操作台与库存箱的关联信息。

一种可选地实施方式中,所述根据所述第一时刻的需求的数据和资源的库存数据,利用启发式构造算法,对每个所述需求进行以下资源分配处理,还包括:存储并更新每个操作台关联的库存箱内的未分配资源的数量。

一种可选地实施方式中,在根据第一时刻的需求的数据和资源的库存数据,为每个所述需求分配资源,得到每个需求的第一分配结果之后,还包括:对所述第一分配结果进行至少一次优化处理。

一种可选地实施方式中,所述对所述第一分配结果进行至少一次优化处理,包括:利用爬山算法对所述第一分配结果进行第一优化处理,并利用模拟退火算法对第一次优化处理后的第一分配结果进行第二次优化处理。

一种可选地实施方式中,利用邻域搜索算法对当前的分配结果进行优化处理,包括:对当前的分配结果进行至少一次以下迭代优化处理:释放任一操作台关联的任一库存箱内的已分配资源对应的分配结果;根据已存储的禁忌信息,为未满足的需求随机分配资源,得到邻域可行解;根据所述邻域可行解,对当前的分配结果再次进行优化处理。

一种可选地实施方式中,还包括:当对分配结果进行所述迭代优化处理的次数大于或等于迭代次数阈值时,清除已存储的禁忌信息。

一种可选地实施方式中,所述根据已存储的禁忌信息,为未满足的需求随机分配资源,得到邻域可行解之前,还包括:生成并存储所述操作台和所述库存箱对应的禁忌信息,所述禁忌信息用于禁止将所述库存箱内的资源分配给所述操作台的需求。

一种可选地实施方式中,所述根据已存储的禁忌信息,为未满足的需求随机分配资源,得到邻域可行解之前,还包括:根据已存储的禁忌信息,若确定无法满足至少一个需求,则根据所述禁忌信息对应的时间戳,删除至少一条所述禁忌信息。

另一方面,本申请提供一种资源分配装置,包括:

数据获取模块,用于在根据第一时刻的需求的数据和资源的库存数据,为每个所述需求分配资源,得到每个需求的第一分配结果之后,根据第二时刻的需求的数据和资源的库存数据,确定在所述第一时刻至所述第二时刻期间发生变化的需求和资源,其中,所述第一分配结果中包括为需求分配的资源;扰动修正模块,用于释放发生变化的需求对应的第一分配结果,和/或,发生变化的资源对应的第一分配结果;根据当前时刻的需求的数据和资源的库存数据,为所述发生变化的需求重新分配资源,得到第二分配结果。

另一方面,本申请提供一种资源分配设备,包括:

处理器,存储器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序;其中,所述处理器运行所述计算机程序时实现上述任一项所述的方法。

另一方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现上述任一项所述的方法。

另一方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任一项所述的方法。

本申请提供的资源分配的方法、装置、设备、存储介质及程序产品,通过在根据第一时刻的需求的数据和资源的库存数据,为每个所述需求分配资源,得到每个需求的第一分配结果之后,根据第二时刻的需求的数据和资源的库存数据,确定在所述第一时刻至所述第二时刻期间发生变化的需求和资源,释放发生变化的需求对应的第一分配结果和/或发生变化的资源对应的第一分配结果,并为所述发生变化的需求重新分配资源,从而实现对在进行资源分配期间发生扰动的第一分配结果进行修复,极大地减少资源分配结果中不可行的分配结果,提高了资源分配结果在实际执行中的可行性。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1为本申请实施例一提供的资源分配方法流程图;

图2为本申请实施例二提供的资源分配方法流程图;

图3为本申请实施例三提供的资源分配方法流程图;

图4为本申请实施例三提供的第一存储器的示意图;

图5为本申请实施例三提供的第二存储器的示意图;

图6为本申请实施例三提供的一种领域算子的框架图;

图7为本申请实施例四提供的资源分配装置的结构示意图;

图8为本申请实施例五提供的资源分配装置的结构示意图;

图9为本发明实施例六提供的资源分配设备的结构示意图。

通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

首先对本申请实施例所涉及的名词进行解释:

SKU(Storage Keeping Unit,库存量单位)是库存进出计量的基本单位,也称为库存基本计量单位,可以是以件,盒,托盘等为单位。货物可以通过SKU来表示,货物种类可以是指SKU种类,不同的SKU对应不同的种类。

此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。

本申请提供的资源分配方法,具体可以应用于如下场景:当订单进入系统并将订单分配到对应操作台后,需要基于操作台的订单需求匹配库存箱中所存储的SKU及拣选数量,以满足操作台对该SKU的需求。所得到的匹配结果可以认为是一个任务的集合, 这些集合会下发到机器人或拣货人员进行拣货。

资源分配的问题是一个组合优化的问题,“订单-库存箱”的优化匹配问题为NP-Hard 问题。作为组合优化问题,其求解方法包括以下4类:

1)精确求解方法:通过对问题建模成整数线性规划问题(ILP)或约束满足问题(CSP),并使用相应精确方法进行计算,包括但不限于单纯型法,列生成法,内点法等。 该类方法优势为可准确找到当前问题的最优解。然而,随着电商等商业模式的快速发展,问题的规模也不断提升, 因此,精确求解方法已无法在合理时间内完成求解过程。 因此在实际应用场景中求解订单-操作台-库存箱匹配问题中,该方法鲜有应用。

2)机器学习方法:该类方法主要使用机器学习相关技术,包括但不限与监督/无监督学习,强化学习等技术。该类方法首先根据已有的海量数据(增强学习不需要数据),使用大量时间及计算资源训练整体模型(包括策略模型),并把该模型应用在问题求解中。根据所训练的模型构造可行解。此类算法可在大规模问题中快速构造质量相对较好的解。然而,在实际应用当中面临以下问题:1.如果问题需求发生改变,需要重新建立并训练模型。 重新训练模型的过程需要经历完整数据清洗,特征筛选等过程。增加大量开发投入。2.即使针对同一问题,如果问题规模或环境发生改变,原本数据训练的模型也不再适用。对于增强学习,如使用马尔科夫决策过程模型进行理解, 当环境发生改变, 其奖励及回报模型也会发生改变,因此需要重新训练模型。3.模型训练精度与数据的质量及数量强相关。很多项目在开始时并没有海量数据进行训练。4. 现有求解组合优化问题的机器学习求解方法依旧在探索阶段, 总体表现并不突出,无法与元启发或超启发等迭代优化算法相比。

3)启发式构造方法:该类算法为人工智能在大规模组合优化问题求解中的最早应用。 主要理念是模拟人类在求解组合优化问题中所使用的策略对问题进行求解。对于匹配优化问题, 可以理解为使用一组资源去更好的满足一组需求。启发式构造算法为均为迭代算法。 每一个循环中,使用需求选择启发策略从未解决的需求中选择一个需求,并使用资源 选择启发策略从可满足的资源中选择进行匹配。 该方法可在极短的时间内生成直觉上较优的解,且算法较容易被理解及实现。 另外求解过程与问题规模相关性较小,不会随着问题规模的提高而大量增加完备解生成时间。 因此,在产业界得到广泛应用。 然而该类算法却面对以下缺点:1.启发策略与问题强相关。当问题的维度或(强/弱)约束发生改变。会造成原有启发策略不再适用,需要重新开发资源及需求的启发策略。然而启发策略的开发,需要基于行业经验及数学模型,开发成本较大。需要较多的试错过程。2.因构造算法其行为模式决定其无法在可行解范围内进行探索。 在求解大规模NP-Hard 问题时,启发式策略无法对其进行完美解耦。 会存在大量的潜在优化解没有被发现, 优化深度浅。

4)两步优化方法:以上1)-3)三类算法均可归类为一步优化方法。另外一种方法为二步优化方法,该类算法分主要为两步:第一步:构造初始可行解。通常可使用随机构造算法或启发式构造算法进行构造。第二步:迭代优化可行解,搜索优化解。通常使用元启发、超启发模式,从可行解开始进行迭代搜索优化,使用元启发搜索策略对在可行解域内搜索最优解。

该类算法被广泛应用在大规模组合优化求解。主要有三个优点:(1)可行解构造过程耗时短,可在算法执行初期判定输入数据是否可以生成可行解。(2)优化过程是在可行解范围内搜索,逐步搜索更好的解。无论何时停止,都可以返回一个停止时获得的最优解且该解可行。(3)优化过程如使用元启发算法,优化算法设计会与问题模型脱离。问题模型的改动,无需对优化算法进行改动。仅需对随机搜索方式进行改动,过程也仅仅需要考虑解是否可行,通常无需考虑质量。并且,因为优化算法可对解的质量进行优化,对初始解的构造算法的优化能力依赖较弱,通常在构造算法只关注解是否可行且完备,而不考虑解质量。因此,二步优化在问题模型出现变动的情况下,开发成本更低,且在可以接受的时间范围内,根据输入数据,得到优化解。

然而,尽管二步优化模型有如上优势,并且在很多基于假设被简化的标准组合优化问题模型中取得了最好的表现。但在实际应用中,尤其对环境动态改变的场景中的应用比较局限。主要由如下原因引起:1. 二步优化类算法求解过程较长,通常为十秒级或分钟级。且为了保证算法的探索能力,以及对将算法与求解问题模型解耦,会引入随机机制。使得求解过程收敛速度较慢,需要使用较多的计算时间及资源。2. 因为使用较多时间进行优化计算,且计算过程始终是基于初始输入数据求解。如果优化求解期间环境(问题)发生扰动,则会影响计算完成后的输出结果在实际执行中的可行性。部分方案中,会将“订单-操作台-库存”匹配问题建模成动态优化问题。即每一次环境发生扰动,都会通知算法更改更改问题数据,并根据扰动对问题模型及结果进行修复。但对于扰动较多的场景,每一次扰动都调整问题,并对解进行修复,会占用大量计算资源。另外,传统仓库管理系统(WMS)等库存系统的设计模式使用应答式交互模式。对于动态问题模型的兼容能力较差。 如开发环境改变侦测模块,并实时下发给求解器,开发成本较大。

本申请将为操作台的需求匹配库存箱中的SKU及拣选数量的过程,称为资源分配的过程,所得到的匹配结果也就是资源分配结果。

下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。

实施例一

图1为本申请实施例一提供的资源分配方法流程图。本申请提供的资源分配方法的执行主体是资源分配设备,该资源分配设备可以是智能仓储系统中的仓储管理系统,或者是其他用于进行资源分配的电子设备,本实施例此处不做具体限定。如图1所示,该方法具体步骤如下:

步骤S101、在根据第一时刻的需求的数据和资源的库存数据,为每个需求分配资源,得到每个需求的第一分配结果之后,根据第二时刻的需求的数据和资源的库存数据,确定在第一时刻至第二时刻期间发生变化的需求和资源,其中,第一分配结果中包括为需求分配的资源。

其中,第一时刻早于第二时刻。第一时刻的需求的数据可以包括在第一时刻任一操作台对任一SKU的需求,第一时刻的资源的库存数据包括在第一时刻各库存箱中的SKU及SKU的库存数量等信息。

第一时刻的需求的数据和资源的库存数据,可以根据第一时刻的订单信息和操作台信息来确定,第一时刻的资源的库存数据可以根据第一时刻的仓储系统的库存信息确定。

资源分配设备获取第一时刻的需求的数据和资源的库存数据,并根据第一时刻的需求的数据和资源的库存数据,进行资源分配,得到第一分配结果,第一分配结果中包括为任一需求分配的资源。

在实际应用中,考虑到在根据第一时刻的需求的数据和资源的库存数据进行资源分配期间,系统中的需求和资源都有可能会发生变化,会影响第一分配结果在实际执行中的可行性。

本实施例中,在根据第一时刻的需求的数据和资源的库存数据,为每个需求分配资源,得到每个需求的第一分配结果之后,资源分配设备可以获取第二时刻的需求的数据和资源的库存数据,并确定在第一时刻至第二时刻期间发生变化的需求和资源。

步骤S102、释放发生变化的需求对应的第一分配结果,和/或,发生变化的资源对应的第一分配结果。

若确定存在在第一时刻至第二时刻期间发生变化的需求,则确定发生变化的需求对应的第一分配结果,并释放发生变化的需求对应的第一分配结果。其中,任一需求对应的第一分配结果是为该需求分配任一资源的分配结果。

若确定存在在第一时刻至第二时刻期间发生变化的资源,则确定发生变化的资源对应的第一分配结果,并释放发生变化的资源对应的第一分配结果。其中,任一资源对应的分配结果是指将该资源分配给任一需求的分配结果。

步骤S103、根据当前时刻的需求的数据和资源的库存数据,为发生变化的需求重新分配资源,得到第二分配结果。

在释放发生变化的需求对应的第一分配结果和/或发生变化的资源对应的第一分配结果之后,根据当前时刻的需求的数据和资源的库存数据,为发生变化的需求重新分配资源,以实现对在进行资源分配期间发生扰动的第一分配结果进行局部匹配修复,得到第二分配结果。至此,得到满足第一时刻的所有需求的资源分配结果。

本申请实施例通过在根据第一时刻的需求的数据和资源的库存数据,为每个需求分配资源,得到每个需求的第一分配结果之后,根据第二时刻的需求的数据和资源的库存数据,确定在第一时刻至第二时刻期间发生变化的需求和资源,释放发生变化的需求对应的第一分配结果和/或发生变化的资源对应的第一分配结果,并为发生变化的需求重新分配资源,从而实现对在进行资源分配期间发生扰动的第一分配结果进行修复,极大地减少资源分配结果中不可行的分配结果,提高了资源分配结果在实际执行中的可行性。

实施例二

图2为本申请实施例二提供的资源分配方法流程图。在上述实施例一的基础上,本实施例中,采用二次请求模式,首次请求发生在t0 时刻,系统发送包含t0时刻的输入数据d0的第一次请求,请求资源分配设备开始进行资源分配。资源分配设备根据d0进行资源分配,得到第一分配结果。在t1时刻,系统发送包含t1时刻的输入数据d1的第二次请求,请求资源分配设备进行资源分配结果进行局部匹配修复。资源分配设备已经找到t1-t0期间的优化解(即第一分配结果), 资源分配设备根据d0与d1的差别自动计算t1-t0期间系统发生的扰动,并在第一分配结果中侦测到哪些需求的匹配不可行,将这部分匹配结果从第一分配结果中删除,并对这些需求进行局部匹配修复(也即为未满足的需求重新分配资源),得到第二分配结果。因基于第二次请求进行局部匹配修复的过程只是对极小一部分分配结果进行重新构造,因此修复的时间极短。通过二次请求的模式,极大程度上减少了资源分配执行期间环境扰动引起资源分配结果无法执行的可能性。

如图2所示,该方法具体步骤如下:

步骤S201、响应于资源分配请求,资源分配请求包括第一时刻的需求的数据和资源的库存数据,根据第一时刻的需求的数据和资源的库存数据,为每个需求分配资源,得到每个需求的第一分配结果。

本实施例中,资源分配请求是系统向资源分配设备发送的第一次请求。资源分配请求包含第一时刻的输入数据,用于请求资源分配设备根据第一时刻的输入数据进行资源分配。

其中,第一时刻的输入数据可以包含第一时刻的需求的数据和资源的库存数据。

示例性地,系统发送的资源分配请求可以包括第一时刻的订单信息,操作台信息,库存信息等输入数据。资源分配设备对第一时刻的输入数据进行数据预处理,可以得到第一时刻的需求的数据和资源的库存数据。

资源分配设备根据第一时刻的需求的数据和资源的库存数据,为每个需求分配资源,得到每个需求的第一分配结果,可以采用能够实现类似功能的资源分配的算法实现,本实施例此处不做具体限定。

其中,资源分配设备根据第一时刻的需求的数据和资源的库存数据,为每个需求分配资源,得到每个需求的第一分配结果,可以包括构造初始解及对初始解进行优化的过程,直至达到终止时刻(如第二时刻)后,得到优化后的可行解,也即第一分配结果。

示例性地,可以采用精确求解的方法、机器学习方法、启发式构造方法、两步优化方法等实现资源分配,得到第一分配结果,此处不再赘述。

一种可选地实施方式中,资源分配设备根据第一时刻的需求的数据和资源的库存数据,为每个需求分配资源,得到每个需求的第一分配结果,这一过程的具体实施方式可以通过实施例三提供的方法实现,详见实施例三。

可选地,在资源分配设备根据第一时刻的需求的数据和资源的库存数据,为每个需求分配资源,得到每个需求的第一分配结果之后,资源分配设备可以向系统发送通知消息。该通知消息用于通知资源分配已完成。系统在接收到该通知消息之后,向资源分配设备发送资源分配结果请求。

步骤S202、响应于资源分配结果请求,资源分配结果请求包括第二时刻的需求的数据和资源的库存数据,根据第二时刻的需求的数据和资源的库存数据,确定在第一时刻至第二时刻期间发生变化的需求和资源。

其中,资源分配结果请求是系统向资源分配设备发送的第二次请求。资源分配请求包含第二时刻的输入数据,用于请求资源分配设备根据第二时刻的输入数据进行资源分配结果的局部匹配修复。第二时刻的输入数据可以包含第二时刻的需求的数据和资源的库存数据。

示例性地,系统发送的资源分配结果请求可以包括第二时刻的订单信息,操作台信息,库存信息等输入数据。资源分配设备对第二时刻的输入数据进行数据预处理,可以得到第二时刻的需求的数据和资源的库存数据。

示例性地,第二时刻与第一时刻的间隔时长可以根据实际应用场景的需要进行设置和调整,本实施例此处不做具体限定。在第一时刻至第二时刻期间,系统的外部环境或许会发生一些相关的扰动,这些扰动会导致部分需求和/或资源发生更改,会影响第一分配结果在实际执行中的可行性。

资源分配设备可以根据第一时刻的需求的数据和资源的库存数据,和第二时刻的需求的数据和资源的库存数据,确定在第一时刻至第二时刻期间发生变化的需求和资源。

步骤S203、释放发生变化的需求对应的第一分配结果,和/或,发生变化的资源对应的第一分配结果。

若确定存在在第一时刻至第二时刻期间发生变化的需求,则确定发生变化的需求对应的第一分配结果,并释放发生变化的需求对应的第一分配结果。其中,任一需求对应的第一分配结果是为该需求分配任一资源的分配结果。

若确定存在在第一时刻至第二时刻期间发生变化的资源,则确定发生变化的资源对应的第一分配结果,并释放发生变化的资源对应的第一分配结果。其中,任一资源对应的分配结果是指将该资源分配给任一需求的分配结果。

步骤S204、根据当前时刻的需求的数据和资源的库存数据,为发生变化的需求重新分配资源,得到第二分配结果。

在释放发生变化的需求对应的第一分配结果和/或发生变化的资源对应的第一分配结果之后,这些发生变化的需求未被满足,根据当前时刻的需求的数据和资源的库存数据,为发生变化的需求重新分配资源,以实现对在进行资源分配期间发生扰动的第一分配结果进行局部匹配修复,得到第二分配结果。至此,得到满足第一时刻的所有需求的资源分配结果。

该步骤中,为发生变化的需求重新分配资源的实现方式,与步骤S201中为每个需求分配资源的方式一致,此处不再赘述。

在为发生变化的需求重新分配资源之后,将所有需求的分配结果反馈给系统,使得系统根据资源分配结果,生成对应的任务集合,并下发到机器人或拣货人员进行拣货。

本实施例通过二次请求模式,减少了对传统系统(如仓储管理系统WMS)的改造难度同时减少了进行资源分配的时间限制。进行资源分配完成得到分配结果后,在接受到第二次请求后,仅仅对部分解进行可行性修复,提高了资源分配结果在实际执行中的可行性。

本申请实施例通过二次请求模式,将发送资源分配请求和资源分配结果请求分成两个步骤,能够在根据第一时刻的数据进行资源分配完成后,根据第二时刻的数据确定在第一时刻至第二时刻期间发生变化的需求和资源,释放发生变化的需求和/或资源对应的第一分配结果,并为发生变化的需求重新分配资源,从而实现对在进行资源分配期间发生扰动的第一分配结果进行修复,极大地减少资源分配结果中不可行的分配结果,提高了资源分配结果在实际执行中的可行性。

实施例三

图3为本申请实施例三提供的资源分配方法流程图。在上述实施例一或实施例二的基础上,本实施例中,对资源分配设备进行资源分配的具体实现方式进行详细地说明。

本实施例中,资源分配问题为有约束的二元匹配问题。在建模过程中,将问题的模 型分解为资源集合

其中,资源(用

需求(用

匹配集合

本资源分配问题被定义为:使用资源

目标函数1:所分配的库存箱距离其被分配的操作台的距离(用

目标函数2:操作台个数(用

约束条件1:每个需求都必须被满足。

约束条件2:每个需求所匹配的资源及占用资源的数量必须等于需求中被需要的数量。

约束条件3:每个需求仅仅可以用具有相同SKU的资源匹配。

约束条件4:每个资源被每个需求占用的总量不可以超过需求中SKU所拥有的总数。

约束条件5:每个匹配中,需求所占用的资源数量为自然数。

基于上述问题建模,如图3所示,该方法具体步骤如下:

步骤S301、获取第一时刻的需求的数据和资源的库存数据。

该步骤中,资源分配设备可以根据系统提供的第一时刻的输入数据,确定第一时刻的需求的数据和资源的库存数据。

示例性地,第一时刻的输入数据可以包括第一时刻的操作台信息、订单信息和库存信息。

其中,操作台信息包括:每个操作台位置信息,已经分配到每个操作台的库存箱。已经分配到每个操作台的库存箱可以是已分配到该操作台即将到来的、以及已经在该操作台的库存箱。

订单信息包括:每个订单的SKU及其数量,每个订单被分配在的操作台。

库存信息包括:每个库存箱中放置的SKU及其数量,每个箱子的位置。其中库存箱的位置可以是库存箱所在的位置坐标(例如经纬度)。

资源分配设备根据第一时刻的操作台信息和订单信息,可以确定第一时刻任一操作台的需求的数据,包括任一操作台需求的SKU及数量等。

资源分配设备根据第一时刻的库存信息,可以确定在第一时刻资源的库存数据,包括任一SKU所在的库存箱及该库存箱中该SKU的数量等。

示例性地,在实际应用中,可以每间隔一段时间,针对该段时间内的订单进行资源分配,以满足该段时间内的所有需求。

步骤S302、根据第一时刻的需求的数据和资源的库存数据,确定初始的需求集合和初始的资源集合。

其中,初始的需求集合包含所有需求,每个需求包括任一操作台对任一资源的需求数量。

初始的资源集合包含多个资源库存信息,每个资源库存信息用于记录任一资源在任一存储箱的库存数量。

该步骤中,根据第一时刻的需求的数据和资源的库存数据,生成初始的需求集合

首先,收集全部订单所需要的SKU,并生成SKU的需求集合

同时,根据分配到操作台的订单,生成如下初始的需求集合

其中,

进一步地,根据SKU的需求集合

根据输入数据中的每条订单所需的SKU及库存箱的库存信息,整理出资源集合

遍历

至此,将库存分配问题整理为如上两个集合:需求集合

步骤S303、根据初始的需求集合和初始的资源集合,确定每个需求对应的候选资源集合,候选资源集合包括需求所需资源对应的资源库存信息。

本实施例中,在确定初始的需求集合和初始的资源集合之后,可以针对每个需求(

示例性地,可以采用算法1,生成每个需求对应的候选资源集合,算法1生成每个需求对应的候选资源集合的流程如下:

1 CandidateReqAll ← Φ // 记录每个需求对应的候选资源,初始是空

2 FOR在Requests集合中的每一个需求req

3

4

5 FOR 在 Resouces 集合中的每一个资源res

6

7 IF

8

9 ENDIF

10 ENDFOR

11 CandidateReqAll←CandidateReqAll ∪{

12 ENDFOR

其中,

在上述算法1中, 首先将用于记录每个需求对应的候选资源集合的集合

一种可选地实施方式中,资源分配设备还可以存储并更新每个操作台与库存箱的关联信息。

示例性地,资源分配设备可以维护用于存储操作台与库存箱的关联信息的第一存 储器,用来存储操作台所分配的库存箱集合。例如,如图4所示的“操作台-库存箱 存储器”, 操作台

本实施方式中,输入数据中的库存信息,包括已分配到操作台的库存箱的信息,也即部分库存箱已知即将去往某操作台的信息。在数据预处理阶段,资源分配设备把输入数据中已分配到操作台的库存箱与操作台的关联信息记录在用于存储操作台与库存箱的关联信息的第一存储器中。

示例性地,可以以

在进行资源分配的过程中,当操作台与库存箱的关联信息发生变化时,资源分配设备还可以实时地更新用于存储操作台与库存箱的关联信息的存储器中的信息。

一种可选地实施方式中,资源分配设备还可以存储并更新每个操作台关联的库存箱内的未分配资源的数量。

示例性地,资源分配设备可以维护用于存储操作台关联的库存箱内的未分配资源 的数量的第二存储器,用来存储当前已经分配到每个操作台的库存箱中所存储的SKU及其 还未分配资源(也即未被需求占用、或者剩余的SKU)的数量。例如,如图5所示的“操作台- SKU-剩余库存 存储器”,操作台

在数据预处理阶段,资源分配设备根据第一存储器中操作台与库存箱的关联信息,在第二存储器中录入每个库存箱所存储的SKU及其剩余数量,从而第二存储器的初始化。

本实施例中,根据第一时刻的需求的数据和资源的库存数据,利用启发式构造算法,通过步骤S304-S306对每个需求进行资源分配处理。

步骤S304、根据第一库存箱中的未分配资源,为当前需求分配第一库存箱中的未分配资源,第一库存箱为与当前需求对应的第一操作台关联的库存箱。

具体地,该步骤可以采用如下方式实现:

若第一库存箱中存在至少一个第四库存箱,任一第四库存箱内的未分配资源满足当前需求,则根据任一第四库存箱内的未分配资源,为当前需求分配资源。若第一库存箱中不存在第四库存箱,则将未分配资源最多的第一库存箱中的未分配资源,分配给当前需求。

进一步地,根据任一第四库存箱内的未分配资源,为当前需求分配资源时,根据未分配资源最少的第四库存箱内的未分配资源,为当前需求分配资源。

该步骤中,对于每一个需求

如果分配到该需求对应操作台的库存箱中没有任一

通过该实施方式,能够为该需求优先分配已经关联到该需求对应操作台的库存箱中的未分配资源,能够有效利用已分配到操作台的库存箱,从而获得更优的资源分配结果,能够提高仓储系统的拣选效率。

步骤S305、若第一库存箱中的未分配资源不满足当前需求,则为当前需求分配第二库存箱中的资源,第二库存箱为未关联到任何操作台的库存箱。

本实施例中,该步骤具体可以采用如下方式实现:

若第二库存箱中存在至少一个第五库存箱,任一第五库存箱内的未分配资源满足当前需求,则根据任一第五库存箱内的未分配资源,为当前需求分配资源。若第二库存箱中不存在第五库存箱,则将未分配资源最多的第二库存箱中的未分配资源,分配给当前需求。

进一步地,根据任一第五库存箱内的未分配资源,为当前需求分配资源时,根据与第一操作台距离最近的第五库存箱内的未分配资源,为当前需求分配资源。

该步骤中,如果使用全部静态资源依旧无法满足

对于空闲资源,首先检测是否存在某个

通过该实施方式,能够为该需求优先分配空闲资源,能够尽量避免使用已分配到其他操作台的库存箱中的资源,从而可以避免跨操作台的库存箱的搬运,能够提高仓储系统的拣选效率。

步骤S306、若第二库存箱中的资源不满足当前需求,则根据与第二操作台关联的第三库存箱中的未分配资源,为当前需求分配第三库存箱中的未分配资源,第二操作台为除第一操作台之外的任意操作台。

其中,任一操作台关联的库存箱是指箱内的至少一个资源已分配给该操作台的库存箱。

本实施例中,该步骤具体可以采用如下方式实现:

若第三库存箱中存在至少一个第六库存箱,任一第六库存箱内的未分配资源满足当前需求,则根据任一第六库存箱内的未分配资源,为当前需求分配资源。若第三库存箱中不存在第六库存箱,则将未分配资源最多的第三库存箱中的未分配资源,分配给当前需求。

进一步地,根据任一第六库存箱内的未分配资源,为当前需求分配资源时,确定每个第六库存箱关联的操作台的数量;根据关联的操作台的数量最少的第六库存箱中的未分配资源,为当前需求分配资源。

如果全部空闲资源仍然无法满足

首先查看

本实施例的一种可选的实施方式中,根据第一时刻的需求的数据和资源的库存数据,利用启发式构造算法,对每个需求进行以下资源分配处理时,可以预先筛选出不可静态满足的数量最少的需求,先为这些需求分配库存。

具体地,根据第一时刻的需求的数据和资源的库存数据,对需求进行筛选处理,得到第一需求集合,第一需求集合包括:对应的第一资源的数量与目标资源的未分配需求数量的差最小的需求,其中第一资源是需求对应的操作台关联的库存箱内未分配的目标资源;对第一需求集合中的每个需求进行资源分配处理;若存在未满足的需求,则对未满足的需求进行筛选处理,得到新的第一需求集合,并对新的第一需求集合中的每个需求进行资源分配处理,直至满足所有需求。

示例性地,可以采用算法2.1提供的候选需求选择算法,对需求进行筛选处理,得到第一需求集合。

为了方便对算法2.1和算法2.2的理解,定义如下表1所示的函数:

表1

基于表1提供的函数,算法2.1的具体流程如下:

1 CandidateReq←Φ

2 minAmt←+∞ //用于记录 remAmount的最小值

3 FOR UnassignedReq中每一个需求req

4 station ←req 的操作台

5 remAmount← amt(req)需求 req的需求数量

6 StaticRes ←candidateRes(req)中其库存箱已经被分配到操作台station的资源

7 FOR StaticRes中每一个资源res

8 remAmount ←remAmount -amt(res)

9 ENDFOR //这个循环最终是把最后一个res的未分配数量赋值给remAmount

10 IF minAmt= 0

11 IF remAmount≤ 0

12 CandidateReq←CandidateReq ∪{req}

13 ENDIF

14 ELSE //minAmt不等于 0

15 IF remAmount

16 CandidateReq←Φ

17 minAmt ←max(remAmount,0)// remAmount和0中的最大值

18 ENDIF

19 IF max(remAmount,0)= minAmt

20 CandidateReq←CandidateReq ∪{req}

21 ENDIF

22 ENDIF

23 ENDFOR

24 RETURN CandidateReq

上述算法2.1用来在未分配需求

其中,对于可静态满足的需求,该需求中目标资源的需求数量,可以被该需求对应的操作台关联的库存箱内未分配的目标资源满足。也即是,该需求对应的操作台关联的库存箱内未分配的目标资源的未分配数量大于或等于该需求中目标资源的需求数量。

对于不可静态满足的需求,该需求中目标资源的需求数量,无法被该需求对应的操作台关联的库存箱内未分配的目标资源满足。也即是,该需求对应的操作台关联的库存箱内未分配的目标资源的未分配数量小于该需求中目标资源的需求数量。

不可静态满足的需求具有不可静态满足的数量,是指该需求中目标资源的需求数量,与该需求对应的操作台关联的库存箱内未分配的目标资源的未分配数量的差值。

本实施例中,通过在每轮资源分配之前,筛选出不可静态满足的数量最少或小于等于0(即可全部被静态分配)的需求集合,优先为该需求集合中的需求分配资源,能够有效利用已分配到操作台的库存箱,从而获得更优的资源分配结果,能够提高仓储系统的拣选效率。

示例性地,可以采用如算法2.2所示的启发式构造算法进行资源分配。基于表1中定义的函数,算法2.2的具体流程如下:

1 UnassignedReq← Requests // 用于记录每个需求的候选资源

2 Solution←Φ

3 WHILE UnassignedReq ≠Φ

4 CandidateResReq ← 在UnassignedReq 中使用算法2.1选择需求集合

5 req ← 在CandidateReq中随机选取一个需求;

6 station ←req 的操作台

7 //分配已经分配到该操作台的库存箱中的资源

8 StaticRes ←candidateRes(req)中其库存箱已经被分配到操作台station的资源

9 WHILE StaticRes≠Φ AND amt(req)> 0

10 SufficientStaticRes ←StaticRes中未分配资源的数量不小于amt(req)的资源

11 IF SufficientStaticRes ≠Φ

12 res← minArg (amt(res),∀res ∈SufficientStaticRes ) //SufficientStaticRes中 amt(res)最小的资源

13 amt(req) ←0

14 amt(res) ← amt(res)-amt(req)

15 更新 操作台关联的库存箱内的未分配资源的数量

16 在Solution中记录使用res来满足req的 amt(req)个需求

17 ELSE

18 res← maxArg (amt(res),∀res ∈StaticRes) // StaticRes中amt(res)最大的资源

19 amt(res) ←0

20 amt(req) ← amt(req)-amt(res)

21 更新操作台关联的库存箱内的未分配资源的数量

22 在StaticRes 中去除 res

23 在Solution中记录使用res来满足req的 amt(res)个需求

24 ENDIF

25 ENDWHILE

26 //分配空闲资源

27 FilteredCandidateRes←candidateRes(req)中库存箱中没有被分配到任何操作台的资源

28 WHILE amt(req) >0 AND FilteredCandidateRes ≠Φ

29 SufficientRes ←FilteredCandidateRes中资源数量不小于amt(req)的资源集合

30 IF SufficientRes ≠Φ

31 res← minArg (distance(res,req),∀res ∈SufficientRes )

32 amt(req) ←0

33 amt(res) ← amt(res)-amt(req)

34 更新 操作台与库存箱的关联信息

35 更新 操作台关联的库存箱内的未分配资源的数量

36 在Solution中记录使用res来满足req的 amt(req)个需求

37 ELSE

38 res← maxArg (amt(res),∀res ∈InsufficientRes ) //InsufficientRes中 amt(res) 最大的资源

39 amt(res) ←0

40 amt(req) ← amt(req)-amt(res)

41 更新 操作台与库存箱的关联信息

42 更新 操作台关联的库存箱内的未分配资源的数量

43 在FilteredCandidateRes 中去除 res

44 在Solution中记录使用res 来满足req 的 amt(res)个需求

45 ENDIF

46 ENDWHILE

47 //分配已经分配到其他操作台的库存箱中的资源

48 DislikeRes←candidateRes(req)中库存箱已经被分配到其他操作台的资源

49 WHILE amt(req) >0

50 SufficientRes ←DislikeRes中 剩余资源数量不小于amt(req)的资源

51 IF SufficientRes ≠Φ

53 res←SufficientRes 中库存箱关联的操作台个数最少的资源中随机选取的资源

54 amt(req) ←0

55 amt(res) ← amt(res)-amt(req)

56 更新 操作台与库存箱的关联信息

57 更新 操作台关联的库存箱内的未分配资源的数量

58 在Solution中记录使用res来满足req的 amt(req)个需求

59 ELSE

60 res← maxArg (amt(res),∀res ∈InsufficientRes ) //InsufficientRes中 amt(res)最大的资源

61 amt(res) ←0

62 amt(req) ← amt(req)-amt(res)

63 更新 操作台与库存箱的关联信息

64 更新 操作台关联的库存箱内的未分配资源的数量

65 在DislikeRes中去除 res

66 在Solution中记录使用res来满足req的 amt(res)个需求

67 ENDIF

68 ENDWHILE

69 在UnassignedReq中去除 req

70 ENDWHILE

71 RETURN Solution

如上的启发式构造算法(算法2.2)会将待分配资源池中的每一个待分配资源逐一 进行分配。对于每一个需求

如果使用全部静态资源依旧无法满足

如果全部空闲资源仍然无法满足

每一次匹配的结果都会记录在解

与传统的启发式构造算法相比,本实施例提供的进行资源分配确定第一分配结果的算法,在生成可行的第一资源分配结果的同时,可更好地保证第一资源分配结果的质量。另外,本实施例提供的进行资源分配的启发式构造算法与问题模型脱离,问题改变时,仅仅需要修改其目标函数,及相应的随机邻域算子(与问题弱相关)即可适配。对比传统算法开发投入极小,对领域知识及数学知识依赖极小。

步骤S307、对第一分配结果进行至少一次优化处理。

本实施例中,在根据第一时刻的需求的数据和资源的库存数据,为每个需求分配资源,得到每个需求的第一分配结果之后,对第一分配结果进行至少一次优化处理,通过两步优化,对基于启发式构造算法确定的初始的资源分配结果进行优化,得到更优的资源分配结果,提高资源分配结果的可用性。

该步骤中可以利用邻域搜索算法对第一分配结果进行优化处理。

为了使用邻域搜索算法对第一分配结果进行优化,设计如下邻域算子

选择任一操作台,并选择关联到该操作台任一库存箱,在第一分配结果(算法2.2 输出的

考虑到上述邻域算子

示例性地,禁忌内存机制可以通过设置禁忌信息实现,禁忌信息用于禁止将库存箱内的资源分配给操作台的需求。

可选地,根据已存储的禁忌信息,为未满足的需求随机分配资源,得到邻域可行解之前,生成并存储操作台和库存箱对应的禁忌信息,禁忌信息用于禁止将库存箱内的资源分配给操作台的需求。

示例性地,利用邻域搜索算法对第一分配结果进行优化处理,可以采用如下方式实现:

对当前的分配结果进行至少一次以下迭代优化处理:释放任一操作台关联的任一库存箱内的已分配资源对应的分配结果;根据已存储的禁忌信息,为未满足的需求随机分配资源,得到邻域可行解;根据邻域可行解,对当前的分配结果再次进行优化处理。

示例性地,基于禁忌内存机制的邻域算子

另外,如果邻域算子完全遵循以上禁忌信息进行,可能会导致部分req无法被满足,因为剩余资源可能无法满足其需要的数量。因此本实施例提供禁忌内存机制的赦免机制(Aspiration Criteria)。当对分配结果进行迭代优化处理的次数大于或等于迭代次数阈值时,清除已存储的禁忌信息。即如果未被禁忌的资源被完全使用仍无法满足某个需求时,在匹配这个需求时,可以忽略部分禁忌信息,从而保证每一次迭代均能生成可行解。

可选地,根据已存储的禁忌信息,若确定无法满足至少一个需求,则根据禁忌信息对应的时间戳,删除至少一条禁忌信息。根据禁忌信息对应的时间戳,优先删除时间戳最早的禁忌信息。其中,禁忌信息对应的时间戳,可以是禁忌信息插入队列的时间。

示例性地,禁忌信息可以存储在队列中,队列中的元素可以为形式的组合,定义为在当前迭代库存箱bin不可以被分配在操作台station。队列的长度(TabuTenure)为算法的输入参数,用来定义在多少次迭代之后,该禁忌即将被释放。

一种可选地实施方式中,该步骤中可以利用爬山算法对第一分配结果进行第一优化处理,并利用模拟退火算法对第一次优化处理后的第一分配结果进行第二次优化处理。

该实施方式中,为了使得对第一分配结果进行优化时能更快地收敛,并同时保持算法对可行解空间的探索能力,将爬山算法及模拟退火算法做了顺序混合。第一步,使用爬山算法对初始解进行快速收敛,第二部步使用模拟退火算法进行进一步的优化搜索。

其中,模拟退火算法是一种元启发算法,利用元启发算法进行优化时,其目标函数的定义详见本实施例开始部分的目标函数1和目标函数2,用来评估可行解(资源分配结果)的质量,资源分配的问题为最小化问题,可行解(资源分配结果)的目标函数值越小,代表可行解的质量越优。

示例性地,爬山算法是一种收敛速度较快的邻域搜索算法,本实施例中将第一分配结果作为初始可行解,使用爬山算法对初始可行解的优化的方法如下:

输入:

MaxIter_nonImpr:未找到更优解的迭代数,可以预先设置

TerminationTime :算法停止时间,可以预先设置

sol_init :初始可行解(第一分配结果)

输出: sol_best:优化解

算法流程:

1 sol_best ←sol_init

2 Iter_NonImprove ←0

3 WHILE Iter_NonImprove

4 sol' ←Nb(sol_best) //根据邻域算子确定邻域可行解

5 IF obj(sol' )< obj(sol_best)

6 sol_best←sol'

7 Iter_NonImprove ←0

8 ELSE

9 Iter_NonImprove ←Iter_NonImprove+1

10 ENDIF

11 ENDWHILE

12 RETURN sol_best

其中,

示例性地,模拟退火算法在跳出局部最优解的过程中具有较好的表现,将爬山算法输出的第一次优化处理后的第一分配结果作为模拟退火算法的初始可行解,使用模拟退火算法进行优化的方法如下:

输入:

TerminationTime :算法停止时间

T_init :初始温度,可以根据实际应用场景和经验值进行设置和调整

sol_init :初始可行解(爬算输的结)

coolingRate :降温速率,可以根据实际应用场景和经验值进行设置和调整

输出:sol_best:优化解

模拟退火算法的流程:

1 sol_best ←sol_init

2 sol ←sol_init

3 T_cur←T_init

4 WHILE 未达到TerminationTime

5 sol' ←Nb(sol )//根据邻域算子确定邻域可行解

6 IF obj(sol' )< obj(sol )

7 sol ←sol'

8 IF obj(sol' )< obj(sol_best )

9 sol_best= sol'

10 ELSE

11 r ←Random(0,1)

12 IF

13 sol ←sol'

14 ENDIF

15 ENDIF

16 T_cur ←T_cur ×coolingRate

17 ENDWHILE

18 RETURN sol_best

其中,

本实施方式中,经过构造初始可行解(第一分配结果),爬山算法优化,及模拟退火算法优化这三个过程,能够寻找到优化可行解。 整个过程的停止时间取决于TerminationTime 的设定。同时,其他需要设定的参数包括:未找到更优解的迭代数MaxIter_nonImpr, 初始温度T_init,降温速度coolingRate。需要设定的参数可以根据实际应用场景和经验值进行设置。

本实施方式提出的二步邻域搜索算法可对资源分配问题这类NP-Complete 问题搜索到更好的解。并且,同时使用的爬山算法和模拟退火算法的机制,使得资源分配的过程中既能在前期达到快速收敛,又能够保持对未知区域(邻域可行解)的探索能力。

示例性地,由于元启发算法与问题弱相关,更改问题仅需极小开发量。该实施方式中的模拟退火算法可以用大洪水算法等其他元启发算法替换,也可以达到类似的优化效果。

与传统的启发式构造算法相比,本实施例提供的进行资源分配确定第一分配结果的算法,在生成可行的第一资源分配结果的同时,可更好地保证第一资源分配结果的质量。另外,本实施例提供的进行资源分配的启发式构造算法与问题模型脱离,问题改变时,仅仅需要修改其目标函数,及相应的随机邻域算子(与问题弱相关)即可适配。对比传统算法开发投入极小,对领域知识及数学知识依赖极小。

实施例四

图7为本申请实施例四提供的资源分配装置的结构示意图。本申请实施例提供的资源分配装置可以执行资源分配方法实施例提供的处理流程。如图7所示,该资源分配装置40包括:数据获取模块401和扰动修正模块402。

具体地,数据获取模块401,用于在根据第一时刻的需求的数据和资源的库存数据,为每个需求分配资源,得到每个需求的第一分配结果之后,根据第二时刻的需求的数据和资源的库存数据,确定在第一时刻至第二时刻期间发生变化的需求和资源,其中,第一分配结果中包括为需求分配的资源。

扰动修正模块402,用于释放发生变化的需求对应的第一分配结果,和/或,发生变化的资源对应的第一分配结果;根据当前时刻的需求的数据和资源的库存数据,为发生变化的需求重新分配资源,得到第二分配结果。

本申请实施例提供的装置可以具体用于执行上述实施例一所提供的方法实施例,具体功能此处不再赘述。

本申请实施例通过在根据第一时刻的需求的数据和资源的库存数据,为每个需求分配资源,得到每个需求的第一分配结果之后,根据第二时刻的需求的数据和资源的库存数据,确定在第一时刻至第二时刻期间发生变化的需求和资源,释放发生变化的需求对应的第一分配结果和/或发生变化的资源对应的第一分配结果,并为发生变化的需求重新分配资源,从而实现对在进行资源分配期间发生扰动的第一分配结果进行修复,极大地减少资源分配结果中不可行的分配结果,提高了资源分配结果在实际执行中的可行性。

实施例五

图8为本申请实施例五提供的资源分配装置的结构示意图。在上述实施例四的基础上,本实施例中,如图8所示,该资源分配装置40还包括:资源分配模块403,用于:响应于资源分配请求,资源分配请求包括第一时刻的需求的数据和资源的库存数据,根据第一时刻的需求的数据和资源的库存数据,为每个需求分配资源,得到每个需求的第一分配结果。

可选地,扰动修正模块还用于:响应于资源分配结果请求,资源分配结果请求包括第二时刻的需求的数据和资源的库存数据,根据第二时刻的需求的数据和资源的库存数据,确定在第一时刻至第二时刻期间发生变化的需求和资源。

可选地,资源分配模块还用于:根据第一时刻的需求的数据和资源的库存数据,利用启发式构造算法,对每个需求进行以下资源分配处理:根据第一库存箱中的未分配资源,为当前需求分配第一库存箱中的未分配资源,第一库存箱为与当前需求对应的第一操作台关联的库存箱;若第一库存箱中的未分配资源不满足当前需求,则为当前需求分配第二库存箱中的资源,第二库存箱为未关联到任何操作台的库存箱;若第二库存箱中的资源不满足当前需求,则根据与第二操作台关联的第三库存箱中的未分配资源,为当前需求分配第三库存箱中的未分配资源,第二操作台为除第一操作台之外的任意操作台;其中,任一操作台关联的库存箱是指箱内的至少一个资源已分配给该操作台的库存箱。

可选地,资源分配模块还用于:若第一库存箱中存在至少一个第四库存箱,任一第四库存箱内的未分配资源满足当前需求,则根据任一第四库存箱内的未分配资源,为当前需求分配资源;若第一库存箱中不存在第四库存箱,则将未分配资源最多的第一库存箱中的未分配资源,分配给当前需求。

可选地,资源分配模块还用于:根据未分配资源最少的第四库存箱内的未分配资源,为当前需求分配资源。

可选地,资源分配模块还用于:若第二库存箱中存在至少一个第五库存箱,任一第五库存箱内的未分配资源满足当前需求,则根据任一第五库存箱内的未分配资源,为当前需求分配资源;若第二库存箱中不存在第五库存箱,则将未分配资源最多的第二库存箱中的未分配资源,分配给当前需求。

可选地,资源分配模块还用于:根据与第一操作台距离最近的第五库存箱内的未分配资源,为当前需求分配资源。

可选地,资源分配模块还用于:若第三库存箱中存在至少一个第六库存箱,任一第六库存箱内的未分配资源满足当前需求,则根据任一第六库存箱内的未分配资源,为当前需求分配资源;若第三库存箱中不存在第六库存箱,则将未分配资源最多的第三库存箱中的未分配资源,分配给当前需求。

可选地,资源分配模块还用于:确定每个第六库存箱关联的操作台的数量;根据关联的操作台的数量最少的第六库存箱中的未分配资源,为当前需求分配资源。

可选地,资源分配模块还用于:根据第一时刻的需求的数据和资源的库存数据,对需求进行筛选处理,得到第一需求集合,第一需求集合包括:对应的第一资源的数量与目标资源的未分配需求数量的差最小的需求,其中第一资源是需求对应的操作台关联的库存箱内未分配的目标资源;对第一需求集合中的每个需求进行资源分配处理;若存在未满足的需求,则对未满足的需求进行筛选处理,得到新的第一需求集合,并对新的第一需求集合中的每个需求进行资源分配处理,直至满足所有需求。

可选地,资源分配模块还用于:利用启发式构造算法,对每个需求进行以下资源分配处理之前,根据第一时刻的需求的数据和资源的库存数据,确定初始的需求集合和初始的资源集合,初始的需求集合包含所有需求,每个需求包括任一操作台对任一资源的需求数量,初始的资源集合包含多个资源库存信息,每个资源库存信息用于记录任一资源在任一存储箱的库存数量。

可选地,资源分配模块还用于:根据第一时刻的需求的数据和资源的库存数据,确定初始的需求集合和初始的资源集合之后,根据初始的需求集合和初始的资源集合,确定每个需求对应的候选资源集合,候选资源集合包括需求所需资源对应的资源库存信息;在为任一需求分配资源时,从需求对应的候选资源集合中确定为需求分配的资源。

可选地,资源分配模块还用于:存储并更新每个操作台与库存箱的关联信息。

可选地,资源分配模块还用于:存储并更新每个操作台关联的库存箱内的未分配资源的数量。

可选地,资源分配模块还用于:在根据第一时刻的需求的数据和资源的库存数据,为每个需求分配资源,得到每个需求的第一分配结果之后,对第一分配结果进行至少一次优化处理。

可选地,资源分配模块还用于:利用爬山算法对第一分配结果进行第一优化处理,并利用模拟退火算法对第一次优化处理后的第一分配结果进行第二次优化处理。

可选地,资源分配模块还用于:对当前的分配结果进行至少一次以下迭代优化处理:释放任一操作台关联的任一库存箱内的已分配资源对应的分配结果;根据已存储的禁忌信息,为未满足的需求随机分配资源,得到邻域可行解;根据邻域可行解,对当前的分配结果再次进行优化处理。

可选地,资源分配模块还用于:当对分配结果进行迭代优化处理的次数大于或等于迭代次数阈值时,清除已存储的禁忌信息。

可选地,资源分配模块还用于:根据已存储的禁忌信息,为未满足的需求随机分配资源,得到邻域可行解之前,生成并存储操作台和库存箱对应的禁忌信息,禁忌信息用于禁止将库存箱内的资源分配给操作台的需求。

可选地,资源分配模块还用于:根据已存储的禁忌信息,为未满足的需求随机分配资源,得到邻域可行解之前,根据已存储的禁忌信息,若确定无法满足至少一个需求,则根据禁忌信息对应的时间戳,删除至少一条禁忌信息。

本申请实施例提供的装置可以具体用于执行上述实施例二或实施例三所提供的方法实施例,具体功能此处不再赘述。

与传统的启发式构造算法相比,本实施例提供的进行资源分配确定第一分配结果的算法,在生成可行的第一资源分配结果的同时,可更好地保证第一资源分配结果的质量。另外,本实施例提供的进行资源分配的启发式构造算法与问题模型脱离,问题改变时,仅仅需要修改其目标函数,及相应的随机邻域算子(与问题弱相关)即可适配。对比传统算法开发投入极小,对领域知识及数学知识依赖极小。

本实施方式提出的二步邻域搜索算法可对资源分配问题这类NP-Complete 问题搜索到更好的解。并且,同时使用的爬山算法和模拟退火算法的机制,使得资源分配的过程中既能在前期达到快速收敛,又能够保持对未知区域(邻域可行解)的探索能力。

实施例六

图9为本发明实施例六提供的资源分配设备的结构示意图。如图9所示,该资源分配设备100包括:处理器1001,存储器1002,以及存储在存储器1002上并可在处理器1001上运行的计算机程序。其中,处理器1001运行计算机程序时实现上述任一方法实施例所提供的方法。

本申请实施例通过在根据第一时刻的需求的数据和资源的库存数据,为每个需求分配资源,得到每个需求的第一分配结果之后,根据第二时刻的需求的数据和资源的库存数据,确定在第一时刻至第二时刻期间发生变化的需求和资源,释放发生变化的需求对应的第一分配结果和/或发生变化的资源对应的第一分配结果,并为发生变化的需求重新分配资源,从而实现对在进行资源分配期间发生扰动的第一分配结果进行修复,极大地减少资源分配结果中不可行的分配结果,提高了资源分配结果在实际执行中的可行性。

本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行上述任一方法实施例提供的方法。

本发明实施例还提供了一种计算机程序产品,程序产品包括:计算机程序,计算机程序存储在可读存储介质中,仓储管理系统的至少一个处理器可以从可读存储介质读取计算机程序,至少一个处理器执行计算机程序使得仓储管理系统执行上述任一方法实施例提供的方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

相关技术
  • 资源分配的方法、装置、设备、存储介质及程序产品
  • 资源分配的方法、装置、设备、存储介质及程序产品
技术分类

06120113006942