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

分布式资源分配

文献发布时间:2023-06-19 09:23:00


分布式资源分配

技术领域

本文涉及资源分配。

背景技术

背包问题(KP)经常可以用于对真实世界决策制定过程中的资源分配应用进行建模。背包问题的示例包括资产管理、投资组合选择和预算分配等等。例如,解决背包问题以便决定每一个用户的通知量以优化长期用户参与。真实世界资源分配应用经常通过解决背包问题达成,但是它们仅在相对小的规模下容易处理。已经在文献中研究了背包问题的多个变体,例如多维背包问题(MDKP)、多选项背包问题(MCKP)和多维多选项背包问题(MMKP)。在MDKP中,存在多个背包约束和资源项目(也被称为项目),在被选择时,资源项目将消耗来自多个背包的资源。MCKP是经典的单个约束背包问题的扩展,其中项目被划分为多个组并且仅可以从每一个组选择一个项目。MMKP是MDKP和MCKP的组合。

作为整数规划(IP)问题的一种公知的特殊情况,背包问题(包括普通背包问题及其变体,例如MDKP、MCKP和MMKP)是NP-难的。已经研究了精确且启发式的算法用于解决这些问题。现有工作仅在相对小的规模下(即,几千到几百万个决策变量)研究背包问题。

随着用户量的增加,在线平台或者服务提供方(例如,电子商务平台、社交网络平台和在线金融平台)具有增加的需要来在大规模下,例如以数十亿或者更多个决策变量的数量级,解决背包问题。现有的资源分配解决方案在这样的大规模下执行得很差,因为它们消耗过多的计算资源和时间。期望用于在大规模下有效地解决背包问题的技术。

发明内容

本说明书描述了用于资源分配的技术。这些技术通常涉及解决受多个全局约束和局部约束约束的背包问题(KP)。所描述的技术可以降低计算复杂度并且以迭代方式改善解决背包问题的收敛速度。

本说明书还提供耦合到一个或多个处理器并且具有存储在其上的指令的一个或多个非暂时性计算机可读存储介质,所述指令在被一个或多个处理器执行时,使得该一个或多个处理器执行根据本文提供的方法实施例的操作。

本说明书还提供用于实现本文提供的方法的系统。所述系统包括一个或多个处理器以及耦合到该一个或多个处理器并且具有存储在其上的指令的计算机可读存储介质,所述指令在由所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据本文提供的方法实施例的操作。

应该理解,根据本说明书的方法可以包括本文所描述的方面和特征的任意组合。即,根据本说明书的方法不局限于本文具体描述的方面和特征的组合,而且包括所提供的方面和特征的任意组合。

在附图和下面的描述中阐释了本说明书的一个或多个实施例的细节。本说明书的其它特征和优点将从所述描述、附图以及权利要求中显现。

附图说明

图1是示出根据本文实施例的使用信息流解决背包问题(KP)的分布式计算系统的示例的图。

图2是根据本文实施例的用于解决背包问题的MapReduce算法(也被称为算法1)的示例的伪代码。

图3是示出根据本文实施例的分别用于(15)到(17)中的局部约束的资源索引集的有向无环图(DAG)的示例的图。

图4是根据本文实施例的贪婪算法(也被称为算法2)的示例的伪代码,该贪婪算法用于解决受具有层级结构的约束约束的整数规划(IP)问题。

图5是示出根据本文实施例的针对用户i的对偶算子λ

图6是根据本文实施例的用于计算候选对偶算子的算法(也被称为算法3)的示例的伪代码。

图7是根据本文实施例的用于解决KP的具有MapReduce模型的同步坐标下降(SCD)算法(也被称为算法4)的示例的伪代码。

图8是根据本文实施例的用于为每一个用户选择高达最大数量(由Q表示)的资源的Map函数(也被称为算法5)的示例的伪代码。

图9是根据本文实施例的通过采样预求解算法(也被称为算法6)的示例的伪代码。

图10是示出根据本文实施例的使用图7中所描述的算法的KP解与由线性规划(LP)松弛计算的上界之间的最优化间隙的示例的曲线图。

图11是示出根据本文实施例的在使用和不使用预求解的情况下SCD迭代次数的示例的表格(也被称为表格1)。

图12是示出根据本文实施例的在大规模测试数据集上使用SCD算法的分布式系统的实验结果的示例的表格(也被称为表格2)。

图13是示出根据本文实施例的用于解决KP的Map函数710和Reduce函数720的执行结果的示例的曲线图。

图14A是根据本文实施例的用于通过解决背包问题(KP)执行在N个用户中将M个资源分配到K个池(例如,K个背包)的资源分配的过程的示例的流程图。

图14B是根据本文实施例的用于在L个约束下执行M个资源的资源分配的过程的示例的流程图。

图14C是根据本文实施例的用于通过解决背包问题(KP)执行在N个用户中将M个资源分配到K个池(例如,K个背包)的资源分配的过程的另一示例的流程图。

图15描绘了根据本文实施例的计算机实现的系统的示例的框图,该计算机实现的系统用于提供与所描述的算法、方法、函数、过程、流程和进程相关联的计算功能。

图16A-16C是根据本文实施例的装置的模块的示例的图。

各个附图中相同的附图标记和名称指代相同的元素。

具体实施方式

本文描述了用于资源分配的技术。这些技术通常涉及经由同步坐标下降(SCD)在可缩放的分布式范例中解决大规模背包问题(KP)。在一些实施例中,所描述的技术可以帮助在多个全局约束的情况下,解决数十亿或者更大的规模的背包问题。在一些实施例中,所描述的技术可以在不损害解的最优性或者在不违背约束条件的情况下帮助解决这样的大规模背包问题。在一些实施例中,可以使用现成的分布式计算框架(例如,MPI、Hadoop、Spark)来实现技术。在一些实施例中,这些技术可以节省存储空间、降低计算复杂性,同时改善背包问题的解决速度。在一些实施例中,这些技术可以解决空前规模的资源分配问题(例如,可以在几个小时(例如,O(1)小时的数量级)内解决具有数十亿个决策和约束变量的背包问题),而现有技术解决这一大规模背包问题将是计算不可行的或者明显耗时的(例如,现有技术在几个小时或者几天内不可能解决具有数十亿个决策和约束变量的背包问题)。

背包问题(KP)在真实世界决策制定过程中非常常见。背包问题的示例包括资产管理、投资组合选择和预算分配等等。例如,在金融业环境的资源分配场景中,经常在每个用户的基础上做出决策,而用户量可能很大,例如数亿个活跃用户的数量级。

作为示例,在线平台可以为其用户提供从支付到银行业务(banking)、贷款、财富管理、保险等广泛的金融产品和服务。每天可以在用户之间分配各种金融资源。资源可以例如包括待在用户/用户组之间分发的金融预算(例如,贷款、市场促销、广告花销、资产投资组合)或者需要在不同的商业渠道(例如,花呗亦称ANT-CREDIT-PAY、借呗亦称ANT-CASH-NOW、余额宝亦称ANT-MONEY-MARKET-FUND)之间进行分配的诸如用户业务(traffic)(例如,展示次数(impressions)、点击次数、停留时间)的非金钱资源。

资源分配问题可以被表示为背包问题以便在遵守约束集的同时优化共同目标,例如在营销活动下的预期用户转换。在一些实施例中,约束可以被分类为全局约束和局部约束。

全局约束通常包括涉及多个用户的、在全局水平上的资源约束。例如,营销活动经常具有总预算限制以及可用于或者允许用于每一个用户群组(例如,性别、地理位置或者用户生命周期阶段)或者每一个产品渠道的资源最大量。

局部约束包括仅对单独用户或者小的用户组有效的限制。在整个说明书中,术语“用户”和“组”可被互换地使用。例如,用户可以包括含一个或多个单独用户的用户组。在一些实施例中,局部约束本质上是稀疏的。在一些实施例中,局部约束展示了可以用于设计高效求解器的层级结构。

在一些实施例中,对于数十亿规模的背包问题,决策变量和局部约束二者均处于数十亿的水平或者数量级(即,量级的级数为9,表示为O(10

本文描述了用于解决数十亿规模的真实世界背包问题的技术。使用MapReduce计算模型作为示例,本文描述了利用对偶问题(dual problem)的可分解性来解决背包问题的分布式框架。代替由于需要手动超参数调节并且容易违反约束而不会很好工作的传统对偶下降算法,本文描述了不受这些问题影响的同步坐标下降(SCD)算法。

而且,本文描述了用于解决受具有层级结构的约束约束的整数规划(IP)问题的求解器。与诸如CPLEX或GUROBI的现成整数规划求解器不同,该求解器使用可以在多项式时间中解决受层级结构约束约束的整数规划问题的贪婪算法。所描述的整数规划求解器可以被称为层级贪婪整数规划求解器。层级贪婪整数规划求解器可以在用于解决背包问题的分布式框架中使用,例如通过利用局部约束的层级结构来解决背包问题的整数规划子问题。

在受控环境和真实世界环境下进行的仿真结果示出了分布式SCD算法可以几乎最优地解决背包问题并且能很好地扩展到数十亿个决策变量和约束。而且,描述了用于在分布式环境中进一步加速算法的技术。

考虑以下背包问题的通用变体:

受(s.t.)约束

其中,在遵守K个全局约束和L个局部约束的情况下,在N个用户之间分配M个资源(或者项目)。如果选择资源j用于用户i,即x

如果对成本系数c

注意到,在该公式中,仅考虑了二进制决策变量,即,x

为本文的剩余部分定义下面的附加注释:

p

b

c

x

x:对所有用户的决策变量矩阵。

给定全局约束的数量远小于局部约束的数量,将对偶算子(dual multiplier)集λ={λ

并且x和λ共同满足最优化条件

直观地,在经济学上,每一个算子λ

(5)-(7)中的最大化问题由于(6)的存在而与标准0-1整数规划问题公式不同。然而,可以显示出最优化条件仍然适用。看到此,可以为局部约束引入附加的算子集合μs((6)中的每个约束一个)以联合获得(x,μ)的整数规划公式。

给定拉格朗日算子集λ,(5)中的最大化问题可以被分解为独立的子问题,每个用户i一个

由于λ的大小相对小,通过诸如CPLEX或者GUROBI的任何商业可用整数规划求解器在单个机器上解决每一个子问题(11)-(13)是可行的。

分布式计算框架可以用于将大规模背包问题分解为相同形式的许多子问题(11)-(13),随后独立地解决每一个子问题的过程。在一些实施例中,可以使用MapReduce、MPI、HADOOP、SPARK或者任何其它分布式计算框架或模型来实现该过程。下面,将MapReduce语义用作描述该算法的示例。所描述的技术可以用于其它分布式计算框架或模型。

图1是示出根据本文实施例的使用信息流解决背包问题的分布式计算系统100的示例的图。用于解决背包问题的分布式计算系统100(或者分布式框架100)使用MapRduce计算模型作为示例。在一些其它实施例中,分布式计算系统100可以使用MPI、HADOOP、SPARK或者任何其它分布式计算框架或模型实现。

分布式计算系统100包括多个IP求解器(也被称为映射器)110、多个聚合器(也被称为归约器)120、对偶算子更新器(也被称为主节点)130。IP求解器110可以例如是诸如CPLEX或GUROBI的商业可用或者现成的IP求解器或者是诸如下面进一步详细描述的层级贪婪IP求解器的定制IP求解器。多个IP求解器分布在分布式计算系统100中的多个数据处理装置中。例如,每一个IP求解器可以由计算机的单个处理核心运行。在一些实施例中,多个IP求解器由计算集群或者云计算系统实现。IP求解器110可以接收用户数据140。例如,在子问题(11)-(13)中,用户i的用户数据140可以包括p

在一些实施例中,迭代算法用于求解(x,λ)对。在每一次迭代中,IP求解器110计算(11)的解x

主节点130可以根据一个或多个更新规则或算法,例如基于松弛,

其中,超参数α是学习速率。

在一些实施例中,主节点130可以根据下面更加详细描述的同步坐标下降(SCD)算法或者其它算法更新拉格朗日算子λ。

在一些实施例中,给定拉格朗日算子λ,每一个IP求解器110可以针对每一个用户i的决策变量{x

图2是根据本文实施例的用于解决背包问题的MapReduce算法250(也被称为算法1)的示例的伪代码200。在一些实施例中,MapReduce算法250可以包括T次迭代。在每一次迭代t内,在252,映射器可以为每一个用户执行相应的Map函数(例如,被定义和标注为210)。每一个Map函数返回分别与K个全局约束或者K个背包有关的K个值。在一些实施例中,N个映射器可以针对各个用户并行地执行相应的Map函数。

在254,对于K个背包中的每一个,可以通过Reduce函数(例如,被定义和标注为220)计算对于每一个背包由N个用户消耗的总资源,

在256,MapReduce算法250使用对偶下降(DD)作为λ更新规则,例如根据关于式(14)描述的技术。在258,如果λ已收敛或者在最多T次迭代之后,MapReduce算法250结束并且返回λ。在一些实施例中,例如,如果两次迭代之间λ的差值小于阈值,则可以认为λ收敛。

给定由在伪代码200中示出的算法1计算的λ,式(11)-(13)可以被重新求解。用户的决策变量{x

在真实世界应用中,由于资源通常被组织为嵌套的用户(例如,分类法),局部约束通常展示出嵌套的层级结构。

作为说明性示例,考虑一个简单的营销活动,其中总共有10个报价,5个来自平台A并且5个来自平台B;要求用户从平台A或者平台B中任一平台获得的报价不多于2个且总报价不多于3个。

在这一示例中局部约束可以表示如下:

在这一示例中,局部约束被结构化为2级树。在实践中,该结构可以被表示为有向无环图(DAG)。一些可能呈现更加复杂的层级。DAG是不含有向环的、有限制的有向图。等效地,DAG是具有拓扑排序、顶点序列的有向图,使得每一条边在序列上从先到后是有向的。有向图的拓扑排序是其顶点的线性排序,使得对于从顶点u到顶点v的每一条有向边uv,在排序上u在v之前。在一些实施例中,图的顶点可以表示待执行的任务,并且边可以表示一个任务必须在另一个任务之前被执行的约束。在这种情况下,拓扑排序是任务的有效序列。当且仅当在图不具有有向环时,即,当图是DAG时,拓扑排序是可能的。任何DAG具有至少一个拓扑排序。任意DAG的拓扑排序可以通过已知算法构建。

对于局部约束l,由S(l)指代其资源索引集,即,S(l)={j:c

以及

资源索引集是非重叠的,除非一个是另一个的子集。在一些实施例中,DAG可以被构建用于M个资源索引集,使得当且仅当在

图3是示出根据本文实施例的分别用于(15)到(17)中的局部约束的资源索引集310、320和330的有向无环图(DAG)300的示例的图。对于(15)中的局部约束的资源索引集310包括资源索引1-5;对于(16)中的局部约束的资源索引集320包括资源索引6-10,并且对于(17)中的局部约束的资源索引集330包括资源索引1-10。如所说明的,资源索引集310和资源索引集320不具有共同索引。资源索引集310和资源索引集320中的每一个是资源索引集330的子集。

图4是根据本文实施例的用于解决受具有层级结构的约束约束的IP问题的贪婪算法(被称为算法2)400的示例的伪代码。贪婪算法400的示例可以用于在层级局部约束下解决IP问题。例如,用户i的最优化问题(11)-(13)可以由按照拓扑顺序遍历DAG的贪婪算法有效地解决。被配置为实现示例贪婪算法400的求解器可以被称为层级贪婪IP求解器。例如,给定对偶算子λ,层级贪婪IP求解器可以计算每一个用户的决策变量。

在410,贪婪算法400初始选择所有资源,例如通过将所有资源的决策变量x

在430,例如通过在DAG的最低层处开始按照DAG的拓扑顺序遍历资源索引集{S(l)}。对于每一个S(l),在440,先前选择的资源(即,具有相对应决策变量x

在450,S(l)内未被选择的资源的x

作为示例,如图3所示,对于(15)中的局部约束的资源索引集310(这里,C

对于处于DAG 300的层级的下一层上的(17)中的局部约束的资源索引集330(这里,C

具有多项式时间复杂性的贪婪算法可以最优地解决最大化问题(11)-(13)。最优化的证据如下。给定满足约束(12)和(13)但是与贪婪解(由x

在一些实施例中,例如通过用于解决IP问题的算法2或者任何其它算法求解决策变量,同步坐标下降(SCD)算法可以用于更新对偶算子λ。

在一些实施例中,对于给定的算子集合λ,算法2取决于成本调节奖励

图5是示出根据本文实施例的对于用户i的对偶算子λ

x

图5示出了针对用户i,M=2个线性函数510和520以及可能影响(11)的最优化结果的三个新算子候选{λ

这一示例还示出了(11)-(13)的最优化结果将在所有交叉点处改变不是一定真实的。例如,这里最大化器(maximizers)在λ

图6是根据本文实施例的用于计算候选对偶算子的算法(也被称为算法3)600的示例的伪代码。在一些实施例中,算法600用于计算用户i的所有候选新对偶算子λ

给定每一个用户的新λ

图7是根据本文实施例的用于解决背包问题的、具有MapReduce模型的同步坐标下降(SCD)算法(也被称为算法4)750的示例的伪代码700。同步坐标下降算法750可以包括T次迭代以迭代地执行Map和Reduce步骤。在每一次迭代t内,在752的Map步骤中,映射器可以对于每一个用户执行相应Map函数(例如,被定义和标注为710),例如以便独立地解决IP子问题(14)-(16)。在一些实施例中,N个映射器可以并行地执行各自的Map函数。在754的Reduce步骤中,通过使其它对偶算子λ

具体地,根据Map函数710,对于每一个用户i,在712,映射器根据图6算法3中定义的函数CalculateIntersectionPoints 650来获得新拉格朗日算子λ

在754,对于K个背包中的每一个,Reduce函数(例如,被定义和标注为720)汇总所有用户中相同key(即,背包索引k)发出的结果并且将更新的λ

在Reduce函数720中进行的加和正确地计算出对于选择的阈值v这些用户使用的总资源。因为映射器随着λ

图13是示出根据本文实施例的用于解决背包问题的Map函数710和Reduce函数720的执行结果的示例的曲线图1300。在示例中,考虑N=3个用户。对于3个用户中的每一个,Map函数710可以例如由各个IP求解器并行地执行。假设第k个全局约束与第k个背包相对应,其中k=3并且B

对于用户2如在1312中所示,按照降低顺序排列的λ

对于用户3如在1313中所示,按照降低顺序排列的λ

框1320示出了对于与第k个背包相对应的第k个全局约束的所有三个用户的Reduce函数720的执行结果,其中k=3。在一些实施例中,可以例如按照非增加的顺序对所有用户的λ

在一些实施例中,如果B

返回参照图7,可以重复更新λ的过程最多T次迭代,并且如果λ已经收敛则提前结束。例如,在756,如果λ已经收敛或者在最多T次迭代之后,坐标下降算法750结束并且返回λ。

给定通过在坐标下降算法750中示出的算法1计算的λ,式(11)-(13)可以被重新求解。这些用户的决策变量{x

尽管坐标下降算法750使用同时更新所有k=1,...,K的λ

对于K=1的特殊情况,可以表明,由于该算法在解决分数背包问题之后,本质上产生了四舍五入的整数解,所以算法4将收敛到总奖励至多是max

给定每用户M个资源以及K个全局约束,坐标下降算法750中的Map函数具有时间复杂性O(KM

对于这样的情况,新λ

图8是根据本文实施例的用于为每一个用户选择高达最大数量(表示为Q)资源的Map函数(也被称为算法5)850的示例的伪代码800。如图8所示,

算法5使用quick_select(array,n)算法,该算法在时间复杂度为O(K)的情况下返回长度K的阵列中的第n个最大元素。接着,算法5的整体时间复杂度为O(K),与Q的值无关。

为了当将算法扩展以解决数十亿规模问题时进一步加速算法的收敛,开发了附加的算法,这被证明是有效的。

作为示例,微调的装桶(bucketing)可以用于进一步加速用于解决数十亿规模问题的算法的收敛。图7中示出的算法4中的Reduce函数的简明实现用于对v

为了通过装桶和插值改善上面近似的精确度,在一些实施例中,桶尺寸可以被设计为在v的真实值附近时较小并且在桶不可能包含v时较大。不幸的是,v的真实值事先是未知的。无论如何,由于算法4的迭代本质,在先前迭代中计算的值,即λ

其中,Δ是参数控制的桶尺寸。可以使用附加或者不同的不均匀装桶方案。

与所有其它迭代算法类似,从良好的初始化开始可以显著地加速算法的收敛。在一些实施例中,算法4中对偶算子的开始点λ

图9是根据本文实施例的通过采样预求解算法(也被称为算法6)950的示例的伪代码900。附加或者不同的通过采样预求解算法可以与所描述的用于解决背包问题的算法结合使用。算法6可以包括预求解的τ个迭代。在一些实施例中,可以按顺序或者并行地进行预求解的τ个迭代。如果按顺序运行,则在第t次迭代之前计算的λ值的平均值用于进一步降低运行时间。作为示例,对于数亿用户,对于预求解的每一次迭代,可以对n=10000个用户进行采样。

利用算法4返回的λ,可以计算每一个用户i的决策变量x

具体地,用户以

合成和真实世界数据二者都用于测试用于解决背包问题的各种描述的算法。例如,在实验中,具有N个用户和K个全局约束的综合问题,除非另有说明,否则p

密集:b

稀疏:M=K,并且如果j=k,则b

全局约束的预算被设置为与M、N和L成比例的适度值,这实际上确保了约束的严密性。局部约束的参数c

下面,将最优化比率定义为原始目标值与松弛的LP目标值的比值,将约束违背比率定义为针对一个约束的过量预算与给定预算的比值,并且我们使用所有约束中的最大约束违背比率来量化整体违背。

为了测量由描述的算法产生的KP解的质量,进行实验集合来评估KP解(由算法4利用上面描述的后处理方法计算的)与松弛的LP解之间的最优化比率。

在实践中,难于找到可以计算数十亿规模背包问题的上界的现有LP求解器来与所描述的分布式解进行比较。为了容易比较,将最优化间隙显示在现有的LP工具可以解决的具有适度大小的数据集上。松弛的LP问题通过使用

图10是示出根据本文实施例的使用图7中描述的算法的KP解与由LP松弛计算的上界之间的最优化间隙的示例的曲线图1000。根据图7中示出的算法4利用上述的后处理方法来计算KP解。曲线900示出了N=1,000、N=10,000和K∈{1,5,10,15,20}的最优化比率。在该实验中,每用户的资源数量M固定为10。为了增加资源的多样性,b

C=[1]意味着

C=[2]意味着

C=[2,2,3]与由(15)到(17)给出的层级局部约束相对应。

对于N的每一个值以及局部约束的场景,图10中绘制了随着K变化的平均最优化比率(3次运行(runs))。如图10所示,最优化间隙随着N增加而降低。在局部约束的所有场景下,最优化比率对于所有实验情况高于98.6%,并且对于N=10,000高于99.8%。图10中的结果支持当K<<N时算法4计算的KP解几乎是最优的直觉。

当用户的数量N较大时,利用采样的用户预求解可以针对λ生成良好的开始点。在实验中,对于预求解的每一次迭代,采样n=10,000个用户,并且由于n<<N,预求解的计算时间可忽略。将使用预求解直到λ收敛的SCD迭代的数量与如果一直在λ

图11是示出根据本文实施例的在利用和不利用预求解的情况下SCD迭代次数的示例的表格1100(也被称为表格1)。表格1示出了在N=1百万、10百万、100百万时对于稀疏问题实例的SCD迭代次数。对于每一个N,M=10并且K=10。表格1中的结果示出了利用采样的用户的预求解将SCD迭代次数降低了40%到75%。

另一方面,仅靠预求解不足以解决背包问题,因为由预求解产生的λ会导致约束违背。当将预求解的λ应用于全数据集时,观察到对于N=1百万、10百万、100百万,全局约束违背的数量分别为10中的4、5和3,并且相对应的最大约束违背比率分别为2.5%、4.1%和3.0%。然而,分布式SCD的解不具有违背。也值得注意的是,预求解方案的原始目标值,即使是在具有约束违背的情况下,总是小于分布式SCD的解。

图12是示出根据本文实施例的在大规模测试数据集上使用SCD算法(例如,算法4)的分布式系统的实验结果的示例。大规模测试数据集在N=100百万用户的情况下包含一定数量的稀疏问题实例,而每一个用户的资源数量M从1到100变化并且因而所考虑的资源的总量高达100亿。解的质量和运行时间被测试。表格2示出了SCD迭代的次数、初始目标值和对偶间隙(duality gap)。对偶间隙远小于初始目标值,表明所产生的解是接近最优的。而且,当算法4结束时,没有全局约束被违背(即,在没有任何后处理的情况下,满足所有约束)。

系统的运行时间满足日常决策变量的优化和调整的商业需要,例如,在共享APACHE HADOOP计算基础设施中运行高达1,000个CPU(而所使用的CPU的精确数量受集群负载影响),十亿个决策变量和约束的优化能够在大约1小时的挂钟时间(精确的挂钟时间由于硬件和工作负载变化)内收敛。

图14A是根据本文实施例的通过解决背包问题(KP)执行在N个用户中将M个资源分配到K个池(K个背包)的资源分配的过程1400a的示例的流程图。背包问题受K个全局约束和L个局部约束的约束,例如在(1)-(4)中呈现的。每一个池可以与在背包问题中描述的各个背包相对应。背包问题可以代表诸如包括业务路由/管理、营销活动、产品/服务促销等的资源分配的一个或多个真实世界场景。上面关于图2和图7描述的算法1和4是过程1400a的示例。

过程1400a可以使用分布式计算系统执行,例如包括一定数量的处理器(分布在不同用户中或者位于不同位置中)的分布式计算系统100。每一个处理器可以用作或者支持一个或多个单独求解器,例如通过利用多核处理能力。求解器可以是计算机实现的求解器,例如,由软件、硬件或者二者的组合实现。每一个单独求解器可以独立地与彼此并行地运行。在一些实施例中,单独求解器中的一些可以用作能够独立地与彼此并行地运行的IP求解器(也被称为映射器)110。在一些实施例中,处理器中的一个或多个可以用作能够独立地与彼此并行地运行的聚合器(也被称为归约器)120。在一些实施例中,处理器中的一个或多个可以用作对偶算子更新器(也被称为主节点)130。在一些实施例中,单个处理器可以用于用作IP求解器、聚合器和对偶算子更新器,只要不同的单独求解器可以独立地与彼此并行地运行并且不同的聚合器可以独立地与彼此并行地运行,例如以便利用并行处理能力并且减少解决背包问题的计算时间。

在一些实施例中,分布式计算系统可以被实现为云计算系统。在一些实施例中,分布式计算系统可以具有MapReduce或者其它分布式计算框架或模型。在一些实施例中,分布式计算系统可以使用诸如MPI、HADOOP和SPARK的公共分布式平台实现。在一些实施例中,过程1400a将被描述为由数据处理装置,例如位于一个或多个位置并且根据本文被适当编程的一个或多个计算机的系统,执行。例如,图15的计算机系统1500在被适当编程时可以执行过程1400a。

在1402a,接收代表背包问题的K个全局约束和L个局部约束的数据。在一些实施例中,L是数十亿或者更大的数量级。K小于L。K个全局约束中的每一个限制了跨两个或者更多个用户M个资源的相应的最大每池成本(maximum per-pool cost),如在式(2)中示出的。L个局部约束中的每一个限制了M个资源的每用户选择,如在式(3)中示出的。

在1404a,使用K个对偶算子(例如,λ

在1406a,确定用于解决N个子问题的单独求解器(例如,IP求解器110)的数量。在一些实施例中,确定用于解决N个子问题的单独求解器的数量包括基于用于解决背包问题的指定计算时间(例如,针对涉及高达数十亿用户和局部约束的大规模背包问题,解决该背包问题的期望计算时间)确定用于解决N个子问题的单独求解器的数量。在一些实施例中,确定用于解决N个子问题的单独求解器的数量包括将单独求解器的数量确定为等于或者小于用户的数量N。在单独求解器的数量为N的情况下,N个子问题中的每一个可以由相应的单独求解器解决,使得N个子问题可以由相应的N个单独求解器独立地与彼此并行地解决。

在1408a,例如通过将每一个子问题指派到相应的求解器,在所述数量的单独求解器之间分发N个子问题。例如,单独求解器可以被分配有N个子问题中的一个或者几个(例如,一、十、百或者千的数量级),以便通过利用多个单独求解器的并行处理能力来分配计算负载并且降低解决整体背包问题的计算时间。

在1410a,背包问题由分布式计算系统执行两次或者更多次迭代来解决。在一些实施例中,K个对偶算子的初始值集合可以用于在1404a将背包问题分解为N个子问题。K个对偶算子的初始值可以例如被确定为预设值或者随机值,或者可以通过使用如上所述的采样数据进行预求解来估计。可以更新K个对偶算子,并且因而可以相应地更新基于K个对偶算子分解的N个子问题。这样,可以迭代方式解决N个子问题来解决背包问题,例如以图1中的MapReduce算法250(也被称为算法1)或者图7中的同步坐标下降(SCD)算法(也被称为算法4)750中示出的MapReduce方式。

在一次迭代中,在1412a,N个子问题中的每一个由所述数量的单独求解器中的一个独立地解决。在一些实施例中,N个子问题中的每一个通过所述数量的单独求解器或者映射器中的一个独立地(例如,与彼此并行地)执行Map函数(例如,如在252或者752处示出)来解决。Map函数可以被定为Map函数210或者710,或者以另一方式被定义。在一些实施例中,对于N个子问题中的每一个进行解决包括计算待分配给N个用户中的相对应用户的M个资源中的每一个的量(例如,决策变量x

在一些实施例中,对于N个子问题中的每一个,由所述数量的单独求解器中的一个独立地进行解决包括:对于N个子问题中的每一个,由向其指派了该子问题的求解器独立地进行解决。在一些实施例中,对于N个子问题中的每一个,由所述数量的单独求解器中的一个独立地进行解决包括:对于N个子问题中的每一个,由所述数量的单独求解器中的一个并行地进行解决。在一些实施例中,由所述数量的单独求解器中的一个独立地进行解决包括:对于N个子问题中的每一个,由所述数量的单独求解器中的相应一个并行地进行解决。在一些实施例中,N个子问题中的每一个是整数规划(IP)问题。因此,对于N个子问题中的每一个,由所述数量的单独求解器中的一个独立地进行解决包括:由IP求解器独立地解决IP问题。

在一些实施例中,对N个子问题中的每一个进行解决进一步包括对于K个池中的每一个,基于待分配给相对应用户的M个资源中的每一个的量来计算相对应用户的M个资源的每池成本,如在Map函数210中定义的。在一些实施例中,对于K个池中的每一个,基于待分配给N个用户中相对应用户的M个资源中的每一个的量来计算跨N个用户的M个资源的每池成本。

在1414a,基于待分配给N个用户中相对应用户的M个资源中的每一个的量更新K个对偶算子。在一些实施例中,可以通过一个或多个单独的聚合器或归约器执行Reduce函数(如在254或754处示出的)来更新K个对偶算子。在一些实施例中,对于K个对偶算子中的每一个,该对偶算子可以通过所述数量的单独的聚合器和归约器中的一个独立地(例如,与彼此并行地)执行Reduce函数(如在254或754处示出的)来更新。Reduce函数可以被定义为Reduce函数220或者720,或者以另一方式被定义。在一些实施例中,K个对偶算子可以根据对偶下降(DD)、同步坐标下降、循环坐标下降、块坐标下降或者其它算子更新算法进行更新。

在一些实施例中,基于待分配给N个用户中相对应用户的M个资源中的每一个的量更新K个对偶算子包括,例如,针对K个对偶算子中的每一个及其对应池,基于受对应的全局约束限制的对应池的跨两个或更多个用户的M个资源的最大每池成本与该对应池的跨N个用户的M个资源的每池成本的差值,用Reduce函数220更新该对偶算子,该对应池跨N个用户的M个资源的每池成本基于待分配给所述N个用户中相对应用户的所述M个资源中的每一个的量计算得到。

在一些实施例中,可以例如基于用于解决背包问题的指定计算时间(例如,解决背包问题的期望计算时间)来确定用于更新K个对偶算子的单独归约器的数量。在一些实施例中,确定用于更新K个对偶算子的单独归约器的数量包括将单独归约器的数量确定为等于或者小于全局约束的数量K。在单独归约器的数量为K的情况下,K个对偶算子中的每一个可以由相应的单独归约器更新以使得K个对偶算子可以由相应的K个单独归约器独立地与彼此并行地更新。

在1416a,确定是否满足收敛条件。收敛条件可以例如基于迭代的最多次数、K个对偶算子或者二者来定义。例如,如果K个对偶算子已经收敛或者已经执行了最多次数的迭代,则可满足收敛条件。可以指定附加的或者不同的收敛条件。

在1418a,响应于确定满足收敛条件(例如,基于K个对偶算子),对于基于K个对偶算子的N个子问题中的每一个,可以由所述数量的单独求解器中的一个独立地再次解决该子问题,其中,对于N个子问题中的每一个进行解决包括计算待分配给N个用户中相对应用户的M个资源中的每一个的量。

在1420a,M个资源中的每一个的量可以作为过程1400a的输出被返回并且可以被分配到N个用户中的相对应用户。

图14B是根据本文实施例的用于在L个约束下执行M个资源的资源分配的过程1400b的示例的流程图。在一些实施例中,在L个约束下M个资源的资源分配可以由整数规划(IP)问题表示,例如由式(14)-(16)表示的IP问题。在L个约束下M个资源的资源分配可以代表一个或多个真实世界场景,例如业务路由/管理、营销活动、产品/服务促销等中的资源分配。上面关于图4描述的算法2是过程1400b的示例。

在一些实施例中,在L个约束下M个资源的资源分配可以是独立问题,也可以是受K个全局约束和L个局部约束约束的背包问题的N个子问题中的一个,如在(1)-(4)中所示的。在一些实施例中,针对N个用户中的一个用户,当执行在N个用户中将M个资源分配到受K个全局约束和L个约束约束的K个池的资源分配时,执行过程1400b,其中,L个约束中的每一个限制了单个用户待选择的M个资源中资源的相应最大数量,并且K个全局约束中的每一个限制了跨N个用户为每个池分配的资源。

过程1400b可以使用能够由一个或多个处理器实现的IP求解器(例如,映射器110)执行。在一些实施例中,过程1400b将被描述为由数据处理装置,诸如位于一个或多个位置并且根据本文被适当编程的一个或多个计算机的系统,执行。例如,图15的计算机系统在被适当编程时可以执行过程1400b。

在1402b,接收代表L个约束的数据。在一些实施例中,L个约束中的每一个与M个资源的子集相对应并且限制了在M个资源的子集中待选择的资源的相应最大数量C,例如在式(3)中示出的。在一些实施例中,L个约束具有层级结构,例如关于图5所描述的。例如,与L个约束中的第一约束相对应的任何子集和与L个约束中的第二约束相对应的任何其它子集不具有共同资源,除非与第一约束相对应的子集是与第二约束相对应的其它子集的子集。

在一些实施例中,代表L个约束的数据包括L个索引子集,L个索引子集中的每一个与L个约束中的相应一个相对应并且包括与L个约束的相应一个相对应的M个资源的子集的索引。例如,L个约束中的约束l与M个资源的子集S

在一些实施例中,代表L个约束的数据包括:对于L个约束中每一个约束,由有向无环图(DAG)数据结构中的节点代表该约束的数据,例如关于图5所描述的。在一些实施例中,DAG的边代表L个约束中与该边的两个节点相对应的两个约束之间的关系。DAG不具有有向环。

在1404b,确定L个约束的拓扑排序,其中拓扑排序定义了L个约束的遍历顺序。在一些实施例中,使用用于确定DAG的拓扑排序的现有算法来确定L个约束的拓扑排序。

在1406b,所有M个资源被选择作为初始选择,例如通过将M个资源中的每一个资源的决策变量设置为1(或者任何其它值),如在算法2的410处所示的。

在1408b,获得代表M个奖励的数据,其中,每一个奖励分别与M个资源中的一个相对应。在一些实施例中,M个奖励分别是M个成本调节奖励,其中如果选择了M个资源中的一个,则M个成本调节奖励中的每一个包括减去成本的奖励。

在1410b,根据与M个资源相对应的M个奖励,按照非增加的顺序对M个资源进行排序(例如,如算法中2中的420所示的)。

在1412b,通过按照L个约束的拓扑排序遍历每一个约束来从初始选择中移除一个或多个资源,例如在算法2中的420-450所示的。在一些实施例中,移除包括:在1414b,对于与M个资源的子集S

在一些实施例中,在子集S

在1420b,确定是否按照L个约束的拓扑排序遍历了所有L个约束。如果是,则过程1400b进行到1422b。否则,过程1400b回到1414b以按照L个约束的拓扑排序对下一个约束l=l+1移除一个或多个资源。

在1422b,例如在算法2中的460处所示的,通过返回或者输出M个资源中的每一个的决策变量,在按照L个约束的拓扑排序遍历了所有L个约束之后分配选择的资源。

图14C是根据本文实施例的用于通过解决背包问题(KP)执行在N个用户中将M个资源分配到K个池(例如,K个背包)的资源分配的过程1400c的另一示例的流程图。背包问题受K个全局约束和L个局部约束的约束,例如在(1)-(4)中表示的。每一个池可以与在背包问题中描述的相应背包相对应。背包问题可以代表一个或多个真实世界场景,例如包括业务路由/管理、营销活动、产品/服务促销等的资源分配。上面关于图7描述的算法4可以是过程1400c的示例。

过程1400c可以使用分布式计算系统,例如包括一定数量的处理器(例如,在不同用户之间分布并且位于不同地方)的分布式计算系统100,执行。处理器中的每一个可以用作或者支持一个或多个单独求解器,例如通过利用多核处理能力。每一个单独求解器可以独立地与彼此并行地运行。在一些实施例中,单独求解器中的一些可以用作能够独立地与彼此并行地运行的IP求解器(也被称为映射器)110。在一些实施例中,一个或多个处理器可以用作能够独立地与彼此并行地运行的聚合器(也被称为归约器)120。在一些实施例中,处理器中的一个或多个可以用作对偶算子更新器(也被称为主节点)130。在一些实施例中,单个处理器可以用于用作IP求解器、聚合器和对偶算子更新器,只要不同的单独求解器可以独立地与彼此并行地运行并且不同的聚合器可以独立地与彼此并行地运行,例如以便利用并行处理能力并且降低解决背包问题的计算时间。

在一些实施例中,分布式计算系统可以被实现为云计算系统。在一些实施例中,分布式计算系统可以具有MapReduce或者其它分布式计算框架或模型。在一些实施例中,分布式计算系统可以使用诸如MPI、HADOOP和SPARK的公共分布式平台实现。在一些实施例中,过程1400c将被描述为由数据处理装置,例如位于一个或多个位置中并且根据本文被适当编程的一个或多个计算机的系统,执行。例如,被适当编程的图15的计算机系统1500可以执行过程1400c。

在1402c,接收代表背包问题的K个全局约束和L个局部约束的数据。在一些实施例中,L是数十亿或者更大的数量级,K小于L。K个全局约束中的每一个限制了跨两个或者更多个用户M个资源相应的最大每池成本,例如在式(2)中所示的。L个局部约束中的每一个限制了M个资源的每用户选择,例如在式(3)中所示的。

在1403c,使用K个对偶算子(例如,λ

在1404c,将对偶问题分解为N个子问题,N个子问题中的每一个与N个用户中的相应一个相对应并且关于N个用户中该相应用户,受L个局部约束的约束,例如在式(14)-(16)中所示的。在一些实施例中,N是数十亿或者更大的数量级。

在一些实施例中,L个约束具有层级结构,例如关于图5所描述的。例如,与L个约束中的第一约束相对应的任何子集和与L个约束中的第二约束相对应的任何其它子集不具有共同资源,除非与第一约束相对应的子集是与第二约束相对应的其它子集的子集。

给定K个对偶算子,在遵守关于相对应用户的L个局部约束的情况下,可以独立地解决N个子问题,无需在解决N个子问题中的每一个时考虑K个全局约束。

在1406c,确定用于解决N个子问题的单独求解器(例如,IP求解器110)的数量。在一些实施例中,确定用于解决N个子问题的单独求解器的数量包括:基于用于解决背包问题的指定计算时间(例如,针对涉及高达数十亿用户和局部约束的大规模背包问题,用于解决该背包问题的期望计算时间)来确定用于解决N个子问题的单独求解器的数量。在一些实施例中,确定用于解决N个子问题的单独求解器的数量包括:将单独求解器的数量确定为等于或者小于用户的数量N。在单独求解器的数量为N的情况下,N个子问题中的每一个可以由相应的单独求解器进行解决,使得N个子问题可以由N个单独求解器中相应的求解器独立地与彼此并行地进行解决。

在1408c,在所述数量的单独求解器中分配N个子问题。例如,单独求解器可以被分配有N个子问题中的一个或几个(例如,在一、十、百或千的数量级)以便通过利用多个单独求解器的并行处理能力来分配计算负载并且减少解决整体背包问题的计算时间。

在1410c,分布式计算系统通过执行两次或者更多次迭代来解决对偶问题。在一些实施例中,在1411c,可以确定用于在1403c将背包问题分解为N个子问题的K个对偶算子的初始值集合。K个对偶算子的初始值可以例如被确定为预设值或者随机值,或者通过使用如上所述的采样数据进行预求解来估计。例如,基于受K个采样的全局约束和L个局部约束约束的、用于在S个用户中将资源分配到K个池中的背包问题的采样版本,计算K个对偶算子的初始值,其中S个用户被采样自N个用户,并且K个采样的全局约束的每一个限制了对于K个池中的每一个,跨S个用户的资源的相应缩减的最大总成本。

K个对偶算子可以被更新,并且基于K个对偶算子分解的N个子问题因而可以被相应地更新。这样,可以通过迭代的方式解决N个子问题来解决背包问题,例如以在图7中的同步坐标下降(SCD)算法(也被称为算法4)750中示出的MapReduce方式。

例如,在一次迭代中,在1412c,对于N个子问题中的每一个子问题,该子问题由所述数量的单独求解器中的一个独立地解决。在一些实施例中,解决与N个用户中的每一个相对应的N个子问题中的每一个包括:计算与更新的对偶算子相对应的N个用户中的每一个的M个决策变量(例如,决策变量x

在一些实施例中,对于N个子问题中的每一个子问题,通过由所述数量的单独求解器或映射器中的一个独立地(例如,与彼此并行地)执行Map函数(例如,在752处示出)来解决该子问题。Map函数可以被定义为Map函数710或者以另一方式定义。例如,解决与N个用户中的每一个相对应的N个子问题中的每一个包括:对于与用户相对应的子问题并且对于与池相对应的全局约束相对应的每一个对偶算子,计算该对偶算子的候选;按照非增加的顺序对该对偶算子的候选进行排序;按照非增加的顺序遍历该对偶算子的候选:对于该对偶算子的每一个候选,计算与该对偶算子的候选相对应的用户的M个决策变量;并且相对于基于与按照非增加的顺序该对偶算子的候选之前的对偶算子候选相对应的用户的M个决策变量的选择的资源的成本,计算基于与该对偶算子的候选相对应的用户的M个决策变量的选择的资源的增量成本。在一些实施例中,通过对与对偶算子的候选中大于或等于特定对偶算子的全部候选相对应的用户的选择的资源的增量成本进行加和,计算与该特定对偶算子相对应的池跨所述N个用户选择的资源的总成本。

在一些实施例中,计算对偶算子的候选包括:计算对偶算子的M个线性函数的成对交叉点,其中,对偶算子的M个线性函数代表关于该对偶算子,M个资源的M个成本调节奖励。

在一些实施例中,基于按照非增加的顺序排序的对偶算子的候选以及对与按照非增加的顺序该对偶算子的候选中的一个相对应的池跨N个用户选择的资源的相应总成本,计算非负阈值,例如根据关于图13描述的技术。在一些实施例中,对以非增加的顺序排序的对偶算子的候选执行插值,以计算非负阈值,例如根据关于图13描述的技术。

在一些实施例中,诸如上面描述的微调装桶算法的装桶方案可以被执行以加速过程1400c的收敛。例如,对偶算子的候选被分组为多个非均匀预算;计算在多个非均匀预算中与该对偶算子的各个候选相对应的用户的选择的资源的增量成本的加和;并且基于增量成本的加和来计算非负阈值。

在一些实施例中,对于N个子问题中的每一个子问题,由所述数量的单独求解器中的一个独立地进行解决包括:对于N个子问题中的每一个子问题,由向其指派了该子问题的求解器独立地进行解决。在一些实施例中,对于N个子问题中的每一个子问题,由所述数量的单独求解器中的一个独立地进行解决包括:对于N个子问题中的每一个子问题,由所述数量的单独求解器中的一个并行地进行解决。在一些实施例中,由所述数量的单独求解器中的一个独立地进行解决包括:对于N个子问题中的每一个子问题,由N个单独求解器中的相应一个并行地进行解决。在一些实施例中,N个子问题中的每一个是整数规划(IP)问题。因此,对于N个子问题中的每一个子问题,由所述数量的单独求解器中的一个独立地进行解决包括:由IP求解器独立地解决IP问题(例如,关于图14描述的层级贪婪IP求解器)。

在1414c,针对与池对应的、限制了跨两个或者更多个用户M个资源的最大每池成本的全局约束相对应的每一个对偶算子,将与该池相对应的全局约束的更新的对偶算子例如确定为非负阈值,例如在图7中的算法4的722处示出的最小阈值v。非负阈值可以是这样的,使得对于与小于非负阈值的对偶算子相对应的池,跨N个用户选择的资源的总成本超出最大每池成本;并且对于与不小于非负阈值的对偶算子相对应的池,跨N个用户选择的资源的总成本不超过最大每池成本。

在1416c,确定收敛条件是否得到满足。收敛条件可以例如基于迭代的最多次数、K个对偶算子或者这二者来定义。例如,如果K个对偶算子已经收敛或者已经执行了迭代的最多次数,则收敛条件可以得到满足。可以指定附加的或者不同的收敛条件。

在1418c,响应于确定收敛条件得到满足(例如,基于K个对偶算子),对于基于K个对偶算子的N个子问题中的每一个子问题,可以由所述数量的单独求解器中的一个独立地再次解决该子问题,其中,对于N个子问题中的每一个进行解决包括:计算与K个对偶算子相对应的N个用户中每一个用户的M个决策变量。

在1420c,根据N个用户中每一个用户的M个决策变量,在N个用户中分配M个资源。N个用户中每一个用户的M个决策变量可以作为过程1400c的输出被返回。

图15描绘了根据本文实施例的计算机实现的系统1500的示例的框图,该计算机实现的系统1500用于提供与所描述的算法、方法、函数、过程、流程和进程相关联的计算功能。图15是示出根据本文实施例的计算机实现的系统1500的示例的框图,该计算机实现的系统1500用于提供与所描述的算法、方法、函数、过程、流程和进程相关联的计算功能。在所示出的实施例中,系统1500包括计算机1502和网络1530。

所说明的计算机1502旨在包括任何计算设备,诸如服务器、台式计算机、膝上型/笔记本计算机、无线数据端口、智能电话、个人数据助理(PDA)、平板计算机、这些设备、其他计算设备或计算设备组合内的一个或多个处理器,所述计算设备包括计算设备的物理或虚拟实例,或计算设备的物理或虚拟实例的组合。此外,计算机1502可包括能够接受用户信息的输入设备,例如小键盘、大键盘、触摸屏、其它输入设备或输入设备的组合,以及在图形类型用户界面(UI)(或GUI)或其他UI上传达与计算机1502的操作相关联的信息的输出设备,所述信息包括数字数据、视觉、音频或其他类型的信息或信息类型的组合。

在分布式计算系统中,计算机1502可以作为用于执行本公开中所描述的主题的客户端、网络组件、服务器、数据库或其它持久性设备、其它角色或角色的组合。所示计算机1502与网络1530可通信地耦合。在一些实施例中,计算机1502的一个或多个组件可以被配置为在包括基于云计算的环境、本地环境、全局环境、其他环境或环境的组合的环境内运行。

在高层级处,计算机1502是可用于接收、发送、处理、存储或管理与所描述的主题相关联的数据和信息的电子计算设备。根据一些实施例,计算机1502也可以包括服务器或者可通信地耦接至服务器,该服务器包括应用服务器、电子邮件服务器、web服务器、高速缓存服务器、流数据服务器、其他服务器、或服务器的组合。

计算机1502可以通过网络1530(例如,从在另一计算机1502上执行的客户端软件应用)接收请求并且通过使用软件应用或者软件应用的组合处理接收的请求来对接收的请求做出响应。此外,也可以从内部用户(例如,从命令控制台或者由另一内部访问方法)、外部或第三方或者其它实体、个体、系统或计算机将请求发送到计算机1502。

计算机1502的组件中的每一个可以使用系统总线1503进行通信。在一些实施例中,计算机1502的组件中的任意或者所有组件,包括硬件、软件或者硬件和软件的组合,可以使用应用编程接口(API)1512、服务层1513或者应用编程接口1512和服务层1513的组合通过系统总线1503连接。应用编程接口1512可以包括对于例程、数据结构和对象类的规范。应用编程接口1512可以独立于或者依赖于计算机语言并且是指完整的接口、单个函数或者甚至一组应用编程接口。服务层1513向计算机1502提供软件服务,或者服务层1513向通信地耦合到计算机1502的其他组件(无论是否示出)提供软件服务。计算机1502的功能对于使用服务层1513的所有服务消费者可访问。诸如服务层1513提供的软件服务通过定义的接口提供可重用的、定义的功能。例如,接口可以是以JAVA、C++、或以可扩展标记语言(XML)格式或其他格式或格式的组合提供数据的其他计算语言或计算语言的组合。虽然应用编程接口1512或者服务层1513被示出为计算机1502的集成组件,但是在可选实施例中,应用编程接口1512或者服务层1513被示为与计算机1502的其它组件或者与通信地耦合到计算机1502的其它组件(无论是否示出)相关的独立组件。而且,在不偏离本公开的范围的情况下,应用编程接口1512或者服务层1513的任意或者全部部分可以被实现为另一软件模块、企业应用或者硬件模块的子模块。

计算机1502包括接口1504。尽管被示出为单个接口1504,但是可以根据特定的需要、期望或者计算机1502的特定实施例使用两个或者更多个接口1504。计算机1502使用接口1504与通信地链接到分布式环境中的网络1530的另一计算系统(无论是否示出)进行通信。通常,接口1504可用于与网络1530通信并且包括编码在软件、硬件或者软件和硬件的组合中的逻辑。更加具体地,接口1504可以包括支持与通信相关联的一个或多个通信协议的软件,使得网络1530或者接口1504的硬件可用于向所示出的计算机1502内部和外部传送物理信号。

计算机1502包括处理器1505。尽管被示出为单个处理器1505,但是可以根据特定的需要、期望或者计算机1502的特定实施例使用两个或者更多个处理器1505。通常,处理器1505执行指令并且操控数据以执行计算机1502的操作或者在本公开中描述的任意算法、方法、函数、过程、流程和进程。

计算机1502还包括可以保存数据的数据库1506,该数据用于计算机1502、可通信地链接到网络1530的其它组件(无论是否示出)或者计算机1502和其它组件的组合。例如,数据库1506可以是存储符合本公开的数据的内存、常规的或者其它类型的数据库。在一些实施例中,根据特定的需要、期望或者计算机1502的特定实施例以及所描述的功能,数据库1506可以是两个或者更多个不同数据库类型的组合(例如,混合内存和常规数据库)。尽管被示出为单个数据库1506,但是根据特定的需要、期望或者计算机1502的特定实施例以及所描述的功能,可以使用具有类似或者不同类型的两个或者更多个数据库。尽管数据库1506被示出为计算机1502的集成组件,但是在可选实施例中,数据库1506可以位于计算机1502外部。作为示例,数据库1506可以包括上述背包问题的全局约束1516和局部约束1518。

计算机1502还包括可以保存数据的存储器1507,该数据用于计算机1502、可通信地链接到网络1530的其它组件(无论是否示出)或者计算机1502和其它组件的组合。存储器1507可以存储符合本公开的数据。在一些实施例中,根据特定的需要、期望或者计算机1502的特定实施例以及所描述的功能,存储器1507可以是两个或者更多个不同类型的存储器的组合(例如,半导体和磁存储设备的组合)。尽管被示出为单个存储器1507,但是根据特定的需要、期望或者计算机1502的特定实施例以及所描述的功能,可以使用具有相同或者不同类型的两个或者更多个存储器1507。尽管存储器1507被示出为计算机1502的集成组件,但是在可选实施例中,存储器1507可以位于计算机1502外部。

应用1508是根据特定需要、期望或者计算机1502的特定实施例,特别是关于在本公开中描述的功能,提供功能的算法软件引擎。例如,应用1508可以用作一个或多个组件、模块或者应用。进而,尽管被示出为单个应用1508,但是应用1508可以被实现为计算机1502上的多个应用1508。此外,尽管被示出为集成到计算机1502上,但是在可选实施例中,应用1508可以位于计算机1502外部。

计算机1502还可以包括电源1514。电源1514可以包括可以被配置为用户可更换或者用户不可更换的可再充电或者不可再充电电池。在一些实施例中,电源1514可以包括功率转换或者管理电路(包括再充电、待机或者另一功率管理功能)。在一些实施例中,电源1514可以包括电源插头,以允许计算机1502被接入到墙壁插座或其他电源中,从而例如为计算机1502供电或为可再充电电池再充电。

可以存在与包含计算机1502的计算机系统相关联或者位于包含计算机1502的计算机系统外部的任意数量的计算机1502,每一个计算机1502通过网络1530进行通信。进而,在不偏离本公开的范围的情况下,术语“客户端”、“用户”或者其它合适的术语可以互换地合理使用。而且,本公开预期许多用户可以使用一个计算机1502,或者一个用户可以使用多个计算机1502。

图16A是根据本文实施例的装置1600a的模块的示例的图。装置1600a可以是数据处理装置的实施例,例如包括一定数量的单独计算机实现的求解器的分布式计算系统,用于通过解决受K个全局约束和L个局部约束约束的背包问题(KP)执行在N个用户中将M个资源分配到K个池的资源分配。装置1600a可以与上述实施例相对应,并且装置1600a包括下面:用于接收代表K个全局约束和L个局部约束的数据的接收模块1601a,其中K小于L,其中K个全局约束中的每一个限制了跨两个或者更多个用户的M个资源相应的最大每池成本,并且L个局部约束中的每一个限制了M个资源的每用户选择;用于使用K个对偶算子将背包问题分解为N个子问题的分解模块1602a,N个子问题中的每一个与N个用户中的相应一个相对应并且关于该相对应用户,受L个局部约束的约束,其中,N是数十亿或者更大的数量级,其中K个对偶算子中的每一个与K个全局约束中的相应一个相对应;用于确定用于解决N个子问题的单独计算机实现的求解器的数量的第一确定模块1603a;用于在所述数量的单独计算机实现的求解器中分发N个子问题的分发模块1604a;以及用于由分布式计算机系统执行两次或者更多个迭代来解决背包问题的第一解决模块1605a。第一解决模块1605a还包括第一解决子模块,用于在一次迭代中,对于N个子问题中的每一个,由所述数量的单独计算机实现的求解器中的一个独立地进行解决,其中对于N个子问题中的每一个进行解决包括计算待分配给N个用户中相对应用户的M个资源中的每一个的量;以及更新子模块,用于基于待分配给N个用户中相对应用户的M个资源中的每一个的量来更新K个对偶算子。

在可选实施例中,L是数十亿或者更大的数量级。

在可选实施例中,确定用于解决所述N个子问题的单独计算机实现的求解器的数量包括:基于用于解决所述背包问题的指定计算时间来确定用于解决所述N个子问题的单独计算机实现的求解器的数量;以及对于所述N个子问题中的每一个子问题,由所述数目的单独计算机实现的求解器中的一个独立地进行解决包括:对于所述N个子问题中的每一个子问题,由所述数目的单独计算机实现的求解器中的一个并行地进行解决。

在可选实施例中,确定用于解决N个子问题的单独计算机实现的求解器的数量包括将单独计算机实现的求解器的数量确定为N,以及对于所述N个子问题中的每一个子问题,由所述数目的单独计算机实现的求解器中的一个独立地进行解决包括:对于所述N个子问题中的每一个子问题,由所述N个单独计算机实现的求解器中的相应一个并行地进行解决。

在可选实施例中,对于所述N个子问题中的每一个子问题,由所述数目的单独计算机实现的求解器中的一个独立地进行解决包括由整数规划(IP)计算机实现的求解器独立地解决IP问题。

在可选实施例中,装置1600a进一步包括:第二确定模块1606a,用于基于K个对偶算子确定收敛条件是否得到满足;第二解决模块1607a,用于响应于基于所述K个对偶算子确定收敛条件得到满足,对于所述N个子问题中的每一个子问题,由所述数量的单独计算机实现的求解器中的一个求解器基于所述K个对偶算子独立地进行解决,其中对于所述N个子问题中的每一个进行解决包括计算待分配给所述N个用户中相对应用户的所述M个资源中的每一个的量;以及分配模块1608a,用于向N个用户中的相对应用户分配M个资源中的每一个的量。

在可选实施例中,对于所述N个子问题中的每一个进行解决进一步包括:对于所述K个池中的每一个,基于待分配给所述相对应用户的所述M个资源中的每一个的量计算所述相对应用户的所述M个资源的每池成本。

在可选实施例中,装置1600a进一步包括:计算模块,用于对于K个池中的每一个,在一次迭代中基于待分配给N个用户中相对应用户的M个资源中的每一个的量来计算跨N个用户M个资源的每池成本;以及更新子模块,针对K个对偶算子中的每一个及其对应池,基于受对应的全局约束限制的对应池的跨两个或更多个用户的M个资源的最大每池成本与该对应池的跨N个用户M个资源的每池成本的差值,更新该对偶算子,该对应池的跨N个用户M个资源的每池成本基于待分配给所述N个用户中相对应用户的所述M个资源中的每一个的量计算得到。

先前实施例中示出的系统、装置、模块或者单元可以通过使用计算机芯片或者实体实现,或者可以通过使用具有某些功能的产品实现。典型示例设备是计算机,并且计算机可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备的任意组合。

对于装置中每一个模块的功能和作用的示例过程,可以参照先前方法中的相对应步骤的示例过程。本文为了简化省去了细节。

由于装置实施例与方法实施例基本对应,所以对于相关部分,可以参照方法实施例中的相关描述。先前描述的装置实施例只是示例。被描述为单独部分的模块可以是或者可以不是物理分离的,并且被显示为模块的部分可以是或者可以不是物理模块,可以位于一个位置,或者可以分布在一定数量的网络模块上。模块中的一些或者全部可以基于实际需求进行选择以便实现本文方案的目标。本领域普通技术人员可以在不付出创造性劳动的情况下理解并实现本申请的实施例。

再次参照图16A,它可以被解释为示出数据处理装置的内部功能模块和结构,例如包括一定数量的单独计算机实现的求解器的分布式计算系统,用于通过解决受K个全局约束和L个局部约束约束的背包问题(KP)执行在N个用户中将M个资源分配到K个池的资源分配。执行主体本质上可以是电子设备,并且电子设备包括:一个或多个处理器以及配置为存储一个或多个处理器的可执行指令的存储器。

所述一个或多个处理器被配置为接收代表K个全局约束和L个局部约束的数据,其中K小于L,K个全局约束中的每一个限制了跨两个或者更多个用户M个资源相应的最大每池成本,并且L个局部约束中的每一个限制了M个资源的每用户选择;使用K个对偶算子将背包问题分解为N个子问题,N个子问题中的每一个与N个用户中的相应一个相对应并且关于相对应用户,受L个局部约束的约束,其中N是数十亿或者更大的数量级,其中K个对偶算子中的每一个与K个全局约束中的相应一个相对应;确定用于解决N个子问题的单独计算机实现的求解器的数量;在所述数量的单独计算机实现的求解器之间分发N个子问题;以及由分布式计算系统通过执行两次或者更多次迭代来解决背包问题。在一次迭代中,一个或多个处理器被配置为对于N个子问题中的每一个,由所述数量的单独计算机实现的求解器中的一个独立地进行解决,其中对于N个子问题中的每一个进行解决包括计算待分配给N个用户中相对应用户的M个资源中的每一个的量;以及基于待分配给N个用户的相对应用户的M个资源中的每一个的量更新K个对偶算子。

可选地,L是数十亿或者更大的数量级。

可选地,确定用于解决所述N个子问题的单独计算机实现的求解器的数量包括:基于用于解决所述背包问题的指定计算时间来确定用于解决所述N个子问题的单独计算机实现的求解器的数量;以及对于所述N个子问题中的每一个子问题,由所述数目的单独计算机实现的求解器中的一个独立地进行解决包括:对于所述N个子问题中的每一个子问题,由所述数目的单独计算机实现的求解器中的一个并行地进行解决。

可选地,确定用于解决N个子问题的单独计算机实现的求解器的数量包括将单独计算机实现的求解器的数量确定为N,以及对于所述N个子问题中的每一个子问题,由所述数目的单独计算机实现的求解器中的一个独立地进行解决包括:对于所述N个子问题中的每一个子问题,由所述N个单独计算机实现的求解器中的相应一个并行地进行解决。

可选地,对于所述N个子问题中的每一个子问题,由所述数目的单独计算机实现的求解器中的一个独立地进行解决包括由整数规划(IP)计算机实现的求解器独立地解决IP问题。

可选地,一个或多个处理器被配置为基于K个对偶算子确定收敛条件是否得到满足;响应于基于所述K个对偶算子确定收敛条件得到满足,对于所述N个子问题中的每一个子问题,由所述数量的单独计算机实现的求解器中的一个求解器基于所述K个对偶算子独立地进行解决,其中对于所述N个子问题中的每一个进行解决包括计算待分配给所述N个用户中相对应用户的所述M个资源中的每一个的量;并且向N个用户的相对应用户分配M个资源中的每一个的量。

可选地,对于所述N个子问题中的每一个进行解决进一步包括:对于所述K个池中的每一个,基于待分配给所述相对应用户的所述M个资源中的每一个的量计算所述相对应用户的所述M个资源的每池成本。

可选地,一个或多个处理器被配置为对于K个池中的每一个,基于待分配给N个用户中相对应用户的M个资源中的每一个的量,计算跨N个用户M个资源的每池成本;以及其中,针对K个对偶算子中的每一个及其对应池,基于受对应的全局约束限制的对应池的跨两个或更多个用户的M个资源的最大每池成本与该对应池的跨N个用户的M个资源的每池成本的差值,更新该对偶算子,该对应池的跨N个用户的M个资源的每池成本基于待分配给所述N个用户中相对应用户的所述M个资源中的每一个的量计算得到。

图16B是根据本文实施例的装置1600b的模块的示例的图。装置1600b可以是用于在L个约束下分配M个资源的数据处理装置的实施例。装置1600b可以与上面描述的实施例相对应,并且装置1600b包括:接收模块1601b,用于接收代表L个约束的数据,其中L个约束中的每一个与M个资源的子集相对应并且限制在M个资源的子集中待选择的资源的相应最大数量C,其中与L个约束中的第一约束相对应的任何子集和与L个约束中的第二约束相对应的任何其他子集不具有共同资源,除非与第一约束相对应的子集是与第二约束相对应的其它子集的子集;确定模块1602b,用于确定L个约束的拓扑排序,其中拓扑排序定义L个约束的遍历顺序;选择模块1603b,用于选择所有M个资源作为初始选择;移除模块1604b,用于通过按照L个约束的拓扑排序遍历每一个约束来从初始选择移除资源,其中移除模块1604b还包括确定子模块1605b,用于对于与M个资源的子集S

在可选实施例中,代表L个约束的数据包括L个索引子集,L个索引子集中的每一个与L个约束中的相应一个相对应并且包括与L个约束的相应一个相对应的M个资源的子集的索引;并且子集S

在可选实施例中,代表L个约束的数据包括:对于L个约束中的每一个约束,由有向无环图(DAG)数据结构中的节点代表该约束的数据,并且DAG的边代表所述L个约束中与该边的两个节点相对应的两个约束之间的关系。

在可选实施例中,装置1600b还包括:获得模块,用于获得代表M个奖励的数据,每一个奖励分别与M个资源中的一个相对应。

在可选实施例中,装置1600b还包括:排序模块,用于在按照L个子集的拓扑排序遍历L个子集中的每一个子集之前,根据与M个资源相对应的M个奖励以非增加的顺序对M个资源进行排序;并且其中所述取消选择子模块可以根据M个资源的非增加的顺序,取消选择不是子集S

在可选实施例中,M个奖励分别是M个成本调节奖励,其中,如果选择了所述M个资源中的一个,则所述M个成本调节奖励中的每一个包括减去成本的奖励。

在可选实施例中,针对N个用户中的一个用户,装置1600b被用于执行在N个用户中将M个资源分配到受K个全局约束和L个约束约束的K个池的资源分配,其中所述L个约束中的每一个限制了单个用户待选择的M个资源中资源的相应最大数量,并且所述K个全局约束中的每一个限制了跨所述N个用户为每一个池分配的资源。

先前实施例中示出的系统、装置、模块或者单元可以通过使用计算机芯片或者实体实现,或者可以通过使用具有某些功能的产品实现。典型示例设备是计算机,并且该计算机可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备的任意组合。

对于装置中每一个模块的功能和作用的示例过程,可以参考先前方法中相对应步骤的示例过程。本文为了简化省去了细节。

由于装置实施例基本上与方法实施例相对应,因此对于相关部分,可以参考方法实施例中的相关描述。先前描述的装置实施例只是示例。被描述为单独部分的模块可以是或者可以不是物理分离的,并且被显示为模块的部分可以是或者可以不是物理模块,可以位于一个位置中,或者可以分布在一定数量的网络模块上。一些或者所有模块可以基于实际需求进行选择以便实现本文的方案的目标。本领域普通技术人员可以在不付出创造性劳动的情况下理解并实现本申请的实施例。

再次参照图16B,它可以被解释为示出用于在L个约束下分配M个资源的数据处理装置的内部功能模块或结构。执行主体本质上可以是电子设备,并且电子设备包括:一个或多个处理器以及配置为存储该一个或多个处理器的可执行指令的存储器。

一个或多个处理器被配置为接收代表L个约束的数据,其中L个约束中的每一个与M个资源的子集相对应并且限制了在M个资源的子集中待选择的资源的相应最大数量C,其中,与L个约束中的第一约束相对应的任何子集和与L个约束中的第二约束相对应的任何其它子集不具有共同资源,除非与第一约束相对应的子集是与第二约束相对应的其它子集的子集;确定L个约束的拓扑排序,其中拓扑排序定义L个约束的遍历顺序;选择所有M个资源作为初始选择;通过按照L个约束的拓扑排序遍历每一个约束来从初始选择移除资源,其中移除包括:对于与M个资源的子集S

可选地,代表L个约束的数据包括L个索引子集,L个索引子集中的每一个与L个约束中的相应一个相对应并且包括与L个约束的相应一个相对应的M个资源的子集的索引;并且子集S

可选地,代表L个约束的数据包括:对于L个约束中的每一个约束,由有向无环图(DAG)数据结构中的节点代表该约束的数据,并且DAG的边代表所述L个约束中与该边的两个节点相对应的两个约束之间的关系。

可选地,一个或多个处理器被配置为获得代表M个奖励的数据,每一个奖励分别与M个资源中的一个相对应。

可选地,一个或多个处理器被配置为在按照L个子集的拓扑排序遍历L个子集中的每一个子集之前,根据与M个资源相对应的M个奖励以非增加的顺序对M个资源进行排序;并且其中在子集S

可选地,M个奖励分别是M个成本调节奖励,其中,如果选择了所述M个资源中的一个,则所述M个成本调节奖励中的每一个包括减去成本的奖励。

可选地,在受K个全局约束和L个约束约束的情况下,执行在N个用户中将M个资源分配到K个池的资源分配时,对于N个用户中的一个执行上述操作中的一些或全部,其中所述L个约束中的每一个限制了单个用户待选择M个资源中的资源的相应最大数量,并且所述K个全局约束中的每一个限制了跨所述N个用户为每一个池分配的资源。可选地,L是数十亿或者更大的数量级。

图16C是根据本文实施例的装置1600c的模块的示例的图。装置1600c可以是数据处理装置的示例,用于通过使用包括一定数量的单独计算机实现的求解器的分布式计算系统解决背包问题(KP)来执行在N个用户中将M个资源分配到K个池的资源分配,背包问题受K个全局约束和L个局部约束的约束。装置1600c可以与上述实施例相对应,并且装置1600c包括:接收模块1601c,用于接收代表K个全局约束和L个局部约束的数据,其中K个全局约束中的每一个限制了跨两个或者更多用户M个资源相应的最大每池成本,并且L个局部约束中的每一个限制了M个资源的每用户选择;变换模块1602c,用于使用K个对偶算子将背包问题变换为对偶问题,K个对偶算子中的每一个与K个全局约束中的相应一个相对应;分解模块1603c,用于将对偶问题分解为N个子问题,N个子问题中的每一个与N个用户中的相应一个相对应并且关于N个用户中的该相应用户,受L个局部约束的约束;解决模块1604c,用于在解决对偶问题时执行两次或者更多次迭代;确定模块1605c,用于在一次迭代中,针对与池对应的、限制了跨两个或更多个用户M个资源的最大每池成本的全局约束相对应的每一个对偶算子,将与该池相对应的全局约束的更新的对偶算子确定为非负阈值,使得对于与小于非负阈值的对偶算子相对应的池,跨N个用户选择的资源的总成本超出最大每池成本;以及对于与不小于非负阈值的对偶算子相对应的池,跨N个用户选择的资源的总成本不超出最大每池成本;以及计算模块1606c,用于在解决与N个用户中的每一个相对应的N个子问题中的每一个时,计算与更新的对偶算子相对应的N个用户中每一个的M个决策变量,其中M个决策变量中的每一个指示是否选择N个用户中每一用户的M个资源中的相应一个。

在可选实施例中,N是数十亿或者更大的数量级,K小于L,L是数十亿或者更大的数量级。

在可选实施例中,L个约束中的每一个与M个资源的子集相对应并且限制了在M个资源的该子集中待选择的资源的相应最大数量C,其中与L个约束中的第一约束相对应的任何子集和与L个约束中的第二约束相对应的任何其它子集不具有共同资源,除非与第一约束相对应的子集是与第二约束相对应的其它子集的子集。

在可选实施例中,装置1600c还包括:另一计算模块,用于响应于确定收敛条件得到满足,计算与K个对偶算子相对应的N个用户中的每一个用户的M个决策变量;以及分配模块,用于根据N个用户中的每一个用户的M个决策变量在N个用户中分配M个资源。

在可选实施例中,装置1600c还包括:另一确定模块,用于确定K个对偶算子的初始值,其中基于受K个采样的全局约束和L个局部约束约束的、用于在S个用户中将资源分配到K个池的背包问题的采样版本,计算K个对偶算子的初始值,其中S个用户被采样自N个用户,并且K个采样的全局约束中的每一个限制了对于K个池中的每一个,跨S个用户的资源的相应缩减的最大总成本。

在可选实施例中,解决与N个用户中的每一个相对应的N个子问题中的每一个包括:对于与用户相对应的子问题并且对于与该池相对应的全局约束相对应的每一个对偶算子,计算该对偶算子的候选;按照非增加的顺序对该对偶算子的候选进行排序;按照非增加的顺序遍历该对偶算子的候选:对于该对偶算子的每一个候选,计算与该对偶算子的候选相对应的用户的M个决策变量;以及相对于基于与按照非增加的顺序该对偶算子的候选之前的对偶算子的候选相对应的该用户的M个决策变量的选择的资源的成本,计算基于与该对偶算子的候选相对应的该用户的M个决策变量的选择的资源的增量成本;以及其中,通过对与该对偶算子的候选中大于或者等于特定对偶算子的所有候选相对应的用户的选择的资源的增量成本进行加和,计算与该特定对偶算子相对应的池跨N个用户选择的资源的总成本。

在可选实施例中,计算对偶算子的候选包括:计算对偶算子的M个线性函数的成对交叉点,其中对偶算子的M个线性函数代表关于对偶算子,M个资源的M个成本调节奖励。

在可选实施例中,装置1600c该包括:另一计算模块,用于基于按照非增加的顺序排序的对偶算子的候选以及对于与按照非增加的顺序该对偶算子的候选中的一个相对应的池跨N个用户选择的资源的相应总成本,计算非负阈值。

在可选实施例中,装置1600c还包括:插值模块,用于对按照非增加的顺序排序的该对偶算子的候选执行插值以计算非负阈值。

在可选实施例中,装置1600c还包括:分组模块,用于将对偶算子的候选分组为多个非均匀预算;另一计算模块,用于计算在多个非均匀预算中与该对偶算子的各个候选相对应的用户的选择资源的增量成本的加和;以及另一计算模块,用于基于增量成本的加和计算非负阈值。

先前实施例中示出的系统、装置、模块或者单元可以通过使用计算机芯片或者实体实现,或者可以通过使用具有某些功能的产品实现。典型示例设备是计算机,并且该计算机可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备的任意组合。

对于装置中每一个模块的功能和作用的示例过程,可以参照先前方法中的相对应步骤的示例过程。本文为了简化省去了细节。

由于装置实施例与方法实施例基本上相对应,所以对于相关部分,可以参照方法实施例中的相关描述。先前描述的装置实施例只是示例。被描述为单独部分的模块可以是或者可以不是物理分离的,并且被显示为模块的部分可以是或者可以不是物理模块,可以位于一个位置,或者可以分布在一定数量的网络模块上。模块中的一些或者全部可以基于实际需求进行选择以便实现本文的方案的目标。本领域普通技术人员可以在不付出创造性劳动的情况下理解并实现本申请的实施例。

再次参照图16C,它可以被解释为示出数据处理装置的内部功能模块和结构,例如包括一定数量的单独计算机实现的求解器的分布式计算系统,用于通过解决受K个全局约束和L个局部约束约束的背包问题(KP)执行在N个用户中将M个资源分配到K个池的资源分配。执行主体本质上可以是电子设备,并且电子设备包括:一个或多个处理器以及配置为存储该一个或多个处理器的可执行指令的存储器。

一个或多个处理器被配置为接收代表K个全局约束和L个局部约束的数据,其中,K个全局约束中的每一个限制了跨两个或者更多用户M个资源相应的最大每池成本,并且L个局部约束中的每一个限制了M个资源的每用户选择;使用K个对偶算子将背包问题变换为对偶问题,K个对偶算子中的每一个与K个全局约束中的相应一个相对应;将对偶问题分解为N个子问题,N个子问题中的每一个与N个用户中的相应一个相对应并且关于N个用户中的该相应用户,受L个局部约束的约束;在解决对偶问题时执行两次或者更多次迭代,其中在一次迭代中,针对与池对应的、限制了跨两个或更多个用户M个资源的最大每池成本的全局约束相对应的每一个对偶算子,将与该池相对应的全局约束的更新的对偶算子确定为非负阈值,使得对于与小于非负阈值的对偶算子相对应的池,跨N个用户选择的资源的总成本超出最大每池成本;以及对于与不小于非负阈值的对偶算子相对应的池,跨N个用户选择的资源的总成本不超出最大每池成本;以及在解决与N个用户中的每一个相对应的N个子问题中的每一个时,计算与更新的对偶算子相对应的N个用户中每一个的M个决策变量,其中M个决策变量中的每一个指示是否选择N个用户中每一用户的M个资源中的相应一个。

可选地,N是数十亿或者更大的数量级,K小于L,L是数十亿或者更大的数量级。

可选地,L个约束中的每一个与M个资源的子集相对应并且限制了在M个资源的该子集中待选择的资源的相应最大数量C,其中与L个约束中的第一约束相对应的任何子集和与L个约束中的第二约束相对应的任何其它子集不具有共同资源,除非与第一约束相对应的子集是与第二约束相对应的其它子集的子集。

可选地,一个或多个处理器被配置为,响应于确定收敛条件得到满足,计算与K个对偶算子相对应的N个用户中的每一个用户的M个决策变量;并且根据N个用户中的每一个用户的M个决策变量在N个用户中分配M个资源。

可选地,一个或多个处理器被配置为确定K个对偶算子的初始值,其中基于受K个采样的全局约束和L个局部约束约束的、用于在S个用户中将资源分配到K个池的背包问题的采样版本,计算K个对偶算子的初始值,其中S个用户被采样自N个用户,并且K个采样的全局约束中的每一个限制了对于K个池中的每一个,跨S个用户的资源的相应缩减的最大总成本。

可选地,解决与N个用户中的每一个相对应的N个子问题中的每一个包括:对于与用户相对应的子问题并且对于与该池相对应的全局约束相对应的每一个对偶算子,计算该对偶算子的候选;按照非增加的顺序对该对偶算子的候选进行排序;按照非增加的顺序遍历该对偶算子的候选:对于该对偶算子的每一个候选,计算与该对偶算子的候选相对应的用户的M个决策变量;以及相对于基于与按照非增加的顺序该对偶算子的候选之前的对偶算子的候选相对应的该用户的M个决策变量的选择的资源的成本,计算基于与该对偶算子的候选相对应的该用户的M个决策变量的选择的资源的增量成本;以及其中,通过对与该对偶算子的候选中大于或者等于特定对偶算子的所有候选相对应的用户的选择的资源的增量成本进行加和,计算与该特定对偶算子相对应的池跨N个用户选择的资源的总成本。

可选地,计算对偶算子的候选包括:计算对偶算子的M个线性函数的成对交叉点,其中对偶算子的M个线性函数代表关于对偶算子,M个资源的M个成本调节奖励。

可选地,一个或多个处理器被配置为基于按照非增加的顺序排序的对偶算子的候选以及对于与按照非增加的顺序该对偶算子的候选中的一个相对应的池跨N个用户选择的资源的相应总成本,计算非负阈值。

可选地,一个或多个处理器被配置为对按照非增加的顺序排序的该对偶算子的候选执行插值以计算非负阈值。

可选地,一个或多个处理器被配置为将对偶算子候选分组为多个非均匀预算;计算在多个非均匀预算中与该对偶算子的各个候选相对应的用户的选择资源的增量成本的加和;并且基于增量成本的加和计算非负阈值。

本文描述的技术产生一个或多个技术效果。在一些实施例中,描述了能够解决数十亿规模的真实世界背包问题(例如,具有数十亿决策变量和约束)的分布式系统。该分布式系统基于背包问题略显概括的公式进行开发,并且因此可以适用于解决背包问题的其它变体。通过引入局部约束并且将局部约束与全局约束分开处理,可以在不增加满足全局约束复杂性的情况下,对每个资源用户实施灵活的业务需求。

作为示例,所描述的技术可以在不牺牲用户满意度等业务度量的情况下,有效地为每个用户分配有限资源,从而解决优化问题。使用情况的一个示例是以数亿用户为目标的多个营销活动。每一个活动可以具有全局资源限制,以及每个促销渠道的单独资源限制。根据活动运营的性质,这里提到的资源可以是灵活的形式,如货币和非货币促销。非货币资源约束的一个示例是分配给营销事件的移动App页面浏览的总数量可能受限。在一些实施例中,单独用户可以具有每用户局部约束。例如,目标用户不可以参与两个以上的促销渠道。在一些实施例中,决策变量和局部约束二者可以达到数十亿,而全局约束的数量经常是数百个。

本文还描述了用于解决受具有层级结构的约束约束的IP问题的贪婪算法和计算机实现的求解器。所描述的贪婪算法和计算机实现的求解器可以利用约束的层级结构并且更有效地解决IP问题,例如更有效地解决具有多项式时间复杂性的IP问题。贪婪算法和计算机实现的求解器可以用于找到对于真实世界场景,例如能够以更加有效的方式建模或者由IP问题代表的资源分配、产品/服务促销和营销,的解。

本文还描述了用于更新对偶算子的同步坐标下降(SCD)算法。与需要手动或者编程选择的超参数α的现有更新算法不同(会在实践上繁杂或者计算密集,特别是对于大规模KP),SCD算法可以在不需要这样的超参数的情况下实现,因而改善了计算效率并且降低了计算负载。在一些实施例中,SCD算法不太易于违背约束,因而向潜在的优化问题提供了更好的解。

在一些实施例中,SCD算法可以用于使用MapReduce或者其它分布式计算框架或模型的分布式系统中。分布式SCD算法可以使用诸如MPI、HADOOP和SPARK的公共分布式平台实现。

在一些实施例中,所描述的技术可以被概括为优化大规模非线性问题。当前构思的目标函数在决策变量x

所描述的主题的实施例可以单独或者组合地包括一个或多个特征。例如,在第一实施例中,用于使用包括一定数量的单独计算机实现的求解器的分布式计算系统解决背包问题来执行在N个用户中将M个资源分配到K个池的资源分配的计算机实现方法,该背包问题受K个全局约束和L个局部约束的约束。所述方法包括:接收代表K个全局约束和L个局部约束的数据,其中K小于L,K个全局约束中的每一个限制了跨两个或者更多个用户所述M个资源相应的最大每池成本,并且所述L个局部约束中的每一个限制了所述M个资源的每用户选择;使用K个对偶算子将所述背包问题分解为N个子问题,所述N个子问题中的每一个与所述N个用户中的相应一个相对应并且关于该相对应的用户,受所述L个局部约束的约束,其中,N是数十亿或者更大的数量级,其中,所述K个对偶算子中的每一个与所述K个全局约束中的相应一个相对应;确定用于解决所述N个子问题的单独计算机实现的求解器的数量;通过将每一个子问题指派到相应的计算机实现的求解器,在所述数量的单独计算机实现的求解器中分发所述N个子问题;以及所述分布式计算系统通过执行两次或者更多次迭代来解决所述背包问题,并且在一次迭代中,所述方法包括:对于所述N个子问题中的每一个由向其指派了该子问题的所述计算机实现的求解器独立地进行解决,其中对于所述N个子问题中的每一个进行解决包括:计算待分配给所述N个用户中相对应用户的所述M个资源中的每一个的量;以及基于待分配给所述N个用户中相对应用户的所述M个资源中的每一个的量来更新所述K个对偶算子。

前面和其它描述的实施例可以可选地分别包括下面特征中的一个或多个:

第一特征,可以与下面特征中的任意一个组合,其中,L是数十亿或者更大的数量级。

第二特征,可以与下面特征中的任意一个组合,其中:确定用于解决所述N个子问题的单独计算机实现的求解器的数量包括:基于用于解决所述背包问题的指定计算时间来确定用于解决所述N个子问题的单独计算机实现的求解器的数量;以及对于所述N个子问题中的每一个由向其指派了该子问题的所述计算机实现的求解器独立地进行解决包括:对于所述N个子问题中的两个或者更多个子问题由向其指派了所述N个子问题中的该两个或者更多个子问题的计算机实现的求解器并行地进行解决。

第三特征,可以与下面特征中的任意一个组合,其中:确定用于解决所述N个子问题的单独计算机实现的求解器的数量包括:将所述单独计算机实现的求解器的数量确定为N,以及对于所述N个子问题中的每一个由向其指派了该子问题的所述计算机实现的求解器独立地进行解决包括:对于所述N个子问题中的每一个由所述N个单独计算机实现的求解器中的相应一个并行地进行解决。

第四特征,可以与下面特征中的任意一个组合,其中,对于所述N个子问题中的每一个由向其指派了该子问题的所述计算机实现的求解器独立地进行解决包括:由整数规划IP求解器独立地解决整数规划问题。

第五特征,可以与下面特征中的任意一个组合,还包括:基于所述K个对偶算子确定收敛条件是否得到满足;响应于基于所述K个对偶算子确定收敛条件得到满足,对于所述N个子问题中的每一个,由所述数量的单独计算机实现的求解器中的一个基于所述K个对偶算子独立地进行解决,其中,对于所述N个子问题中的每一个进行解决包括计算待分配给所述N个用户中相对应用户的所述M个资源中的每一个的量;以及向所述N个用户中的相对应用户分配所述M个资源中的每一个的量。

第六特征,可以与下面特征中的任意一个组合,其中对于所述N个子问题中的每一个进行解决进一步包括:对于所述K个池中的每一个,基于待分配给所述相对应用户的所述M个资源中的每一个的量计算所述相对应用户的所述M个资源的每池成本。

第七特征,可以与下面特征中的任意一个组合,其中,在一次迭代中,所述方法进一步包括:对于所述K个池中的每一个,基于待分配给所述N个用户中相对应用户的所述M个资源中的每一个的量计算在所述N个用户上所述M个资源的每池成本;以及其中,针对K个对偶算子中的每一个及其对应池,基于待分配给所述N个用户中相对应用户的所述M个资源中的每一个的量更新所述K个对偶算子包括:基于受对应的全局约束限制的对应池的跨两个或更多个用户的M个资源的最大每池成本与该对应池的跨N个用户的M个资源的每池成本的差值,更新该对偶算子,该对应池的跨N个用户的M个资源的每池成本基于待分配给所述N个用户中相对应用户的所述M个资源中的每一个的量计算得到。

例如,在第二实施例中,一种用于在L个约束下分配M个资源的计算机实现方法,所述方法包括:接收代表L个约束的数据,其中L个约束中的每一个与M个资源的子集相对应并且限制了在M个资源的子集中待选择的资源的相应最大数量C,其中,与L个约束中的第一约束相对应的任何子集和与L个约束中的第二约束相对应的任何其它子集不具有共同资源,除非与第一约束相对应的子集是与第二约束相对应的其它子集的子集;确定L个约束的拓扑排序,其中拓扑排序定义L个约束的遍历顺序;选择所有M个资源作为初始选择;通过按照L个约束的拓扑排序遍历每一个约束来从初始选择移除资源,其中移除包括:对于与M个资源的子集S

前面和其它描述的实施例可以可选地分别包括下面特征中的一个或多个:

第一特征,可以与下面特征中的任意一个组合,其中,代表L个约束的数据包括L个索引子集,L个索引子集中的每一个与L个约束中的相应一个相对应并且包括与L个约束的相应一个相对应的M个资源的子集的索引;并且子集S

第二特征,可以与下面特征中的任意一个组合,其中,代表L个约束的数据包括:对于L个约束中的每一个约束,由有向无环图(DAG)数据结构中的节点代表该约束的数据,并且DAG的边代表所述L个约束中与该边的两个节点相对应的两个约束之间的关系。

第三特征,可以与下面特征中的任意一个组合,进一步包括:获得代表M个奖励的数据,每一个奖励分别与M个资源中的一个相对应。

第四特征,可以与下面特征中的任意一个组合,进一步包括:在按照L个子集的拓扑排序遍历L个子集中的每一个子集之前,根据与M个资源相对应的M个奖励以非增加的顺序对M个资源进行排序;并且其中在子集S

第五特征,可以与下面特征中的任意一个组合,其中,M个奖励分别是M个成本调节奖励,其中,如果选择了所述M个资源中的一个,则所述M个成本调节奖励中的每一个包括减去成本的奖励。

第六特征,可以与下面特征中的任意一个组合,其中,在受K个全局约束和L个约束约束的情况下,执行在N个用户中将M个资源分配到K个池的资源分配时,对于N个用户中的一个执行该方法,其中所述L个约束中的每一个限制了单个用户待选择的M个资源中资源的相应最大数量,并且所述K个全局约束中的每一个限制了跨所述N个用户为每一个池分配的资源。

例如,在第三实施例中,一种用于执行资源分配的计算机实现方法,包括:使用包括一定数量的单独计算机实现求解器的分布式计算系统,通过解决受K个全局约束和L个局部约束约束的背包问题(KP)执行在N个用户中将M个资源分配到K个池的资源分配:接收代表K个全局约束和L个局部约束的数据,其中,K个全局约束中的每一个限制了跨两个或者更多用户M个资源相应的最大每池成本,并且L个局部约束中的每一个限制了M个资源的每用户选择;使用K个对偶算子将背包问题变换为对偶问题,K个对偶算子中的每一个与K个全局约束中的相应一个相对应;将对偶问题分解为N个子问题,N个子问题中的每一个与N个用户中的相应一个相对应并且关于N个用户中的该相应用户,受L个局部约束的约束;在解决对偶问题时执行两次或者更多次迭代,其中在一次迭代中,针对与池对应的、限制了跨两个或更多个用户M个资源的最大每池成本的全局约束相对应的每一个对偶算子,将与该池相对应的全局约束的更新的对偶算子确定为非负阈值,使得对于与小于非负阈值的对偶算子相对应的池,跨N个用户选择的资源的总成本超出最大每池成本;以及对于与不小于非负阈值的对偶算子相对应的池,跨N个用户选择的资源的总成本不超出最大每池成本;以及在解决与N个用户中的每一个相对应的N个子问题中的每一个时,计算与更新的对偶算子相对应的N个用户中每一个的M个决策变量,其中M个决策变量中的每一个指示是否选择N个用户中每一用户的M个资源中的相应一个。

前面和其它描述的实施例可以可选地分别包括下面特征中的一个或多个:

第一特征,可以与下面特征中的任意一个组合,其中N是数十亿或者更大的数量级,K小于L,L是数十亿或者更大的数量级。

第二特征,可以与下面特征中的任意一个组合,其中,L个约束中的每一个与M个资源的子集相对应并且限制了在M个资源的该子集中待选择的资源的相应最大数量C,其中与L个约束中的第一约束相对应的任何子集和与L个约束中的第二约束相对应的任何其它子集不具有共同资源,除非与第一约束相对应的子集是与第二约束相对应的其它子集的子集。

第三特征,可以与下面特征中的任意一个组合,进一步包括:响应于确定收敛条件得到满足,计算与K个对偶算子相对应的N个用户中的每一个用户的M个决策变量;并且根据N个用户中的每一个用户的M个决策变量在N个用户中分配M个资源。

第四特征,可以与下面特征中的任意一个组合,进一步包括确定K个对偶算子的初始值,其中基于受K个采样的全局约束和L个局部约束约束的、用于在S个用户中将资源分配到K个池的背包问题的采样版本,计算K个对偶算子的初始值,其中S个用户被采样自N个用户,并且K个采样的全局约束中的每一个限制了对于K个池中的每一个,跨S个用户的资源的相应缩减的最大总成本。

第五特征,可以与下面特征中的任意一个组合,其中,解决与N个用户中的每一个相对应的N个子问题中的每一个包括:对于与用户相对应的子问题并且对于与该池相对应的全局约束相对应的每一个对偶算子,计算该对偶算子的候选;按照非增加的顺序对该对偶算子的候选进行排序;按照非增加的顺序遍历该对偶算子的候选:对于该对偶算子的每一个候选,计算与该对偶算子的候选相对应的用户的M个决策变量;以及相对于基于与按照非增加的顺序该对偶算子的候选之前的对偶算子的候选相对应的该用户的M个决策变量的选择的资源的成本,计算基于与该对偶算子的候选相对应的该用户的M个决策变量的选择的资源的增量成本;以及其中,通过对与该对偶算子的候选中大于或者等于特定对偶算子的所有候选相对应的用户的选择的资源的增量成本进行加和,计算与该特定对偶算子相对应的池跨N个用户选择的资源的总成本。

第六特征,可以与下面特征中的任意一个组合,其中,计算对偶算子的候选包括:计算对偶算子的M个线性函数的成对交叉点,其中对偶算子的M个线性函数代表关于对偶算子,M个资源的M个成本调节奖励。

第七特征,可以与下面特征中的任意一个组合,进一步包括:基于按照非增加的顺序排序的对偶算子的候选以及对于与按照非增加的顺序该对偶算子的候选中的一个相对应的池跨N个用户选择的资源的相应总成本,计算非负阈值。

第八特征,可以与下面特征中的任意一个组合,进一步包括:对按照非增加的顺序排序的该对偶算子的候选执行插值以计算非负阈值。

第九特征,可以与下面特征中的任意一个组合,进一步包括:将对偶算子候选分组为多个非均匀预算;计算在多个非均匀预算中与该对偶算子的各个候选相对应的用户的选择资源的增量成本的加和;并且基于增量成本的加和计算非负阈值。

本文中描述的主题、动作以及操作的实施例可以在数字电子电路、有形体现的计算机软件或固件、计算机硬件中实现,包括本说明书中公开的结构及其结构等同物,或者它们中的一个或多个的组合。本文中描述的主题的实施例可以实现为一个或多个计算机程序,例如,一个或多个计算机程序指令模块,编码在计算机程序载体上,用于由数据处理装置执行或控制数据处理装置的操作。例如,计算机程序载体可以包括具有编码在其上或存储在其上的指令的一个或多个计算机可读存储介质。载体可以是有形的非暂态计算机可读介质,例如磁盘、磁光盘或光盘、固态驱动器、随机存取存储器(RAM)、只读存储器(ROM)或其他介质类型。可选地或附加地,载体可以是人工生成的传播信号,例如,机器生成的电、光或电磁信号,其被生成以编码信息以便传输到合适的接收器装置以供数据处理装置执行。计算机存储介质可以是或可以部分是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备或它们中的一个或多个组合。计算机存储介质不是传播信号。

计算机程序,也可以被称为或描述为程序、软件、软件应用程序、app、模块、软件模块、引擎、脚本或代码,可以以任何形式的编程语言编写,包括编译或解释性语言、说明或程序性语言;它可以配置为任何形式,包括作为独立程序,或者作为模块、组件、引擎、子程序或适合在计算环境中执行的其他单元,该环境可包括由通信数据网络互联的在一个或多个位置上的一台或多台计算机。

计算机程序可以但非必须对应于文件系统中的文件。计算机程序可以被存储在:保存有其它程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本;存储在专用于所讨论的程序的单个文件;或者存储在多个协调文件中,例如,存储在存储有一个或多个模块、子程序或代码部分的多个文件中。

举例来说,用于执行计算机程序的处理器包括通用微处理器和专用微处理器二者,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从耦合到处理器的非暂态计算机可读介质接收用于执行的计算机程序的指令并且接收数据。

术语“数据处理装置”包括用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。数据处理装置可以包括例如FPGA(现场可编程门阵列)、ASIC(专用集成电路)或GPU(图形处理单元)的专用逻辑电路。除了硬件,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或者它们中的一个或多个的组合的代码。

本文中描述的处理和逻辑流程可以由一台或多台计算机或处理器执行一个或多个计算机程序进行,以通过对输入数据进行运算并生成输出来执行操作。过程和逻辑流程也可以由例如FPGA、ASIC或GPU等的专用逻辑电路或专用逻辑电路与一个或多个编程计算机的组合来执行。

适合于执行计算机程序的计算机可以基于通用微处理器和/或专用微处理器,或任何其它种类的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的元件可以包括用于执行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以补充有专用逻辑电路或集成在专用逻辑电路中。

通常,计算机还将包括或可操作地耦合为从一个或多个存储设备接收数据或将数据传输到一个或多个存储设备。存储设备可以是例如磁盘、磁光盘或光盘、固态驱动器或任何其它类型的非暂态计算机可读介质。然而,计算机不需要具有这样的设备。因而,计算机可以耦合到本地和/或远程的例如一个或多个存储器的一个或多个存储设备。例如,计算机可以包括作为计算机的集成组件的一个或多个本地存储器,或者计算机可以耦合到云网络中的一个或多个远程存储器。而且,计算机可以被嵌入在另一个设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。

组件可以通过诸如直接地连接、或经由一个或多个中间组件彼此电学连接或光学连接可通信地彼此“耦合”。如果其中一个组件被集成到另一个组件中,则组件也可以彼此“耦合”。例如,集成到处理器中的存储组件(例如,L2高速缓存组件)“耦合到”处理器。

为了提供与用户的交互,本文描述的主题的实施例可以在计算机上实现或配置为与该计算机通信,该计算机具有:显示设备,例如,LCD(液晶显示器)监视器,用于向用户显示信息;以及输入设备,用户可以通过该输入设备向该计算机提供输入,例如键盘和例如鼠标、轨迹球或触摸板等的指针设备。其它类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以接收来自用户的任何形式的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过向用户设备上的web浏览器发送web页面,以响应来自web浏览器的请求,或者通过与例如智能电话或电子平板电脑等的用户设备上运行的应用程序(app)进行交互。此外,计算机可以通过向个人设备(例如,正在运行消息应用的智能手机)发送文本消息或其它形式的消息并作为回应接收来自用户的响应消息来与用户交互。

本文使用与系统、装置和计算机程序组件有关的术语“配置为”。对于被配置为执行特定操作或动作的一个或多个计算机的系统,意味着该系统已经在其上安装了在运行中促使该系统执行所述操作或动作的软件、固件、硬件或它们的组合。对于被配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括当被数据处理装置执行时促使该装置执行所述操作或动作的指令。对于被配置为执行特定操作或动作的专用逻辑电路,意味着该电路具有执行所述操作或动作的电子逻辑。

尽管本文包含许多具体实施例细节,但这些不应被解释为对由权利要求书本身限定的请求保护的范围的限制,而是作为对特定实施例的具体特征的描述。在本文单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以被描述为以某些组合起作用并且甚至最初被如此请求保护,但是在一些情况下,可以从请求保护的组合中删除来自该组合的一个或多个特征,并且权利要求书可以涉及子组合或子组合的变体。

类似地,虽然以特定顺序在附图中描绘了操作并且在权利要求书中叙述了操作,但是这不应该被理解为:为了达到期望的结果,要求以所示的特定顺序或序列顺序执行这些操作,或者要求执行所有示出的操作。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的划分不应被理解为所有实施例中都要求如此划分,而是应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或打包成多个软件产品。

已经描述了主题的特定实施例。其他实施例在以下权利要求书的范围内。例如,权利要求书中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程无需要求所示的特定顺序或序列顺序来实现期望的结果。在一些情况下,多任务和并行处理可能是有利的。

相关技术
  • 分布式系统中作业资源分配方法、装置及设备
  • 一种基于安防网络服务质量的分布式资源分配系统
技术分类

06120112145982