多处理机调度问题的一种近似算法
算法之多机调度问题

}
for(i=m+1;i<=n;i++)
{
for(int k=1;k<m;k++)
{
int o=d[k];
if (o>d[k+1])
{
o=d[k+1];
j=k+1;
}
}
s[j]|=(1<<(p[i]-1));
d[j]=d[j]+t[i];
}
}
void Output(int *p,int n,int *s,int *d,int m) //阅读并理解这个函数
Dsc_Order_By_t(t,p,n); //对作业根据运行时间t进行降序排列
Processing(p,t,n,s,d,m); //用最长运行时间优先算法处理作业
Output(p,n,s,d,m); //输出结果
_getch();
return 0;
}
运行结果图:
t[]={0,2,14,4,16,6,5,3}, //对应作业时间,t[0]不用
s[]={0,0,0,0}, //机器处理的作业集合,如:s[1]存放机器处理过的作业号,s[0]不用
d[]={0,0,0,0}; //机器处理作业的总时间,如:d[2]存放机器处理过的作业的总时间,d[0]不用
int n=sizeof(p)/sizeof(int)-1,m=sizeof(s)/sizeof(int)-1; //n--作业总数,m--机器台数
算法之多机调度问题
用贪心法解决多机调度问题
(1)问题的描述
设有n个独立的作业{1, 2,…, n},由m台相同的机器{M1, M2,…, Mm}进行加工处理,作业i所需的处理时间为ti(1≤i≤n),每个作业均可在任何一台机器上加工处理,但不可间断、拆分。多机调度问题要求给出一种作业调度方案,使所给的n个作业在尽可能短的时间内由m台机器加工处理完成。
蒙特卡洛算法

蒙特卡洛算法组员李小兵周立冯俊李继华艾海提李日浩算法简介蒙特·卡洛方法,也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。
是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。
蒙特·卡洛方法的名字来源于摩纳哥的一个城市蒙地卡罗,该城市以赌博业闻名,而蒙特·卡罗方法正是以概率为基础的方法。
与它对应的是确定性算法。
蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。
背景知识1946年,美国拉斯阿莫斯国家实验室的三位科学家John von Neumann,Stan Ulam 和 Nick Metropolis共同发明,被称为蒙特卡洛方法。
它的具体定义是:在广场上画一个边长一米的正方形,在正方形内部随意用粉笔画一个不规则的形状,现在要计算这个不规则图形的面积,怎么计算列?蒙特卡洛(Monte Carlo)方法告诉我们,均匀的向该正方形内撒N(N 是一个很大的自然数)个黄豆,随后数数有多少个黄豆在这个不规则几何形状内部,比如说有M个,那么,这个奇怪形状的面积便近似于M/N,N越大,算出来的值便越精确。
在这里我们要假定豆子都在一个平面上,相互之间没有重叠。
蒙特卡洛方法可用于近似计算圆周率:让计算机每次随机生成两个0到1之间的数,看这两个实数是否在单位圆内。
生成一系列随机点,统计单位圆内的点数与总点数,(圆面积和正方形面积之比为PI:1,PI为圆周率),当随机点取得越多(但即使取10的9次方个随机点时,其结果也仅在前4位与圆周率吻合)时,其结果越接近于圆周率。
算法描述以概率和统计理论方法为基础的一种计算方法。
将所求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获得问题的近似解。
比如,给定x=a,和x=b,你要求某一曲线f和这两竖线,及x轴围成的面积,你可以起定y轴一横线 y=c 其中c>=f(x)max,很简单的,你可以求出 y=c,x=a,x=b,及 x轴围成的矩形面积,然后利用随机产生大量在这个矩形范围之内的点,统计出现在曲线上部点数和出现在曲线下部点的数目,记为:doteUpCount,nodeDownCount,然后所要求的面积可以近似为doteDownCounts所占比例*矩形面积。
多级调度算法

多级调度算法什么是多级调度算法?多级调度算法(Multi-Level Feedback Queue,MLFQ)是一种操作系统中的进程调度算法。
它将进程队列分成多个级别,每个级别都有不同的时间片大小和优先级。
当一个进程被加入队列时,它被放置在最高优先级的队列中,如果它在该队列中运行了一段时间后仍未完成,则被降低到较低优先级的队列中继续运行。
这样可以使长时间运行的进程获得更多的CPU时间,并且能够保证短时间运行的进程能够快速响应用户请求。
多级调度算法的特点1. 多个队列:多级调度算法将进程队列分成多个级别,每个级别都有不同的时间片大小和优先级。
2. 时间片轮转:每个队列使用时间片轮转方式进行调度。
3. 优先级:每个队列都有自己的优先级,高优先级的队列会被更频繁地执行。
4. 抢占式:如果一个高优先级进程加入了队列,则当前正在执行的低优先级进程会被抢占。
5. 动态变化:根据当前系统负载情况动态改变各个队列之间切换所需的时间片大小。
多级调度算法的实现步骤1. 初始化队列:将所有进程按照优先级放入不同的队列中,每个队列都有自己的时间片大小。
2. 运行进程:从最高优先级队列开始运行进程,如果该进程在时间片内完成,则被移出队列,否则被降低到较低优先级的队列中继续运行。
3. 抢占式调度:如果一个高优先级进程加入了队列,则当前正在执行的低优先级进程会被抢占。
4. 动态变化:根据当前系统负载情况动态改变各个队列之间切换所需的时间片大小。
5. 结束进程:当一个进程完成或被杀死时,从相应的队列中移出该进程。
多级调度算法存在的问题1. 饥饿问题:如果系统中有大量长时间运行的高优先级进程,则低优先级进程可能会一直等待,导致饥饿问题。
2. 时间片大小选择问题:选择合适的时间片大小非常重要,如果时间片过小,则会导致频繁切换而浪费CPU资源;如果时间片过大,则会导致响应速度变慢。
3. 进程数目过多:当系统中存在大量进程时,多级调度算法的效率会降低。
处理机调度算法的模拟

处理机调度算法的模拟在计算机操作系统中,处理机调度算法决定了在多个进程或任务同时存在的情况下,哪个任务将获得处理机的使用权,以及在多个任务之间如何切换。
处理机调度算法可以按照多个指标进行优化,例如响应时间、吞吐量、周转时间和等待时间等。
以下是几种常见的处理机调度算法:1.先来先服务(FCFS):先来先服务是最简单的调度算法之一,它按照任务到达的先后顺序分配处理机资源。
这种算法的优点是简单易实现,但是当存在长作业(任务)时,会导致其他短作业的等待时间过长。
2.短作业优先(SJF):短作业优先调度算法根据任务的估计执行时间来进行调度,优先执行估计执行时间短的任务。
这种算法可以减少任务的等待时间,但对于长作业来说,可能会导致饥饿现象。
3.优先级调度:优先级调度算法根据任务的优先级进行调度,优先级高的任务先获得处理机的使用权。
这种算法可以根据不同任务的紧急性和重要性来确保任务得到适当的优先级处理。
但是,如果优先级设置不合理,可能会导致一些任务永远得不到执行。
4.时间片轮转调度:时间片轮转调度算法是一种公平的调度算法,它将处理机的使用权按照时间片划分给不同的任务,每个任务只能执行一个时间片的任务。
如果任务在时间片结束之前没有完成,它将被放回到任务队列的末尾继续等待。
这种算法可以确保每个任务都有机会获得处理机的使用权,但是可能会存在上下文切换的开销。
以上只是几种常见的处理机调度算法,实际上还有许多其他算法以及它们的变体,例如最短剩余时间优先(SRTF)、多级反馈队列调度(MFQ)等。
每种调度算法都有不同的优缺点,选择适合的调度算法取决于系统的需求和资源限制。
为了模拟处理机调度算法,可以使用计算机模拟软件或编写自己的模拟程序。
模拟程序可以模拟任务的到达和执行过程,按照指定的调度算法进行任务的分配和切换,并统计不同指标(如响应时间、吞吐量等)来评估算法的性能。
在模拟处理机调度算法时,需要考虑以下几个方面:1.任务的到达过程:任务可以按照随机分布的方式到达,模拟任务的到达时间和资源需求。
处理机调度的常用算法

处理机调度的常用算法包括以下几种:
1. 先来先服务调度算法(FCFS,First Come First Service):这是一种最简单的调度算法,按先后顺序进行调度。
既可用于作业调度,也可用于进程调度。
2. 短作业优先调度算法(SJF/SPF,Shortest Job First):该算法根据作业长短进行调度,有利于短作业(进程)的完成。
3. 高响应比优先调度算法(HRRN,Highest Response Raito Next):该算法综合考虑了作业长短和等待时间,能够适用于短作业较多的批处理系统中,但长作业的运行可能得不到保证。
4. 基于时间片的轮转调度算法(RR,Round Robin):该算法将系统中所有的就绪进程按照FCFS原则,排成一个队列。
每次调度时将CPU 分派给队首进程,让其执行一个时间片。
时间片的长度从几个ms到几百ms。
在一个时间片结束时,发生时钟中断。
调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前就绪的队首进程。
进程阻塞情况发生时,未用完时间片也要出让CPU。
这些算法各有优缺点,需要根据实际应用场景选择合适的算法。
第三章 贪心算法

2021/2/22
5
如果问题改成:砝码的种类分别为11克、5克和1克, 待称的物体是15克。用贪婪算法应先选一个11克的,然 后选四个1克的,共用五个砝码。这不是最优结果,只 要用三个5克的砝码就够了。
贪婪算法虽不能保证得到最优结果,但对于一些除
了“穷举”方法外没有有效算法的问题,用贪婪算法往
往能很快地得出较好的结果,如果此较好结果与最优结 果相差不是很多的话,此方法还是很实用的。
2021/2/22
9
当n不太大时,适当的取k值,此改进方法常常可以得到 最优解,但不能因此就说一般背包问题有多项式算法。 当n增大时,k不能随着n不断的加大,如k随n增大而同 时加大,其复杂性就是指数型而不是多项式型的了,而 如k取值较小,又不能保证得出最优解。
多级调度算法

多级调度算法简介多级调度算法是操作系统中的一种调度算法,用于管理和分配系统中的各个任务和进程资源。
它根据任务的优先级不同,将系统中的任务划分为多个不同的队列,并分配不同的调度策略给每个队列。
多级调度算法可以更加有效地利用系统资源,提高系统的性能和响应速度。
基本原则多级调度算法通常包含以下的基本原则:1.任务分类:将系统中的任务按照不同的优先级划分为多个队列,通常包括高优先级队列、中优先级队列和低优先级队列等。
2.调度策略:为每个队列分配不同的调度策略,以满足不同优先级任务的特点和需求。
常见的调度策略包括先来先服务(FCFS)、最短作业优先(SJF)、时间片轮转(RR)等。
3.优先级继承:当一个任务需要等待一个优先级较低的任务执行完成时,可以将其临时提升到较高的优先级队列中执行,以避免优先级反转(PriorityInversion)问题。
4.任务迁移:根据系统中任务的负载情况,可以将任务从一个队列迁移到另一个队列,以实现负载均衡和资源利用的最大化。
常见的多级调度算法先来先服务(FCFS)先来先服务是一种最简单的调度策略,按照任务到达的顺序进行处理。
当一个任务到达系统时,被放入对应优先级队列的末尾。
如果当前正在执行任务,则新到达的任务必须等待前面的任务执行完毕后才能执行。
优点:实现简单,公平性好。
缺点:对长作业不利,容易产生饥饿现象。
最短作业优先(SJF)最短作业优先是根据任务的执行时间进行调度的策略。
具有最短执行时间的任务将被先执行,以减少平均等待时间。
优点:平均等待时间最短。
缺点:无法预测任务执行时间,不利于实时任务。
时间片轮转(RR)时间片轮转是一种基于时间片的调度策略。
每个任务分配一个固定长度的时间片,当时间片用完后,任务被暂停,放回队列尾部,并执行下一个任务。
通过轮转的方式,实现公平地分配每个任务的CPU时间。
优点:响应时间快,公平性好。
缺点:时间片长度的选择会影响系统的性能。
多级反馈队列(MLFQ)多级反馈队列是一种综合性的多级调度算法。
算法之多机调度问题

算法之多机调度问题用贪心法解决多机调度问题(1)问题的描述设有n个独立的作业{1,乙…,n},由m台相同的机器{Ml, M乙…,Mm}进行加工处理,作业i所需的处理时间为ti (l<i<n),每个作业均可在任何一台机器上加工处理,但不可间断、拆分。
多机调度问题要求给出一种作业调度方案,使所给的n个作业在尽可能短的时间内由m台机器加工处理完成。
(2)算法设计思想解多机调度问题的贪心策略是最长处理时间作业优先,即把处理时间最长的作业分配给最先空闲的机器,这样可以保证处理时间长的作业优先处理,从而在整体上获得尽可能短的处理时间。
(3)数据及解题过程设7个独立作业{匕2, 3, 4, 5, 6, 7}由3台机器{M2, M2, M3}加工处理,各作业所需的处理时间分别为{2, 14, 4,16, 6, 5, 3}。
贪心法产生的作业调度如下:(4)程序使用C++运行测试(5)代码如下:#include <iostream>#inelude vconio.h>using namespace std;〃冒泡法对作业时间t降序排列,作业编号P的顺序也随t的顺序改变而改变,这点很重要!void Dsc_Order_By_t(int t[],int p[],int n) 〃注意:数组元素下标从1 开始{〃你的代码int i,j;for (i=l;i<=n;i++)for (j=l;j<=n-i;j++){{int b=t[j+l];t[j+i]=tU];tU)=b;int g=p[j+l]; P D+I]=P U]; P U]=S; }}}for (i=l;i<=n;i++){cout«t[i]«,,\t n;}cout«e ndl;for (i=l;i<=n;i++)cout«e ndl;}void Processing(int p[],int t[],int n’int s[],int d[],int m){ 〃你的代码,根据书中伪代码编写,P154,算法7.9〃其中s[i]={p[i]}ffl位集合表示,代码^:s[i]|=(l«(p[i]-l))〃s[j]=s[j]+{p[i]}实际代码是:s[j]|=(l«(p[i]-l))^懂问我,把它搞清楚!int i; intj; for(i=l;i<=m;i++){s[i]|=(l«(p[i]-D);d[i]=t[i];}for(i=m+l;i<=n;i++){for(int k=l;k<m;k++){int o=d[k];if (o>d[k+l])o=d[k+l];j=k+l;}}sU]|=(l«(p[i]-D);d[j]二d[j]+t[i];}}void Output(int *p,int n,int *sjnt *d,int m) 〃阅读并理解这个函数{int max=0,k=l;cout«endl«"作业在各台机器上的安排如下:"«endl;for(int i=l;i<=m;i++){cout«K机器,,«i«n:for(intj=l;j<=n;j++) if((s[i]»(p[j]-l))&l) cout«*作业*«p0]«" ”; 〃理解位值运算!cout«"总耗时:”《d[i]vvendl;if(max<d[i]) {max=d[i]; k=i;}coutvv“\n“vvnvv”个作业在” vvmvv”台机器上执行完毕最少需要时间H«d[k]«endl;}int main()intp[]={0,l, 2,3, 4,5,6,7}, 〃作业编号,p[0]不用t[]={0,2,14,4,16,6,5,3}, 〃对应作业时间,t[0]不用s[]={0,0,0,0}, 〃机器处理的作业集合,女口:s⑴存放机器处理过的作业号,s[0]不用d[]二{0,000}; 〃机器处理作业的总时间,女口:d[2]存放机器处理过的作业的总时间,d[0]不用int n=sizeof(p)/sizeof(int)-l,m=sizeof(s)/sizeof(int)-l; //n-作业总数,m••机器台数Dsc_Order_By_t(t,p,n); 〃对作业根据运行时间t进行降序排列Processing(p,t,n,s,d,m); 〃用最长运行时间优先算法处理作业Output(p,n,s,d,m); 〃输出结果_getch();return 0;}运行结果图:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1997年7月 烟台大学学报(自然科学与工程版) July1997第10卷第3期 Journal of Yantai U niversity(N atural Science and Eng ineering) Vol.10No.3多处理机调度问题的一种近似算法程建纲(烟台大学数学与信息科学系,烟台264005) 秦成林(上海大学数学系,上海201800)摘要 对多处理机调度问题P C max,给出一种近似算法.大量实例的计算结果表明,本文的算法是非常有效的.关键词 组合优化 排序 近似算法 随机算法中图分类号 O224多处理机调度问题P C max考虑有n个独立的工件和m台相同的机器,每一工件在并且仅在一台机器上加工一次,同时在加工时不允许中断加工的情形,所讨论的问题为:确定工件在各机器上的分配方案,使得从第一个被加工工件开始加工时刻起到全部工件加工完毕时刻止的时间跨度取极小.由于它在许多领域中都有广泛的应用,同时又是一个NP-C 问题,故其近似算法的研究受到广泛重视[1,2].本文对此问题通过随机迭代来给出一种近似算法,并通过大量的计算实例来表明对通常的P C max问题,本文的算法能够获得精度很高的近似解,而且在许多情况下也能获得问题的精确解.下面首先给出本文中对此问题的数学描述形式.设m,n是正整数,R n+表示分量全为正数的n维向量的全体,同时为了方便起见,在本文中,对任意的向量,其分量始终用括号的形式表示,例如对l R n+,其相应的n个分量为l(1),l(2),!,l(n),另外对j所满足的条件组 ,以∀{l(j)|条件组 }表示对所有j满足条件组 的分量l(j)做累加,以M表示由{1,2,!,n}到{1,2,!,m}的映象全体所构成的空间,此时l R n+表示n个工件的工件组,其中第j个工件的加工时间为l(j),q M表示对工组的一个分配方案,它将第j个工件分配给第q(j)号机器,进而P C max问题为:对给定的l R n+,极小化问题min max1#i#m∀{l(j)|q(j)=i} s.t q M(P)为了便于描述本文对此问题的算法,再引进以下一些记号,以R m表示通常的m维空间, [0,h]n表示R n中所有分量都不超过h的n维非负向量的全体,以S n表示{1,2,!,n}上的全体置换所构成的n次对称群,对l R n+, S n,l 表示向量(l( (1)),l( (2)),!, l( (n))),映象A:R n+∃M%R n+的定义为A(l,q)的第n个分量A(l,q)(j)=∀{l(k)|q(k)=q(j),k&j},映象D:R n+%S n的定义为:对y R n+,D(y)由以下两条件唯一确定:(1)y (D(y )(1))&y (D (y )(2))&!&y (D (y )(n ));(2)若j <k,y (j )=y (k ),则[D(y )]-1(j )<[D (y )]-1(k ),即向量yD(y )是y 经非增序重排后所得到的新向量,映象B :R n +%M 的定义为:对lR n +,B (l)通过如下的方式对j 从1到n 依次给出:B (l)(j )=min {k |b(k ,j )=min 1#i #m b(i,j )},其中b(i,j )=∀{l(j ∋)|B (l)(j ∋)=i,j ∋<j },即B(l)是按l 的分量顺序,用首先完工准则所得到的分配方案.在以上记号下,本文对问题(P)的算法为:算法P:取正整数T 为算法中止的迭代次数,正数 h 为给定的步长,以q * M 存放到当前为止的最好解,f *存放其相应的目标值,即f *=max 1#i #m ∀{l (j )|q *(j )=i},qM 存放当前解,另外t 为当前的迭代次数,变量f ,g,h R ,!, S n ,z R n .Step0:(初始化)任选一个q M 做为问题的初始解,初始化t =0;h =0;q *=q ;f *=max 1#i #m ∀{l (j )|q *(j )=i};f =∀m i=1[∀{l(j )|q (j )=i}]2.Step1:(构造新解)置g =f .当h >0时,以均匀分布的方式在[0,h ]n 中随机选取向量z ,当h =0时,取z 为零向量.以均匀分布的方式在S n 中随机选取 ,置!=D(A (l ,q ) -1+z -1),q =B(l !)!-1,f =∀m i=1[∀{l(j )|q (j )=i}]2.Step2:(改变h)如果f =g ,则置h =h + h,否则置h =0.Step3:(比较f *)如果max 1#i #m∀{l(j )|q (j )=i}<f *,则置f *=m ax 1#i #m ∀{l(j )|q (j )=i},q *=qStep4:(流程控制)如果t <T ,则置t =t +1,转Step1,否则输出q *及f*做为问题(P )的近似解及相应的目标值.注1:!=D (A (l ,q ) -1+z -1)可通过如下的过程给出,取变量y R n ,x R m .(0)初始化j =n ,x (i)=0,i =1,2,!,m ;(1)置x (q (j ))=x (q (j ))+l (j ),y (j )=x (q (j ))+z (j );(2)如果j =1,则取!=D (y ),否则置j =j -1,转(1).注2:q =B (l !)!-1及f =∀mi=1[∀{l(j )|q (j )=i }]2可通过如下过程给出:取变量x R m .(0)初始化j =1,x (i)=0,i =1,2,!,m ;(1)置q (!(j ))=min {k |x (k )=min 1#i #m x (i)};(2)置x (q (!(j )))=x (q (!(j )))+l(!(j ));(3)如果j =n ,则转(4),否则置j =j +1,转(1);(4)置f =∀m i=1[x (i )]2,结束过程.注3:算法在实现时,随机量 和z 的选取可通过伪随机近似的产生,例如伪随机数用乘同余法∀(k )(23∃∀(k -1)(mod (108+1)),给出,当取∀(0)=∀0=47594118时,它具有比较好的性质[3].在算法P 开始时,初始化∀(0)=∀0,然后每次在S n 中随机选取 都用如下的方式进行.13)166)烟台大学学报(自然科学与工程版) 第10卷(2)置∀(0)=∀(n ).当h >0时,每次在[0,h]n 中随机选取z 都用如下的方式进行(1)取z (k )=h ∃∀(j )/(108+1),k =1,2,!,n;(2)置∀(0)=∀(n ).由以上的注可知当用注3的方式实现算法P 时,其计算复杂性不超过O(T (n 2+m 2)),对此算法的理论分析将在另文给出,下面通过大量的实例来表明算法P 具有非常好的性质.现在来构造问题P 的一些实例,首先对注3中的乘同余法初始化∀(0)=∀0,然后对每组给定的m ,n (n <256),通过如下的方式做出问题(P )的一千个实例E(m ,n ),其中第k 个实例的向量l 的分量取值为 l(j )=int (100∃∀(256∃(k -1)+j )/(108+1))+1,j =1,2,!,n.其中函数int 表示取整数部分,由此l 的分量的取值范围在1到100之间,并且E (m ,n)中第k 个实列的l 分量的取值与E (m ,n +1)中第k 个实例的l 分量的前n 个分量相同,例如E (3,16)中的第1个实例为:m =3,n =16,l =(95,78,78,86,66,99,74,89,42,52,80,29,66,10,14,4),E (3,11)中的第1个实例为:m =3,n =16,l =(95,78,78,86,66,99,74,89,42,52,80),另外E (m ,n)与E (m +1,n)中相应实例的l 向量是相同的.由于以上所有的实例中,l 的分量是正整数,因此 f ∋=int ((m -1+∀n j=1l(j ))/m ),是问题的最优目标值的下界.下面给出对部分实例组E (m ,n )的计算结果,对每个实例都用注3的方式使用算法P ,初始解都取q(j )=1,j =1,!,n.对输出值f *,记d *=f *-f ∋,t *为迭代过程中首次取到输出值f *时的t 值.运算结果:取T =300, h =1.0,对以下12个算例组E (6,22),E (12,44),E(18,66),E (24,88),E (30,110),E (36,132),E (42,154),E (48,176),E(3,11),E (3,13),E (3,15),E (3,17)中的所有实例分别进行运算,其d *与t *的分布情况由表1与表2给出,另外表3给出LPT 算法[4]相应于表1的结果,即d LPT =max 1#i #m ∀{l(j )|q LPT (j )=i}-f ∋的分布情况,其中q LPT =B(lD(l ))[D (l)]-1,所有表中的数字都表示相应的实例数.表1 d *的分布统计表123&4E (6,22)91385011E(12,44)91639E(18,66)97327E(24,88)97723E(30,110)98713E(36,132)97822E(42,154)98218)167)第3期 程建纲等:多处理机调度问题的一种近似算法续表10123&4E (3,11)56132875828E (3,13)9177841E (3,15)9928E (3,17)1000表2 t *的分布统计表0~4950~99100~149150~199&200E (6,22)720142623046E(12,44)84281322124E(18,66)88951222513E(24,88)9135120106E(30,110)94039777E(36,132)9284091013E(42,154)942351166E(48,176)937351765E (3,11)906572593E (3,13)853********E (3,15)920551294E (3,17)95442310表3 d LPT 的分布统计表012345&6E(6,22)6508311912493525E (12,44)12870110142134515E (18,66)11471118144125527E (24,88)01564148156166451E (30,110)01184157162159427E (36,132)01786164165172396E (42,154)11077159206190357E (48,176)0772192223170336E(3,11)461041201119886435E(3,13)4914715711712381326E(3,15)7316117312510696266)168)烟台大学学报(自然科学与工程版) 第10卷以上统计结果表明对所选实例组中的绝大多数实列,算法P 都能用较少的迭代次数得到问题的最优解,同时表1表明其绝对精度有以下两个趋势:(1)对固定的k ,当n =k m 时,随着m 的增大,绝对精度有提高的趋势;(2)对固定的m ,随着n 的增大,绝对精度有提高的趋势.因此算法P 对大规模多处理机调度问题具有明显的优点,而不同于LPT 算法,表3表明当n =km 时,随着m 的增大,LPT 算法的绝对精度有降低的趋势.最后关于算法P 中参数 h 的作用,在Step1产生新解时,如果h =0,则由文献[5]中结论可知新解的目标值一定不超过原来解的目标值,但随着h 的增大,新解目标值的随机性将变大,而倾向性将变小,另外对大量实例的计算结果表明在迭代到一定的次数后,目标值会出现涨落现象,而其均值与涨落次数都明显的依赖于参数 h 的选取,随着 h 的增大,目标值的均值与目标值的涨落次数同时具有增大的趋势,因此当T 比较大, h 在一定的范围内变化时,解的性能不会有明显的改变.参 考 文 献1 孙世杰.排序问题的简短历史和国外发展动态.运筹学杂志,1991,10(1):22~382 唐国春.排序问题的定义、分类和在国内的某些研究进展.运筹学杂志,1990,9(2):65~743 徐钟济.蒙特卡罗方法.上海:上海科学技术出版社,19854 Graham R L.Bounds on mult iprocessing timing ano malies.SIAM J A ppl M ath,1969,17:416~4295 程建纲.同型号平行机器排序问题中近似解的一种改进方法.烟台大学学报(自),1996(1):29~33An Approximation Algorithm forthe Problem of Multiprocessor SchedulingCheng Jiang ang(Department of M athematics and Information S cience,Yantai U niversity,Yantai 264005)Qin Cheng lin(Department of M athematics,S hanghai Universi ty,S hanghai 201800)Abstract For the problem P C m a x of multiprocessor scheduling,an approximate algorithm is g iven in this paper.The calculated results from many ex amples show that this alg orithm is very effective.Key words combinatorial optimization,scheduling ,approximate algorithm,random ized algo rithm(责任编辑 苏晓东))169)第3期 程建纲等:多处理机调度问题的一种近似算法。