CN106779482A - 一种基于任务间优先关系约束的任务分配方法和*** - Google Patents
一种基于任务间优先关系约束的任务分配方法和*** Download PDFInfo
- Publication number
- CN106779482A CN106779482A CN201710023020.4A CN201710023020A CN106779482A CN 106779482 A CN106779482 A CN 106779482A CN 201710023020 A CN201710023020 A CN 201710023020A CN 106779482 A CN106779482 A CN 106779482A
- Authority
- CN
- China
- Prior art keywords
- task
- tasks
- final
- participant
- distribution
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
- G06Q10/06311—Scheduling, planning or task assignment for a person or group
Landscapes
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Economics (AREA)
- Operations Research (AREA)
- Game Theory and Decision Science (AREA)
- Development Economics (AREA)
- Marketing (AREA)
- Educational Administration (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种基于任务间优先关系约束的任务分配方法和***,所述方法包括以下步骤:步骤一,对于任务集合中的每一个任务,根据该任务的条件任务集合,确定该任务的层次;步骤二、找出上述任务集合中所有的最终任务,组成最终任务的集合;步骤三、确定任务集合中各个任务之间的优先分配级别,组成分配序列;步骤四、按照上述分配序列中任务的先后顺序,将任务集合中的任务分配出去。本发明可以实现对任务间具有优先关系约束的情况完成有效的任务分配,保证完成全部任务的整体时间最短,保证了任务的按序分配,提高了整体效率。
Description
技术领域
本发明涉及网络资源分配技术领域,特别涉及一种众包背景下的基于任务间优先关系约束的任务分配方法和***。
背景技术
《连线》(Wired)杂志2006年发明了一个专业术语——众包(crowdsourcing),这是一种组织形式,即在互联网上把工作分配出去、发现创意或解决技术问题。由于众包的高效性,现阶段,众包更多地与众多的商业应用联系在了一起,这样的现象使得众包广泛流行起来。
在衡量一个众包***的性能时,任务分配机制的优劣是主要的因素。目前,相关的研究人员已经设计了大量高效的任务分配机制。针对任务参与者的异质性以及任务的异质性,已有的研究愈见完善。在考虑任务的技能需求、任务参与者具备的技能各不相同的前提下,针对各种优化目标进行任务分配的机制已不在少数,且大都取得了不错的效果。
例如,中国专利申请号201610144236.1的发明专利申请,公开了基于云平台匿名地点的众包服务***及任务分配方法,包括云平台、配置文件库、元数据库和内容分析后台,其中元数据库包括专业领域概念图、Wiki和Dbpedia关键词以及FAQ关键词;内容分析后台包括加载平衡器、任务分配服务器、参与者模块、领域专家模块和用户数据存储服务器。
然而,在众包***的实际应用过程中,平台往往是首先将一个大的任务分割成若干的子任务,然后再将子问题发布,分配给不同的任务参与者完成。而现有的研究均假设所有的子任务之间是彼此独立无关的。显然,这一假设并不能完全符合实际的应用需求。实际***分割出的子任务之间往往是相关的,任务与任务之间可能会存在一定的先后关系。换句话说,某些任务必须在部分任务完成之后才能开始。由于已有的任务分配机制并没有考虑到这一点,此类任务的按序分配无法实现。仅针对异质性等约束条件进行问题研究,远远不够满足现在的需求。
发明内容
为解决上述问题,本发明提出了一种众包背景下的基于任务间优先关系约束的任务分配方法和***。针对任务间存在优先关系约束,被交付任务的任务参与者对不同的任务,存在不同意愿的情况,利用贪心法,实现对任务的分配,保证完成全部任务的整体时间最短。
具体的,根据本发明的一个方面,本发明提出了一种基于任务间优先关系约束的任务分配方法,所述方法包括以下步骤:
步骤一,对于任务集合中的每一个任务,根据该任务的条件任务集合,确定该任务的层次;
步骤二、找出上述任务集合中所有的最终任务,组成最终任务的集合;
步骤三、确定任务集合中各个任务之间的优先分配级别,组成分配序列;
步骤四、按照上述分配序列中任务的先后顺序,将任务集合中的任务分配出去。
根据本发明的另一个方面,本发明还提出了一种基于任务间优先关系约束的任务分配***,所述***包括以下模块:
任务层次确定模块,对于任务集合中的每一个任务,根据该任务的条件任务集合,确定该任务的层次;
最终任务寻找模块,用于找出上述任务集合中所有的最终任务,组成最终任务的集合;
分配级别确定模块,用于确定任务集合中各个任务之间的优先分配级别,组成分配序列;
任务分配模块,用于按照上述分配序列中任务的先后顺序,将任务集合中的任务分配出去。
本发明的有益效果如下:本发明可以实现对任务间具有优先关系约束的情况完成有效的任务分配,保证完成全部任务的整体时间最短,保证了任务的按序分配,提高了整体效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明的一种基于任务间优先关系约束的任务分配方法的整体流程图;
图2是本发明中初始的任务关系图;
图3是本发明中分层后的任务关系图;
图4是本发明寻求关键序列的原理示意图;
图5是本发明中任务分配的示意图;
图6是本发明的一种基于任务间优先关系约束的任务分配方法步骤一的流程图;
图7是本发明的一种基于任务间优先关系约束的任务分配方法步骤二的流程图;
图8是本发明的一种基于任务间优先关系约束的任务分配方法步骤三的流程图;
图9是本发明的一种基于任务间优先关系约束的任务分配方法步骤四的流程图;
图10是本发明的一种基于任务间优先关系约束的任务分配***的结构模块图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
首先,本发明的具体问题模型如下:
假设所研究的任务分配***中,存在任务集合T={t1,t2,t3,...,tm}和一个任务参与者集合W={w1,w2,w3,...,wn}。对于任务集合T中的任意一个任务tj∈T,存在属性{Cj,hj}。Cj为任务tj的条件任务集合。当且仅当Cj中的任务全部被完成交付给平台时,任务tj才能通过平台开始被分配。如果Cj是一个空集,则表示任务tj不存在条件任务,可随时被平台分配出并由任务参与者完成;否则,任务tj只能等待,直至所有条件任务全部被完成交付。假定对于任务集合T中的一个任务tj,任意任务参与者完成的时间都是相同的,那么用符号hj来表示任意任务参与者完成交付任务tj所花的时间。任务分配由平台进行组织,平台发布的单个任务仅需一个任务参与者完成交付,同时一个任务参与者可以被分配到多个任务但必须按顺序依次完成。在任务拍卖开始阶段,任务参与者提交各自想做的任务集合,由符号Ti表示。
在所有任务参与者提交完各自的信息后,平台决定如何合理地将任务集合中的全部任务分配给任务参与者集合中的个人。在分配过程中,平台遵守任务间存在优先关系的约束和个人意愿的约束进行任务分配,以整个完成任务集合的过程花费的时间能够最短为目的,对分配方案进行求解。
具体的,根据本发明的一个方面,如图1所示,是本发明的一种基于任务间优先关系约束的任务分配方法的整体流程图;如图1所示,本发明的任务分配方法包括以下步骤:
S1、对于任务集合T中的每一个任务,根据任务的条件任务集合,确定该任务的层次。
S2、找出任务集合T中所有的最终任务,组成最终任务的集合Final。
S3、确定任务集合T中各个任务之间的优先分配级别,组成序列L。
S4、按照分配序列L中任务的先后顺序,将任务集合中的任务分配出去。
下面对每个步骤进行详细解释:
S1、对于任务集合T中的每一个任务,根据任务的条件任务集合,确定该任务的层次。
以平台发布的一个任务集合T={t1,t2,t3,...,t14}为例。任务间存在先后关系,关系如图2所示,对于图中的‘→’符号,存在说明,如果ti→tj,则表示任务tj存在于任务ti的条件任务集合Cj中。
假设在任务集合T中,条件任务集合为空的任务都已经被完成了,那么可以将这些任务从图上删除,则新的条件任务集合为空的任务会因此而出现,以此往复,可以将图上的任务全部删除。最终,我们可以根据任务在第几个轮次被删除来确定任务所处的层次。
例如在图2的情形下,第一轮次由于任务t1,t2,t3,...,t7不存在‘→’符号指向其它任务,因此它们在该轮次中确定了任务层次。将任务t1,t2,t3,...,t7从图上删除,使得任务t8,t9,t10,t11在第二轮次被确定了层次,紧接着确定了处在第三层的任务t12,t13,t14,最终图上任务全部清空,S1过程由此结束。
根据最终对所有任务所处层次的判定结果,结合各个任务的条件任务集合,我们可以得到图3所示的一个结构分明的有向无环图。
如图6所示,所述步骤S1具体包括:
S101、对任务集合中的所有任务的条件任务集合进行拷贝,分别对应存放于C′j中;寻找任务集合T中,处在第i层次的任务,i初始化为i=1。
为不破坏各任务的条件任务集合中的内容,因此将各条件任务进行拷贝。通过将拷贝任务集合中已经确定了层次的任务删除的方式,来确定新的可被确定层次的任务。
S102、j=1。
遍历从任务集合T中的第一个任务开始。
S103、遍历任务集合T,当前目标为任务tj。
确定整个遍历过程在当前阶段下的目标。
S104、判断任务tj对应的拷贝任务集合C′j是否为空集同时任务tj是否未确定分层,如果是空集,则执行步骤S105,否则执行步骤S107。
当前阶段下某个任务的条件任务集合中仍然存在未被完成的任务,则当前轮次下该任务是不可能被确定层次的,任务需等待在下一个轮次中判断是否满足条件。
S105、将任务tj标记为第i层次的任务。
对找到的符合条件的任务进行层次标记。
S106、在任务集合T中,找出任务集合Cj′中存在任务tj的所有任务,从任务的拷贝任务集合中删除任务tj。
将任务tj从所有的拷贝任务集合中删除的过程,可看作是将图中的任务点tj删除,同时把所有指向任务点tj的‘→’符号删除的过程。
S107、判断任务tj是否为任务集合T中的最后一个任务,如果是,则执行步骤S109,否则执行步骤108。
只有遍历到任务集合T中的最后一个任务,我们才能确定当前轮次下已经把应当被标记的任务都标记上了,避免发生遗漏。
S108、j++,执行步骤S103。
确定整个遍历过程在下一个阶段的目标,即在当前目标任务后面的任务中,排在第一个的任务。
S109、判断任务集合T中的任务是否都已确定分层,如果是,则结束步骤S1,否则执行步骤S110。
步骤S1的结束条件是任务集合T中的所有任务都已确定了层次。
S110、i++,执行步骤S102。
确定处在第(i+1)层次的任务。
S2、找出任务集合T中所有的最终任务,组成最终任务的集合Final。
最终任务tj满足条件:该任务不存在于任务集合T中任何一个任务的条件任务集合中,即对于任意的任务tk∈T,有。
针对此特性,只需将任务tj与任务集合T中所有任务的条件任务集合进行比较,如果任务tj不存在于任何一个任务的条件任务集合,则任务tj必定属于最终任务的集合Final。
以图3为例,由于t1∈C9,t2∈C8,t4∈C8,t5∈C10……,最终可以得出Final={t3,t11,t12,t12,t14}。
如图7所示,所述步骤S2具体包括:
S201、初始化最终任务的集合Final,Final=T。
为了找到最终任务集合Final,我们可以假设任务集合T中所有任务都为最终任务,然后检查集合Final中的任务是否满足成为最终任务的条件,满足就保留,不满足则删除。
S202、j=1。
依次判断任务是否为最终任务,遍历从最终任务的集合Final中的第一个任务开始。
S203、遍历最终任务的集合Final,当前目标为任务tj。
确定整个遍历过程在当前阶段下的目标。
S204、k=1。
从任务集合T中的第一个任务开始,按顺序依次与当前的判断目标任务进行比较。
S205、遍历任务集合T,当前与任务tj进行比较的目标为任务tk。
在判断一个任务是否为最终任务的过程中,确定当前阶段下与之进行比较的任务。
S206、判断任务tk的条件任务集合Ck是否包含任务tj,如果包含,则执行步骤S207,否则执行步骤S208。
任务tk是任务集合T中的某个任务,如果任务tj存在于任务tk的条件任务集合Ck,那么任务tj已经不符合成为最终任务了。
S207、将任务tj从关键任务的集合Final中删除,执行步骤S210。
对于不满足最终任务条件的任务tj,将任务从集合Final中删除任务tj。由于在是任务tk处查到了任务tj不满足条件的,尽管任务tk之后可能还存在一些任务,针对任务tj检查而采取遍历步骤也不需要进行下去了。
S208、判断任务tk是否为任务集合T的最后一个任务,如果是,则执行步骤S210,否则执行步骤S209。
如果任务tj不存在于任务tk的条件任务集合Ck,则只有遍历下去,直到检查任务集合T的最后一个任务为止,我们才能真正的确认任务tj是最终任务。
S209、k++,执行步骤S205。
在判断一个任务是否为最终任务的过程中,确定下一个阶段与之进行比较的任务。
S210、判断任务tj是否为最终任务集合Final的最后一个任务,如果是,则步骤S2结束,否则执行步骤S211。
每一个在集合Final中的任务必须接受检测才能确定该任务是否真的应该存在于集合Final。
S211、j++,执行步骤S203。
判断下一个任务是否为最终任务。
S3、确定任务集合T中各个任务之间的优先分配级别,组成序列L。
我们将原问题模型简化。任务间依旧存在先后顺序;对于一个任务,任意任务参与者完成的时间固定;任务参与者能够接收完成被分配的任意任务。
假如参与完成任务的任务参与者足够多,使可分配的任务都能够立即地被任务参与者接收完成,则在当前的任务集合T中必然存在着一条关键任务序列(在图上可视为一条路径),序列从某一最终任务出发,指向处在低层次的某个任务,序列中所有任务的完成时间之和必定大于图中的任何其他符合相同特征的序列。关键序列中所有任务的完成时间之和是关键序列的关键值。处于关键任务序列中是关键序列的关键任务。
如果此时平台发布了一个任务集合T={t1,t2,t3,...,t10}。根据任务间存在先后关系,各个任务的层次都已确定,如图4所示。按照上述假设,我们可以得到那条关键任务序列{t10,t9,t7,t4},关键值为(h10+h9+h7+h4),显然,关键值(h10+h9+h7+h4)是任务参与者足够多这一假设成立的前提下,完成任务集合T中所有任务所花费的时间。
而如果参与完成任务的任务参与者的数目并不是足够多的,(h10+h9+h7+h4)可视为在此情形下最理想的完成时间。我们选择以每次将关键任务优先分配的方式对任务的完成顺序进行安排。
依旧以图4为例,如果我们将关键任务优先分配,则对于任务集合T中所有剩下的任务来说,在任务参与者足够多的情形下,完成任务的总时间是会有所减少;而如果选择完成其它可分配的任务,同样情形下,完成剩下的任务的总时间不会减少,显然选择完成其它任务优先完成不存在任何好处。因此在任务参与者的数目并不是足够多的情形下,我们有理由相信,相对于其它的优先任务选择方式,选择将关键任务优先分配,这样的方式会更好一些。
图4的例子中,最终任务仅仅存在一个最终任务,对于集合Final存在多个最终任务的情况,我们将各个最终任务的关键值和关键任务求出,将集合Final中最大关键值对应的关键任务优先分配。将求出的关键路径上最低层的关键任务从任务集合T后,更新各个最终任务的关键值和关键任务,然后再次进行优先分配,以此往复,完成对整个任务集合T中任务的优先级排序,最终形成整个任务集合中所有任务的优先分配序列L。
如图8所示,所述步骤S3具体包括:
S301、用L表示任务按优先级别组成的序列,
S302、用i表示正在遍历任务集合T中第i层次的任务,i=1。
事实上,无论是从低层次任务开始往高层次任务寻找关键路径,还是从高层次往低层次,最终的结果是一样的,原因两种过程的目标都是找到关键值最大的路径。尽管之前对关键路径的解释是从高层次往低层次的过程,在步骤S3中却是从低层次任务开始往高层次任务寻找关键路径的。
S303、j=1。
遍历从任务集合T中的第一个任务开始。
S304、遍历任务集合T,当前目标为任务tj。
确定整个遍历过程在当前阶段下的目标。
S305、判断任务tj是否为第i层次的任务,如果是,则执行步骤S306,否则执行步骤S307。
找到第i层次的任务,在接下来的步骤中对其进行处理。
S306、得到任务tj的关键路径上最低层的关键任务和关键值wj:
如果任务tj为第一层次的任务,则任务tj的关键值为wj=hj,任务tj的关键任务为任务tj本身。如果i≥1,任务tj为非第一层次的任务,则必须找出任务tj的条件任务集合Cj中,wk最大的任务tk,任务tj的关键值为wj=hj+wk,任务tj的关键路径上最低层的关键任务为任务tk的关键路径上最低层的关键任务。
S307、判断任务tj是否为任务集合T的最后一个任务,如果是,则执行步骤S309,否则执行步骤S308。
找出任务集合T中所有第i层次的任务。
S308、j++,执行步骤S304。
确定整个遍历过程在下一个阶段的目标,即在当前目标任务后面的任务中,排在第一个的任务。
S309、判断最终任务集合Final中各个任务的关键值和关键路径上最低层的关键任务是否都已经确定,如果是则执行步骤311,否则执行步骤S310。
确定最终任务集合Final中所有任务的关键值和关键路径。
S310、i++,执行步骤303。
开始对任务集合T中第(i+1)层次的任务进行处理。
S311、找出最终任务集合Final中,wj最大的最终任务tj。
当前阶段下最应当被优先分配出的任务必然存在于关键值最大的关键路径中。
S312、将任务tj的关键任务tk从任务集合T中删除,同时将任务tk加入到序列L末尾。
确定并找到前阶段下最应当被优先分配出的任务。
S313、判断任务集合T是否为空集,如果是,则步骤S3结束,否则执行步骤314。
当所有任务都已确定了各自的分配级别,步骤S3结束。
S314、将任务tk从最终任务集合Final或者任务集合T中所有任务的条件任务集合中删除,执行步骤S302。
任务tk可能存在于最终任务集合Final中,也可能存在于多个任务的条件任务集合中,但两者是互斥的,同时必定满足其中一种。在这样的情况下,如果前者满足了,另一种情况就不需要进行检测了。
S4、按照分配序列L中任务的先后顺序,将任务集合中的任务分配出去。
以图4中的任务集合为例,执行步骤S3,最终得到图5上的任务分配序列,同时图5中存在任务参与者集合W={w1,w2,w3,w4,w5}。如果有T1={t1,t4,t6,t8},T2={t3,t4,t6,t9},T3={t1,t2,t5,t10},T4={t2,t6,t7,t9},T5={t3,t5,t7,t9}。
任务分配过程开始。我们从第一个任务参与者w1开始,依次查看任务序列L中是否有任务参与者w1能做的任务,由于任务参与者w1处于空闲状态而且对任务t4表示出了兴趣,同时任务t4当前是可分配的,于是我们将任务t4交付给任务参与者w1完成。我们对下一个任务参与者进行任务分配,对于任务参与者w2和任务t3、任务参与者w3和任务t2满足了同样的条件,于是将任务交付给对应的任务参与者完成。
而对于任务参与者w4和任务t7,尽管任务参与者w4对任务t7表示出了兴趣,任务参与者w4也处于空闲状态,但任务t7的条件任务未被完成,任务便不能被分配出,同样对于任务t7之后的那些任务,在进行检查后都发现任务参与者w4不能执行,因此我们只能对下一个任务参与者进行任务分配,任务参与者w4保持空闲状态等待任务分配的时刻。
在对所有任务参与者进行任务分配后,任务参与者集合W中有的任务参与者是处于忙碌状态的,而有些是空闲的,我们需要等待最先被完成的任务出现,才能针对空闲的任务参与者按照上述的原则进行下一轮的任务分配。以此往复,所有任务完成时,任务分配过程才结束。
如图9所示,所述步骤S4具体包括:
S401、对分配过程中需要的局部变量进行初始化:
存在一个当前正在被完成的任务的集合Tf,初始化为一个记录任务分配和完成经历的时间time,初始化为time=0。
S402、i=1。
遍历从任务参与者集合T中的第一个任务参与者开始。
S403、遍历任务参与者集合W,当前目标为任务参与者wi。
确定整个遍历过程在当前阶段下的目标任务参与者。
S404、j=1。
从任务序列L中的第一个任务开始,按顺序依次与当前的判断任务参与者进行匹配。
S405、遍历任务序列L,当前目标为任务tj。
在对一个任务参与者尝试进行任务分配的过程中,确定当前阶段下与之尝试进行匹配的任务。
S406、判断任务参与者wi是否能够完成任务tj。如果能够完成,则执行步骤S407,否则执行步骤S408。
判断任务参与者wi是否空闲,以及对任务tj是否存在意向,即任务tj属于任务参与者wi想做的任务集合Ti,同时在当前情形下任务tj是否可分配的,只有同时满足这三个条件,任务参与者wi才能够完成任务tj。
S407、将任务tj从任务集合T中删除,并加入到当前正在被完成的任务的集合Tf中,记录任务tj被分配的时刻timej=time和完成任务tj的任务参与者,同时将任务参与者wi标记为忙碌状态,执行步骤S410。
对匹配成功的任务和任务参与者进行处理。
S408、判断任务tj是否为任务序列L的最后一个任务,如果是则执行步骤S410,否则执行步骤S409。
是否最终确定任务序列L中不存在与目标任务参与者匹配的任务。
S409、j++,执行步骤S405。
确定下一个阶段与目标任务参与者进行匹配的任务。
S410、判断任务参与者wi是否为任务参与者集合W的最后一个任务参与者,如果是则执行步骤S412,否则执行步骤S411。
是否已经对所有任务参与者尝试过进行任务分配。
S411、i++,执行步骤S403。
对下一个任务参与者尝试进行任务分配。
S412、找到当前正在被完成的任务的集合Tf中,timej+hj最小的任务tj,更新time=time+timej+hj。
当有一个任务参与者完成任务时,平衡的状态被打破,需要再次对所有任务参与者进行任务分配。
S413、判断任务序列L是否为空,如果是则步骤S4结束,如果否则进入步骤S414。
当任务序列L中所有任务都被分配出时,步骤S4结束。
S414、删除任务集合Tf中的任务tj,将完成任务tj的任务参与者wi标记为空闲状态,执行步骤S402。
对完成任务的任务参与者和被完成的任务进行处理。
根据本发明的另一个方面,如图10所示,本发明还提出了一种基于任务间优先关系约束的任务分配***200,所述***200包括以下模块:
任务层次确定模块210,对于任务集合中的每一个任务,根据该任务的条件任务集合,确定该任务的层次;
最终任务寻找模块220,用于找出上述任务集合中所有的最终任务,组成最终任务的集合;
分配级别确定模块230,用于确定任务集合中各个任务之间的优先分配级别,组成分配序列;
任务分配模块240,用于按照上述分配序列中任务的先后顺序,将任务集合中的任务分配出去。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的虚拟机的创建装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (6)
1.一种基于任务间优先关系约束的任务分配方法,其特征在于:
所述方法包括以下步骤:
步骤一,对于任务集合中的每一个任务,根据该任务的条件任务集合,确定该任务的层次;
步骤二、找出上述任务集合中所有的最终任务,组成最终任务的集合;
步骤三、确定任务集合中各个任务之间的优先分配级别,组成分配序列;
步骤四、按照上述分配序列中任务的先后顺序,将任务集合中的任务分配出去。
2.如权利要求1所述的一种基于任务间优先关系约束的任务分配方法,其特征在于:
所述步骤一包括如下子步骤:
(1)、对任务集合中的所有任务的条件任务集合进行拷贝,分别对应存放于C′j中;寻找任务集合T中,处在第i层次的任务,i初始化为i=1;
(2)、遍历从任务集合T中的第一个任务开始;
(3)、遍历任务集合T,当前目标为任务tj,确定整个遍历过程在当前阶段下的目标;
(4)、判断任务tj对应的拷贝任务集合C′j是否为空集同时任务tj是否未确定分层,如果是空集,则执行步骤(5),否则执行步骤(7);
(5)、将任务tj标记为第i层次的任务;
(6)、在任务集合T中,找出任务集合C′j中存在任务tj的所有任务,从任务的拷贝任务集合中删除任务tj;
(7)、判断任务tj是否为任务集合T中的最后一个任务,如果是,则执行步骤(9),否则执行步骤(8);
(8)、再次执行步骤(3),确定整个遍历过程在下一个阶段的目标,即在当前目标任务后面的任务中,排在第一个的任务;
(9)、判断任务集合T中的任务是否都已确定分层,如果是,则结束步骤一,否则执行步骤(10)。
(10)、再次执行步骤(2),确定处在第(i+1)层次的任务。
3.如权利要求1或2所述的一种基于任务间优先关系约束的任务分配方法,其特征在于:
所述步骤二包括如下子步骤:
(1)、初始化最终任务的集合Final,Final=T;
(2)、依次判断任务是否为最终任务,遍历从最终任务的集合Final中的第一个任务开始;
(3)、遍历最终任务的集合Final,当前目标为任务tj,确定整个遍历过程在当前阶段下的目标;
(4)、从任务集合T中的第一个任务开始,按顺序依次与当前的判断目标任务进行比较;
(5)、遍历任务集合T,当前与任务tj进行比较的目标为任务tk;
(6)、判断任务tk的条件任务集合Ck是否包含任务tj,如果包含,则执行步骤(7),否则执行步骤(8);
(7)、将任务tj从关键任务的集合Final中删除,执行步骤(10);
(8)、判断任务tk是否为任务集合T的最后一个任务,如果是,则执行步骤(10),否则执行步骤(9);
(9)、再次执行步骤(5),在判断一个任务是否为最终任务的过程中,确定下一个阶段与之进行比较的任务;
(10)、判断任务tj是否为最终任务集合Final的最后一个任务,如果是,则步骤二结束,否则执行步骤(11)。
(11)、再次执行步骤(3),判断下一个任务是否为最终任务。
4.如权利要求3所述的一种基于任务间优先关系约束的任务分配方法,其特征在于:
所述步骤三包括如下子步骤:
(1)、用L表示任务按优先级别组成的序列,
(2)、用i表示正在遍历任务集合T中第i层次的任务,i=1;
(3)、遍历从任务集合T中的第一个任务开始;
(4)、遍历任务集合T,当前目标为任务tj,确定整个遍历过程在当前阶段下的目标;
(5)、判断任务tj是否为第i层次的任务,如果是,则执行步骤(6),否则执行步骤(7)。
(6)、得到任务tj的关键路径上最低层的关键任务和关键值wj;
(7)、判断任务tj是否为任务集合T的最后一个任务,如果是,则执行步骤(9),否则执行步骤(8);
(8)、再次执行步骤(4),确定整个遍历过程在下一个阶段的目标,即在当前目标任务后面的任务中,排在第一个的任务;
(9)、判断最终任务集合Final中各个任务的关键值和关键路径上最低层的关键任务是否都已经确定,如果是则执行步骤(11),否则执行步骤(10);
(10)、再次执行步骤303,开始对任务集合T中第(i+1)层次的任务进行处理;
(11)、找出最终任务集合Final中,wj最大的最终任务tj;
(12)、将任务tj的关键任务tk从任务集合T中删除,同时将任务tk加入到序列L末尾;
(13)、判断任务集合T是否为空集,如果是,则步骤三结束,否则执行步骤(14);
(14)、将任务tk从最终任务集合Final或者任务集合T中所有任务的条件任务集合中删除,再次执行步骤(2)。
5.如权利要求4所述的一种基于任务间优先关系约束的任务分配方法,其特征在于:
所述步骤四包括如下子步骤:
(1)、对分配过程中需要的局部变量进行初始化:存在一个当前正在被完成的任务的集合Tf,初始化为一个记录任务分配和完成经历的时间time,初始化为time=0;
(2)、遍历从任务参与者集合T中的第一个任务参与者开始;
(3)、遍历任务参与者集合W,当前目标为任务参与者wi,确定整个遍历过程在当前阶段下的目标任务参与者;
(4)、从任务序列L中的第一个任务开始,按顺序依次与当前的判断任务参与者进行匹配;
(5)、遍历任务序列L,当前目标为任务tj,在对一个任务参与者尝试进行任务分配的过程中,确定当前阶段下与之尝试进行匹配的任务;
(6)、判断任务参与者wi是否能够完成任务tj。如果能够完成,则执行步骤(7),否则执行步骤(8);
(7)、将任务tj从任务集合T中删除,并加入到当前正在被完成的任务的集合Tf中,记录任务tj被分配的时刻timej=time和完成任务tj的任务参与者,同时将任务参与者wi标记为忙碌状态,然后执行步骤(10);
(8)、判断任务tj是否为任务序列L的最后一个任务,如果是则执行步骤(10),否则执行步骤(9);
(9)、再次执行步骤(5),确定下一个阶段与目标任务参与者进行匹配的任务;
(10)、判断任务参与者wi是否为任务参与者集合W的最后一个任务参与者,如果是则执行步骤(12),否则执行步骤(11);
(11)、再次执行步骤(3),对下一个任务参与者尝试进行任务分配;
(12)、找到当前正在被完成的任务的集合Tf中,timej+hj最小的任务tj,更新time=time+timej+hj;
(13)、判断任务序列L是否为空,如果是则步骤四结束,如果否则进入步骤(14);
(14)、删除任务集合Tf中的任务tj,将完成任务tj的任务参与者wi标记为空闲状态,然后再次执行步骤(2)。
6.一种基于任务间优先关系约束的任务分配***,其特征在于,所述***包括以下模块:
任务层次确定模块,对于任务集合中的每一个任务,根据该任务的条件任务集合,确定该任务的层次;
最终任务寻找模块,用于找出上述任务集合中所有的最终任务,组成最终任务的集合;
分配级别确定模块,用于确定任务集合中各个任务之间的优先分配级别,组成分配序列;
任务分配模块,用于按照上述分配序列中任务的先后顺序,将任务集合中的任务分配出去。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710023020.4A CN106779482A (zh) | 2017-02-17 | 2017-02-17 | 一种基于任务间优先关系约束的任务分配方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710023020.4A CN106779482A (zh) | 2017-02-17 | 2017-02-17 | 一种基于任务间优先关系约束的任务分配方法和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106779482A true CN106779482A (zh) | 2017-05-31 |
Family
ID=58948337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710023020.4A Pending CN106779482A (zh) | 2017-02-17 | 2017-02-17 | 一种基于任务间优先关系约束的任务分配方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106779482A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107317872A (zh) * | 2017-07-20 | 2017-11-03 | 河海大学 | 一种空间众包中多类型任务的调度方法 |
CN107341596A (zh) * | 2017-06-20 | 2017-11-10 | 上海交通大学 | 基于层次任务网络和关键路径法的任务优化方法 |
CN109948940A (zh) * | 2019-03-26 | 2019-06-28 | 大连海事大学 | 一种基于启发式算法的Web服务众包测试任务分配方法 |
CN110378663A (zh) * | 2019-04-19 | 2019-10-25 | 西北工业大学 | 一种基于贪心策略的复杂移动众包任务分配方法 |
CN110503331A (zh) * | 2019-08-20 | 2019-11-26 | 西北工业大学 | 一种面向多约束条件的复杂移动众包任务分解方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030037091A1 (en) * | 2001-08-09 | 2003-02-20 | Kozo Nishimura | Task scheduling device |
CN101408850A (zh) * | 2008-11-27 | 2009-04-15 | 中国人民解放军信息工程大学 | 任务流计算模型 |
CN102945516A (zh) * | 2012-10-19 | 2013-02-27 | 北京神舟航天软件技术有限公司 | 多级网络计划的进度分析方法 |
CN103489063A (zh) * | 2013-09-06 | 2014-01-01 | 广州文冲船厂有限责任公司 | 一种分段建造的场地调度方法 |
CN103984595A (zh) * | 2014-05-16 | 2014-08-13 | 哈尔滨工程大学 | 一种异构cmp的静态任务调度方法 |
CN104166903A (zh) * | 2014-08-18 | 2014-11-26 | 四川航天***工程研究所 | 基于工序划分的任务规划方法及*** |
-
2017
- 2017-02-17 CN CN201710023020.4A patent/CN106779482A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030037091A1 (en) * | 2001-08-09 | 2003-02-20 | Kozo Nishimura | Task scheduling device |
CN101408850A (zh) * | 2008-11-27 | 2009-04-15 | 中国人民解放军信息工程大学 | 任务流计算模型 |
CN102945516A (zh) * | 2012-10-19 | 2013-02-27 | 北京神舟航天软件技术有限公司 | 多级网络计划的进度分析方法 |
CN103489063A (zh) * | 2013-09-06 | 2014-01-01 | 广州文冲船厂有限责任公司 | 一种分段建造的场地调度方法 |
CN103984595A (zh) * | 2014-05-16 | 2014-08-13 | 哈尔滨工程大学 | 一种异构cmp的静态任务调度方法 |
CN104166903A (zh) * | 2014-08-18 | 2014-11-26 | 四川航天***工程研究所 | 基于工序划分的任务规划方法及*** |
Non-Patent Citations (1)
Title |
---|
李艳生等: "基于蚁群算法的并行任务分配与调度", 《湖北师范学院学报( 自然科学版)》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107341596A (zh) * | 2017-06-20 | 2017-11-10 | 上海交通大学 | 基于层次任务网络和关键路径法的任务优化方法 |
CN107317872A (zh) * | 2017-07-20 | 2017-11-03 | 河海大学 | 一种空间众包中多类型任务的调度方法 |
CN107317872B (zh) * | 2017-07-20 | 2020-05-05 | 河海大学 | 一种空间众包中多类型任务的调度方法 |
CN109948940A (zh) * | 2019-03-26 | 2019-06-28 | 大连海事大学 | 一种基于启发式算法的Web服务众包测试任务分配方法 |
CN109948940B (zh) * | 2019-03-26 | 2023-08-18 | 大连海事大学 | 一种基于启发式算法的Web服务众包测试任务分配方法 |
CN110378663A (zh) * | 2019-04-19 | 2019-10-25 | 西北工业大学 | 一种基于贪心策略的复杂移动众包任务分配方法 |
CN110503331A (zh) * | 2019-08-20 | 2019-11-26 | 西北工业大学 | 一种面向多约束条件的复杂移动众包任务分解方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106779482A (zh) | 一种基于任务间优先关系约束的任务分配方法和*** | |
CN108369537A (zh) | 启用fpga的计算实例 | |
Sharma et al. | Performance analysis of dispatching rules in a stochastic dynamic job shop manufacturing system with sequence-dependent setup times: Simulation approach | |
CN110008024B (zh) | 一种多维约束下基于延迟决策的容器调度方法以及装置 | |
US20120131480A1 (en) | Management of virtual machine snapshots | |
US10146665B2 (en) | Systems and methods for providing dynamic and real time simulations of matching resources to requests | |
CN109614238A (zh) | 一种目标对象识别方法、装置、***及可读存储介质 | |
CN109872064A (zh) | 一种机场资源分配方法、装置、设备及介质 | |
CN105263128B (zh) | 一种批量发送短信的方法和装置 | |
CN110838031A (zh) | 一种基于ABtest的数据运营方法和装置 | |
Dunstall et al. | Heuristic methods for the identical parallel machine flowtime problem with set-up times | |
CN107909234A (zh) | 工作流数据的时限提醒方法、处理方法及其装置、设备 | |
US20210035068A1 (en) | Method and device for investigating data, mobile terminal, and computer-readable storage medium | |
CN109087435A (zh) | 排队时间的预测方法及排队*** | |
CN108427602B (zh) | 一种分布式计算任务的协同调度方法及装置 | |
CN113672375A (zh) | 资源分配预测方法、装置、设备及存储介质 | |
CN115310945A (zh) | 一种多维度流程分组审批的方法和*** | |
CN105893147A (zh) | 多任务队列管理方法、设备及*** | |
CN109582461A (zh) | 一种针对Linux容器的资源部署方法及*** | |
CN111639025B (zh) | 一种软件测试方法、装置、电子设备及存储介质 | |
CN117435337A (zh) | 资源配置方法、装置、电子设备及存储介质 | |
CN110287008B (zh) | 一种测试任务调度方法、装置及电子设备 | |
Li et al. | Learning to bundle proactively for on-demand meal delivery | |
JP5086060B2 (ja) | 情報処理装置、その制御方法及びプログラム | |
CN110516922B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170531 |