CN112136111A - 分布式资源分配 - Google Patents

分布式资源分配 Download PDF

Info

Publication number
CN112136111A
CN112136111A CN201980005754.7A CN201980005754A CN112136111A CN 112136111 A CN112136111 A CN 112136111A CN 201980005754 A CN201980005754 A CN 201980005754A CN 112136111 A CN112136111 A CN 112136111A
Authority
CN
China
Prior art keywords
resources
dual
users
constraints
sub
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201980005754.7A
Other languages
English (en)
Other versions
CN112136111B (zh
Inventor
张兴文
奇峰
华致刚
杨双红
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of CN112136111A publication Critical patent/CN112136111A/zh
Application granted granted Critical
Publication of CN112136111B publication Critical patent/CN112136111B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • G06F17/12Simultaneous equations, e.g. systems of linear equations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Operations Research (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Complex Calculations (AREA)

Abstract

本文公开了方法、系统和装置,包括编码在计算机存储介质上的计算机程序,以通过使用分布式计算系统解决背包问题(KP)执行在N个用户中将M个资源分配到K个池中的资源分配。所述方法包括:接收代表所述背包问题的K个全局约束和L个局部约束的数据;使用K个对偶算子将所述背包问题变换为对偶问题;将所述对偶问题分解为N个子问题;在解决所述对偶问题时执行两次或者更多次迭代,其中,在一次迭代中,针对与池相对应的全局约束相对应的每一个对偶算子:确定与所述池相对应的所述全局约束的更新的对偶算子为非负阈值;以及在解决与所述N个用户中的每一个相对应的所述N个子问题中的每一个时,计算与所述更新的对偶算子相对应的所述N个用户中的每一个的M个决策变量。

Description

分布式资源分配
技术领域
本文涉及资源分配。
背景技术
背包问题(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的对偶算子λ3的候选的示例的曲线图。
图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(109),或者更大),而全局约束的大小经常很小,例如在O(1)到O(100)的数量级(即,量级的级数为1到2)。用于解决背包问题的现有优化方案仅在相对较小的规模下容易处理。
本文描述了用于解决数十亿规模的真实世界背包问题的技术。使用MapReduce计算模型作为示例,本文描述了利用对偶问题(dual problem)的可分解性来解决背包问题的分布式框架。代替由于需要手动超参数调节并且容易违反约束而不会很好工作的传统对偶下降算法,本文描述了不受这些问题影响的同步坐标下降(SCD)算法。
而且,本文描述了用于解决受具有层级结构的约束约束的整数规划(IP)问题的求解器。与诸如CPLEX或GUROBI的现成整数规划求解器不同,该求解器使用可以在多项式时间中解决受层级结构约束约束的整数规划问题的贪婪算法。所描述的整数规划求解器可以被称为层级贪婪整数规划求解器。层级贪婪整数规划求解器可以在用于解决背包问题的分布式框架中使用,例如通过利用局部约束的层级结构来解决背包问题的整数规划子问题。
在受控环境和真实世界环境下进行的仿真结果示出了分布式SCD算法可以几乎最优地解决背包问题并且能很好地扩展到数十亿个决策变量和约束。而且,描述了用于在分布式环境中进一步加速算法的技术。
考虑以下背包问题的通用变体:
Figure BDA0002493651190000061
受(s.t.)约束
Figure BDA0002493651190000062
Figure BDA0002493651190000063
Figure BDA0002493651190000064
其中,在遵守K个全局约束和L个局部约束的情况下,在N个用户之间分配M个资源(或者项目)。如果选择资源j用于用户i,即xi,j=1,则获得pi,j的奖励(也被称为利润、效用或者收益)并且第k个背包消耗了资源量bi,j,k,每一个k=1,...,K。输入参数Bk和Cl是严格为正的(即,Bk>0并且Cl>0),而pi,j和bi,j,k是非负的。全局约束(2)限制了为每一个背包分配的资源,而局部约束(3)限制了每用户选择。在不失通用性的情况下,这里局部约束是在每用户的基础上的,因为在稀疏用户集合上的局部约束可以被分解为每用户约束集合。
如果对成本系数ci,j,l适当地填补0,使得成本张量(cost tensor)变得密集,则局部约束(3)将消失并且所有约束将变为全局约束。在这一意义上,该公式是多维背包问题(MDKP)的通用变体。
注意到,在该公式中,仅考虑了二进制决策变量,即,xi,j∈{0,1},而本文中描述的所有技术可以被容易地扩展到绝对(categorical)(即,非负整数)决策变量。所描述的技术支持绝对变量。
为本文的剩余部分定义下面的附加注释:
pi:对用户i的奖励向量;
bi:对用户i的全局约束系数矩阵;
ci:对用户i的局部约束系数矩阵;
xi:对用户i的决策变量向量;
x:对所有用户的决策变量矩阵。
给定全局约束的数量远小于局部约束的数量,将对偶算子(dual multiplier)集λ={λk,k=1,2,...,K}引入全局约束。根据用于对偶问题变换的拉格朗日技术,搜索到对(x,λ)使得x最大化
Figure BDA0002493651190000071
Figure BDA0002493651190000072
Figure BDA0002493651190000073
并且x和λ共同满足最优化条件
Figure BDA0002493651190000074
Figure BDA0002493651190000075
Figure BDA0002493651190000076
直观地,在经济学上,每一个算子λk(也被称为拉格朗日算子、对偶拉格朗日算子或者简单地算子)可以被解释为第k个背包资源的影子价格(或边际效应)。
(5)-(7)中的最大化问题由于(6)的存在而与标准0-1整数规划问题公式不同。然而,可以显示出最优化条件仍然适用。看到此,可以为局部约束引入附加的算子集合μs((6)中的每个约束一个)以联合获得(x,μ)的整数规划公式。
给定拉格朗日算子集λ,(5)中的最大化问题可以被分解为独立的子问题,每个用户i一个
Figure BDA0002493651190000081
Figure BDA0002493651190000082
Figure BDA0002493651190000083
由于λ的大小相对小,通过诸如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可以包括pi、bi和ci。例如,每一个IP求解器110可以解决受局部约束约束的子问题(11)-(13)。
在一些实施例中,迭代算法用于求解(x,λ)对。在每一次迭代中,IP求解器110计算(11)的解xi,j,接着发出与用户i消耗的背包资源相对应的K个值
Figure BDA0002493651190000091
归约器120汇总每一个背包消耗的总资源
Figure BDA0002493651190000092
主节点130可以根据一个或多个更新规则或算法,例如基于松弛,
Figure BDA0002493651190000093
更新拉格朗日算子λ。例如,更新λk的一种方式是应用对偶下降(DD)算法。例如,对于第(t+1)次迭代,
Figure BDA0002493651190000094
其中,超参数α是学习速率。
在一些实施例中,主节点130可以根据下面更加详细描述的同步坐标下降(SCD)算法或者其它算法更新拉格朗日算子λ。
在一些实施例中,给定拉格朗日算子λ,每一个IP求解器110可以针对每一个用户i的决策变量{xi,j}重新求解式(11)-(13)。决策变量可以作为所有用户的决策150被返回。例如,xi,j可以指示是否将项目j(例如,来自花呗的某一优惠券)提供给用户i。在一些实施例中,决策变量{xi,j}可以被存储并获取以便服务实时流量。例如,如果用户i正在生产中(例如,当用户i使用Alipay APP支付或者访问Alipay APP的某一页面时),平台(例如,AlipayAPP)可以根据针对用户i计算的决策变量xi,j来向用户i提供项目j。
图2是根据本文实施例的用于解决背包问题的MapReduce算法250(也被称为算法1)的示例的伪代码200。在一些实施例中,MapReduce算法250可以包括T次迭代。在每一次迭代t内,在252,映射器可以为每一个用户执行相应的Map函数(例如,被定义和标注为210)。每一个Map函数返回分别与K个全局约束或者K个背包有关的K个值。在一些实施例中,N个映射器可以针对各个用户并行地执行相应的Map函数。
在254,对于K个背包中的每一个,可以通过Reduce函数(例如,被定义和标注为220)计算对于每一个背包由N个用户消耗的总资源,
Figure BDA0002493651190000101
在一些实施例中,K个归约器可以针对各个背包并行地执行相应的Reduce函数。
在256,MapReduce算法250使用对偶下降(DD)作为λ更新规则,例如根据关于式(14)描述的技术。在258,如果λ已收敛或者在最多T次迭代之后,MapReduce算法250结束并且返回λ。在一些实施例中,例如,如果两次迭代之间λ的差值小于阈值,则可以认为λ收敛。
给定由在伪代码200中示出的算法1计算的λ,式(11)-(13)可以被重新求解。用户的决策变量{xi,j}可以例如作为所有用户的决策150被返回。
在真实世界应用中,由于资源通常被组织为嵌套的用户(例如,分类法),局部约束通常展示出嵌套的层级结构。
作为说明性示例,考虑一个简单的营销活动,其中总共有10个报价,5个来自平台A并且5个来自平台B;要求用户从平台A或者平台B中任一平台获得的报价不多于2个且总报价不多于3个。
在这一示例中局部约束可以表示如下:
Figure BDA0002493651190000102
Figure BDA0002493651190000103
Figure BDA0002493651190000104
在这一示例中,局部约束被结构化为2级树。在实践中,该结构可以被表示为有向无环图(DAG)。一些可能呈现更加复杂的层级。DAG是不含有向环的、有限制的有向图。等效地,DAG是具有拓扑排序、顶点序列的有向图,使得每一条边在序列上从先到后是有向的。有向图的拓扑排序是其顶点的线性排序,使得对于从顶点u到顶点v的每一条有向边uv,在排序上u在v之前。在一些实施例中,图的顶点可以表示待执行的任务,并且边可以表示一个任务必须在另一个任务之前被执行的约束。在这种情况下,拓扑排序是任务的有效序列。当且仅当在图不具有有向环时,即,当图是DAG时,拓扑排序是可能的。任何DAG具有至少一个拓扑排序。任意DAG的拓扑排序可以通过已知算法构建。
对于局部约束l,由S(l)指代其资源索引集,即,S(l)={j:ci,j,l=1}。当满足以下条件时,背包问题被认为具有对于用户i的层级局部约束结构:
Figure BDA0002493651190000111
以及
Figure BDA0002493651190000112
资源索引集是非重叠的,除非一个是另一个的子集。在一些实施例中,DAG可以被构建用于M个资源索引集,使得当且仅当在
Figure BDA0002493651190000113
时,存在从S(l)到S(l′)的弧。
图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初始选择所有资源,例如通过将所有资源的决策变量xi,j标记为1。在420,基于成本调节奖励(也是xi,j的贡献对偶值)以非增加顺序对资源索引j排序,
Figure BDA0002493651190000121
在430,例如通过在DAG的最低层处开始按照DAG的拓扑顺序遍历资源索引集{S(l)}。对于每一个S(l),在440,先前选择的资源(即,具有相对应决策变量xi,j=1的资源)按照成本调节奖励的非降低顺序被获取,直到它们的和超过局部约束Cl。在一些实施例中,这等同于在资源索引集S(l)中选择决策变量xi,j=1并且具有最高成本调节奖励的Cl个资源。因此,按照成本调节奖励的非降低顺序排列的剩余资源将不被选择。
在450,S(l)内未被选择的资源的xi,j值全部被标记为0并且在下面的迭代中将不再被考虑。重复这一贪婪选择过程,直到遍历了DAG中的所有节点。在460,输出决策变量xi,j
作为示例,如图3所示,对于(15)中的局部约束的资源索引集310(这里,C1=2),选择按照它们各自的成本调节奖励的非降低顺序排列的资源1-5中的前C1=2个资源(即,资源2和4)。资源索引集310中未被选择的资源(即,在该示例中,资源1、3和5)的决策变量被标记为0并且不再被考虑。类似地,对于(16)中的局部约束的资源索引集320(这里,C2=2),选择按照它们各自的成本调节奖励的非降低顺序排列的资源6-10中的前C2=2个资源(即,资源6和9)。在一些实施例中,资源索引集320中的未被选择的资源(即,在该示例中,资源7、8和10)的决策变量被标记为0并且不再被考虑。
对于处于DAG 300的层级的下一层上的(17)中的局部约束的资源索引集330(这里,C1=3),存在决策变量被标记为1的四个先前资源2、4、6和9。选择按照成本调节奖励的非降低顺序排列的四个先前资源2、4、6和9中的前C3=3个资源(即,资源2、6和9)。在一些实施例中,资源索引集330中剩余资源(即,在该示例中,资源4)的决策变量被标记为0。在这一示例中,DAG 300被充分遍历并且前三个资源(即,资源2、6和9)被输出作为选择的资源。
具有多项式时间复杂性的贪婪算法可以最优地解决最大化问题(11)-(13)。最优化的证据如下。给定满足约束(12)和(13)但是与贪婪解(由x* i,j,j=1,...,M表示)不同的任何其它解(由
Figure BDA0002493651190000131
表示),可以标识DAG的拓扑顺序中的第一节点,在该第一节点处选择的资源不同。由于贪婪算法的本质,在节点处一定存在一对资源j和j′,其中资源j的调节奖励不小于资源j′的调节奖励,但是x* i,j=1,x* i,j′=0,
Figure BDA0002493651190000132
Figure BDA0002493651190000133
在不降低(11)的目标值的情况下可以通过设置
Figure BDA0002493651190000134
来修改
Figure BDA0002493651190000135
所有约束(12)和(13)仍然得到满足,因为DAG的拓扑顺序中的任何随后节点包含j和j′二者或者j和j′一个也不包括。按照这种方式,可以在不降低目标值或者不违背任何约束的情况下转换对贪婪解的任何解。这就完成了证明。
在一些实施例中,例如通过用于解决IP问题的算法2或者任何其它算法求解决策变量,同步坐标下降(SCD)算法可以用于更新对偶算子λ。
在一些实施例中,对于给定的算子集合λ,算法2取决于成本调节奖励
Figure BDA0002493651190000136
的相对级数,而不需要知道它们的实际值。这一特性允许有效算法更新满足条件(8)到(10)的λk,同时保持其它算子(λk’且k′≠k)固定不变。算法可以利用如下事实:在新λk的所有非负值当中,
Figure BDA0002493651190000137
的相对级数可以仅在λk的M个线性函数fjk)的成对交叉点处或者在它们与水平轴的交叉点(如果有)处潜在地改变。M个线性函数fjk)可以例如是成本调节奖励
Figure BDA0002493651190000138
或者作为λk的函数在(11)中的对偶问题的目标函数的其它变体。
图5是示出根据本文实施例的对于用户i的对偶算子λ3的候选的示例的曲线图500。假设M=2并且K=3,并且局部约束的示例为:
xi,1+xi,2≤1。
图5示出了针对用户i,M=2个线性函数510和520以及可能影响(11)的最优化结果的三个新算子候选{λ3 (1)3 (2)3 (3)}。具体地,λ3 (1)是线性函数510和520的成对交叉点处的λ3的值;λ3 (2)是线性函数510与水平轴的成对交叉点处的λ3的值;并且λ3 (3)是线性函数520与水平轴的成对交叉点处的λ3的值。
Figure BDA0002493651190000141
这一示例还示出了(11)-(13)的最优化结果将在所有交叉点处改变不是一定真实的。例如,这里最大化器(maximizers)在λ3 (2)处不改变。
图6是根据本文实施例的用于计算候选对偶算子的算法(也被称为算法3)600的示例的伪代码。在一些实施例中,算法600用于计算用户i的所有候选新对偶算子λk。具体地,算法600包括可以计算λk的M个线性函数(例如,(11)中对偶问题的目标函数作为λk的函数)的交叉点或者它们与水平轴的交叉点(如果存在)的函数CalculateIntersectionPoints650。例如,如图6所示,当f(λk)和g(λk)不平行时,函数Intersect(f(λk),g(λk))610用于返回f(λk)和g(λk)大于或等于0的非负交叉点。对于λk的M个线性函数中的每一个线性函数,计算该线性函数与λk的其它(M-1)个线性函数以及水平轴的交叉点并且将这些交叉点保存在集合Λk中。集合Λk中的非重复值可以作为用户i的候选新对偶算子λk被返回。
给定每一个用户的新λk的所有候选,坐标下降算法考虑所有用户并且计算满足条件(8)-(10)的更新的λk,同时使其它算子固定不变。
图7是根据本文实施例的用于解决背包问题的、具有MapReduce模型的同步坐标下降(SCD)算法(也被称为算法4)750的示例的伪代码700。同步坐标下降算法750可以包括T次迭代以迭代地执行Map和Reduce步骤。在每一次迭代t内,在752的Map步骤中,映射器可以对于每一个用户执行相应Map函数(例如,被定义和标注为710),例如以便独立地解决IP子问题(14)-(16)。在一些实施例中,N个映射器可以并行地执行各自的Map函数。在754的Reduce步骤中,通过使其它对偶算子λk’(k′≠k)固定不变来更新每一个λk。在一些实施例中,K个归约器可以并行执行各自的Reduce函数。
具体地,根据Map函数710,对于每一个用户i,在712,映射器根据图6算法3中定义的函数CalculateIntersectionPoints 650来获得新拉格朗日算子λk的候选。在714,映射器按照降低的顺序对新λk的候选进行排序。在715,映射器经过拉格朗日算子λk的所有候选并且通过例如根据上面关于图4描述的算法2求解式(11)-(13)来计算决策变量{xi,j}。在一些实施例中,给定λ,可以通过例如根据IP求解器的任何合适算法求解式(11)-(13)来计算决策变量{xi,j}。在716,如果将λk更新到相对应的新值,则映射器计算将在第k个背包中使用的资源量。通常,随着λk降低,所使用的资源量增加。在718,随着λk降低,映射器仅发出所使用的资源的增量。在一些实施例中,使用增量而非总量的优点在于允许对所有发出的或者返回的v2加和,v2≥v,以便确定阈值v,如在图7的Reduce函数720中所做的。如果发出了总量,则可能有多个v1对应同一个用户,并且假设(不失一般性)每个用户最多允许一个项目,可能需要附加的预定(booking)(意味着更多的存储和计算)以便确保不重复计算该用户的消耗。
在754,对于K个背包中的每一个,Reduce函数(例如,被定义和标注为720)汇总所有用户中相同key(即,背包索引k)发出的结果并且将更新的λk计算为最小阈值v,使得在722,在所有用户中用于第k个背包的总资源不超过Bk。在一些实施例中,所有用户中λk的所有候选可以按照非增加顺序进行排序。归约器可以通过对与不小于
Figure BDA0002493651190000151
的所有候选λk相对应的使用的资源的增量进行加和来计算对于给定
Figure BDA0002493651190000161
在所有用户中用于第k个背包的总资源。可以确定最小阈值v的值,使得对于任何给定候选
Figure BDA0002493651190000162
所有用户中用于第k个背包的总资源不超出Bk,而对于给定候选
Figure BDA0002493651190000163
所有用户中用于第k个背包的总资源超出Bk。在一些实施例中,最小阈值v的值可以不是λk的候选之一。在一些实施例中,根据在下面关于图13描述的示例,可以例如在λk的候选中找最小阈值v时执行插值。
在Reduce函数720中进行的加和正确地计算出对于选择的阈值v这些用户使用的总资源。因为映射器随着λk降低仅发出所使用的资源的增量。在一些实施例中,K个归约器可以对于各个背包并行地执行相应的Reduce函数。
图13是示出根据本文实施例的用于解决背包问题的Map函数710和Reduce函数720的执行结果的示例的曲线图1300。在示例中,考虑N=3个用户。对于3个用户中的每一个,Map函数710可以例如由各个IP求解器并行地执行。假设第k个全局约束与第k个背包相对应,其中k=3并且Bk=28,每一个用户可以使用关于图5至7描述的技术根据Map函数710解决它们各自的IP问题并且获得它们的λ3的各个候选。框1310示出了Map函数710对于三个用户中的每一个的执行结果。例如,对于用户1如在1311中所示,按照降低顺序排列的λ3的三个候选分别为9、6和3。给定λ3的三个候选,将在第k个背包中使用的资源的总量分别为5、6和7。根据718,随着λk降低,Mapper函数710仅发出所使用的资源的增量(在Map函数710中表示为v2),分别是5、6-5=1和7-6=1。对于用户1发出的输出(k,[v1,v2])因而分别是(3,[9,5])、(3,[6,1])和(3,[3,1])。
对于用户2如在1312中所示,按照降低顺序排列的λ3的三个候选(在Map函数710中表示为v1)分别为8、5和2。给定λ3的三个候选,将在第k个背包中使用的资源总量将分别是10、12和13。根据718,随着λk降低,Map函数710仅发出所使用的资源的增量(在Map函数710中表示为v2),分别是10、12-10=2和13-12=1。对于用户2发出的输出(k,[v1,v2])因而分别是(3,[8,10])、(3,[5,2])和(3,[2,1])。
对于用户3如在1313中所示,按照降低顺序排列的λ3的三个候选分别为7、4和1。给定λ3的三个候选,将在第k个背包中使用的资源总量将分别是9、10和11。根据718,随着λk降低,Mapper函数710仅发出所使用的资源的增量(在Map函数710中表示为v2),分别是9、10-9=1和11-10=1。对于用户3发出的输出(k,[v1,v2])因而分别是(3,[7,9])、(3,[4,1])和(3,[1,1])。
框1320示出了对于与第k个背包相对应的第k个全局约束的所有三个用户的Reduce函数720的执行结果,其中k=3。在一些实施例中,可以例如按照非增加的顺序对所有用户的λ3的所有候选进行排序,表示为[9,8,7,6,5,4,3,2,和1],它们相应的增量使用资源为[5,10,9,1,2,1,1,1,和1]。在这一示例中,给定Bk=28,确定与λ3=4相对应的资源的总量等于28。可以通过对大于或者等于4的λ3的所有候选(例如,[9,8,7,6,5,4])的各自的增量使用资源(例如,[5,10,9,1,2,1])加和到一起来计算与λ3=4相对应的资源总量。也可以确定与任意λ3<4相对应的资源总量将超出Bk=28。例如,与λ3=3相对应的资源总量可以是29,这可以通过对大于或者等于3的λ3的所有候选(例如,[9,8,7,6,5,4,3])的各自的增量使用资源(例如,[5,10,9,1,2,1,1])加和到一起来计算。在这一示例中,最小阈值v被确定为4。λ3可以被更新为v=4。
在一些实施例中,如果Bk=28.5,则可以执行插值以便确定最小阈值v。例如,给定与λ3=4相对应的资源总量为28并且与λ3=3相对应的资源总量为29,通过插入λ3的两个值以确定λ3的最小阈值v,可以确定最小阈值v为3.5,使得与λ3的最小阈值v相对应的资源总量不超过Bk=28.5。在一些实施例中,其它技术可以用于计算最小阈值v。
返回参照图7,可以重复更新λ的过程最多T次迭代,并且如果λ已经收敛则提前结束。例如,在756,如果λ已经收敛或者在最多T次迭代之后,坐标下降算法750结束并且返回λ。
给定通过在坐标下降算法750中示出的算法1计算的λ,式(11)-(13)可以被重新求解。这些用户的决策变量{xi,j}可以例如作为所有用户的决策150被返回。
尽管坐标下降算法750使用同时更新所有k=1,...,K的λk的同步坐标下降,诸如一次更新一个算子的循环坐标下降以及并行地更新多个算子的块坐标下降的坐标下降的其它变体也是适用的。在我们的系统中,支持所有前述算法。
对于K=1的特殊情况,可以表明,由于该算法在解决分数背包问题之后,本质上产生了四舍五入的整数解,所以算法4将收敛到总奖励至多是maxi,jpi,j的解,maxi,jpi,j小于最优解的总奖励。对于更加通常的情况,经验表明,对于这类问题实例,由算法4计算的解是接近最优的。
给定每用户M个资源以及K个全局约束,坐标下降算法750中的Map函数具有时间复杂性O(KM3 log M)。在资源和背包之间存在一对一映射(即,M=K,并且
Figure BDA0002493651190000185
)的一些真实世界情况中,可以明显降低该复杂性,并且存在单个局部约束,该单个局部约束限制了为每一个用户选择的资源的最大数量(之后表示为Q)。
对于这样的情况,新λk的至多一个候选确定第k个资源是否具有前Q个调节奖励。具体地,如果资源k的调节奖励已经在前Q个调节奖励中,则新λk的临界值是将其调节奖励降低到第(Q+1)个调节奖励的值。如果资源k的调节奖励不在前Q个调节奖励中,则新λk的临界值是将其调节奖励增加到第Q个调节奖励的值。
图8是根据本文实施例的用于为每一个用户选择高达最大数量(表示为Q)资源的Map函数(也被称为算法5)850的示例的伪代码800。如图8所示,
Figure BDA0002493651190000182
是决定是否为用户i选择第k个资源的阈值。如果新λk大于
Figure BDA0002493651190000183
则第k个资源的更新的调节奖励将低于
Figure BDA0002493651190000184
并且因此不被选择。另一方面,低于
Figure BDA0002493651190000191
的新λk确保第k个资源的产生的调节奖励在所有资源的前Q个之中。因而,算法5正确地发出确定第k个资源是否具有前Q个调节奖励的新λk的唯一候选(如果有)。
算法5使用quick_select(array,n)算法,该算法在时间复杂度为O(K)的情况下返回长度K的阵列中的第n个最大元素。接着,算法5的整体时间复杂度为O(K),与Q的值无关。
为了当将算法扩展以解决数十亿规模问题时进一步加速算法的收敛,开发了附加的算法,这被证明是有效的。
作为示例,微调的装桶(bucketing)可以用于进一步加速用于解决数十亿规模问题的算法的收敛。图7中示出的算法4中的Reduce函数的简明实现用于对v1的值发出的结果进行排序并且基于排序的结果选择最小阈值v。加速的一种方式是将v1的值装桶并且针对每一个桶计算v2的和。接着阈值v落入的目标桶可以被识别并且可以例如通过在桶内插值来近似v的值。
为了通过装桶和插值改善上面近似的精确度,在一些实施例中,桶尺寸可以被设计为在v的真实值附近时较小并且在桶不可能包含v时较大。不幸的是,v的真实值事先是未知的。无论如何,由于算法4的迭代本质,在先前迭代中计算的值,即
Figure BDA0002493651190000192
提供对
Figure BDA0002493651190000193
的合理估计。因而可以设计不均匀的装桶方案使得桶在
Figure BDA0002493651190000194
附近时具有较小或者最小尺寸并且在其偏离
Figure BDA0002493651190000195
时增大(例如,按照指数级或者按照另一方式)。作为示例,给定在先前迭代中计算的值
Figure BDA0002493651190000196
分配给候选λk的桶id被给出为:
Figure BDA0002493651190000197
其中,Δ是参数控制的桶尺寸。可以使用附加或者不同的不均匀装桶方案。
与所有其它迭代算法类似,从良好的初始化开始可以显著地加速算法的收敛。在一些实施例中,算法4中对偶算子的开始点λ0可以被随机选择。在一些实施例中,对偶算子的开始点可以通过使用采样数据进行预求解来估计。例如,通过对小集合的随机用户进行采样并且成比例地调节背包预算,算法4可以开始于更好的初始化。实验表明,对于大规模的背包问题,预求解可以节约高达40%到75%的迭代。
图9是根据本文实施例的通过采样预求解算法(也被称为算法6)950的示例的伪代码900。附加或者不同的通过采样预求解算法可以与所描述的用于解决背包问题的算法结合使用。算法6可以包括预求解的τ个迭代。在一些实施例中,可以按顺序或者并行地进行预求解的τ个迭代。如果按顺序运行,则在第t次迭代之前计算的λ值的平均值用于进一步降低运行时间。作为示例,对于数亿用户,对于预求解的每一次迭代,可以对n=10000个用户进行采样。
利用算法4返回的λ,可以计算每一个用户i的决策变量xi,j。在一些实施例中,所有用户使用的总资源可能稍微违背全局约束(2)。在一些实施例中,轻量的后处理方法可以用于严格地确保全局约束的可用性并且加速收敛。后处理方法可以基于成本调节用户奖励数量,这实际上是给定用户i的贡献对偶值,
Figure BDA0002493651190000201
具体地,用户以
Figure BDA0002493651190000202
的非降低顺序进行排序,并且决策变量xi的整体用户可以被重置为0,直到满足所有全局约束。由于成本调节用户奖励
Figure BDA0002493651190000203
以某种方式测量从用户i选择一些资源的益处,移除
Figure BDA0002493651190000204
值较小的资源被认为是明显有启发性的。
合成和真实世界数据二者都用于测试用于解决背包问题的各种描述的算法。例如,在实验中,具有N个用户和K个全局约束的综合问题,除非另有说明,否则pi,j被均匀地分布在[0,1]中。考虑两类全局约束:
密集:bi,j,k在[0,1]中均匀分布,以及
稀疏:M=K,并且如果j=k,则bi,j,k在[0,1]中均匀分布,否则为0。
全局约束的预算被设置为与M、N和L成比例的适度值,这实际上确保了约束的严密性。局部约束的参数ci,j,l和Cl全部等于1。
下面,将最优化比率定义为原始目标值与松弛的LP目标值的比值,将约束违背比率定义为针对一个约束的过量预算与给定预算的比值,并且我们使用所有约束中的最大约束违背比率来量化整体违背。
为了测量由描述的算法产生的KP解的质量,进行实验集合来评估KP解(由算法4利用上面描述的后处理方法计算的)与松弛的LP解之间的最优化比率。
在实践中,难于找到可以计算数十亿规模背包问题的上界的现有LP求解器来与所描述的分布式解进行比较。为了容易比较,将最优化间隙显示在现有的LP工具可以解决的具有适度大小的数据集上。松弛的LP问题通过使用
Figure BDA0002493651190000211
代替二进制约束xi,j∈{0,1}来获得,并且使用GOOGLE-OR工具来解决。
图10是示出根据本文实施例的使用图7中描述的算法的KP解与由LP松弛计算的上界之间的最优化间隙的示例的曲线图1000。根据图7中示出的算法4利用上述的后处理方法来计算KP解。曲线900示出了N=1,000、N=10,000和K∈{1,5,10,15,20}的最优化比率。在该实验中,每用户的资源数量M固定为10。为了增加资源的多样性,bi,j,k以0.5的概率均匀分布在[0,1]中,并且以剩余的概率均匀分布在[0,10]中。已在图9中评估并示出了局部约束的三种场景的最优化比率,其中
C=[1]意味着
Figure BDA0002493651190000212
C=[2]意味着
Figure BDA0002493651190000213
以及
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迭代的数量与如果一直在
Figure BDA0002493651190000221
处开始所需要的迭代数量进行比较。
图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个对偶算子(例如,λk,k=1,2,…,K)将背包问题分解为N个子问题,例如以式(8)-(13)中示出的方式。N个子问题中的每一个与N个用户中的相应一个相对应并且关于相对应的用户,受L个局部约束的约束,例如在式(14)-(16)中示出的。在一些实施例中,N是数十亿或者更大的数量级。K个对偶算子中的每一个与K个全局约束中的相应一个相对应。给定K个对偶算子,在遵守关于该相对应的用户的L个局部约束的情况下,可以独立地解决N个子问题,并且在解决N个子问题中的每一个时无需考虑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个资源中的每一个的量(例如,决策变量xi,j)。
在一些实施例中,对于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个资源的子集Sl相对应并且限制了从子集Sl中待选择的资源的最大数量Cl。在一些实施例中,子集Sl包括与约束l相对应的M个资源的子集的索引,其中l=1,2,…,L。
在一些实施例中,代表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个资源的子集Sl相对应并且限制了从子集Sl中待选择的资源的最大数量Cl的L个约束中的约束l;在1416b,确定子集Sl中当前选择的资源(例如,如在算法2中的440所示的);并且在1418b,在子集Sl当前选择的资源中,取消选择不是子集Sl当前选择的资源中具有前Cl个奖励的Cl个资源之一的任何资源(例如,通过将取消选择的资源的决策变量更新为0,如在算法2的450处所示的)。
在一些实施例中,在子集Sl当前选择的资源当中,取消选择不是子集Sl当前选择的资源中具有前Cl个奖励的Cl个资源之一的任何资源,包括:根据M个资源的非增加的顺序,取消选择不是子集Sl当前选择的资源中具有前Cl个奖励的Cl个资源之一的任何资源。
在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个对偶算子(例如,λk,k=1,2,…,K)将背包问题变换为对偶问题,例如以在式(8)-(13)中示出的方式。K个对偶算子中的每一个与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个决策变量(例如,决策变量xi,j),其中,M个决策变量中的每一个指示是否选择N个用户中每一个用户的M个资源中的相应一个。
在一些实施例中,对于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个资源的子集Sl相对应并且限制从子集Sl中待选择的资源的最大数量Cl的L个约束中的约束l,确定子集Sl中当前选择的资源;以及取消选择子模块1606b,用于在子集Sl中当前选择的资源中,取消选择不是子集Sl中当前选择的资源中具有前Cl个奖励的Cl个资源之一的任何资源;以及分配模块1607b,用于在按照L个约束的拓扑排序遍历所有L个约束之后分配选择的资源。
在可选实施例中,代表L个约束的数据包括L个索引子集,L个索引子集中的每一个与L个约束中的相应一个相对应并且包括与L个约束的相应一个相对应的M个资源的子集的索引;并且子集Sl包括与约束l相对应的M个资源的子集的索引。
在可选实施例中,代表L个约束的数据包括:对于L个约束中的每一个约束,由有向无环图(DAG)数据结构中的节点代表该约束的数据,并且DAG的边代表所述L个约束中与该边的两个节点相对应的两个约束之间的关系。
在可选实施例中,装置1600b还包括:获得模块,用于获得代表M个奖励的数据,每一个奖励分别与M个资源中的一个相对应。
在可选实施例中,装置1600b还包括:排序模块,用于在按照L个子集的拓扑排序遍历L个子集中的每一个子集之前,根据与M个资源相对应的M个奖励以非增加的顺序对M个资源进行排序;并且其中所述取消选择子模块可以根据M个资源的非增加的顺序,取消选择不是子集Sl中当前选择的资源中具有前Cl个奖励的Cl个资源之一的任何资源。
在可选实施例中,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个资源的子集Sl相对应并且限制从子集Sl中待选择的资源的最大数量Cl的L个约束中的约束l,确定子集Sl中当前选择的资源;以及在子集Sl中当前选择的资源中,取消选择不是子集Sl中当前选择的资源中具有前Cl个奖励的Cl个资源之一的任何资源;以及在按照L个约束的拓扑排序遍历所有L个约束之后分配选择的资源。
可选地,代表L个约束的数据包括L个索引子集,L个索引子集中的每一个与L个约束中的相应一个相对应并且包括与L个约束的相应一个相对应的M个资源的子集的索引;并且子集Sl包括与约束l相对应的M个资源的子集的索引。
可选地,代表L个约束的数据包括:对于L个约束中的每一个约束,由有向无环图(DAG)数据结构中的节点代表该约束的数据,并且DAG的边代表所述L个约束中与该边的两个节点相对应的两个约束之间的关系。
可选地,一个或多个处理器被配置为获得代表M个奖励的数据,每一个奖励分别与M个资源中的一个相对应。
可选地,一个或多个处理器被配置为在按照L个子集的拓扑排序遍历L个子集中的每一个子集之前,根据与M个资源相对应的M个奖励以非增加的顺序对M个资源进行排序;并且其中在子集Sl中当前选择的资源中,取消选择不是子集Sl中当前选择的资源中具有前Cl个奖励的Cl个资源之一的任何资源包括:根据M个资源的非增加的顺序,取消选择不是子集Sl中当前选择的资源中具有前Cl个奖励的Cl个资源之一的任何资源。
可选地,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的公共分布式平台实现。
在一些实施例中,所描述的技术可以被概括为优化大规模非线性问题。当前构思的目标函数在决策变量xi,j中是线性的。所讨论的分布式解框架可以被扩展以优化非线性目标函数,只要该非线性目标函数关于决策变量(或者决策变量的用户)可分解的。
所描述的主题的实施例可以单独或者组合地包括一个或多个特征。例如,在第一实施例中,用于使用包括一定数量的单独计算机实现的求解器的分布式计算系统解决背包问题来执行在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个资源的子集Sl相对应并且限制从子集Sl中待选择的资源的最大数量Cl的L个约束中的约束l,确定子集Sl中当前选择的资源;以及在子集Sl中当前选择的资源中,取消选择不是子集Sl中当前选择的资源中具有前Cl个奖励的Cl个资源之一的任何资源;以及在按照L个约束的拓扑排序遍历所有L个约束之后分配选择的资源。
前面和其它描述的实施例可以可选地分别包括下面特征中的一个或多个:
第一特征,可以与下面特征中的任意一个组合,其中,代表L个约束的数据包括L个索引子集,L个索引子集中的每一个与L个约束中的相应一个相对应并且包括与L个约束的相应一个相对应的M个资源的子集的索引;并且子集Sl包括与约束l相对应的M个资源的子集的索引。
第二特征,可以与下面特征中的任意一个组合,其中,代表L个约束的数据包括:对于L个约束中的每一个约束,由有向无环图(DAG)数据结构中的节点代表该约束的数据,并且DAG的边代表所述L个约束中与该边的两个节点相对应的两个约束之间的关系。
第三特征,可以与下面特征中的任意一个组合,进一步包括:获得代表M个奖励的数据,每一个奖励分别与M个资源中的一个相对应。
第四特征,可以与下面特征中的任意一个组合,进一步包括:在按照L个子集的拓扑排序遍历L个子集中的每一个子集之前,根据与M个资源相对应的M个奖励以非增加的顺序对M个资源进行排序;并且其中在子集Sl中当前选择的资源中,取消选择不是子集Sl中当前选择的资源中具有前Cl个奖励的Cl个资源之一的任何资源包括:根据M个资源的非增加的顺序,取消选择不是子集Sl中当前选择的资源中具有前Cl个奖励的Cl个资源之一的任何资源。
第五特征,可以与下面特征中的任意一个组合,其中,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)进行交互。此外,计算机可以通过向个人设备(例如,正在运行消息应用的智能手机)发送文本消息或其它形式的消息并作为回应接收来自用户的响应消息来与用户交互。
本文使用与系统、装置和计算机程序组件有关的术语“配置为”。对于被配置为执行特定操作或动作的一个或多个计算机的系统,意味着该系统已经在其上安装了在运行中促使该系统执行所述操作或动作的软件、固件、硬件或它们的组合。对于被配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括当被数据处理装置执行时促使该装置执行所述操作或动作的指令。对于被配置为执行特定操作或动作的专用逻辑电路,意味着该电路具有执行所述操作或动作的电子逻辑。
尽管本文包含许多具体实施例细节,但这些不应被解释为对由权利要求书本身限定的请求保护的范围的限制,而是作为对特定实施例的具体特征的描述。在本文单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以被描述为以某些组合起作用并且甚至最初被如此请求保护,但是在一些情况下,可以从请求保护的组合中删除来自该组合的一个或多个特征,并且权利要求书可以涉及子组合或子组合的变体。
类似地,虽然以特定顺序在附图中描绘了操作并且在权利要求书中叙述了操作,但是这不应该被理解为:为了达到期望的结果,要求以所示的特定顺序或序列顺序执行这些操作,或者要求执行所有示出的操作。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的划分不应被理解为所有实施例中都要求如此划分,而是应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或打包成多个软件产品。
已经描述了主题的特定实施例。其他实施例在以下权利要求书的范围内。例如,权利要求书中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程无需要求所示的特定顺序或序列顺序来实现期望的结果。在一些情况下,多任务和并行处理可能是有利的。

Claims (12)

1.一种用于执行资源分配的计算机实现方法,包括:
使用包括一定数量的单独计算机实现的求解器的分布式计算系统,所述数量的单独计算机实现的求解器用于通过解决受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个资源中的相应一个。
2.根据权利要求1所述的方法,其中,N是数十亿或者更大的数量级,K小于L,L是数十亿或者更大的数量级。
3.根据前述权利要求中的任意一项所述的方法,其中,所述L个约束中的每一个与M个资源的子集相对应并且限制了在所述M个资源的该子集中待选择的资源的相应最大数量C,其中,与所述L个约束中的第一约束相对应的任何子集和与所述L个约束中的第二约束相对应的任何其它子集不具有共同资源,除非与所述第一约束相对应的子集是与所述第二约束相对应的其它子集的子集。
4.根据前述权利要求中的任意一项所述的方法,还包括:
响应于确定满足收敛条件,
计算与所述K个对偶算子相对应的所述N个用户中的每一个用户的M个决策变量;以及
根据所述N个用户中每一个用户的所述M个决策变量在所述N个用户中分配所述M个资源。
5.根据前述权利要求中的任意一项所述的方法,还包括:
确定所述K个对偶算子的初始值,其中,基于受K个采样的全局约束和所述L个局部约束约束的、用于在S个用户中将资源分配到K个池的所述背包问题的采样版本,计算所述K个对偶算子的初始值,其中,所述S个用户被采样自所述N个用户,并且所述K个采样的全局约束中的每一个限制了对于所述K个池中的每一个,跨所述S个用户,资源的相应缩减的最大总成本。
6.根据前述权利要求中的任意一项所述的方法,其中,解决与所述N个用户中的每一个相对应的所述N个子问题中的每一个包括:
对于与用户相对应的子问题并且对于与该池相对应的该全局约束相对应的每一个对偶算子,
计算该对偶算子的候选;
按照非增加的顺序对该对偶算子的候选进行排序;
按照所述非增加的顺序遍历该对偶算子的候选:
对于该对偶算子的每一个候选,
计算与该对偶算子的候选相对应的用户的M个决策变量;以及
相对于基于与按照所述非增加的顺序该对偶算子的候选之前的对偶算子的候选相对应的该用户的所述M个决策变量的选择的资源的成本,计算基于与该对偶算子的候选相对应的该用户的所述M个决策变量选择的资源的增量成本;以及
其中,通过对与该对偶算子的候选中大于或者等于特定对偶算子的所有候选相对应的用户的选择的资源的增量成本进行加和,计算与所述特定对偶算子相对应的池跨所述N个用户选择的资源的总成本。
7.根据权利要求6所述的方法,其中,计算该对偶算子的候选包括:
计算该对偶算子的M个线性函数的成对交叉点,其中,该对偶算子的所述M个线性函数代表关于该对偶算子,所述M个资源的M个成本调节奖励。
8.根据权利要求6所述的方法,还包括:
基于按照所述非增加的顺序排序的该对偶算子的候选以及按照所述非增加的顺序排序的该对偶算子的候选中的一个相对应的池跨所述N个用户选择的资源的相应总成本,计算所述非负阈值。
9.根据权利要求8所述的方法,还包括:
对按照所述非增加的顺序排序的该对偶算子的候选执行插值,以计算所述非负阈值。
10.根据权利要求6所述的方法,还包括:
将该对偶算子的候选分组为多个非均匀预算;
计算在所述多个非均匀预算中与该对偶算子的各个候选相对应的用户的选择的资源的增量成本的加和;以及
基于所述增量成本的加和来计算所述非负阈值。
11.一种用于执行资源分配的系统,包括:
一个或多个处理器;以及
耦合到所述一个或多个处理器并且具有存储在其上的指令的一个或多个计算机可读存储器,所述指令能够由所述一个或多个处理器执行以执行权利要求1-10中的任意一项所述的方法。
12.一种用于执行资源分配的装置,所述装置包括用于执行权利要求1-10中的任意一项所述的方法的多个模块。
CN201980005754.7A 2019-04-24 2019-04-24 分布式资源分配 Active CN112136111B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2019/028973 WO2020219040A1 (en) 2019-04-24 2019-04-24 Distributed resource allocation

Publications (2)

Publication Number Publication Date
CN112136111A true CN112136111A (zh) 2020-12-25
CN112136111B CN112136111B (zh) 2024-04-16

Family

ID=71125173

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980005754.7A Active CN112136111B (zh) 2019-04-24 2019-04-24 分布式资源分配

Country Status (4)

Country Link
US (3) US10698693B1 (zh)
CN (1) CN112136111B (zh)
SG (1) SG11201910151UA (zh)
WO (1) WO2020219040A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114581160A (zh) * 2022-05-05 2022-06-03 支付宝(杭州)信息技术有限公司 资源分配方法、分布式计算系统及设备
CN114581223A (zh) * 2022-05-05 2022-06-03 支付宝(杭州)信息技术有限公司 分配任务处理方法、设备、分布式计算系统及存储介质

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG11201910151UA (en) 2019-04-24 2020-11-27 Advanced New Technologies Co Ltd Distributed resource allocation
AU2019253789B1 (en) 2019-04-24 2020-10-08 Advanced New Technologies Co., Ltd. Distributed resource allocation
CN114610575B (zh) * 2022-03-14 2024-05-14 北京百度网讯科技有限公司 应用于计算分支的更新峰值的方法、装置、设备和介质

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6477683B1 (en) * 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US20080134193A1 (en) * 2006-11-08 2008-06-05 Board Of Regents, The University Of Texas System System, Method and Apparatus for Allocating Resources by Constraint Selection
US20080259878A1 (en) * 2007-04-18 2008-10-23 Connors Dennis P Method and apparatus for a scheduler for a macro-diversity portion of a transmission
US7660734B1 (en) * 2000-12-20 2010-02-09 Demandtec, Inc. System for creating optimized promotion event calendar
GB201218494D0 (en) * 2012-10-16 2012-11-28 Ibm A job scheduling method
CN103619024A (zh) * 2013-11-27 2014-03-05 北京邮电大学 同小区中蜂窝用户与d2d用户间频谱资源分配的方法
CN103687027A (zh) * 2013-12-26 2014-03-26 广东省电信规划设计院有限公司 Lte网络的资源分配方法和系统
CN104011751A (zh) * 2011-12-22 2014-08-27 国际商业机器公司 混合最优求解
CN104102544A (zh) * 2014-06-30 2014-10-15 武汉理工大学 混合云环境下多QoS约束的并行任务调度成本优化方法
CN104737132A (zh) * 2012-09-12 2015-06-24 萨勒斯福斯通讯有限公司 用于按需服务环境中的消息队列的基于竞价的资源共享
US20150278736A1 (en) * 2014-03-25 2015-10-01 Innotas Framework to optimize the selection of projects and the allocation of resources within a structured business organization under time, resource and budget constraints
US9495211B1 (en) * 2014-03-04 2016-11-15 Google Inc. Allocating computing resources based on user intent
CN107728139A (zh) * 2017-09-12 2018-02-23 电子科技大学 一种基于多目标跟踪的相控阵雷达组网系统资源管理方法
CN108846570A (zh) * 2018-06-08 2018-11-20 武汉理工大学 一种解决资源受限项目调度问题的方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6704692B1 (en) * 1999-10-25 2004-03-09 The Boeing Company Method and system for tracking multiple objects
JP2002133052A (ja) 2000-08-25 2002-05-10 Internatl Business Mach Corp <Ibm> 資源割り当て問題を表現する方法と解く方法
AU2908502A (en) 2000-12-13 2002-06-24 Accenture Global Services Gmbh Stochastic multiple choice knapsack assortment optimizer
US7243167B2 (en) 2003-09-19 2007-07-10 Intel Corporation Managing peripheral device address space resources using a tunable bin-packing/knapsack algorithm
US9021094B1 (en) 2005-04-28 2015-04-28 Hewlett-Packard Development Company, L.P. Allocation of resources for tiers of a multi-tiered system based on selecting items from respective sets
US7594016B1 (en) 2003-11-12 2009-09-22 Hewlett-Packard Development Company, L.P. Calculating numbers of servers for tiers of a multi-tiered system
US7886055B1 (en) 2005-04-28 2011-02-08 Hewlett-Packard Development Company, L.P. Allocating resources in a system having multiple tiers
US8412551B2 (en) * 2004-10-21 2013-04-02 Abb Research Ltd. Formal structure-based algorithms for large scale resource scheduling optimization
US8112755B2 (en) 2006-06-30 2012-02-07 Microsoft Corporation Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources
WO2009056371A1 (en) 2007-10-31 2009-05-07 International Business Machines Corporation Method, system and computer program for distributing a plurality of jobs to a plurality of computers
US9424094B2 (en) 2009-06-01 2016-08-23 International Business Machines Corporation Server consolidation using virtual machine resource tradeoffs
US8635534B2 (en) 2009-08-12 2014-01-21 Ebay Inc. Reservation of resources and deployment of applications using an integrated development environment
US20120102200A1 (en) 2010-10-26 2012-04-26 Qualcomm Incorporated Application specific resource management
US20120215576A1 (en) 2011-02-17 2012-08-23 International Business Machines Corporation Allocating tasks to resources
US8849733B2 (en) 2011-05-18 2014-09-30 The Boeing Company Benchmarking progressive systems for solving combinatorial problems
GB2503464A (en) 2012-06-27 2014-01-01 Ibm Allocating nodes in a service definition graph to resources in a resource catalogue according to node specific rules
US9292349B2 (en) 2013-03-15 2016-03-22 International Business Machines Corporation Detecting deployment conflicts in heterogenous environments
JP5858080B2 (ja) * 2013-08-23 2016-02-10 横河電機株式会社 運転計画策定方法および運転計画策定システム
US20150113542A1 (en) 2013-10-17 2015-04-23 Nec Laboratories America, Inc. Knapsack-based sharing-aware scheduler for coprocessor-based compute clusters
US10206169B2 (en) 2015-09-04 2019-02-12 Nec Corporation Energy efficient downlink scheduling in LTE-advanced networks
US20170352003A1 (en) 2016-06-06 2017-12-07 National Ict Australia Limited Transporting goods using a fleet of vehicles
EP3679538A1 (en) 2017-09-06 2020-07-15 Total Solar International Aggregated distribution for energy demand response
AU2019253789B1 (en) 2019-04-24 2020-10-08 Advanced New Technologies Co., Ltd. Distributed resource allocation
SG11201910151UA (en) 2019-04-24 2020-11-27 Advanced New Technologies Co Ltd Distributed resource allocation

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6477683B1 (en) * 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US7660734B1 (en) * 2000-12-20 2010-02-09 Demandtec, Inc. System for creating optimized promotion event calendar
US20080134193A1 (en) * 2006-11-08 2008-06-05 Board Of Regents, The University Of Texas System System, Method and Apparatus for Allocating Resources by Constraint Selection
US20080259878A1 (en) * 2007-04-18 2008-10-23 Connors Dennis P Method and apparatus for a scheduler for a macro-diversity portion of a transmission
CN104011751A (zh) * 2011-12-22 2014-08-27 国际商业机器公司 混合最优求解
CN104737132A (zh) * 2012-09-12 2015-06-24 萨勒斯福斯通讯有限公司 用于按需服务环境中的消息队列的基于竞价的资源共享
GB201218494D0 (en) * 2012-10-16 2012-11-28 Ibm A job scheduling method
CN103619024A (zh) * 2013-11-27 2014-03-05 北京邮电大学 同小区中蜂窝用户与d2d用户间频谱资源分配的方法
CN103687027A (zh) * 2013-12-26 2014-03-26 广东省电信规划设计院有限公司 Lte网络的资源分配方法和系统
US9495211B1 (en) * 2014-03-04 2016-11-15 Google Inc. Allocating computing resources based on user intent
US20150278736A1 (en) * 2014-03-25 2015-10-01 Innotas Framework to optimize the selection of projects and the allocation of resources within a structured business organization under time, resource and budget constraints
CN104102544A (zh) * 2014-06-30 2014-10-15 武汉理工大学 混合云环境下多QoS约束的并行任务调度成本优化方法
CN107728139A (zh) * 2017-09-12 2018-02-23 电子科技大学 一种基于多目标跟踪的相控阵雷达组网系统资源管理方法
CN108846570A (zh) * 2018-06-08 2018-11-20 武汉理工大学 一种解决资源受限项目调度问题的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王皓轮;倪宏;郭志川;: "基于连续效用子集的资源分配算法", 中国科学技术大学学报, no. 04 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114581160A (zh) * 2022-05-05 2022-06-03 支付宝(杭州)信息技术有限公司 资源分配方法、分布式计算系统及设备
CN114581223A (zh) * 2022-05-05 2022-06-03 支付宝(杭州)信息技术有限公司 分配任务处理方法、设备、分布式计算系统及存储介质
CN114581223B (zh) * 2022-05-05 2022-07-29 支付宝(杭州)信息技术有限公司 分配任务处理方法、设备、分布式计算系统及存储介质
CN114581160B (zh) * 2022-05-05 2022-09-02 支付宝(杭州)信息技术有限公司 资源分配方法、分布式计算系统及设备

Also Published As

Publication number Publication date
CN112136111B (zh) 2024-04-16
SG11201910151UA (en) 2020-11-27
US11093253B2 (en) 2021-08-17
US11314519B2 (en) 2022-04-26
US10698693B1 (en) 2020-06-30
US20200341773A1 (en) 2020-10-29
US20210373902A1 (en) 2021-12-02
WO2020219040A1 (en) 2020-10-29

Similar Documents

Publication Publication Date Title
CN112136109B (zh) 分布式资源分配
CN112136111B (zh) 分布式资源分配
US11769061B2 (en) Processing computational graphs
JP2021505993A (ja) 深層学習アプリケーションのための堅牢な勾配重み圧縮方式
CN108351805A (zh) 计算图的基于流的加速器处理
US11263052B2 (en) Determining optimal compute resources for distributed batch based optimization applications
US10678594B2 (en) System and method for optimizing resource allocation using GPU
JP6234477B2 (ja) 回帰モデルを計算するための方法、コンピュータ・プログラム、およびシステム
CN103853618A (zh) 基于截止日期驱动的云系统代价最小化资源分配方法
CN112166413B (zh) 分布式资源分配
Pande et al. A customer-oriented task scheduling for heterogeneous multi-cloud environment
Fan A decision-making method for personalized composite service
US20230297862A1 (en) Performing predictive inferences using multiple predictive models
JP7461378B2 (ja) 予備乗務員パターンを最適化すること
US11281983B2 (en) Multi-agent system for efficient decentralized information aggregation by modeling other agents&#39; behavior
Zhang et al. Online task assignment for federated learning in smart city
CN110321476A (zh) 基于局部敏感哈希的并行矩阵分解计算实现方法
CN113780699A (zh) 资源分配方法、资源分配装置和电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20210319

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20210319

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant