基于层次任务网络和关键路径法的任务优化方法与流程

文档序号:12906597阅读:580来源:国知局
基于层次任务网络和关键路径法的任务优化方法与流程

本发明涉及的是一种信息处理领域的技术,具体是一种基于层次任务网络和关键路径法的任务优化方法。



背景技术:

制定生产计划是车间组织生产过程中的核心问题。生产计划指明了各个时间段所需生产的满足指定标准的各种产品的数量或所需完成的生产进度。实际生产过程往往十分复杂,因存在众多需要决策的变量及多个决策优化目标,故建立单一模型进行整体求解的方式是不适宜的,其存在模型表达和计算上的困难。现阶段,普遍采用递阶式分解的方法求解该问题,其核心思想为将复杂的计划问题根据某种划分依据(如计划时间区间、产品结构和工艺过程等)分解为多个子问题,然后依次求解,其中:物料需求计划(materialrequirementplanning,mrp)方法便是一种依据产品结构进行递阶分解的典型方法,在企业生产管理中得到广泛的应用。



技术实现要素:

本发明针对现有技术存在的上述不足,提出一种基于层次任务网络和关键路径法的任务优化方法,以基于htn的逻辑语言描述生产计划问题模型,解决了对于实际生产计划问题建模困难难以用形式化语言描述的问题,同时本发明考虑了生产能力及其限制,能够避免在生产执行中生产冲突、任务量超额,以及生产拖期的情况,具有更好的指导性和可执行性。

本发明是通过以下技术方案实现的:

本发明涉及一种基于层次任务网络和关键路径法的任务优化方法,包括以下步骤:

步骤1:基于htn规划方法的逻辑语言体系,建立车间生产计划问题四元组模型;

步骤2:分解任务网络tn,具体为:在按先根顺序遍历树状结构的tn各任务的过程中,当根节点任务ts不是原子任务可以继续向下分解时,则从有限方法集m中寻找能够分解任务ts的方法m,也即将ts分解为子级的零部件集合,存储在临时分解集合ts_tmp中,接着对临时分解集合ts_tmp中各任务递归地执行判断分解的操作,直至临时分解集合ts_tmp中的任务都已分解完成,将临时分解集合ts_tmp任务加入任务网络tn中进行更新,然后接着对任务网络tn中下一个任务ts’重复执行上述过程,直至遍历完任务网络tn中的每一个任务。

步骤3:基于关键路径法对任务网络tn进行动态调整优化,即计算出任务网络tn中各任务的可调整时间区间[ft,bt],然后将非关键路径上的任务的指定开始生产时间at在[ft,bt]中进行前移和后移的操作,为达到产能平衡的状态,这个过程中会尽量避免对任务网络中关键路径上的任务进行调整;

步骤4:根据优化后的任务网络tn生成生产计划。

附图说明

图1为本发明主要步骤示意图;

图2为基础表单结构及相互关系图;

图3为任务网络分解过程图;

图4为基于关键路径法的tn动态调整方法流程面;

图5.1和图5.2为生产负荷平衡收敛曲线图;

图6.1和6.2为各周计划任务超负荷量分析图。

具体实施方式

如图2所示,本实施例车间生产数据库包含以下基础表单,产品结构树表、工作中心信息表、设备信息表、零部件信息表、工艺信息表和工序步骤表。这些表单中字段中包含了反映生产特征的信息,如产品结构、工艺过程和设备数量等,为制定中短期生产计划的必要信息。

表1-表6为某航天产品生产企业中各表单示例,其中:物料清单(表1)中结构树编号字段用于定义给定零部件在结构树中的所处的位置,由此可知任意两个零部件之间的层级和数量关系。工作中心表(表2)和设备信息表(表3)给出了各工作中心包含的设备和资源的数量为工作中心信息,以及各加工设备的编号和设备状态。可从零部件信息表(表4)和工艺单(表5)中获知各零部件是否为外购零部件以及各零部件生产的批量、当前的库存和单件生产所需要的时间。工序表单(表6)给出了每道工序所需的加工时间和可加工的设备序列。

表1

表2

表3

表4

表5

表6

表7给出了所需完成的成品生产任务,为了从多角度评价方法的效果,给出了两个成品生产任务作业实际作业的两种情况。一种是两种生产任务没有生产重叠的情形,对应情形1;另外一种是两种生产任务有生产重叠的情形,对应情形2。

表7

如图1所示,对于该实例,基于htn和cpm的生产计划方法包括以下步骤:

步骤1:建立车间生产计划问题模型,该问题模型基于htn规划方法的逻辑语言体系描述。

生产计划问题具体为一个四元组p=(s0,tn,d,ts),其中:s0表示初始状态,tn表示任务网络,d为领域知识,包含了方法的集合和操作符集合,操作符描述了完成任务所需的前提条件,方法以“处方”的形式描述了如何将非原子任务分解成更小子任务,包括分解前提条件和子任务集合,ts为生成的规划期内操作任务集合。

下面是对各个元组的详细描述:

s0为一个二元组,状态信息具体为s0=(partinfo,wcinfo),其描述了在进行初始规划时生产环境的状态。

partinfo为各零部件初始库存信息的集合,即partinfo={(partname1,inventory),(partname2,inventory),...,(partnamej,inventory)},其中:partname为零部件名称,inventory为初始库存量。

wcinfo为各工作中心的日生产能力信息集合,为wcinfo={(wcname1,mc11,...,mc1n1,),...,(wcnamei,mci1,,...,mcini),...,(wcnamei,mci1,,...,mcini)},其中:wcnamei为第i个工作中心的标识名称,其中:mcij(j∈[1,ni])为一个两元组,表示第i个工作中心中第j台设备的日生产能力信息,为mcij=(machinenameij,mcij),其中:machinenameij为机器名称,mcij为设备的日生产能力;

tn为任务的集合,为一个一元组tn=(t)。

t表示tn中的任务。t可用t=(no,fno,partname,bn,outsourcing,q,rt,bt,ft,atisfn,isda)表示,no用来唯一标识任务,fno为成品任务编号,partname为任务名,bn表示结构树编号,outsourcing为一个布尔型的值,表示是否为需要外购的零部件,q为需求生产量,rt为需求完成时间,bt为最晚开始生产时间,ft为最早开始生产时间,at为指定开始生产时间,isda是一个布尔型变量,表示该任务是否已分解;

d具体为一个二元组d=(o,m)。

o为有限操作集,表示为o=(info),其包含了用于执行任务的工艺信息,info=(no,partname,batch,pt,process),partname表示操作执行的对象,以零部件名称标识,batch为生产批量,pt为单件加工时间,process为零部件的生产工序步骤集合,记为process={(step_no1,stepname1,am1,st1),,,(step_nos,stepnames,ams,sts),,,(step_nos,stepnames,ams,sts)},其中:step_nos、stepnames、ams和sts分别表示第s步工序的步数、名称、可用设备序列和工序作业时间。

m为有限方法集,一个方法是一个二元组m=(head(m),tn(m)),其中:head(m)表示方法可以求解的复合任务,为head(m)=(no,partname,bn),其中:bn表示结构树编号;tn(m)=(tm,cm)表示方法m分解复合任务head(m)得到任务网络。可依据物料清单表生成m。

ts为生成的生产任务集合,ts中每个任务t为t=(no,fno,partname,bn,outsourcing,q,,rt,at,isda)。

决策目标为最小化产能差异,目标函数具体为:其中:td为总天数,load(mij,k)表示天k在设备mij上的工作量总和,有

应满足下面三类约束为:

1)对任意任务ti和tj,加工时间分别为pt(ti)和pt(tj),若fnoi=fnoj,且bni为bnj的子节点(即bni为bnj的组成零件),有ati+pt(ti)≤atj。该类约束表示任务的安排应依照各零部件之间的装配关系。

2)对任意t中任意工序step_noi,分配的设备m∈ami,且最多分配到一个设备上。

3)ts中任意t的q应满足q=batch(t),批量匹配。

表8给出为模型变量与数据表及表字段的映射关系,利用这些映射关系可基于数据库中的基础数据对模型进行实例化。

表8

步骤2:任务网络tn分解。图3为任务网络分解流程图,它的主要思想是将复合任务不断的分解为子任务,直至满足结束条件。

步骤2.1:whiletn中任一任务t为非原子任务且isda=false{

步骤2.2:当d中方法集m中存在可分解t的方法m,将分解后任务集合ts_tmp加入tn;

步骤2.3:将t的isda标记为true};

步骤3:基于关键路径法对tn进行动态调整优化。结合图4,具体步骤为:

步骤3.1:利用倒推法依据tn中各任务的从属关系确定各任务最晚生产时间bt,再利用前推法确定tn中各任务的最早开始生产时间ft,并用bt初始化各任务的分配生产时间at;

步骤3.2:以bt-ft<β作为判断条件,若满足则为关键路径上任务,反之则为非关键路径上任务,据此将tn中任务划分为两个集合:关键路径任务集合cp,非关键路径任务集合ucp;

步骤3.3:依次遍历ucp中各任务,对当前扫描到任务ucp(i)产生随机数指定搜索方向和搜索区间,搜索方向和搜索区间的指定方式具体为:以步长step1搜索,对任务ucp(i)从区间itv中找出能最小化sl的点p,其中:sl为超负荷量之和,sl的计算方法由式(3)给出。然后设置指定开始生产时间at等于最小化超负荷量之和的点p并更新sl,然后采用深度优先遍历法依次更新ucp(i)的子树中的各任务的指定开始生产时间at。

步骤3.4:若满足结束条件std(m)<0.05,则输出优化后了任务网络tn,其中:std(m)为邻近m次迭代结果sl离散程度的度量值,即

步骤3.5:判断是否遍历完成ucp,若未遍历完成,则跳至步骤3.3;

步骤3.6:判断邻近两次遍历是否对sl造成改变,若sl有改变,跳至步骤3.3;

步骤3.7:遍历cp中各任务,选出bt和at向前预调整step2后能最小化sl的任务作为调整任务,对任务网络tn调整与更新,若满足结束条件std(m)<0.05则执行步骤3.8,反之跳至步骤3.2;

步骤3.8:输出tn。

步骤4:生成生产计划。因tn中包含自产零部件和外购零部件,自产零部件因体积大、生产周期长,采用按需生产的方式,而外购零部件则需按批量订购。故生产计划可分为自产零部件的生产计划以及为保证生产正常进行的零部件外购计划。具体步骤为:

步骤4.1:fortn中任务t:用outsourcing变量来区分t,当outsourcing=true,将t加入临时任务序列ts2,反之将t加入ts1;

步骤4.2:有set_tmp={},ts2’={};

步骤4.3:forts2中任务t,且

步骤4.4:将t加入set_tmp,获取t的初始库存inventory,以及at;

步骤4.5:forts2中任务t1{

步骤4.6:ift1的at1>at:{

步骤4.7:inventory=inventory-q1;

步骤4.8:ifinventory≤0:{以o中给定batch将t加入ts2’,订货时点=at1-t的提前期;inventory=inventory+batch;at=at1}}}}。

对本实例,算法中参数取值为:β=12.0,step1=6.0,step2=6.0,m=15。

表9给出的是两种方法的总超过负载量的对比。首先从表中sl指标对比可知,提出方法对于mrp排出计划生产负荷不均的情况进行有效优化,并且最终达到或者接近于产能均衡的状态。图5.1和图5.2给出为针对两种计划情形进行优化求解并逐渐收敛的过程,结合图5.1和图5.2可知,提出方法在前期收敛较快,而在中期随着收敛的变慢会出现几次断崖式下跌的过程,这是因为首先是对非关键路径上的任务进行调整,而当非关键路径上的任务都优化完毕后,会选择关键路径上的任务进行调整改变任务网络结构,因此会出现进一次的优化迭代过程,而随着后期总体任务网络结构都达到较优状态时,这时调整关键路径上的任务因造成任务网络结构的变化,故出现波动的过程,随后随着任务网络的调整,其又恢复到较优状态。由该图可知,提出的htn-cpm算法能够有效针对任务分配不均的情况进行优化,而且对于自身的扰动具备适应能力。

表9

在表9中发现htn-cpm优化调整后的生产计划的总周数相对于mrp给出的原始计划生产周期变长,结合图6.1和图6.2给出的两种方法每周计划任务超负荷量分析图,图6.1、图6.2分别对应情形1、情形2,可知在图6.1和图6.2中mrp给出的生产计划集中在某个连续的时间区间,并且在该时间区间内存在大幅超过周生产能力的情况,如在图6.1区间[5,11]和区间[25,31],图6.2区间[4,18],而本发明提出方法htn-cpm在mrp生产计划的时间区间外存在少量超出负荷量的情况,如在图6.1第2周、第22周和24周,这是因为htn-cpm算法首先在mrp给定的周期内进行调整,而当任务量超过生产能力而在该区间内难以进一步优化时,则会向前延长时间区间,也即算法中的调整关键路径的操作,因此,会使得生产计划时间区间小幅延长。图6.2同样相对于mrp给出计划,htn-cpm给出计划期延长了3周,使得超负荷量显著降低。因此,htn-cpm算法给出的计划相对于mrp的计划具有显著的优势,大幅度的降低了生产计划区间内的超出负荷量,可达到指定的优化目标。

上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1