【问题标题】:Is this an intelligent use case for optaPlanner?这是 optaPlanner 的智能用例吗?
【发布时间】:2014-10-14 05:51:47
【问题描述】:

我正在尝试清理当前使用优先级 FIFO 调度算法的企业 BI 系统(因此,周二的优先级 4 报告将在周四的优先级 4 报告和周一的优先级 3 报告之前执行。)其他详细信息:

  • 队列永远不会为空,作业总是被添加
  • 作业的执行时间从不到一分钟到超过 24 小时不等
  • 有 40 个奇怪的相同应用服务器用于执行作业

我认为我可以让 optaPlanner 为这种情况启动并运行,其中包含关于优先级的硬性规则和一些关于队列平均时间的软性规则。我是调度优化的新手,所以我想我的问题是在这种情况下我应该寻找什么来决定 optaPlanner 是否会帮助我?

【问题讨论】:

    标签: project-planning optaplanner resource-scheduling


    【解决方案1】:

    这个问题看起来像是一种装箱(可能还有作业车间调度),它们是NP-complete,所以OptaPlanner会比先进先出算法做得更好。

    但它真的是NP-complete吗?如果满足所有这些条件,则可能不是:

    • 所有 40 台服务器都是相同的。因此,在服务器 A 而不是服务器 B 上运行优先级报告不会更快地交付报告。
    • 所有 40 台服务器都是相同的。所以总持续时间(对于特定的输入集)是一个常数。
    • 总制造期无关紧要。因此,给定 20 个 1 小时的小作业和 1 个 20 小时的大作业和 2 台机器,考虑到总工时为 30 小时,在大作业开始之前的 10 小时后完成所有小作业是可以的。不希望将制造时间缩短到 20 小时。
    • “队列中的平均时间”是有争议的:您是否关心作业在队列中等待多长时间才能开始直到它们完成?如果总持续时间是一个常数,这可以通过先或最后对小作业进行 FIFO 处理来完成(当然,同时仍然尊重优先级)。
    • 作业之间没有依赖关系。

    如果满足所有这些条件,OptaPlanner 将无法比正确编写的贪心算法做得更好(该算法首先安排最小/最大的最高优先级作业)。如果不满足这些条件中的任何一个(例如,您购买了 10 台速度更快的新服务器),那么 OptaPlanner 可以做得更好。您只需要评估是否值得花费 1 个线程来解决这个问题。

    如果您使用 OptaPlanner,请务必查看实时调度和守护程序模式,以便在新报告进入系统时重新计划。

    【讨论】:

    • 嘿!感谢那。在这些断言中,制造跨度似乎是最错误的,在这种情况下,20 小时会更好,我认为减少它会有意义地减少排队的平均时间(我们将其衡量为直到他们被接走工作的时间,未完成。)
    猜你喜欢
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    相关资源
    最近更新 更多