【问题标题】:Resource Constrained Scheduling Project Using Pyschedule使用 Pyschedule 的资源受限调度项目
【发布时间】:2022-07-03 19:03:29
【问题描述】:

介绍:

我正在研究资源约束项目调度问题 (RCPS),我正在寻找一些指导。这是根本上的优化问题。

目前,我正在使用一个名为 Pyschedule 的库,我可以在其中定义一个目标,然后添加各种约束,例如容量约束、优先约束等。

我的项目概述是这样的:给定一组需要一定数量的 CPU/GPU 计算的作业,将资源计划(我们可用的有限 CPU/GPU 计算)分配给一组作业,以优化最大在特定时间范围内完成的工作量。

以下是项目的限制条件:

  • 作业必须有 15 分钟的惊人开始时间(计划的第二个作业必须在第一个作业后至少 15 分钟开始,依此类推)。
  • CPU/GPU 计算有限(资源有限)
  • 只能并行调度 5 个作业
  • 时间有限(所有作业必须在最长期限内完成,例如:12 小时)
  • 不同的工作有不同的优先级
  • 每小时可用资源量变化(资源计划)

我面临的主要问题:

目前,在 pyschedule 库中,您必须为任务定义长度(服务时间),因此基本上任务/作业将需要一定数量的 CPU/GPU 计算才能完成。 但问题是,我正在处理的工作有不同的服务时间,具体取决于给予它的资源。 例如:一个需要 10 个 CPU 和 5 个 GPU 的作业可以在一小时内完成,但如果你给它 20 个 CPU 和 10 个 GPU,它可以在 30 分钟内完成。因此,长度(服务时间)因您提供的资源量而异。

我应该如何最好地解决这个问题,python 中是否有比“pyschedule”更好的库来解决这个问题?

Pyschedule 中的示例代码:

S = Scenario(\'Schedule Optimization\',horizo​​n=720) #720代表12小时以分钟为单位

CPU, GPU = S.Resource(\'CPU\'), S.Resource(\'GPU\')

job1 = S.Task(\'Job1\', length = 20) #

所以在这个例子中,这表示 job1 需要 10 个 CPU 和 5 个 GPU 才能在 20 分钟内完成

结论:

感谢您提供任何帮助,我已经在这个问题上停留了一段时间,我想知道我是否应该朝另一个方向前进,或者是否有更好的方法我不知道,

感谢您花时间阅读我的问题!

    标签: optimization linear-programming or-tools mixed-integer-programming cp-sat-solver


    【解决方案1】:

    我们使用 OR-Tools CP-SAT 的当前代码和这个例子得到了非常好的结果:rcpsp_sat

    但请注意,这不是一个包库,求解器。这是一个构建模型以解决 RCPSP 学术基准问题的示例。

    您将需要了解当前代码以使其适应您的具体情况。

    【讨论】:

    • 感谢您的回复,我将研究重组代码以适合我的具体情况
    • 在定义任务时,我们必须定义一个开始和结束变量,该变量需要一定数量的资源才能完成任务。但是,如果结束时间变量与分配给它的资源数量有关怎么办。例如,如果任务 1 有 20 个资源,它将在 1 小时内完成,但如果它有 10 个资源,它将在 2 小时内完成。目标是在有限计算的情况下找到一组任务/作业的最佳开始时间。但是这些任务没有明确的服务时间。它完全取决于分配给它的资源。在 OR-Tools 中这样做是否可行?
    • 这是问题的配方部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2011-01-24
    • 2010-12-04
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多