【问题标题】:Maximize resource usage during job scheduling algorithm?在作业调度算法期间最大化资源使用率?
【发布时间】:2018-04-10 21:42:08
【问题描述】:

我正在尝试为作业调度问题创建动态编程算法。我有一组n 工作,每个工作i 有一个开始时间s(i) 和结束时间f(i)。开始总是在结束之前,您可以同时拥有两个工作。我将如何创建一个算法来最大化资源繁忙的时间?

【问题讨论】:

  • 反转成本函数。
  • @wildplasser 抱歉,这是什么意思?

标签: algorithm dynamic-programming


【解决方案1】:

您必须决定在每个点上跟踪什么状态。一种选择是跟踪当前正在运行的作业的完成时间,在这种情况下,您可以大致如下计算可能的最大繁忙时间。

创建从一组完成时间到目前为止的繁忙时间的地图。将其初始化为 {null set} -> 0.

对于每个作业按开始时间升序排列:

  1. 创建一个新映射并将旧映射的所有条目插入其中 两个完成时间都大于当前开始时间的地图 时间。
  2. 对于旧映射中的每个剩余条目,从集合中删除 完成时间小于或等于开始时间的时间 目前的工作。如果新地图没有该集合的条目 完成时间,或者如果与条目相关联的值 旧地图大于该集合的新地图中的值, 将生成的条目插入新地图。现在插入饰面 当前作业进入集合的时间并将时间添加到其值 接受新工作。如果新地图没有 结果集完成时间,或者如果该条目具有较低的值 比刚刚计算的值,为该集合和值添加一个条目 到新地图。
  3. 新地图变成旧地图

最后,地图中的最大值是最大可能的繁忙时间。如果您一直回溯我没有提到的信息,您可以回溯以找出所选择的工作是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    相关资源
    最近更新 更多