2021-06-21

贪心法完成多机调度问题求解

  1. 提出问题
    设有n个独立的作业{1, 2, …, n},由m台相同的机器{M1, M2, …, Mm}进行加工处理,作业i所需的处理时间为ti(1≤i≤n),每个作业均可在任何一台机器上加工处理,但不可间断、拆分。多机调度问题要求给出一种作业调度方案,使所给的n个作业在尽可能短的时间内由m台机器加工处理完成。

  2. 解决办法
    作业的个数为n,机器的数目为m
    A: n<m
    这种情况很简单,将n个作业分配给m个机器中的n个就可以了。
    B: n>m
    设7个独立作业{1, 2, 3, 4, 5, 6, 7}由3台机器{M1, M2, M3}加工处理,各作业所需的处理时间分别为{2, 14, 4, 16, 6, 5, 3}。这里给出三种解决办法:
    (1)如果将作业平均分配给每个机器,总共所需的时间为22
    这种算法的优点是比较简单,容易想到。缺点是没有考虑节省时间,机器所运行的作业完全由作业的次序决定,当运行时间比较大的作业集中在一起时,会把他们分配给同一个机器,这样所用的时间比较长,效率比较低,如表1所示。

机器作业时间
M11,2,32+14+4=20
M24,516+6=22
M36,75+3=8

(2)作业按从小到大依次分配给空闲的机器
时间为:2,7,23这种算法也容易想到,事先也比较方便,同时也考虑到时间的生排,比第一种算法有了改进。但是运行时间最长的作业一定是最后完成的,如果运行最长作业前,其他机器运行时问差不多就会造成其他几个机器等待一个机器的状况,这样机器的运行效率比较低。如表2所示。

机器作业时间
M11,62+5+16=23
M27,53+6=9
M33,24+8=12

(3)经过上面两种算法的思考,就会想到把作业按从大到小一次分配给空闲的机器当 nm 时,首先将 n 个作业依其所需的处理时间从大到小措序,然后依此顺序将作业分配给空闲的处理机。如图3所示。
按 贪心算法产生的作业调度如图。所需要的加工时间为17。

在这里插入图片描述

时间长为6, 11 ,15,17.这种算法很明显首先挑选了处理时间比较长的作业,这正是贪心算法的特点,总是做出在当前看来最好的选择,也就是说贪心算法并不从整体左右考虑,他所作出的选择只是在某种意义上局部最优的选择。

3.实验截图

在这里插入图片描述
4. 心得体会

贪心法( Greedy algorithm )是一种在每一步选择中都采取在当前状态下最好/优的选择从而希望导致结果是致好/优的算法。比如在旅行推销员问题中,如果旅行员每次都选择最近的城市,那这就是一种贪心算法。贪心算法在有最优子结构的问題中尤为有效。最优子结构的意思是局部最优解能决定全局最优解。简单地说,问题能够分解成子问题来解决,子间题的最优解能递推到最终问题的最优解。这次的实验主要是为了让我们熟悉多机调度问题的算法并且能够初步的掌握贪心算法。对算法的认识和运用有了更深的理解。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值