首页> 中国专利> 多项目多任务管理中的资源平衡自适应调度方法

多项目多任务管理中的资源平衡自适应调度方法

摘要

本发明公开了一种目多任务管理中的资源平衡自适应调度方法,本发明的方法结合客户实际需求与项目管理实际问题,针对单项目或多项目并行资源超负时,满足项目中各种实际约束条件,自动平衡分配资源的同时,对项目进度进行合理调度安排,资源合理利用,提高项目质量,有效解决了实际项目管理实施中各类复杂约束条件下项目调度问题,快速自动实现资源的平衡利用,生成合理的项目进度安排,有效的降低了项目成本、项目风险,提高了项目质量与项目进度,增加了项目效益。

著录项

  • 公开/公告号CN103617472A

    专利类型发明专利

  • 公开/公告日2014-03-05

    原文格式PDF

  • 申请/专利权人 成都希盟泰克科技发展有限公司;

    申请/专利号CN201310285487.8

  • 发明设计人 高智伟;

    申请日2013-07-09

  • 分类号G06Q10/06(20120101);

  • 代理机构成都宏顺专利代理事务所(普通合伙);

  • 代理人周永宏

  • 地址 610041 四川省成都市高新区天府大道南延线高新孵化园1号楼

  • 入库时间 2024-02-19 22:23:04

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-10-26

    授权

    授权

  • 2014-04-02

    实质审查的生效 IPC(主分类):G06Q10/06 申请日:20130709

    实质审查的生效

  • 2014-03-26

    著录事项变更 IPC(主分类):G06Q10/06 变更前: 变更后: 申请日:20130709

    著录事项变更

  • 2014-03-05

    公开

    公开

说明书

技术领域

本发明属于项目管理技术领域,具体涉及一种复杂约束条件下多项目多任务管理中的资 源平衡自适应调度方法。

背景技术

在实际项目管理实施中,无论是单项目或多项目并行,劳动力、物资材料、设备等资 源是非常重要的约束条件之一,而这些资源并不是无限供应的,资源受限导致项目中资源 超负荷时,在满足项目中任务搭接关系等其它约束条件的前提下,使资源平衡充分利用, 项目进度计划可靠合理安排,工期最短。

传统的关键路径法(Critical Path Method,CPM)和计划评审法(Plan Evaluation and  Review Technique,PERT)因忽略了资源受限而对此问题无能为力。目前能解决此问题的算 法主要有精确算法和启发式算法两类,整数规划、枚举法、分支定界法等精确算法能求得 最优解,但求解效率低,而且由于此问题是NP-Hard问题,对于60个任务以上的大规模问 题基本无能为力。目前的启发式算法包括基于优先规则的启发式算法和以及遗传算法、蚁 群算法等,基于优先规则的启发式算法只能解决1到2个优先规则,当项目优先规则多的 情况下,无法做到任务的合理优先,并且进度生成机制生成调度计划的具体实现过程并没 有适合实际应用的调度算法,如资源在时间段上如何去合理安排。

遗传算法、蚁群算法等自适应算法本身某些理论还待研究完善,并且依赖于基于优先 规则的启发式算法,针对中小型规模问题导致求解过程中出现不必要的步骤而繁琐复杂。 如在遗传算法中,针对中小型规模问题,完全可以省去选择、交叉、变异等步骤,因为初 始化种群时优化结果已经出来了,从而节约了时间开销,提高了调配效率。

各种启发式算法对于当较少资源出现超负时的快捷处理方法,当FS(完成-开始),SS (开始-开始),SF(开始-完成),FF(完成-完成)四种搭接关系同时出现并且任务之间是 多对多关系时,如何快速确定任务优先关系,以及任务调配条件、任务工期限制(包括父 任务工期限制)、任务不能切割、任务开始时间是否提前,任务不能调度平衡时如何处理、 项目之间的约束关系如何处理等实际问题并没有做出处理,不能满足项目管理实施的实际 需求和客户的实际需求。

发明内容

本发明的目的是为了解决项目管理的调度方法中存在的上述问题,提出了一种多项目 多任务管理中的资源平衡自适应调度方法。

本发明的技术方案为:一种多项目多任务管理中的资源平衡自适应调度方法,具体包 括以下步骤:

S1.资源池资源替换:查出系统资源中参与叶子节点任务并且为非完成状态的超负荷的 资源,获取其替换条件,通过资源池查找符合替换条件的资源,然后依据其负荷上限判断 是否超负荷,当没有超负荷并且替换平衡了所有待调配任务的超负荷资源时进行资源替换, 更新资源使用情况,否则进行自动调配;

S2.获取自动调配初始化数据集合:依据叶子节点任务生命周期获取所有待调度项目中 符合调配的任务的属性数据,所述属性数据包括标志码、估计开始时间、估计结束时间、 估计工期、创建时间、是否关键路径任务、任务优先级、最小完成期限、松驰时间、资源 集合、约束关系,获取任务所属项目的标志码、估计开始时间,估计结束时间属性数据, 获取每个资源负荷上限形成需要的数据结构;

S3.动态分层加权平均处理,生成待调配任务集:依据预先设定的n个优先规则,通过 页面交互确定层数,所述层数的范围是[1,n],通过页面交互确定每层中对应的优先规则, 通过页面交互确定每个优先规则对应的权重比值,然后计算相同层数的优先规则权重比值 的和,其百分比作为其权重系数,通过任务的优先规则特性获得其权重值,然后对同一层 中的优先规则进行加权平均,再依次对初始化集合按每层加权平均后的数值由大到小进行 排序,由1到n,下一层只对上一层数值相等的任务再进行排序,直到上一层没有相等权值 的任务或者层数为n时,生成待调配任务集;

S4.自动调配,从待调配任务集中选取第一个任务:

S41.计算紧前任务:依据步骤S2中获取的约束关系,所述约束关系的数据结构为AOV 网,首先通过遍历得到其所有邻接点任务,如果没有邻接点任务,则其没有紧前任务约束 时间点及对应的松动时间,如果有,结合这些邻接点任务在待调配任务集合中的优先级与 约束时间点的先后从这些邻接点任务中获取当前任务的一个优先约束任务,再递归获取此 优先约束任务的优先约束任务,直到当前任务没有约束任务或其约束任务不在待调配任务 集中,得到紧前任务约束时间点及对应的松动时间;

S42.计算开始时间字符串:根据步骤S41获得的紧前任务约束时间点与对应的松动时 间,以及任务估计开始时间和开始时间能否提前计算出此任务调配前的开始时间字符串;

S43.计算任务调度开始时间,标记不能调平的任务:根据步骤S42获得的开始时间字 符串和步骤S2获得的估计工期,获取任务调配时的开始时间和结束时间,获取任务的开始 时间和结束时间,对资源集合进行遍历,先获取资源使用情况集合,对资源使用情况集合 中的元素进行日期类型由早到晚排序,获取此集合的首元素与尾元素,如果开始时间在尾 元素之后或者结束时间在首元素之前,调度开始时间为开始时间,进行下一个资源遍历; 如果不满足开始时间在尾元素之后或者结束时间在首元素之前,查找获取开始时间在资源 使用情况集合中的索引,以索引处遍历资源使用情况集合,当索引不存在时从0索引处开 始,以某天资源使用情况与资源需求情况是否超过资源负荷上限为基准,对开始时间做出 试探性的改变与不改变的操作,直到需求工期内的每个工作日天均未超负荷或者资源使用 情况集合遍历结束,以同样方式遍历下一个资源,直到资源遍历结束,当遍历到第二个资 源及其后面的资源时开始时间改变了,则以改变后的最新开始时间为准重新遍历资源集合, 直到遍历第二个资源及其后面的资源时开始时间都没有改变,则得到调度开始时间,在此 期间,依据开始时间字符串和最小完成期限标记不能调配平衡的任务,进入步骤S44;

S44.更新数据:根据步骤S43获得的调度开始时间,获得调度结束时间,进而获得调 度资源需求情况,更新资源使用情况集合、待调配任务集合、已调配任务集合、不可调平 任务集合;

S5.循环执行步骤S4,当前任务的所有紧前任务全部调配完后,再调配此任务,然后 再依次获取待调配任务集合第一个元素,直到待调配任务集合为空,自动调度结束。

进一步的,步骤S42中所述的开始时间字符串取值为null,或者为某时间点字符串,或 者为由两个时间点字符串组成的时间段字符串。

本发明的有益效果:本发明的方法结合客户实际需求与项目管理实际问题,针对单项 目或多项目并行资源超负时,满足项目中各种实际约束条件,自动平衡分配资源的同时, 对项目进度进行合理调度安排,资源合理利用,提高项目质量,有效解决了实际项目管理 实施中各类复杂约束条件下项目(单项目或多项目并行)调度问题,快速自动实现资源的 平衡利用,生成合理的项目进度安排,有效的降低了项目成本、项目风险,提高了项目质 量与项目进度,增加了项目效益。本发明的方法可以适用于以劳动力、物资材料、设备等 资源的各种项目调度领域。

具体实施方式

本发明实施例的多项目多任务管理中的资源平衡自适应调度方法,具体包括以下步骤:

S1.资源池资源替换:查出系统资源中参与叶子节点任务并且为非完成状态的超负荷资 源,获取其替换条件:参与待调配任务(如创建或者指派)、资源特性(如有资源池关系、 技能要求)、资源需求量(如工作日要求),通过资源池查找符合替换条件的资源,然后依 据其负荷上限判断任务要求工期内是否超负荷,当没有超负荷并且替换平衡了所有待调配 任务的超负荷资源时进行资源替换,并更新资源使用情况,否则进行自动调配;

需要说明的是:这里如果没有资源池,则直接进行自动调配,可设置开关控制。资源 负荷计算以天为单位,叶子节点任务即没有子任务的任务,任务生命周期为创建、指派、 活动、审核等非完成状态,如果某个状态需要分情况计算,则设置开关控制即可。此步骤 主要针对较少资源超负荷时进行,如果超负荷的资源的待调配任务较多(有资源池但是需 要替换的资源太多时),直接进入自动调配。

S2.获取自动调配初始化数据集合:依据叶子节点任务生命周期获取所有待调度项目中 符合调配的任务的标志码、估计开始时间、估计结束时间、估计工期、创建时间、是否关 键路径任务、任务优先级、最小完成期限、松驰时间(FS、SS、FF、SF四种情况,多对多 关系)、资源集合、约束关系(FS、SS、FF、SF四种情况,多对多关系)属性数据,获取 任务所属项目标志码、估计开始时间,估计结束时间属性数据,获取每个资源负荷上限形 成需要的数据结构;

这里所获取的任务都为叶子节点任务,即没有子任务的任务。生命周期为任务处于创建、 指派(开关控制是否选取)两个状态的任务。

S3.动态分层加权平均处理,生成待调配任务集合:依据设定的n个优先规则,客户通 过页面交互确定应该有的层数,范围是[1,n],客户通过页面交互确定每层中对应的优先规 则,范围[1,n],客户通过页面交互确定每个优先规则对应的权重比值,然后计算相同层数 的优先规则权重比值的求和百分比为其权重系数,通过任务的优先规则特性获得其权重值 (参考权重值计算规则),然后对同一层中的优先规则进行加权平均,再依次对初始化集合 按每层加权平均后的数值由大到小进行排序,由1到n,下一层只对上一层数值相等的任务 再进行排序,直到上一层没有相等权值的任务或者层数为n时,生成待调配任务集。

这里的权重值计算规则如下:项目、任务优先级规则:项目或者任务上的优先级属性 值为权重值;关键路径规则:true和false控制,是true则权重值为1,false则为0,true先 调;任务紧后任务规则:约束关系、被约束关系箭头数量为权重值,数量多的先调;任务 使用资源数量规则:使用资源数量为权重值,数量多的先调;任务工期规则:所有待调配 任务中的最大工期与每个任务工期的差值再加1为权重值,值小的先调;任务工期限制(包 括父任务工期,即取此子任务与其父任务限制时间较早的一个作为此子任务的工期限制) 规则:限制时间排序,权重值为排序序号,序号大的先调;任务开始时间规则:所有开始 时间排序,序号为权重值,序号大的先调;任务创建时间规则:所有创建时间排序,序号 为权重值,序号大的先调。

S4.自动调配,从待调配任务集中选取第一个任务:

S41.计算紧前任务:依据步骤S2中获取的约束关系(项目管理中的四种任务搭接关系: FS(完成—开始),SS(开始—开始),FF(结束—结束),SF(开始—结束),且多对多关 系)数据,其数据结构为AOV(Activity On Vertex Network)网,首先通过遍历得到其所有 邻接点任务,如果没有邻接点任务,则其没有紧前任务约束时间点及对应的松动时间,如 果有,结合这些邻接点任务在待调配任务集合中的优先级与约束时间点的先后从这些邻接 点任务中获取当前任务的一个优先约束任务,再递归获取此优先约束任务的优先约束任务, 直到当前任务没有约束任务或其约束任务不在待调配任务集中,得到紧前任务约束时间点 及对应的松动时间;

这里,AOV网遍历可用已有的广度优先遍历和深度优先遍历技术,本发明没有用已有 的技术,这里采用局部搜索算法,只是依据任务优先级和约束时间点的先后从其邻接点任 务中获取一个优先约束任务(即只是网中某个点的一个分枝),再类似递推,每次局部搜索 相关的紧前任务即可,无需每次都进行全局网搜索。

这里,针对约束时间点,当约束关系为SF或者SS时,约束时间点为此约束任务的开 始时间,当约束关系为FF或者FS时,约束时间点为此约束任务的结束时间。针对松动时 间,松动时间即为约束关系上的松动时间。

S42.计算开始时间字符串:根据步骤S41获得的紧前任务约束时间点与对应的松动时 间,以及任务估计开始时间和开始时间能否提前来计算出此任务调配前的开始时间字符串;

这里的,开始时间字符串取值为null(null代表此任务在各种约束条件下无法调平衡), 或者为某时间点字符串,或者为由两个时间点字符串组成的时间段字符串。

S43.计算任务调度开始时间,标记不能调平的任务:根据步骤S42获得的开始时间字 符串和S2获得的估计工期,获取任务调配时的开始时间和结束时间,获取任务的开始时间 和结束时间,对资源集合进行依次遍历,先获取资源已使用情况,对资源使用情况集合进 行日期类型由早到晚排序,获取此集合首元素与尾元素,如果开始时间在尾元素之后或者 结束时间在首元素之前,调度开始时间为开始时间,进行下一个资源遍历;如果不满足开 始时间在尾元素之后或者结束时间在首元素之前,查找获取开始时间在资源使用情况集合 中的索引,以索引处遍历资源使用情况集合(当索引不存在时从0索引处开始),以某天资 源使用情况与资源需求情况是否超过资源负荷上限为基准,对开始时间做出试探性的改变 与不改变的操作(开始时间不被提前),直到需求工期内的每个工作日天均未超负荷或者资 源使用情况集合遍历结束,则以同样方式遍历下一个资源,直到资源遍历结束,当遍历到第 二个资源及其后面的资源时开始时间改变了,则以改变后的最新开始时间为准重新遍历资 源集合,直到遍历第二个资源及其后面的资源时开始时间都没有改变,则得到调度开始时 间,在此期间,依据开始时间字符串,最小完成期限和工期标记不能调配平衡的任务,进 入步骤S44;

这里的排序可以根据数据结构选择适用的选择排序、交换排序、插入排序技术,查找可 用现有的二分查找,哈希查找等技术。

对于查找索引的结果,可将无索引结果(即不是资源使用情况集合中的元素)转换为资 源使用情况集合的某个索引处进行有索引试探(具体是从此无索引时间点开始遍历后续每 个工作日,直到此工作日在资源使用情况集合中已经存在使用情况)或此转换过程中直接 确定调度开始时间(具体是从此无索引时间点开始遍历后续每个工作日,在与资源使用情 况集合有交集之前就满足了所需工期资源要求)而结束S43过程。

对开始时间做出试探性的改变与不改变的操作具体为:如果以开始时间这天到结束时 间之间的工作日天均未超负荷,则开始时间不改变,如果此间某工作日超负荷了,则以此 工作日天的下一个工作日天为开始时间。

这里,动态获取资源使用情况具体为:如果资源使用情况集合中有此资源使用情况, 则从此集合中获取,如果没有,则从系统中计算获取并放入资源使用情况集合(存储某个 资源已被使用的那部分资源记录);资源需求情况集合为某个资源在某个任务的工期内需要 使用的那部分资源的记录。

这里,标记不能调配平衡的任务,如果开始时间字符串为null,则直接标记不能调平衡; 如果开始时间字符串为某个时间点或某个时间段,则计算在此时间点(段)与最小完成期 限之间的工作日是否满足所需工期要求,不满足则标记为不能调平衡;

S44.更新数据:根据步骤S43获得的调度开始时间,获得调度结束时间,进而获得调 度资源需求情况,更新资源使用情况集合、待调配任务集合(从待调配任务集合中删除此 任务元素)、已调配任务集合(在此集合中添加此任务元素)、不可调平任务集合(在此集 合中添加此任务元素)。

这里,依据S43所获取的调度开始时间将作为此任务的开始时间,并以此获取任务的 结束时间,一并放入已调配任务集合。不可调平任务集合中的任务开始时间和结束时间均 不作改变。

这里,不可调平任务集合中所添加的任务元素已调配任务集合中也必须添加。

S5.循环执行步骤S4,当前任务的所有紧前任务全部调配完后,再调配此任务,然后 再依次获取待调配任务集合第一个元素,直到待调配任务集合为空,自动调度结束。

本发明的方法结合客户实际需求与项目管理实际问题,针对单项目或多项目并行资源 超负时,满足项目中各种实际约束条件,自动平衡分配资源的同时,对项目进度进行合理 调度安排,资源合理利用,提高项目质量,有效解决了实际项目管理实施中各类复杂约束 条件下项目(单项目或多项目并行)调度问题,快速自动实现资源的平衡利用,生成合理 的项目进度安排,有效的降低了项目成本、项目风险,提高了项目质量与项目进度,增加 了项目效益,并成功应用于项目管理软件中。本发明的方法可以适用于以劳动力、物资材 料、设备等资源的各种项目调度领域。

本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原 理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技 术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变 形和组合,这些变形和组合仍然在本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号