首页> 中国专利> 考虑费用和时间双目标的柔性综合调度方法

考虑费用和时间双目标的柔性综合调度方法

摘要

考虑费用和时间双目标的柔性综合调度方法。柔性综合调度定义为:加工工艺图具有树形结构特征的复杂单产品,其工序节点可以在设备资源中的一台或多台设备上加工(加工时间和费用可以不相同)。目前柔性综合调度方法只考虑产品完工时间这一单目标,导致产品生产成本有时过高。本发明方法包括如下步骤:采用分层双目标优化模型,第1层次只考虑时间,即缩短产品完工时间,第2层次只考虑费用,即降低加工总费用,通过采用设备累计时间平衡策略优化柔性综合调度第1层次目标,采用木桶原理中的短板思想实现柔性综合调度第2层次目标,所述的采用分层双目标优化模型包括如下步骤:初始化综合调度任务所有工序节点的属性数据,进行工序节点排序;工序节点设备分配。本发明用于考虑费用和时间双目标的柔性综合调度。

著录项

  • 公开/公告号CN104635709A

    专利类型发明专利

  • 公开/公告日2015-05-20

    原文格式PDF

  • 申请/专利权人 哈尔滨理工大学;

    申请/专利号CN201510084152.9

  • 发明设计人 谢志强;夏迎春;

    申请日2015-02-16

  • 分类号G05B19/418;

  • 代理机构哈尔滨东方专利事务所;

  • 代理人陈晓光

  • 地址 150080 黑龙江省哈尔滨市学府路52号

  • 入库时间 2023-12-18 08:59:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-05-03

    授权

    授权

  • 2015-10-07

    实质审查的生效 IPC(主分类):G05B19/418 申请日:20150216

    实质审查的生效

  • 2015-05-20

    公开

    公开

说明书

技术领域:

本发明涉及一种考虑费用和时间双目标的柔性综合调度方法。

背景技术:

柔性综合调度定义为:加工工艺图具有树形结构特征的复杂单产品,其工序节点可以在设备资源中的一台或多台设备上加工(加工时间和费用可以不相同)。目前柔性综合调度方法分为两大类,一类是先确定所有工序的加工设备,而后将问题转化为加工设备唯一的一般综合调度问题处理;另一类是逐步确定各个工序的加工设备和其加工时间。

目前柔性综合调度方法只考虑产品完工时间这一单目标,导致产品生产成本有时过高。

发明内容:

本发明的目的是为了解决目前柔性综合调度方法只考虑产品完工时间这一单目标,导致产品生产成本过高的问题,提供一种考虑费用和时间双目标的柔性综合调度方法。

考虑费用和时间双目标的柔性综合调度方法。

上述的目的通过以下的技术方案实现:

一种考虑费用和时间双目标的柔性综合调度方法,采用分层双目标优化模型,第1层次只考虑时间,即缩短产品完工时间,第2层次只考虑费用,即降低加工总费用,通过采用设备累计时间平衡策略优化柔性综合调度第1层次目标,采用木桶原理中的短板思想实现柔性综合调度第2层次目标,所述的采用分层双目标优化模型包括如下步骤:初始化综合调度任务所有工序节点的属性数据,进行工序节点排序;工序节点设备分配.。

所述的考虑费用和时间双目标的柔性综合调度方法,所述的初始化综合调度任务所有工序节点的属性数据:综合调度任务为m台设备n个工序,用P表示工序的编号,用D表示工序的加工设备信息集,元素D是对象,D.size表示工序可以在D.size台设备上加工,D.get(j)表示工序可以在D.get(j)号设备上加工,工序在D.get(j)号设备上的加工时间、工费分别是D.get(j).time、D.get(j).cost;用N表示P的紧后工序;

.首先录入所有工序节点的P, D, N属性,然后初始化工序节点的其它属性,区间加工时长属性span、层属性layer、区间路径属性path、紧前工序个数count、节点集编号solo、头部标志位head;

(2)所述的工序节点排序:根据初始化的工序属性依次采用层、区间路径、区间时长三条规则来确定工序之间的排序,最后将排好序的工序编号存入数组sort[];

(3)所述的工序节点设备分配:针对工序开始时间受其多个紧前工序中最晚结束工序的影响,对不同的工序采用木桶原理中的短板思想和设备累计时间平衡策略进行工序的设备分配。

所述的考虑费用和时间双目标的柔性综合调度方法,通过采用设备累计时间平衡策略优化柔性综合调度第1层次目标包括如下步骤:

步骤1:建立加工工艺树类Tree,建立工序节点类Node, Node的类变量P, D, N, span, layer, path, count, solo, head, sTime, eTime, endDev分别表示工序编号、工序加工设备信息集、紧后工序、区间时长、层、区间路径、紧前工序个数、节点集编号、头部标志位、在选定设备上的加工开始时刻、在选定设备上的加工结束时刻、选定的加工设备;4. Tree的类变量数组Nodes[],用来存放所有工序节点,类型是Node,Tree的类变量R, maxL, sort[]分别用来存放根节点、工艺树层数、工序排序数组;

步骤2:输入调度任务的n个工序节点数据P, D, N,将n个工序节点按编号顺序存入Tree.Nodes;其中,N是P的紧后工序,即工艺树中边的指向是P号节点指向N号节点;

步骤3:初始化工序节点的区间时长属性span,遍历Tree.Nodes,工序Nodes[i]的区间时长属性下限Nodes[i].span.low等于该工序加工设备信息集Nodes[i].D中加工时间最小的时间;工序的区间时长属性上限span.up等于该工序加工设备信息集D中加工时间最大的时间;

步骤4:初始化工序节点的层次属性layer、区间路径属性path,规定根节点R.layer=1,R.path=R.span;按层推进,1层只有根节点,那么所有以1层工序为紧后工序的工序节点,其层属性等于1+1=2,区间路径等于自身区时长径加上各自紧后工序的区间路径,重复以上直到某层中的工序都没有紧前工序,记录该层为maxL;

步骤5:初始化工序节点的孩子个数count属性,遍历Tree.Nodes,Nodes[i].count等于Nodes[i]的紧前工序个数;

步骤6:初始化工序节点的节点集solo属性,遍历Tree.Nodes,查找紧前工序数大于1的节点,这样的节点个数等于节点集的数量,将这些节点的紧前工序编为对应的节点集;其它节点solo=0;

步骤7:初始化工序节点的头部标志head属性,遍历各个节点集,查找各个节点集内部区间加工时长下限最大的工序,将之头部标志位标志为true;节点集其它节点标志为false;

步骤8:获取排序数组sort,首先按层属性排列,层属性大者级别高;若层相同,区间路径中点大者级别高;若区间路径中点相同,区间路径宽度大者级别高;若区间宽度相同,区间时长中点大者级别高;若区间时长中点相同,区间时长宽度大者级别高;

步骤9:主循环体,i=0,所有设备的cumulate=0;

步骤10:检查工序sort[i]的节点集solo属性,若为0转步骤11,若大于0,检查工序sort[i]的头部属性,若为true转步骤11,若为false转步骤12;

步骤11:在工序sort[i]的可加工设备中选择累计时间最少的设备为该节点加工设备;若设备不唯一按sort[i].D中最短用时确定加工设备;若设备不唯一,按sort[i].D中费用最少原则确定工序sort[i]的加工设备,转步骤14;

步骤12:检查工序sort[i]的节点集solo属性,找出这个节点集的全部已经调度完毕工序所使用的设备存入集合iDev,设nowJ为该节点集的头部节点则iTime=nowJ.span.low;遍历工序sort[i]的加工设备信息集sort[i].D,按加工费用从小到大排序,将排好序的设备号存入dev中,若不能确定顺序按加工时长小者排列在前;遍历dev,选择第一个加工时长小于iTime且设备号不同于iDev的设备为sort[i]的加工设备;若sort[i].D中存在这样的设备转步骤14,若不存在则转步骤13;

步骤13:在工序sort[i]的加工设备信息集sort[i].D中为其选择这样一个设备,在该设备上的加工时间nTime和其它设备相比使最小;

步骤14:在甘特图中查找第一个可以容纳该工序的空间,将sort[i]调度到该空间中,调整相应设备的设备累计时间,即将这次的加工时间累加到相应设备的累计时间变量cumulate中;累计此次加工费用;检查i是数组sort的末尾否,若是末尾则转步骤15,若不是末尾则i++,转步骤10;步骤15:调度结束;步骤16:输出调度结果甘特图。

所述的考虑费用和时间双目标的柔性综合调度方法,所述的工序节点排序模块,区间路径和区间时长是区间数,按区间数中点比较法确定大小,中点相同按区间宽度确定大小。

所述的考虑费用和时间双目标的柔性综合调度方法,所述的工序节点设备分配模块中,应用木桶原理中的短板思想用来确定节点集中非头部节点工序的加工设备。

所述的考虑费用和时间双目标的柔性综合调度方法,所述的工序节点设备分配模块,设备累计时间平衡策略用于确定孤立节点和头部节点工序的加工设备。

有益效果:

1. 本发明同时考虑了柔性综合调度中的费用和时间因素:以往综合调度算法只有单一完工时间。本发明采用设备累计时间平衡策略优化加工时间;应用木桶原理中的短板思想优化加工费用。以上两个策略使得本发明可以解决考虑费用和时间双目标的柔性综合调度问题。

本发明首次在柔性综合调度中引入区间数:区间数能够从加工工艺树整体的角度表示工序节点这项数据上的改进的空间,采用区间数是从整体上考虑完工时间和费用,可使得调度结果具有更加优秀。

附图说明:

附图1是本发明的结构示意图。

附图2是附图1中初始化工序属性过程图。

附图3是附图1中工序排序过程图。

附图4是附图1中设备分配过程图。

附图5是本发明的加工任务图示例。

附图6是本发明针对附图5所示任务图示例的调度结果甘特图。

附图7是现有技术对附图5所示任务图示例的调度结果甘特图。

具体实施方式:

实施例1:

一种考虑费用和时间双目标的柔性综合调度方法,该方法包括如下步骤:

采用分层双目标优化模型,第1层次只考虑时间,即缩短产品完工时间,第2层次只考虑费用,即降低加工总费用,然后进行综合调度。

所述的进行综合调度的方法主要包括如下步骤:初始化综合调度任务所有工序节点的属性数据模块。综合调度任务为m台设备n个工序,用P表示工序的编号。用D表示工序的加工设备信息集(元素D是对象,D.size表示工序可以在D.size台设备上加工。D.get(j)表示工序可以在D.get(j)号设备上加工,工序在D.get(j)号设备上的加工时间、工费分别是D.get(j).timeD.get(j).cost);用N表示P的紧后工序。首先录入所有工序节点的P, D, N属性,然后初始化工序节点的其它属性,区间加工时长属性span、层属性layer、区间路径属性path、紧前工序个数count、节点集编号solo、头部标志位head。工序节点排序模块,根据初始化的工序属性依次采用层、区间路径、区间时长三条规则来确定工序之间的排序,最后将排好序的工序编号存入数组sort[]。工序节点设备分配模块,针对工序开始时间受其多个紧前工序中最晚结束工序的影响,对不同的工序采用木桶原理中的短板思想和设备累计时间平衡策略进行工序的设备分配。

实施例2:

考虑费用和时间双目标的柔性综合调度方法,所述的调度方法具体实施步骤如下:

步骤1:建立加工工艺树类Tree,建立工序节点类Node Node的类变量P, D, N, span, layer, path, count, solo, head, sTime, eTime, endDev分别表示工序编号、工序加工设备信息集、紧后工序、区间时长、层、区间路径、紧前工序个数、节点集编号、头部标志位、在选定设备上的加工开始时刻、在选定设备上的加工结束时刻、选定的加工设备。Tree的类变量数组Nodes[],用来存放所有工序节点,类型是NodeTree的类变量R, maxL, sort[]分别用来存放根节点、工艺树层数、工序排序数组;

步骤2:输入调度任务的n个工序节点数据P, D, N,将n个工序节点按编号顺序存入Tree.Nodes;其中,NP的紧后工序,即工艺树中边的指向是P号节点指向N号节点;

步骤3:初始化工序节点的区间时长属性span,遍历Tree.Nodes,工序Nodes[i]的区间时长属性下限Nodes[i].span.low等于该工序加工设备信息集Nodes[i].D中加工时间最小的时间;工序的区间时长属性上限span.up等于该工序加工设备信息集D中加工时间最大的时间;

步骤4:初始化工序节点的层次属性layer、区间路径属性path,规定根节点R.layer=1R.path=R.span;按层推进,1层只有根节点,那么所有以1层工序为紧后工序的工序节点,其层属性等于1+1=2,区间路径等于自身区时长径加上各自紧后工序的区间路径,重复以上直到某层中的工序都没有紧前工序,记录该层为maxL

步骤5:初始化工序节点的孩子个数count属性,遍历Tree.NodesNodes[i].count等于Nodes[i]的紧前工序个数;

步骤6:初始化工序节点的节点集solo属性,遍历Tree.Nodes,查找紧前工序数大于1的节点,这样的节点个数等于节点集的数量,将这些节点的紧前工序编为对应的节点集;其它节点solo=0;

步骤7:初始化工序节点的头部标志head属性,遍历各个节点集,查找各个节点集内部区间加工时长下限最大的工序,将之头部标志位标志为true;节点集其它节点标志为false

步骤8:获取排序数组sort,首先按层属性排列,层属性大者级别高;若层相同,区间路径中点大者级别高;若区间路径中点相同,区间路径宽度大者级别高;若区间宽度相同,区间时长中点大者级别高;若区间时长中点相同,区间时长宽度大者级别高;

步骤9:主循环体,i=0,所有设备的cumulate=0;

步骤10:检查工序sort[i]的节点集solo属性,若为0转步骤11,若大于0,检查工序sort[i]的头部属性,若为true转步骤11,若为false转步骤12;

步骤11:在工序sort[i]的可加工设备中选择累计时间最少的设备为该节点加工设备;若设备不唯一按sort[i].D中最短用时确定加工设备;若设备不唯一,按sort[i].D费用最少原则确定工序sort[i]的加工设备,转步骤14;

步骤12:检查工序sort[i]的节点集solo属性,找出这个节点集的全部已经调度完毕工序所使用的设备存入集合iDev,设nowJ为该节点集的头部节点则iTime=nowJ.span.low;遍历工序sort[i]的加工设备信息集sort[i].D,按加工费用从小到大排序,将排好序的设备号存入dev中,若不能确定顺序按加工时长小者排列在前;遍历dev,选择第一个加工时长小于iTime且设备号不同于iDev的设备为sort[i]的加工设备;若sort[i].D中存在这样的设备转步骤14,若不存在则转步骤13;

步骤13:在工序sort[i]的加工设备信息集sort[i].D中为其选择这样一个设备,在该设备上的加工时间nTime和其它设备相比使最小;

步骤14:在甘特图中查找第一个可以容纳该工序的空间,将sort[i]调度到该空间中,调整相应设备的设备累计时间,即将这次的加工时间累加到相应设备的累计时间变量cumulate中;累计此次加工费用;检查i是数组sort的末尾否,若是末尾则转步骤15,若不是末尾则i++,转步骤10;

步骤15:调度结束;

步骤16:输出调度结果甘特图。

实施例3:

上述的考虑费用和时间双目标的柔性综合调度方法,所述的工序节点数据初始化模块,区间路径和区间时长是区间数,按区间数中点比较法确定大小,中点相同按区间宽度确定大小。属性的区间运算按区间数加减法规则进行。

上述的考虑费用和时间双目标的柔性综合调度方法,所述的工序节点排序模块中区间路径和区间时长是区间数,按区间数中点比较法确定大小,中点相同按区间宽度确定大小。

上述的考虑费用和时间双目标的柔性综合调度方法,所述的工序节点设备分配模块中,应用木桶原理中的短板思想确定节点集中非头部节点工序的加工设备;采用设备累计时间平衡策略确定孤立节点和头部节点工序的加工设备。

实施例4:

上述的考虑费用和时间双目标的柔性综合调度方法,区间数据初始化处理模块:

采用面向对象的方法,加工工艺树树类TreeTree类变量有Nodes[],类型是Node,存储所有工序节点;maxL,表示Tree的最大层数;sort[],表示工序排序数组。

 Node类是工序节点类,类变量P,表示工序的编号;layer,表示工序在Tree中的层位置;path,类型是Interval(区间数),表示工序的区间路径长度;endDev表示选定的加工设备;sTimeeTime,分别表示工序在选定设备上的开始加工时间、结束加工时间;N表示工序的紧后工序编号;D表示工序的加工设备信息集;count表示工序节点的紧前工序个数;solohead,工序所属的节点集编号(节点集为0表示该工序为孤立节点)、头部标志(布尔值,为真表示是头部节点,为假表示非头部节点)。其中PDN需要用户录入。

实施例5:

上述的考虑费用和时间双目标的柔性综合调度方法,工序排序处理模块:

由于复杂产品调度任务完工时间受纵向约束,即关键路径是调度任务完工时间的下限,可以通过优先排列关键路径上的工序来纵向优化任务完成时间。故本发明在设计工序排序处理模块时,采用按区间路径数据排列工序。

获取排序数组sort,首先按层属性排列,层属性大者级别高;若层相同,区间路径中点大者级别高;若区间路径中点相同,区间路径宽度大者级别高;若区间宽度相同,区间时长中点大者级别高;若区间时长中点相同,区间时长宽度大者级别高。最后将排好序的工序编号存入数组sort

实施例6:

上述的考虑费用和时间双目标的柔性综合调度方法,设备分配处理模块:

按照分层双目标优化模型,对于孤立节点、头部节点采用设备累计时间平衡策略优化第1层次目标的产品完工时间。另一类工序是非头部节点工序,由于该类工序类比为木桶原理的短板,所以对该类工序应用木桶原理短板思想选择低费用的设备,优化第2层次目标的加工总费用。

实施例7:

上述的考虑费用和时间双目标的柔性综合调度方法,本技术主要针对加工工艺图具有树形结构的复杂产品的柔性综合调度任务,通常采用加工工艺树图来表示,调度目标是在满足约束条件的情况下为工序在甘特图中确定位置,以使该可行调度的双目标尽量好(费用少、完工时间短)。如附图5所示,每个工序节点第一个灰色字表示工序节点的编号;每个斜杠分隔的数据分别是该节点在不同设备上加工的数据;逗号分隔的数据分别是加工设备号、在该设备上加工时间、在该设备上加工费用。加工工艺树图能够清晰明了地表示加工任务节点之间的关系。

整个任务图由根节点和根节点的子孙节点构成。在综合调度中,加工树边的指向意义:被指向节点是出发节点的紧后工序,也叫父节点工序;反之可以认为出发节点是被指向节点的紧前工序,也叫孩子节点。

实施例8:

上述的考虑费用和时间双目标的柔性综合调度方法,如附图5所示,13号工序称为根节点,也叫做R节点,它可以在4号设备上加工,加工时间是10工时,加工费用10个单位。1号工序的区间加工时长为(7, 9),区间路径长度是工序1, 4, 6, 13序列的区间加工时长的总和。加工工艺图树中工序节点的属性按初始化模块进行初始化,可得到由区间数据表示的部分属性数据如表1所示。

表1由区间数据表示的部分属性数据

 

根据工序排序模块得数组sort={2, 1, 11, 9, 4, 7, 8, 3, 12, 6, 10, 5, 13},节点集有3个分别为soloSet1={1, 2}、soloSet2={7, 8, 9}、 soloSet3={5, 6, 10, 12},他们的头部节点分别为2, 9, 12。

附图5所示的任务示例有4台设备,调度开始时刻,每台设备的累计时间都为0。2号工序节点是头部节点,在其可加工设备集中选择设备累计时间最短的设备。但是初始时刻cumulate={0, 0, 0, 0},那么在2号工序节点的可加工设备集中选择加工时间最短的设备为D4。在甘特图中为2号工序节点找到它的所有紧前工序之后的第一个可以容纳它的空隙,得{sTime, eTime, endDev}{0, 8, 4},累积费用7,cumulate={0, 0, 0, 8}。

号工序是节点集1的非头部节点,和1号同节点集的已调度工序是2,头部节点也是2号工序,所以iTime=8、iDev={4}。1号工序的可加工设备按加工费用由小到大依次排序组成集合dev={D3, D2, D1},按从前到后的顺序遍历dev,第一个设备号不等于iDev且使1号工序加工时长不大于iTime的设备是D2,所以1号工序选择D2为其加工设备。得{sTime, eTime, endDev}{0, 8, 2}、累积费用17、cumulate={0, 8, 0, 8}。

号工序节点集属性是0,所以它是孤立节点,遍历11号工序的可加工设备,选择设备累计时间最短的设备,由于D1,D3累计时间都为0,所以选择加工时间最短的加工设备D1。得{sTime, eTime, endDev}{0, 10, 1}、累积费用24、cumulate={10, 8, 0, 8}。按上述过程重复对sort中所有工序分配设备,得工序调度信息,如表2所示。

表2工序调度信息表

根据表2绘制甘特图,如附图6所示任务完工时间40工时,总费用152个单位。调度过程结束。

实施例9:

上述的动态分配设备的双目标复杂产品调度方法,实例对比:

由于现有柔性综合调度算法还没有考虑加工费用,不能对附图5所示的任务示例直接进行调度,因此只能将附图5中的任务示例去除加工费用再采用现有较为优秀算法(如,基于设备驱动和实质路径的动态并行综合柔性调度算法)进行调度,得46工时,得甘特图如附图7所示(事后人工计算费用为154个单位)。

因此,本发明是全新的方法,用于加工工艺图具有树形结构特征的复杂产品考虑费用和时间两目标的柔性综合调度任务。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号