【发布时间】: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\',horizon=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