简介:
我正在研究一个资源约束项目调度问题(RCPS),我正在寻找一些指导。这是一个根本上的优化问题。
目前,我正在使用一个名为Pyschedule的库,在该库中,我可以定义一个目标,然后添加各种约束,例如容量约束、优先级约束等。
我的项目概述如下:给定一组需要一定数量CPU/GPU计算的作业,将资源计划(我们可用的有限CPU/GPU计算)分配给一组作业,以便优化在特定时间框架内完成的最大作业数量。
以下是该项目的制约因素:
我面临的主要问题是:
目前,在pyschedule库中,您必须为一个任务定义一个长度(服务时间),因此基本上一个任务/作业需要一定数量的CPU/GPU计算才能完成。但问题是,我所从事的工作有不同的服务时间,取决于提供给它的资源。例如:一个需要10个CPU和5个GPU的作业可以在一小时内完成,但是如果给它提供20 CPU和10 GPU,它可以在30分钟内完成。因此,长度(服务时间)取决于您给它的资源的数量。
我应该如何最好地着手解决这个问题,在python中是否有一个比"pyschedule“更好的库来解决这个问题?
Pyschedule的示例代码:
S=场景(“计划优化”,horizon=720) #720表示每分钟12小时
CPU,GPU = S.Resource('CPU'),S.Resource('GPU')
job1 = S.Task('Job1',长度= 20) #
因此,在本例中,这将表示job1需要10个CPU和5个GPU才能在20分钟内完成。
结论:
任何的帮助都很感激,我已经在这个问题上被困了一段时间了,我想知道我是否应该朝另一个方向前进,或者是否有更好的方法,我不知道,
谢谢你抽出时间阅读我的问题!
发布于 2022-07-03 11:03:12
我们使用OR-Tools CP-SAT的当前代码取得了非常好的结果,下面的例子是:sat。
但是要小心,这不是一个软件包库,解决者。这是一个从RCPSP学术基准构建解决问题的模型的例子。
您需要理解当前的代码,以使其适应您的具体情况。
https://stackoverflow.com/questions/72843244
复制相似问题