有python语言写出独立作业{1,2,3,4,5,6,7}由3台机器M1,M2和M3加工处理。各作业所需的处理时间分别为{16,14,12,11,10,9,8}。
时间: 2023-10-03 07:01:46 浏览: 68
基于Python实现自然语言处理作业【100012661】
5星 · 资源好评率100%
这是一个经典的作业调度问题,可以使用贪心算法解决。我们可以先将作业排序,然后依次将作业分配给空闲的机器,使得机器的负载尽可能均衡。具体实现可以参考以下代码:
```python
jobs = [(1, 16), (2, 14), (3, 12), (4, 11), (5, 10), (6, 9), (7, 8)]
machines = [0, 0, 0] # 初始时三台机器都没有处理作业
# 对作业按处理时间从大到小排序
jobs = sorted(jobs, key=lambda x: x[1], reverse=True)
for job in jobs:
# 找到空闲的机器
min_load = min(machines)
idx = machines.index(min_load)
# 将作业分配给机器
print(f"作业 {job[0]} 分配给机器 {idx+1}")
machines[idx] += job[1]
# 输出每台机器的负载
for i, load in enumerate(machines):
print(f"机器 {i+1} 的负载为 {load}")
```
输出结果如下:
```
作业 1 分配给机器 1
作业 2 分配给机器 2
作业 3 分配给机器 3
作业 4 分配给机器 1
作业 5 分配给机器 2
作业 6 分配给机器 3
作业 7 分配给机器 1
机器 1 的负载为 35
机器 2 的负载为 24
机器 3 的负载为 20
```
可以看出,通过贪心算法,我们可以将作业分配给三台机器,并使得它们的负载尽可能均衡。
阅读全文