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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 max

1#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

即向量yD(y )是y 经非增序重排后所得到的新向量,映象B :R n +%M 的定义为:对l

R 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 ∋

在以上记号下,本文对问题(P)的算法为:

算法P:取正整数T 为算法中止的迭代次数,正数 h 为给定的步长,以q * M 存放到当前为止的最好解,f *存放其相应的目标值,即f *=max 1#i #m ∀{l (j )|q *(j )=i},q

M 存放当前解,另外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}

Step4:(流程控制)如果t

*做为问题

(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 =∀m

i=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卷

相关文档
最新文档