- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
启发式规则调度
在一定的约束条件下,针对某项可以分解的工作:如何安排其组成部分所占用的资源、加工时间及先后顺序,以获得产品加工时间或成本最优。
影响调度问题的因素:产品的投产期、交货期、生产能力、加工顺序、加工设备和原材料的可用性、批量大小、加工路径、成本限制等。这些都是约束条件。有些约束条件是必须满足的,如交货期,生产能力而有些是达到一定的满意程度即可,如生产成本。
启发式规则算法最大的优点为就算复杂度低,能较好的应用于动态实时调度和复杂大规模调度问题。不同的调度规则具有不同的全局敏感性,所以不同的调度规则产生不同的调度方案。
启发式规则的分类:
启发式规则用于选择下一道在当前空闲机器上将进行加工的工序。
以n个工件m台机器的车间作业计划问题为例,提出车间作业计划问题的求解算法,提出启发式调度规则。
一般的规定:
工件集J: J={ J,J,…J},其中J代表第i个工件;
机器集M:M={M,M…M,…M},其中M代表第K台机器;
工序集O:O={O,O,…O…O},其中O表示工件J的所有工序的集合,表示如下:O={O,O…O…O},其中O表示工件J的第j到工序,n为工件J的工序总数;
P:工序O的加工时间,i=1,2,…,n,j=1,2,…,n;
R:工件J的到达时间;
R:工件J到达机器M的时间;
t:当前时间,即进行调度决策的时刻;
d:工件J的交货期;
M:工件J的加工机器;
Z :加工的优先级;
由于调度规则的性能受到各种参数(如:车间机器的利用率、交货期等)的影响,目前尚无任何一个调度规则能够在任意的车间调度问题中表现出良好的性能。不同的调度规则针对不同的车间性能表现出较好的调度效果。
常用的启发式调度规则有一下几种:
先到先加工的规则:它是根据任务到达的先后顺序进行安排加工的。那么在编程的时候它的优先级Z=R(其中R为工件J到达的时间);
FIFO规则(first in,first out):工件到达时间越早越优先,这个规则是针对不同的或同一批零件,在加工同一道工序用同一台机器加工的时候,哪个工件先到达机器,哪个先加工。在编程时它的优先级Z=R;
加工时间长短的规则:工件在系统中呆的时间越长或越短越优先的规则,在此规则中它的优先级为Z=t- R(如果在t时刻进行调度的话);
加工工时越短越优先的规则:也就是工件J在第j到工序的时候如果有多台机器都能进行加工选择加工时间最短的那台机器进行加工的规则,它的优先级Z =p
工件剩余工序的加工工时越长越优先的规则:在不同的零件进行加工时,如果没有交货期的限制,优先加工用时较长的。它的优先级为Z =;
松弛时间越小越优先的规则:所谓松弛时间就是指当前时间t距离交货期的剩余时间与该项任务的加工时间的差。这是一个基于交货时期的规则,在编程时它的优先级为Z= d-t-;
LPT/SPT规则(longest/shortest processing time):加工工时越长或越短越优先的规则。在几种工件同时加工的过程中将每道工序的用时都列举出来,在选择加工哪个工件时依据这道工序的加工时间的长短安排先后顺序。它的优先数位Z=P
EDD规则(earliest due-date):此规则可表示为“工件的交货期越早越优先”,显然又是基于交货期的规则,则它的调度优先数为Z= d
9、ODD规则(operation due-date):工件的完工时间与交货期之间差值越小越优先的规则,其实就是规则6中当t=0时的情况,即在工件的加工伊始就开始调度的情况。它的优先数为Z=d- ;
10、等待时间越短越优先的规则:即为下一工序等待的时间越短就越优先加工,这是基于车间状况的规则。设工件O当前等待加工的工序为O,在调度时刻t工件J的优先数为Z=s-t;s为工件O在第j到工序的开始时间,t为上道工序的结束时间。
11、加工过程中等待时间最短的规则:在整个工件的加工过程中,等待时间越短越先加工的原则。在此规则中的优先数位Z=;
这些单独的规则只能针对与某种情况才能取得较好的调度效果,如果出现多种情况的话就应当把几种规则联合起来进行调度,相应的每种规则的都有一个相对应的优先数,把优先数先找出来就能把程序编出来进行调度。
文档评论(0)