任务分配问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ij
1
j 1,2,, n
xij 0或1, i 1, m, j 1, n
-6-
三、优化模型
可以用隐枚举法和分支定界方法(利用分解技术), 割平面法(松弛技术)来求解,但这些方法不是有效算 法,无法解规模大的问题。
ຫໍສະໝຸດ Baidu
-7-
四、启发式算法(近似)
1.贪婪算法(计算机模拟) 例.X1=(2, 3, 8, 9, 10, 7, 6) , X2=(3, 8, 5, 9, 7, 6, 4) Y=(2,3,5,9,7,6,4)
-5-
三、优化模型
引入一个0,1变量xij
1 xij 0
第j项工作由第i人做 否则
设第i人完成第j项工作的时间是aij,T为从开始工作到 最后一项工作完成的时间即总时间。则可得如下优化模型:
min T max{ aij xij }
1i m j 1 n
s.t.
x
i 1
m
MATHEMATICA MODEL
任务分配问题
制作: 龚劬
一、问题重述
假设有m个人,共同完成n项工作,(n>m≥2)。每 个人可以干任何一件工作,但效率不同,任意时刻每个 人只能干一件工作,每项工作只能由一人独立完成。 如果这m个人任选一项工作同时开始干,每个人干完 一件工作后,立即选一项还没有人干过的工作接着干, 直到所有 n项工作全部完成。从开始工作到最后一项工 作完成的时间称为总完成时间,简称总时间,记为T。 为使总时间 T尽量小,请对以下三种情况,分别确定 每个人应干哪几项工作?顺序如何?并求出T。 对一般情况进行讨论
结束 -21-
五、参考书
1.刑文训 谢金星,现代优化计算方法,清华大学出版 社,2001年; 2.张颖 刘艳秋, 软计算方法,科学出版社,2002年; 3.王晓东, 算法设计与分析,清华大学出版社, 2003 年. 4.(美) Zbigniew Michalewicz,等著,曹宏庆等译,如 何求解问题_现代启发式方法,中国水利水电出版社, 2003年.
结束 -22-
The End
-23-
1 n T 0 min(aij ) 因此有如下结论 m j 1 1im
定理
1 n T min(aij ) m j 1 1i m
-4-
总时间的一个下界
根据上述定理,计算出一个特定问题的下限很容易, 对本问题的三种情形可计算出其下限。
1 (1)T0= 2 (2 3 5 9 7 6 4) 18 1 31 1 (2)T0= 2 y i 2 807 = 403.5 i 1 62 1 1 y (3)T0= 3 i 3 1395 = 465 i 1
-3-
二、问题分析
总时间的一个下界
我们的任务是寻找一个最佳调度方案,使总完成时 间最短,该问题是一个 NP难题,不存在有效算法。求解 大规模问题要用近似算法。最好能找到一个评价结果的 指标。下面给出总时间的一个下界。设Y是最短时间向量, 如果每人都用Y中的时间来干工作,中间无间息,且每人 的最后一项工作都同时干完,这时的总时间T最小,为T0
-20-
四、注意
5)最好对给出的算法进行时间复杂度分析,表明是否 有效算法; 6)可进一步对算法进行灵敏度分析,比如,自己构 造一些实例对算法的计算时间和精度进行测试,不 只是限于题目所给出的三个特例; 以下做法不可取 1)只是针对题目中三种特殊情形描述算法,不将其 一般化到m个人,n个工作的情形; 2)不考虑算法的计算时间, 3)没有总结出算法步骤。
1 1 2 2 3 3
4 4
5 5
6 6
7 7
-8-
四、启发式算法(近似)
1.贪婪算法(计算机模拟)
1 1 2 2 3 3 4 4 5 5 6 6 7 7
-9-
四、启发式算法(近似)
1.贪婪算法(计算机模拟)
1 1 2 2 3 3 4 4 5 5 6 6 7 7
-10-
四、启发式算法(近似)
1.贪婪算法(计算机模拟)
-13-
四、启发式算法(近似)
1.贪婪算法(计算机模拟) (改进) 设 Y1 为各项工作的第二短时间向量。令 Y=Y1-Y 称为 罚数向量。 算法步骤: 1)令t=0; 2 )对当前无工作做的 i, 在 Zi 里未做的最小分量所对应 的工作中选择Y尽可能大的分量所对应的工作干; 3)令t为当前所有在干的工作中最先结束的结束时间; 4)重复2),3)直到所有工作干完为止。
-2-
一、问题重述
(1) X1=(2, 3, 8, 9, 10, 7, 6) , X2=(3, 8, 5, 9, 7, 6, 4)。 (2) X1=(44, 37, 39, 25, 26, 49, 11, 49, 51, 46, 13, 31, 11, 50, 29, 16, 54, 13, 58, 29, 37, 49, 13, 40, 34, 25, 42, 43, 24, 24, 52), X2=(52, 37, 60, 56, 22, 45,60, 23, 37, 16, 60, 44, 11, 39, 16, 16, 50, 25, 13, 25, 30, 26, 58, 59, 31, 24, 19, 19, 43, 31, 31)。 (3) X1=(46, 27, 42, 21, 20, 40, 15, 33, 56, 24, 50, 29, 25, 56, 42, 42, 32, 15, 39, 45, 56, 52, 12, 38, 56, 32, 44, 36, 36, 34, 28, 31, 24, 13, 23, 59, 14, 30, 29, 35, 18, 34, 23, 42, 38, 18, 57, 43, 36, 30, 16, 50, 33, 48, 40, 52, 11, 21, 14, 16, 27, 17), X2=(11, 37, 43, 38, 52, 15, 20, 44, 33, 28, 18, 46, 57, 37, 15, 48, 31, 34, 35, 21, 27, 15, 40, 19, 57, 15, 33, 24, 54, 48, 24, 44, 23, 15, 12, 27, 50, 25, 22, 35, 23, 28, 13, 35, 21, 54, 40, 48, 57, 27, 38, 15, 42, 31, 59, 16, 57, 42, 28, 18, 34, 21)。 X3=(46, 37, 39, 25, 26, 49, 11, 49, 51, 46, 13, 31, 35, 50, 29, 59, 54, 13, 58, 29, 37, 15, 13, 40, 34, 25, 42, 43, 24, 24, 52, 52, 40, 60, 21, 22, 45, 60, 23, 37, 16, 60, 44, 11, 39, 16, 16, 50, 25, 13, 25, 30, 26, 58, 59, 31, 24, 19, 19, 43, 31, 31)
1 1 2 2 3 3 4 4 5 5 6 6 7 7
-11-
四、启发式算法(近似)
1.贪婪算法(计算机模拟)
1 3 2 4 5 2 5 1 4 3 2 5 6 7 4 7 6 2 3 4 5
6 7
7
6
1
3 1
-12-
四、启发式算法(近似)
1.贪婪算法(计算机模拟) 向量Y= (b1,b2,…,bn), 其中 bj=min{a1j,a2j,…,amj}, 称 Y 为各项工作的最短时 间向量。称向量Zi=Xi–Y为第i人对Y的误差向量。 算法步骤: 1)令t=0; 2 )对当前无工作做的 i, 任选 Zi 中未做的一个最小分量 所对应的工作干; 3)令t为当前所有在干的工作中最先结束的结束时间; 4)重复2),3)直到所有工作干完为止。
-18-
四、启发式算法(近似)
5)tt*0.87,kk+1,重复2)至4)直到t>tf 为止 。 注:可以增设记忆功能,将前面计算过的解中, 最优的解记录下来,效果更好。
-19-
四、注意
1)这是一个NP难题,不存在精确的有效算法, 求解大型问题要用近似的有效算法。 2)描述算法时,要就一般情况(m个人,n项工作) 给出算法步骤.由于是近似算法,最好给出最优解 的下界计算公式,据此对结果进行近似程度分析; 3 )智能算法 , 如模拟退火算法和遗传算法等中 的参数选择可能会很花时间,选得不合适,效果也 会不好; 4)最好能给出模型,如0-1规划模型。
-17-
四、启发式算法(近似)
4.模拟退火算法 1 )用贪婪算法得到一个初始解 x0, 令 k0,选 定 初始温 度 t0 和末 温 tf,确 定降温 策略( 如取 tk+1=tk*0.87)和内循环次数Lk,tt0; 2)产生新解x1:随机选择两人,任意将其中一 人的一个工作分给另一人或交换这两人的任意一 对工作,计算新解和原解的目标函数值的差f; 3)若新解更优,则x0x1,否则,以一定概率 (可取为exp(-f/t))接受新解; 4)重复2),3)到给定次数Lk;
-14-
四、启发式算法(近似)
2.逐步改进算法 算法步骤: 1)让每件事由所需时间最少的人做; 2 )计算出每个人的完成时间,找出完成指派 工作所需时间最多的人(最繁忙者)与所需时间 最少的人(最闲暇者); 3)若最繁忙者所做的工作均标有,则停止, 此指派方案即为一个近似最优方案;
-15-
四、启发式算法(近似)
2.逐步改进算法 算法步骤: 4)求最繁忙者所做的每个工作的工作时间与最闲 暇者的工作时间差,其绝对值最小的工作转给最 闲暇者做。 5)若此二人完成时间的较大者变小,记录新方案, 清除标记,转2);否则,维持原方案,并将该工 作记上标记,转4)。
-16-
四、启发式算法(近似)
3.启发式随机搜索算法 算法步骤: 1)用贪婪算法得到一个工作分配方案,令k=0; 2 )随机选择两人,任意将其中一人的工作分 配给另一人或者交换这两人的任意一对工作; 3 )判断新方案是否更优?是, kk+1,记录 下新方案,执行下一步,否则直接执行下一步; 4)判断k>=N否?是,停止,否则,转2) 。
相关文档
最新文档