快速调度算法(精选8篇)
快速调度算法 篇1
高速下行分组接入 (HSDPA) 是第三代移动通信系统WCDMA在无线传输方面的一种增强技术[1]。HSDPA系统中, 对无线资源的调度主要是通过快速地自适应调度所发送的数据量以适应用户信道变化来实现的, 从而提高用户设备的平均下行数据传输速率。为提高移动分组数据传输能力, 满足不同种类高速分组数据业务的Qo S要求, 最大化系统的吞吐量, 分组调度器必须选择最大载干比的用户设备传输数据。但这种机制可能会使距离分组调度器最近的用户设备产生信道资源垄断。因为对信道质量好的用户设备设定较高的调度优先级可以提高系统资源利用率;而对信道质量差的用户设备会造成“饿死”现象, 严重降低用户公平性。因此, HSDPA所选用调度算法的性能将对提高平均业务速率和整个系统的整体稳定性起到至关重要的作用。这要求分组调度算法充分考虑到各用户所处环境、信道条件和等待时延等因素。因此, 如何取得系统资源利用率与用户公平性之间的平衡, 就是分组调度算法要解决的一个主要问题。针对上述情况, 各种快速调度算法被提出, 其中包括Max C/I算法、RR算法、Max/Min算法、PF算法、APF算法和M-LWDF算法等[2,4]。但是M-LWDF算法在用户公平性方面存在一定问题, 信道状态较差的用户的数据分组会在基站侧有比较大的时延, 而时延一旦超过预先设定的最大值, 这些分组将会被丢弃。为了降低被丢弃的概率, 提高用户的公平性, 本文对M-LWDF算法优先级规则进行了修改, 使得等待时间较长的用户也有机会被调度。
常用调度算法性能分析
吞吐量和公平性永远是在无线资源分组调度算法的研究中不可回避的两个重要因素。如何平衡这两个重要因素就是分组调度算法要解决的核心问题。当多个业务分组请求服务时, 必须综合考虑各种因素, 确定合理的优先级次序, 安排用户的服务顺序和服务时间, 以满足各种无线应用的优质性能。下面分析一下三种常用的分组调度算法:PF算法、APF算法和M-LWDF算法。
1 PF算法
PF算法就是正比公平算法, 该算法的基本思想是在长时间的通信过程中, 维护各用户之间吞吐量的基本公平, 同时又考虑到每个用户自身通信环境的变化情况, 以此来确定每个用户的优先级。
该算法的用户优先级定义如下:
式中 (C/I) i (t) 指用户i在t时刻的载干比, 而λi (t) 指该用户i的平均吞吐量。当用户i连续通信时, 其λi (t) 必然不断增大, 从而使该用户的优先级变小, 将信道让给其他用户。该算法是一种公平调度算法, 但其主要缺陷是对实时通信业务的适应能力较弱[3,4]。
2 APF算法
APF算法就是自适应比例公平算法, 该算法的基本思想是:为了弥补PF算法在用户信道快速变化时, 造成的公平性缺失, 在原有PF算法基础上, 增加了更新控制模块。该模块随时追踪用户信道变化情况, 不断更新相应控制参数。
该算法的用户优先级定义如下:
式中, Ri (t) 是用户i在t时刻的瞬时速率, 而λi (t) 是该用户的平均吞吐量, Ci是用户i的控制参数。该算法由于增加了一个控制模块, 虽然弥补了PF算法在公平性的上的不足, 但控制参数的更新需要较长的周期, 这就使得系统的整体吞吐量有所降低[4]。
3 M-LWDF算法:
与上述两种算法不同, M-LWDF算法是针对需要高速率支持的无线实时业务而提出的[3,4]。该该算法的基本思想是将分组数据包的时延和如何有效利用信道信息平衡考虑, 其用户优先级的计算不仅和用户当前的信道质量有关, 还和包的队列时延有关。
该算法的用户优先级定义公式如下:
式中δ是用户i的Qo S参数, Ri (n) 是用户i在第n个TTI内的最大数据速率, 而λi是该用户i的平均吞吐量, Di (n) 是用户i所在分组的队列延时, Ti是用户i能容忍的最大时延。该算法在用户吞吐量和用户等待时延之间做了有效的折衷, 即对信道条件好的用户尽可能的提高信道利用率, 又考虑到信道条件差的用户的等待时延, 随着等待时间的加长, 其调度优先级也随之增加。但是对于某些信道条件较差的用户, 其等待时延可能超过用户的最大容忍时间而被丢弃。
改进的调度算法
为了降低被抛弃的概率, 提高用户间公平性, 需要快速提高等待时间较长的数据分组的优先级, 使得信道条件较差的用户拥有被调度的机会。这时上面公式修正为:
式中, 我们将Tmin称之为快速调度时限, 将eMi称之为快速调度因子。快速调度因子的变化规律为, 随着等待时间Di (n) 的不断加长而先快后慢的变化。当用户i所在包的队列延时Di (n) ﹤Tmin时, 取对应的Mi=0, 则e Mi的值将等于1, 那么这时用户i的调度有限级将退化为, 在 (0, Tmin) 时间段内, 通信条件好的用户将得到更多的信道资源, 在一定程度上, 保证了系统原有的吞吐量。当用户i所在包的队列延时Di (n) ≧Tmin时, 则对应的, 当用户i所在包的队列延时Di (n逐渐接近用户i所能容忍的最大时延Ti时, 其对应的的值也就趋向于∞, 那么快速调度因子eMi的数值迅速增大, 使得用户i在第n个TTI的优先级也随之迅速增大, 从而迅速获得信道资源, 避免了信道条件较差的用户长期得不到调度的情况, 保证了系统中拥有良好的公平性。从长时间的通信来看, 信道质量好的用户占用信道的总时间会较长, 在很大程度上保证了整个系统的吞吐量, 信道质量差的用户占用信道的总时间会较短。由于该改进算法照顾到信道条件差的用户占用信道的机会, 必然会在一定程度上降低信道条件好的用户对信道资源的利用率。
4 结论
无线信道的时变特性是HSDPA系统的一个重要特性, 只有充分的考虑到系统的时变特性, 充分利用信道的时变信息, 在保证系统吞吐量的同时, 顾及到用户公平性, 才能获得了理想的整体性能。文中先对几种经典算法的性能进行了分析, 并结合HSDPA系统的特性, 对M-LWDF算法做了改进, 引入了快速调度因子, 在保证系统吞吐量的条件下, 迅速分配信道给信道条件差的用户, 防止这些用户在系统中被丢弃务, 从而提高了系统的公平性。
总之, 随着无线应用日益增多, 如何利用最有效的分组调度算法, 实现HDSPA的高性能, 仍有待于进一步研究。
参考文献
[1]孙华, 甄颖.一种增强WCDMA网络性能的技术:HSDPA[J].电信快报, 2004, 3.
[2]ANDREWS M, KUMARAN K.CDMA DATA QoS Scheduling on the Forward Link with Variable Channel Conditions[R].Bell Labs Tech-nical Memo No.10009626000404-05TM, 2000:1-45
[3]SHAKKOTTAI S, STOLYAR A L.Scheduling Algorithms for a Mixture of Real-time and Non-real-time Data in HDR[R].Proc.of17th International Teletraffic Confgress, (ITC-17) , 2001:173-804.
[4]付军峰.HSDPA中的分组调度算法[EB/OL].http://www.cellphone.eetchina.com/ART_8800411024_2000001.HTM.
快速调度算法 篇2
早期的流水作业调度研究多采用数学规划的方法, 如整数线性规划和分支定界法。此类最优化方法对于大规模的工件调度问题不现实。Johnson提出了一种双机或三机多工件流水作业调度的最优化算法。Johnson算法为后来的多台机器问题的启发式算法提供了基础。从实用的角度来看, 启发式算法因其易于实现、计算复杂度低等原因, 在实际中得到了比较广泛的应用, 并且不断涌现出许多新的调度规则。启发式算法可分为三类:简单规则、复杂规则、启发式规则。启发式算法的缺点是一般不具有全局优化的特点。比较好的启发式算法包括:CDS启发式方法、Palmer启发式方法、快速进入启发式方法 (RA) 和NEH方法等。文章所解决的问题是传统的流水作业调度问题, 目标函数为最小化完工时间。鉴于所涉及的复杂性, 更实际的方法是使用调度规则和启发式算法, 如先入先服务, 后入先服务, 以及快速进入等。笔者改进了快速进入启发式算法以提高原算法的求解质量。
1 快速进入启发式算法
快速进入 (Rapid Access, RA) 启发式方法由Dannenbting在1977年提出, 和其他很多启发式算法相似, RA启发式方法也是受到了Johnson算法的启发。Johnson算法通过下列简单的规则给出了2台机器流水调度的最短生产周期的产品序列。假设有n个工件, 在第一台机器和第二台机器上的加工时间分别为ti1, ti2, i=1, …, n, 其最优调度由下列Johnson规则确定。
如果min{ti1, ti2}≤min{tj2, tj1}, 则将工件i排在工件j之前。直接利用这个规则构造最优调度, 具体步骤为:一是将n个工件分成P和Q两组。分组原则是, P组工件在第二台机器上比在第一台机器上加工时间长的产品, 其余的产品归Q组。二是将P组工件按他们在第一台机器上加工的时间递增顺序排列, 将Q组工件按它们在第二台机器上的加工时间递减顺序排列。三是将P组工件顺序和Q足工件顺序连接在一起, 构成的就是生产周期最短的最优产品顺序。
RA启发式方法用Johnson规则求解一个模拟双机问题, 其工件的虚拟加工时间按下式确定
其中, 权重定义为
例如, 设n=4, m=3, 即4个工作在3台机器上的排序。各工作在各机器上的加工时间见表1。
根据式 (1) 、式 (2) 和权重表达式 (3) 、式 (4) 计算各工作在2台虚拟机上的虚拟加工时间。利用2台虚拟机上的虚拟加工时间用Johnson方法求出排序 (见表2) 。最终的排序结果为工作2→工作1→工作3→工作4。
2 改进的快速进入法
原来的RA启发式方法采用线性加权法构造虚拟机上的工件加工时间, 虽然易于实现但缺乏灵活性。笔者尝试使用非线性加权以提高结果的质量。这个改进算法加强了RA启发式方法中线性权重函数描述的趋势, 同时平衡了不同工序复杂度工件的优先级, 并且通过引入一个可变参数α使得此方法更具灵活性。针对不同具体问题, 通过优化该参数可以对算法质量进行调整和进一步提高。
改进方法使用指数平滑的方法创建两个虚拟机上的处理时间。改进后的权重定义为
使用改进方法求解表1中的调度排序过程和结果见表3。在此例中, 改进算法得到的结果和原算法相同。
3 实验结果及讨论
该实验使用来自文献的12组不同规模的实例测试改进算法的性能, 实验结果同时与原RA算法进行比较。通过比较不同算例的启发式算法结果与文献中已知最优法得到结果的相对差异百分比来评价改进方法和RA方法的性能优劣。
改进方法和RA方法的比较结果见表4。在进行比较的12组实例中, 算法性能结果最大改进率可以达到29.8%, 平均改进率为12.7%。
4 结束语
短作业优先调度算法 篇3
姓名:陈凯
学号:541413430202
地点:四教楼301
指导老师:张旭
专业班级:嵌入式软件14-02
实验名称:短作业优先调度算法
一、实验目的:
测试数据可以随即输入或从文件中读入。必须要考虑到作业的到达时间
最终能够计算每一个作业的周转时间。
二、实验内容:
模拟实现短作业调度算法,具体如下:
设置作业体:作业名,作业的到达时间,服务时间,作业间的链接指针 进程初始化:由用户输入作业名、作业的到达时间和服务时间进行初始化。显示函数:
1、显示当前调度的是哪个作业,后备队列中有哪些作业
2、最终显示每个作业的作业名、到达时间、服务时间、完成时间和周转时间
排序函数:对就已到达的作业按照服务时间进行排序。注意考虑到达时间 调度函数:每次从已到达的作业队列队首调度优一个作业执行。删除函数:作业结束后撤销。
三、实验代码
#include
char name[10];//进程名
floatarrivetime;//到达时间
floatservicetime;//服务时间
floatstarttime;
//开始时间
floatfinishtime;//完成时间 floatzztime;//周转时间 floatdqzztime;
//带权周转时间 };
sjf b[100];
//定义短作业优先算法进程的最大数量 voidSinput(sjf *p,int N)
//输入函数 { int i;
printf(“输入进程的名称、到达时间、服务时间:n”);for(i=0;i<=N-1;i++){
printf(“输入第%d进程的名称、到达时间、服务时间:”,i+1);scanf(“%s%f%f”,&p[i].name,&p[i].arrivetime,&p[i].servicetime);} }
//输出函数 voidSPrint(sjf *p,floatarrivetime,floatservicetime,floatstarttime,floatfinishtime,floatzztime,floatdqzztime,int N){ int k;
printf(“n执行顺序:n”);printf(“%s”,p[0].name);
for(k=1;k { printf(“-%s”,p[k].name);} printf(“n进程名tarrivetservicetstarttfinishtzztdqzzn”); for(k=0;k<=N-1;k++) { printf(“%st%-.2ft%-.2ft%-.2ft%-.2ft%-.2ft%-.2ftnn”,p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime,p[k].zztime,p[k].dqzztime); } } voidSsort(sjf *p,int N) //按短作业优先算法排序 { for(int i=1;i<=N-1;i++)for(int j=1;j<=i;j++) if(p[i].servicetime sjf temp;temp=p[i]; p[i]=p[j]; p[j]=temp;} } //运行结果 voidSdeal(sjf *p, float arrivetime,floatservicetime,floatstarttime,floatfinishtime,float&zztime,float&dqzztime,int N){ int k; for(k=0;k<=N-1;k++) { if(k==0){ p[k].starttime=p[k].arrivetime; p[k].finishtime=p[k].arrivetime+p[k].servicetime; } else { p[k].starttime=p[k-1].finishtime;//开始时间=前一个进程的完成时间 p[k].finishtime=p[k-1].finishtime+p[k].servicetime; //结束时间=前一个进程的完成时间+现在进程的服务时间 } } for(k=0;k<=N-1;k++){ p[k].zztime=p[k].finishtime-p[k].arrivetime; //周转时间=完成时间-到达时间 p[k].dqzztime=p[k].zztime/p[k].servicetime; //带权周转时间=周转时间/服务时间 } } void SJF(sjf *p,int N){ float arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0; Ssort(p,N); Sdeal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); SPrint(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);} void main()//主函数 { int M;printf(“------------短作业优先调度算法-----------n”);printf(“输入作业数:”);scanf(“%d”,&M); Sinput(b,M);SJF(b,M);} 四、实验结果 五、实验总结 配网故障快速复电指的是对于10千伏或者20千伏及以下配电设备发生故障停运后,采取紧急的措施对已经出现的各种故障进行隔离,恢复出现故障区域的供电,并且积极采取相应的措施对故障进行修复和管理,尽快对用户进行供电。出现配网故障的原因有很多,比如发生自然灾害、电网调度运行过程中的操作不当等,都有可能会出现配网故障,使得一些区域出现停电现象,因此一旦发生配网故障,则应该要按照应急管理要求及时启动相关应急预案,并由应急组织机构统一指挥和协调快速复电工作,确保人们的正常用电可以得到满足。 在南方电网公司,配网故障快速复电工作遵循“先复电、后修复”原则,从故障受理、故障诊断、故障定位、故障隔离、故障修复、恢复送电等六个环节全面提升快速复电能力,为客户提供安全、稳定、可靠、优质的电力保障。 2 配网故障快速复电工作策略 2.1 优化配网故障复电管理的流程的概述 对配网故障的修复流程进行优化和管理,对于电力企业的发展有十分重要的意义,尤其是当电力企业的供电出现故障时,一定要及时对配网故障进行处理,优化配网故障复电管理的流程,是电力企业发展过程中的一个必要措施。供电企业的配网故障复电管理工作能否顺利开展,与电力企业调度管理部门所处的工作环境有很大关系。首先,要对调度运行管理工作相关人员的职责以及权限进行明确,对配网故障复电管理的相应流程进行优化,提高客户服务的效率,与此同时还要加强日常供电方案的审批效率的提升,加强各个部门之间的联系,比如对于电力企业而言,加强电力故障修复部门与电网调度运行部门之间的联系,使得配网工程出现故障时,可以第一时间将故障反馈给故障修复部门,故障修复部门能够第一时间采取相应的应对措施进行管理,确保配网故障复电管理在规定的时间范围内完成,同时要进行严格的监督和考核,确保发电、电力输送、电力障碍问题的解决都可以尽快完成。 2.2 配网调度故障快速复电支撑系统的环节 1、故障受理系统。出现故障之后,第一时间要对故障进行受理,使得电力部门能够采取应急方案进行处理,因此,故障受理是一个基础环节,为了实现故障处理的优化,可以对传统的语音接受故障进行改革,加强对智能化系统的应用。在当前的背景下,接线故障受理仍然不能取消,故障受理的接线形式主要包括几个内容,第一,客户可以通过95598呼叫中心报修的故障信息,对于出现的故障问题进行沟通,95598呼叫中心受理客户报障后,快速查询相关信息系统,初步判断报障信息,过滤无效和重复报障信息,立即向急修班组派工处理。第二,调度值班人员发现的设备故障。调度值班人员发现故障后,应该要快速初步判断故障性质、类型、停电设备,迅速向急修班组派工处理,并在5分钟内将停电初步信息传递95598呼叫中心。第三,运行人员在巡视中发现的设备故障。运行人员发现设备故障后,快速初步判断故障性质、类型、停电设备后,5分钟内将停电初步信息传递95598呼叫中心,95598呼叫中心向急修班派工处理。第四,客户直接向配电设备运维部门人员报修的故障信息。在未来的发展过程中可以加强对智能化故障受理系统的研究,一旦出现故障,可以利用计算机对故障进行接受和传递,因此要加强智能化通讯系统的完善。 2、故障诊断以及定位系统。故障受理之后要及时进行故障诊断,急修班组接到调度机构或95598的派工信息后,应快速预判,初步确定故障性质、类型、设备范围,迅速进行故障巡视和处理工作,对于大型复杂急修工作应及时向上级协调增补急修资源进行处理。故障诊断系统的优化和完善,一个重要的过程就是要配备专业化的故障诊断人员,也可以加强对计算机故障诊断系统的研发,利用智能化手段加强故障的准确判断。进行故障诊断的过程中,还需要注意的一个重要内容是故障定位系统的研究。急修人员接受急修任务后,快速响应,快速到达故障现场,急修人员到达故障现场后,应该要快速组织故障查找和故障判断。对故障进行准确的定位后,急修人员立即向派工机构传递初步故障原因、预判复电时间和停电设备。为了优化故障定位流程,需要缩短故障诊断以及定位过程中的时间限制,调度机构应在5分钟内将故障信息传递给95598呼叫中心,以便安排后续工作。 3、故障隔离系统。一旦出现了故障,要及时进行隔离,防止对没有故障的电网部门造成影响,因此故障隔离系统是复电支撑系统中的必要部分,在完善该系统的过程中,可以从两个方面着手,第一可以采用智能化手段,在出现故障的第一以采用人工控制的手段,对于配网调度过程中的故障,急修人员应在调度机构的实时指挥下开展故障隔离操作和恢复非故障段客户供电操作,相关班组根据需要配合开展旁路作业及应急发电相关工作,确定故障隔离、恢复非故障段客户供电方案并及时实施,确保用户可以在最短的时间内继续获得供电。 4、故障修复系统。故障修复是复电过程中的重要步骤,加强故障修复,需要在对故障设备进行隔离之后完成,快速确定现场修复方案,做好安全风险辨识工作,并组织实施。对于大型复杂修复工作,应统一调配人员、车辆、机具、工器具、物资等资源。如需选择带电作业,必须做好现场勘察工作,并履行相应审批手续。 5、恢复送电系统。该系统是复电系统中的最后一步,也是确保居民生活不会受到影响的关键步骤,因此要对恢复送电系统的可靠性和稳定性进行研究,对故障设备进行修复之后,需要恢复故障段客户用电,时效性是该系统的基本要求,急修人员需要在实际复电操作完成后5分钟内将相关信息传递95598呼叫中心,为用户恢复供电。 2.3 加强配网故障复电管理系统的建立与完善 电力企业的配网故障复电管理系统工作中,各项管理制度的建立是一个重要的基础和前提,加强管理制度的建立和完善,有助于定期及时对配网故障问题进行解决,并且可以实现对各种资源的协调和整合,对于人们的配网需求进行分析,同时掌握相应的紧急处理技术,加强各个部门之间的联系。在故障的判断、研究过程中,也可以成立专业化的评审小组,对配网故障进行研究,制定能够解除各种故障问题的根本举措,使得后续的治理工作可以转变成为预防工作,防止出现配网故障,对人们的生活带来影响。配网故障复电管理系统应该要制定完善的问题解决机制,对配网故障复电管理系统工作中的各项内容进行有效的协调,并且将具体的调度运行的责任落实到具体的员工身上,才能保证电力企业的配网故障复电管理工作可以及时、顺利地推进。 3 结语 为了在市场竞争中占据更大的市场份额,电力企业就必须要加强对配网调度运行过程中存在的各种问题的解决,在配网调度过程中有可能会出现各种故障,在配网调度过程中需要对管理制度进行完善,确保各个部门之间可以进行良好的沟通,优化配网调度运行管理的相应流程,对出现的各种故障进行快速恢复管理,以提高配网调度的运行管理水平,确保电力的供给可以实现安全稳定,从而促进电力企业的各项工作可以顺利推进,防止出现配网调度问题。 摘要:电网运行过程中往往会出现各种故障,对此要加强配网调度故障的快速恢复,以保障人民的用电需求。本文对配网调度运行管理过程中出现故障后的快速恢复系统进行分析和研究,旨在提高电力企业的调度运营管理水平。 互联网技术的发展,硬件技术和通信技术的进步共同加快了计算机领域的进步。20世纪80年代出现了并行计算,支持同步的算法、程序和体系结构的开发。随后出现了分布式计算,它要求各个处理机之间能够协同计算,通过处理机间的通信共同解决问题。网格计算技术[1]的发展则迎合了21世纪并行与分布式计算技术的发展趋势,它是以资源共享为目的,支持对可计算资源的远程和并发的访问,用高速网络连接的地理上分布的可计算资源所组成的一个具有单一系统映像的高性能计算和信息服务环境。 网格资源包括计算资源、存储资源和通信资源。对于网格用户而言,它向网格系统提交任务,由网格调度程序按照某种调度策略把用户提交的任务分配给网格系统中的可用资源。如何使这些资源高效地完成计算任务是网格系统的研究重点之一。 由于在网格环境下的任务调度主要考虑的是一组相互独立、任务之间没有通信和数据依赖的元任务(metatask)映射。现有的任务调度算法可以分为在线模式(on-line)和批模式(batch-mode)两种。在线模式是任务一到来就加以映射,而批模式则是把任务收集起来等映射事件到来后才对这些任务进行集中映射。相比而言,批模式得到了大量的资源信息,从而可以做出更合理的任务映射策略。在这里讨论的是批处理模式的任务调度,即调度程序的执行周期到时再集中映射。 以时间跨度(makespan)为优化目标的任务—资源映射是一个NP完全问题,解决这类问题常用启发式算法。经典的批模式算法有Min-min、Max-min、Suffrage、遗传算法、蚁群算法等。T.Braun[3]等人通过对一些常用的算法进行了比较,在一定规模时遗传算法所求出的时间跨度要优于其他算法一些,但随着规模扩大,其收敛性降低[4],因此本文提出了将遗传算法和Min-min算法相结合的改进遗传算法的任务调度优化模型,该算法也适合大规模任务的调度,并进行了仿真实验。 1 问题描述 任务调度问题的实质[2]就是在一个有n个需要调度的任务、m个可用的资源(主机或集群) 的网格环境下,把n个子任务J={J1,J2,…,Jn}以合理的方式调度到m个资源R={R1,R2,…,Rm}上去,目的是得到尽可能小的总执行时间,提高系统吞吐量等。具体描述如下: (1) J是n个需要调度的任务集合,Ji表示第i个任务。每个任务的任务量大小用百万指令(MI)表示,且每个任务只能一个资源上执行完成。 (2) R是m个可用的资源集合,Rj表示第j个资源。每个资源的计算能力用百万指令每秒(MIPS)表示。 (3) n个任务在m个不同资源上的预测执行时间ETC( Expected Time to Compute)是一个n×m的矩阵。矩阵中的每一行代表某一个任务在m台资源上的不同执行时间,每一列代表在同一台资源上n个任务的不同执行时间。ETC(i,j)表示第i个任务在第j个资源上的执行时间。 (4) 资源j的最早可用时间为STARTTIME(j)。 (5) 把任务i所需的数据从存储系统传输到资源j上的传输时间为TRANS(i,j)。 (6) 第i个任务在第j台资源上的预测最小完成时间为MCT(i,j),则MCT(i,j)=STARTTIME(j)+TRANS(i,j)+ETC(i,j)。 (7) 任务i的最小完成时间为Ci,当任务分配给第j个资源时,Ci=MCT(i,j)。 (8) 所有任务都执行完成的时间为时间跨度(makespan),即makespan=Max{Ci,i=1,2,…,n}。 2 设计与实现 遗传算法(GA)是Holland于1975 年受生物进化论的启发而提出的,并行性和全局解空间搜索是GA的两个最显著的特点。网格任务调度问题是一个NP问题,在一定规模时,用遗传算法进行网格任务调度能得到很好的性能。Min-min算法是一种实现起来很简单的算法,算法的执行时间也很快,具有较好的时间跨度。遗传算法随着调度规模的扩大,在一定调度时间限制内,它的收敛性会逐渐降低。因此,本文提出一种将Min-min算法和遗传算法相结合的改进遗传算法。 2.1 Min-min算法 Min-min算法的主要思想如下(仍然考虑n个任务,m个执行单元的情况): (1) 对集合中每一个等待分配的任务T,分别计算出分配该任务到m台机器上的最小完成时间,这就得到了一个n×m的MCT矩阵。 当需要调度的任务集合非空时,反复执行以下操作直至集合为空: (2) 利用MCT矩阵,对集合中每一个等待分配的任务分别找到能够最短时间完成该任务的执行单元及最短完成时间,在所有的最短完成时间中找出最小的最短完成时间对应的任务a,设其对应的主机为b,把任务a分配到机器b上。 (3) 从任务集合中把任务a删除,同时更新MCT矩阵。 2.2 染色体的编码与解码 染色体的编码形式有很多种,可以采用直接编码(直接对子任务的执行状态编码)或者间接编码。本文采用间接编码方式,对每个子任务占用资源编码。染色体的长度等于子任务的数量,染色体中的每一位都是正整数,每一位的位置编号代表子任务的编号,而该位置上的正整数值代表该子任务所占用资源的编号。假设有10个子任务,3个可用资源,则染色体串长为10,每个基因的值则为随机产生的3个资源的编号,则可以随机产生了下面的一个染色体编码: {2,1,3,2,2,3,1,1,3,1} 这个染色体代表第一个任务由第二个资源上运行,第二个任务由第一个资源执行,以此类推,第十个任务由第一个资源执行。染色体以数组形式存放。 产生了一个染色体后,还必须对其进行解码,得到不同资源上任务的分布情况。将任务按照占用的资源分类,生成多组按照资源编号分类的任务序列,每个序列的编号就是某一个资源的编号,序列中的元素就是在该资源上执行的任务,这样我们就得到了所有任务在多个资源上运行的分布情况。以上面的染色体为例,解码后产生3个资源的任务序列: R1:{2,7,8,10} R2:{1,4,5} R3:{3,6,9} 这样就可以计算出每个资源完成该资源上分配的所有任务花费的时间,最大花费时间即为时间跨度。 2.3 初始种群生成与适应度函数 在网格环境下,对任务调度的实时性有较高的要求,为提高算法收敛的速度以及改善算法的结果,要求初始种群既具有随机性的个体,又具有一些比较优秀的个体。本调度算法是在Min-min算法基础上,采用遗传算法对其性能进行提高,又可以避免单独采用遗传算法对大规模任务资源匹配的低收敛性。我们可以先将用Min-min算法产生的染色体作为初始种群的优秀个体,再随机产生其他个体。 遗传算法在进化搜索中基本不利用外部信息,仅以适应度函数为依据,利用种群中每个个体的适应度值来进行搜索。因此适应度函数的选取至关重要,直接影响到遗传算法的收敛速度以及能否找到最优解。由于网格调度的目标是时间跨度尽可能小,因此适应度可定义为: fitness(i)=1/makespan(i) 即染色体i的适应度值等于该染色体的时间跨度的倒数。若时间跨度越小,则适应度值越大,被选择的可能性越大。 2.4 个体选择 选择操作是决定父代种群中哪些个体,以及能以多大可能性被挑选来复制或遗传到下一代的进化操作。选择算子以对个体的适应度评价为基础,其主要作用是对搜索提供导向:挑选最优秀个体,使算法避免无效搜索且能快速搜索到问题的最优解。 假设本算法的种群大小为popsize,为了保留优秀个体,先选择Min-min算法产生的个体和父代中的最优个体,其他的popsize-2个个体采用轮盘赌法[5]进行选择。个体的选择概率为: Pi=fitness(i)/∑fitness(j) 需要进行popsize-2轮选择。每一轮产生一个[0,1]均匀随机数,若该数位于某个体累积概率下的那个区间,则选择该个体。 2.5 交叉与变异 交叉的目的是为了在下一代产生新的个体,通过交叉操作,遗传算法的搜索能力能够得以飞跃地提高。这里的交叉算子采用多点交叉,对于m个交叉点的多点交叉,随机选择m个交叉位置,在交叉点之间的变量间续地相互交换,产生两个新的后代,但在第一位变量与第一交叉点之间的一段不做交换,交叉点的个数根据染色体的长度进行选择。多点交叉具有很强破坏性,可以促进解空间的搜索。 变异本身是一种局部随机搜索,与选择操作结合在一起,保证了遗传算法的有效性,是遗传算法具有局部的随机搜索能力,同时使得遗传算法保持种群的多样性,以防止出现非成熟收敛。 这里变异算子实质上就是将某个子任务迁移到另一个资源上执行,为了防止某个子任务在迁移后,执行的时间增大而造成种群退化,规定迁移后子任务占用的资源不是随机产生,而是在除了该子任务目前占用的资源外的资源集合中,选择使该子任务执行时间最短的资源,将其迁移到该资源上执行。 2.6 算法流程 (1) 随机产生n个任务,m个资源,根据任务的任务量大小和资源的计算能力生成一个n×m的初始MCT矩阵。 (2) 根据Min-min算法生成一条对应该调度的染色体。 (3) 随机产生大小为M的初始种群,根据每个资源上的子任务的执行序列,计算每条染色体的适应值。 (4) 选择染色体进行交叉操作和变异操作,计算新生成染色体的适应值,生成新的种群。 (5) 判断是否满足遗传算法的终止条件,如果满足,则停止计算,输出最小时间和对应的染色体;如果不满足,则返回(4)。 3 仿真结果与分析 本文的实验是对gridsim、遗传算法、Min-min算法深入研究的基础上进行的,任务的长度范围、资源的执行能力范围、任务分配给某一资源的执行时间等是模仿gridsim计算得到的,数据跟现实的情况比较相似。该算法用到的主要参数有:解的群体规模为20,交叉和变异概率分别为0.8和0.2,任务个数为表2中的几种,资源个数为10,算法终止条件设为到达一定的进化终止代数,最大进化代数设为100,如果算法连续20代没有找到更好的解我们则认为算法基本收敛。 图1描绘了三种算法时间跨度随任务数大小的变化曲线。从图中我们可以看出:改进GA相对于Min-min算法在性能上会普遍有所提高;对于GA,当任务数较少时(小于40个),性能对于Min-min算法也会提高,较小还高于IGA,随着任务数的增加,性能会逐渐下降,甚至还低于Min-min算法。所以GA不太适合用于大规模的网格任务调度,而本文提出的这种改进遗传算法对网格任务调度普遍适用。 4 结束语 用遗传算法和Min-min算法作为网格任务调度算法已经得到广泛的应用。当规模较小时,遗传算法被证明是一种最有效的启发式调度算法,但随着资源数和任务数的不断增加,遗传算法的性能逐渐降低,到达一定规模时甚至还低于Min-min算法,这样不仅性能得不到提高,而且还会增加调度时间。本文提出一种将Min-min算法和遗传算法相结合的改进遗传算法,这种算法对于大规模任务调度性能也比较高。 由于本文在设计时没有将经济因素考虑在内,下一步的工作可以将开支预算与时间期限考虑在内,再结合本算法,可用于基于经济模型的网格任务调度。另外,模拟退火算法局部搜索能力比较强,遗传算法全局搜索能力较强,将两者结合搜索能力会尽一步提高,性能可能会有所提高。 参考文献 [1]Foster I,Kesselman C.The Grid-Blueprint for a New Computing Infra-structure.Morgan Kaufmann Publishers,1998. [2]Abraham A,Buyya R,Nath B.Nature’s heuristics for scheduling jobs on computational grids.In The8th IEEE International Conference on Advanced Computing and Communications India,2000. [3]Braun T,Siegel H,Beck N.A comparison of eleven static heuristics for mapping a class of independent tasks onto heterogeneous distributed computing systems.Journal of Parallel and Distributed Computing,2001,61(6):810-837. [4]Carretero J,Xhafa F.Using genetic algorithms for scheduling jobs in large scale grid applications.In Workshop of the European Chapter on Metaheuristics EUME2005,Metaheuristics and Large Scale Optimiza-tion.Vilnius,Lithuania,2005(5):19-21. 随着移动无线网络系统的快速发展,用户在任何地点、任何时间都可以访问全球网络资源。这意味着除了静态结点外,网格系统也应考虑把移动结点包含在内,这种结合所产生的技术就称为“移动网格计算”。它以无缝、透明、安全、有效的方式支持移动用户和资源,是无线技术与网格计算这两种新技术的融合。 在移动网格体系结构(如图1)中定位移动设备的角色,可以考虑两种,一是可作为同网格系统交互的接口,使用者可通过移动设备向网格要求服务,利用网格资源来完成任务,可远程监控任务的执行,并从网格中获得所要求的结果;另一种是把移动设备也作为网格的计算资源,可参与到网格的计算任务中,而不仅仅是网格服务的接收者。因此,移动设备要有效地嵌入到网格中,既可以作为要求网格服务的接收者,也可以作为网格服务的提供者。 目前移动网格资源的选择和分配方法的模型主要有以下六种: 1)基于距离的选择。当有多个网格资源可用时,根据客户端距网格资源的远近,选择较近的资源。必须根据经验数据建立初始值,放入规则库;在运行时记录相关的参数,更新规则库。 2)基于资源的贪心选择算法。根据资源的丰富程度,选择对应用一次性尽量充足可用的资源。 3)基于优先队列的选择算法。将不同的应用请求根据客户的信誉度、应用的类型、紧急程度等进行分类,建立多个优先级队列。调度队列时,分配不同的权重给不同的队列,同一队列采用轮转(round trip)算法,对请求分配资源。 4)根据网格经济的原则,选择代价(网络跳数、时间或金钱等)最小的资源。当有多个因素要综合考虑时,使用加权求和的方式,选择决策值最优的资源。 5)基于协议的选择算法。由于不同的协议对数据的缓冲和交付策略不同,将应用请求按协议划分,比如TCP和UDP,按协议的时间敏感性优先的原则进行调度,对同一协议的请求队列按先来先服务(FIFO)的原则进行处理。 6)基于响应性能的选择算法。根据距离、计算能力、网络带宽等因素进行综合计算,得出预测的响应时间,选择响应性能最好的网格资源。 1 机动模型 一般讲用户的行为或移动设备是很难预言的,该文在移动网格环境中为资源调度提出了一种一般的机动性模型。对于一种移动的资源来说,其状态有两种可能性:一种是移动资源正反向分开,另一种是资源正相向接近。带有其它参数并且参加计算的资源,其移动性要在资源选择过程中重点被考虑。移动性参数用来表示一种资源保持的时间预言。任务分派基于预言的时间。为了区别不同的参数变量的影响,可以使用相似的信号或者资源的位置意识。本文对资源位置意识进行了解释,每种资源在任何瞬间都知道它的单元信息。机动模型假设移动末端设备以平均速度改变它的位置。移动性须假设为一个移动的终端改变位置的平均速度。机动模型(如图2)有两种形式:静止与移动(static-mobile)和移动与移动(mobile-mobile)。第一种形式静止与移动(static-mobile)即静止的一个核心资源和遍布其周围的移动的移动设备。第二种形式是核心资源和移动资源设备都是移动的。这种形式通常讨论的全部是分散的基础设施而没有静止的基础设施。 基于应用领域,在任务分配时传统的调度程序通常考虑不同的参数,例如计算能力和贮存工作任务的能力等,移动资源被认为有能力单独地处理一个被分配的工作。 这个机动性模型与移动网格环境中的资源调度程序结合起来改进资源调度的性能,提高了资源的利用率,缩短了移动资源的响应时间。机动性模型的用户及移动设备使用最基本的可计算的参数。模型使用的参数如“用户范围”,“平均机动性”和“在范围内的时间”等。“用户范围”是指用户能够覆盖的范围,并且在这个范围内用户能与移动设备进行通信。“平均机动性”,一个可计算的参数,是指一种资源或用户(基于用户和资源的移动性)的平均机动性。它主要是通过在用户和移动资源之间最近发生的通信量进行计算。“在范围内的时间”参数指在用户范围内为显示资源可用性被预言的时间。下面给出用于计算“平均机动性”和“在范围内的时间”两个参数的方程式如下: 实线表示静止,虚线表示移动,MD表示移动设备 方位可以简化为用户和资源之间的距离。方位通过找到两个最近相互发生作用的用户或移动设备之间的差别来计算。“在范围内的时间”这个参数通过方程式(2)计算。“距离”是指在用户和资源(新位置)的位置之间的网差别。 在单一的迭代里被分配到一种资源的工作数量通过方程式(3)计算。参数"放弃任务"是通过参数“在范围内的时间”和“工作完成时间”进行计算。参数“放弃任务”的价值是为一种资源分派任务。 基于"放弃任务"参数的价值,在对移动资源进行任务分派时,下列规则被使用: 上述模型是一个静止用户与移动设备资源进行资源调度时的机动性模型。模型需要扩展成为一个移动用户和移动的设备之间进行资源调度时的机动性模型。通过计算基于两个移动性因素的"平均机动性"参数对此机动性模型进行扩展。一个移动性因素考虑用户和另一个移动性考虑资源。用户平均机动性简化为通过从新位置中减去老位置而获得。用户维持了资源的两次方位。移动-移动模型的"平均机动性"通过方程式(4)计算 其它参数是通过上述静止-移动模型得到“在范围内的时间”和“放弃任务”参数方法的方程式得到,“距离”参数的计算现在是新用户位置和资源的新位置之间的网差别。 2 模型的试验 我们通过简单的实验证明被提议的机动性模型和资源预言。实验假设用户和资源在任何规定的时间都知道它们的具体位置。这个方位的确定通过GPS(全球卫星定位系统)很容易被实现与协调。当GPS为简单协调时,实施考虑XY两个参数。当与用户通信的移动资源改变它们的位置时,用户被认为是静止的。XY的变化范围在0和500之间考虑。用户的范围设为200米。用户的位置是(200,200),移动资源的第一个位置是(250,200),第二个位置是(300,200)。为了计算方位,两段距离从用户到资源被基于两个位置测量。第一个方位为50,第二个方位为100。根据测量的方位利用"平均机动性"方程式1求出平均机动性。计算"平均机动性"参数时使用的移动资源第一个方位为50。绝对价值被考虑在全部情况里,正的机动性价值显示资源正离开用户,负的机动性价值表明资源将移动向用户。参数“在范围内的时间”通过计算参数"在用户里的范围"和"平均机动性"获得的价值是2个单位时间。假定单位时间内能够完成被分配到一种资源的任务。基于这个预言模型,两个子任务将被分配到移动资源,并且移动资源在离开用户范围之前,提供结果。 为了延伸为一种用户和移动资源两个都是移动的模型环境中进行实验验证,实验进行如下,参照静止-移动模型提及的预测模型,用户的最初位置是(200,200)和资源的位置是(225,200)。第一个方位被给25的最初位置计算。用户和资源移到新位置。用户的新位置是(175,200)和资源的新位置是(250,200)。新距离从用户到资源为75。关于用户和资源的“平均机动性”是125。参数“在范围内的时间”的值是1个单位时间,这表示仅仅只有一个工作任务可能被分配到移动资源。 3 结论 该文在移动网格环境中为资源预言提出了一个一般的机动性模型,提出了一种简单的实验机制,并且证明了在两种机动性模型的基础上资源调度选择的机制,即静止-移动模型和移动-移动模型。第一种机动性模型是基于静止的用户和移动的资源。另一种则是机动性模型考虑移动用户和移动资源设备。在这个机动性模型上资源选择和任务分配被简单的实验所证明。在基于响应时间的基础上,资源被预言,它在用户范围内保持通信,未来的工作是为一般的机动性模型提出资源预言模型,并进行实验验证。 参考文献 [1]徐志伟,李伟.织女星网格的体系结构研究[D].中科院计算所,2002. [2]都志辉,陈渝,刘鹏.网格计算[M].北京:清华大学出版社,2002. [3]Weiser M.Ubiquitousc omputing[J].Computer,1993,26(10):1-72. [4]Satyanarayanan M.Pervasive computing:Vision and challenges[M].IEEE Personal Communications,2001:10-1. [5]移动网格变革服务[EB/OL].http://www.ccu.com.cn/houtai1/content.asp?newsid=1892. [6]李玺,胡志刚.计算网格中的资源选择与调度算法[J].计算机工程与应,2005(11). [7]都志辉,陈渝,刘鹏.网格计算[M].北京:清华大学出版社,2002. [8]Park S M,Kim J H.Chameleon:A Resource Scheduler in a Data Grid Environment[C].Tokyo,Japan:2003IEEE/ACM International Sym-posium on Cluster Computing and the Grid(CCGRID'2003),2003. 关键词:遗传算法,启发式算法,车间作业调度 1 引言 作业车间调度问题(Job—shop Secheduling Problem,JSP)是一类满足任务配置和顺序约束要求的资源分配问题,是最困难的组合优化问题之一[1],由于该问题计算复杂性过高,因此在工程实践中,大多采用启发式算法求其近优解.随着人工智能和计算机技术的发展,一些较复杂的优化方法得到了迅速发展,如神经网络、模拟退火和遗传算法等,并已成为调度理论的研究热点。 本文提出应用混合遗传算法即:在遗传算法中融入启发式算法的方法来解决生产调度的排序问题。遗传算法作为一种群体优化算法,通过选择、变异、交叉等操作,使解集性能不断得到进化,最终以较快的速度进行搜索,但其存在早熟和收敛性难以控制的问题。而传统的启发式算法结构简单,搜索速度快,但全局搜索能力差,容易陷入局部最优。因此把传统的启发式算法嵌入到遗传算法中构造一个能力更强的遗传算法对于解决复杂的优化问题是很有意义的。该算法将遗传计算的并行性、记忆功能和启发式算法的快速搜索能力相结合,提高了求解质量。 2 混合遗传算法 本文将传统的启发式算法和遗传算法结合起来,应用该混合遗传算法解决作业计划排序问题。针对遗传算法的早熟和收敛性的问题,加入启发式算法的一些规则,同时对遗传算法的一些关键参数(如交叉概率、变异概率)设置了自适应功能,使得算法在车间作业调度方面得到改进。 我们主要通过以下方式实现遗传算法的改进: (1)把启发式嵌入到初始化中,产生一个适应性好的初始解群。按这种方式,混合式遗传算法能够优于启发式算法。 (2)将启发式嵌入到评估函数中,将染色体解码为作业调度。 (3)自适应设计个体的交叉率与变异率。 其中,遗传算法被用于个体中的全局搜索,而启发式算法在染色体中施行局部探寻。由于遗传算法和启发式算法的互补性能,混合遗传算法将优于两种单独的算法。 3 生产调度问题描述 所谓调度,就是为了实现某一目的而对共同使用的资源进行时间分配。本文所说的生产调度问题,是指用一组机床加工一组零件,如何安排每台机器上的工件加工顺序,使得某种指标(比如,总的加工时间、总的加工费用或者相对加工时间等)最优。 一般零件的加工过程由若干工序组成,且应满足一定的约束关系,车间作业调度约束条件的数目和内容会随作业需求和作业环境的不同而不同,如零件生产的工艺需求、设备条件等。 本文定义P={P1,P2,…,Pn}代表n个工件的集合,M={M1,M2,…,Mm}代表m台机床的集合,工件Pi的工序数目为Ki,工件Pi的加工工序为Pi1(Ji1),Pi2(Ji2),…,Pi Ki(Ji Ki)(Ki∈Z+,i=1,2,…,n),其中Z+表示正整数,Ji Ki表示工件Pi第Ki道工序在某台机床上加工,(Ji Ki∈M)。STi Ki表示工件Pi第Ki工序的加工起始时间,ETi Ki表示工件Pi第Ki工序的加工终止时间。用Ti Ki表示工件Pi第Ki工序的加工时间。 基于以上的定义,作业调度要满足以下几个约束: 1.每个工件包含一个由多道工序组成的工序集合,工件的工序顺序是预先给定的。 2.一台机床仅能同时加工一个工件的一道工序。 3.不同工件的工序之间没有先后的约束。相同工件工序满足先后约束关系。 4.工序Pi Ki(Ji Ki)与Pi Ki+1(Ji Ki+1)之间的时间间隔为零,即STi Ki+1-ETi Ki=0。 5.STi Ki≥0,即每个工件的每道工序的开工时间一定大于或等于零。 6.∑Ti Ki=Ti(Ti为工件Pi的总加工时间),即要求所有工件在交工期前加工完毕。 4 混合遗传算法求解作业调度 ⑴.参数编码 应用遗传算法,必须将问题空间的参数转换成遗传空间的、由基因按一定结构组成的染色体或个体,这一转换操作就是编码。编码有基于工序的表达方法、基于工件的表达方法、基于位置“列表”的表达方法、基于机床的表达方法等。这里采用基于机床的表达方法。染色体编码为机床的序列,基于该机床序列,具体编码如下: 工件编号0 1,0 2,…n,每个工件的工序编号0 1,02,…k,机床编号01,02,…m。那么符号01.01.01表示工件01的01工序在设备01上完成。以3(工件)×3(机床)为例。假设工件中工序最多为4,机床对应不存在的加工工序则定义为00.00.00,工件工序加工必须满足工序先后关系的约束。则如表1所示,表示了工件、工序与机床的关系。 ⑵.初始种群的生成和适应度函数的设计 初始种群的产生采取随机产生的方式,这样容易达到解空间所有状态的遍历。通过约束条件检验判断其是否为可行解,若是,将其加入初始种群;否则淘汰。但是初始群体的随机产生加大了进化的代数,大大增加遗传算法的计算时间,这里加入了启发式算法,运用启发式算法的局部搜索能力强的特性,加快优良个体的产生。 个体的适应函数应该是工件总的加工时间单调递减函数,即总工时越小,个体适应度函数值越大;总工时越大,个体适应度函数值越小。个体i的适应函数定义为: 式中Cmax为f(x)的最大值估计。初始种群的生成流程图如图1所示。 ⑶.选择操作:采用了轮盘赌选择方法。若某个个体i, 其适应度为fi,则选择概率为:选择适应度最优的Pop Size个个体作为新一代种群。 ⑷.交叉操作:交叉算子采用一点交叉运算,对参与交叉运算的两个个体母体M和父体F依据自适应交叉概率Pc进行交叉运算。记参与交叉运算的两个个体母体M和父体F,M与F经交叉运算后产生的子代个体记为D和S,染色体长度为L。随机地生成整数p,1 快速调度算法 篇4
快速调度算法 篇5
移动网格资源调度算法 篇6
快速调度算法 篇7
式中,fmax—群体中最大的适应度值;favg—每代群体的平均适应度值;f'—要交叉的两个个体中较大的适应度值。
自适应调整与算法的收敛程度成反向,从而有效地防止了算法收敛于局部最优,并使好的进化结果得以保存。
⑸.变异操作:变异操作采取互换变异,即先随机生成整数m,m取值范围为机器数量。在本机器上随机选择某一位,将此道工序与相临的工序互换。变异时要注意相临加工工序是否是同一工件的加工,如果是,变异后的染色体非法。自适应变异概率P?m定义如下:
式中,fmax—群体中最大的适应度值;favg—每代群体的平均适应度值;f—要变异个体的适应度值;
⑹.目标函数:本文将工件完工时间最小化作为目标,其目标函数为:
惩罚技术是用遗传算法解约束优化问题中最常用的技术[2]。本质上它是通过惩罚不可行解将约束问题转化为无约束问题。在遗传算法中,惩罚技术用来在每代的种群中保持部分不可行解,使遗传搜索可以从可行域和不可行域两边来达到最优解。
惩罚策略的主要问题是设计一个惩罚函数p(x),从而能有效地引导遗传搜索达到解空间的最好区域。对于本文研究的作业调度问题,根据上面的目标函数,相应的惩罚函数定义为所有工件的超期时间之和。设wai为工件i的超期时间段,则相应的惩罚函数表示则带有惩罚项的调度的目标函数表示为:
5 调度算法应用
为了检验的合理性,现采用文献[3]中的例2。该例由4台机器和8个工件组成,每个工件分别在4台机器上各加工一次,每个工件的加工路线与每道工序的加工时间按照文献[3]所示,如表2。
采用混合遗传算法进行作业计划排序,基本参数设置为:初始种群数=20,遗传代数=200代,经遗传算法重组运算后,作业计划的排序结果GANTT图如图2和3。由图中可见,最长加工路径为33,整个系统的设备空闲等待时间为2。
文献[3]中的例2的任务在文献[4]中用神经网络方法排序,最长加工路径为36;在文献[3]中采用基于效率函数方法经调度后,最长加工路径为33,但是设备的空闲等待时间为3。采用本文混合遗传算法经调度后,最长加工路径为33,设备的空闲等待时间为2。因此,根据例2的执行结果,采用本文研究的混合遗传算法进行作业计划排序,不仅所得的最长加工路径最短,而且设备利用率也是最高的。
6 结束语
车间调度问题已经证明为N P问题,难以找到能够求得最优解的确定性调度算法。又由于遗传算法的优良特性,因此,采用遗传算法对车间调度问题进行求解已成为求解该类问题的趋势。本文提出的基于混合遗传算法的调度算法,融入启发式规则,充分发挥遗传算法优势的同时,又加入启发式算法的快速搜索等优点,提高了分配效果。实例表明该算法能够取得较优的调度结果。
参考文献
[1]GERVEY M R,JOHSON D S,SOTHI R.The com-plexity of flowshop and jobshop scheduling[J].Mathematics and Operations Research1976(1):117-129.
[2][日]玄光男,程润伟著,汪定伟,康加福,黄敏译,遗传算法与工程设计[M].北京:科学出版社,2000.
[3]常会友,刘丕娥,张淑丽,王凤儒,基于效率函数求解的单件车间调度问题的算法[J].CIMS计算机集成制造系统.1998,(4):5-6
生产调度模型及算法设计 篇8
生产调度[1]是一个在对业务操作流程可以分解的业务流程,资源使用情况以及产品需求情况已知且研究尽可能满足约束的情况下,以获得某种指标(如交货期最短、生产成本、客户满意度等)的最优化为目标进行分解的业务流程。调度以计划为基础,而计划又是在有限的时间里分配相互竞争的各种资源。可见,生产计划制定的好坏决定着生产调度的好坏,对于一个企业生产效率也是十分重要。
计量中心生产调度平台[2][3]是全面支撑省级计量中心生产调度工作的信息系统。目前已具有支持生产调度工作的全部功能。但在计划环节,主要支持人工计划的制定工作,需要研究一个面向计划自动生成的模型、算法及相应的软件。
人工计划编辑模型主要问题有:
(1)月度配送计划计划性不准,审核月度配送计划需平衡检定能力和库存,还可能影响到货计划,工作难度较大。
(2)到货计划计划性不准,导致实际到货与到货计划差异较大,影响检定计划的准确性,导致检定计划制定和执行困难。
产生问题的根源分析:
(1)在采购计划阶段制定阶段:1)没有准确的到货计划,通常是在有到货需求前,以一个提前期(N个自然日)通知供应商,供应商可能因为排产问题或元器件存货不足等问题,导致到货计划失效;2)到货计划是根据供应商的排产计划协商制定的,与实际需求或检定工作有较大的不一致性,给检定计划制定及检定计划执行造成较大困难。
(2)年度之初没有月度需求计划或月度需求计划准确性不强:在月度实际需求发生前才制定月度需求计划,可能会以较大幅度超出检定能力,不利于检定工作安排。
针对上述存在的问题,项目研究的目标是:研究数学模型和算法,充分利用历史数据、对目前电力企业省级计量中心的计划制定工作面临的众多问题提供解决方案。具体来说,研究的主要目标有:如何利用历史数据预测未来需求、如何通过模型和算法解决各计划相互制约和相互影响问题,其中设计模型和算法以实现各种计划预测与生成是本项目研究的主要目的。
2 模型概述
生产计划的制定和执行过程(流程),与自然环境中水流的过程有很大的相似性,在一定时间内形成多个波,以各自特定的节奏向前涌浪,在遇到助力时产生反向涌浪。本项目采用仿真自然环境进行建模,有利于模型的描述且较好理解。涌浪是液体在一特定时间通过一个特定空间的一组活动。在本项目的模型中,它是发生源(水池中液体)流经涵洞(对液体的量有一种的约束,用于描述某种能力)时产生的一组活动,水池中液体流经涵洞时产生一定节奏涌浪,并成为下一波涌浪的前提和基础,液体的量可表示涌浪的大小。算法模型如图1所示。
水池可用来描述计划,水池中容器的容量用来表示计划中的产品及数量;涵洞表示生产环节,其中子涵洞及其最大流量用来表示该生产环节对某产品的处理约束及能力;外部水池表示库存,外部水池的容器及容量可表示库存中的产品及数量。
当水池中某个容器中液体在某段时间内的存量,大于其可流经的子涵洞在相同时间下的最大流量与外界涵洞的中对应容器存量之和,说明子涵洞的容量有余量(对应于生产能力大于生产计划要求),只产生正向涌浪(生产计划能完成);反之会产生能力约束,有多余的液体不能通过(相当于计划任务不能完成),会产生反向涌浪。
3 算法求解
根据计量中心生产调度平台系统中对计量中心生产调度的业务以及生产计划制定的相关流程,利用算法模型的求解过程如下:
(1)求解基本步骤:
计划顺序Plan[4]=[需求计划、配送计划、检定计划、到货计划];
工作能力Ability[3]=[配送工作能力、检定工作能力、到货工作能力];
数据整理初始变量N=0;
计划预测模型中,计划Plan[i]与生产能力Ability[j]步骤为:
Step1:查询j (0≤j≤2)环节的工作能力;
Step2:选择第i计划环节(0≤j≤3)的月度为数据源;
Step3:如果Plan[i]=“需求计划”,执行Step4,否则执行Step6;
Step4:调用推动模式C=Push0;
Step5:如果C!=0,则N=C,且从第C环节开始调用拉动模式算法Pull (C),执行完成后转向Step11;否则转向Step12;
Step6:如果Plan[i]=“到货计划”,执行Step7,否则执行Step9;
Step7:调用拉动模式C=Pull (i);
Step8:如果C≠0,则从第C环节开始调用推动模式算法Push (C);
执行完成后转向Step10;
Step9:如果Plan[i]!=‘需求’且Plan[i]!=‘到货’,调用推动模式算法C=Push (i);
Step10:如果C≠0,则K=C且N=C,从第K环节调用拉动模式算法Pull (K);执行完后转向Step11;
Step11:如果C=0,执行步骤Step3,并将Plan[N]代入Step3中;
Step12:月度计划汇总生成年度计划;
Step13:通过每月的需求计划汇总生成年度采购计划
Step14:算法结束。
(2)推动模式算法:
Push算法(i){C=0;
Step1:如果i==0{执行推动配送环节0;i++;如果有约束则C=1,然后跳转至Step4;}
Step2:如果i==1{执行推动检定环节0;i++;如果有约束则C=2;然后跳转至Step4;}
Step3:如果i==2{执行推动到货环节0;如果有约束则C=3;}
Step4:返回C;算法结束;
}
(3)拉动模式算法:
Pull算法(i){C=0;
Step1:如果i==3{执行拉动检定环节0;i--;如果有约束则C=2,然后跳转至Step4;}
Step2:如果i==2{执行拉动配送环节0;i--;如果有约束则C=1,然后跳转至Step4;}
Step3:如果i==1{执行拉动需求算法0;}
Step4:算法结束。
}
4 结语
生产调度模型能将多种约束、互相制约的计划制定问题,转化成简单的分步生成算法,是算法模型的最大优点。制定计划时可以减少对工作人员工作经验的依赖。依靠历史数据的积累和分析,依据科学的数学模型和合理的逻辑推理计算生成计划,在很大程度上减少了由不科学的计划给工作带来的负面影响,同时提高了计划的科学性和合理性,提高了工作效率,增强了用户的满意度,减少了企业的运营成本(库存堆积、资金占用、设备过期重检、提高资源利用率等)。
参考文献
[1]余建军,张定超,周铭新.生产调度研究综述[J].企业管理与信息化,2009,9:14-16.
[2]丁涛,徐二强,刘忠,等.省级计量中心生产调度平台的设计[J].电力电气,2012,5:34-37.
[3]郭婧,吴军华.面向方面的UML建模[J].计算机工程与设计,201 1:4260-.4263.
[4]李娜,李波.供应链中模糊多目标生产一配送计划模型及求解[J].西安电子科技大学,2012,9:22-5.
[5]夏林丽,雷宏.多项目多任务选择计划模型及其智能决策[J].计算机应用,2012,5:32-5.