在CPLEX中执行任务调度和资源分配时,如何为管道处理建模?

时间:2018-07-02 13:03:45

标签: scheduled-tasks pipeline cplex

我提出了任务调度和资源分配问题,其中资源可以在复杂的条件下开始运行新任务。

  • 如果从上一个以偶数时间单位开始的任务开始经过至少2n个时间单位,则资源可以以偶数时间单位开始新任务。
  • 奇数时间单位也是如此。

以下是对单个资源的有效调度。每个数字表示当时已开始一个新任务。

  • 0、​​1、2n,2n + 1、4n,4n + 1,...

我有很多任务之间都有优先级关系(我知道如何应付优先级关系)和这种类型的资源。我通过以下方式进行了调度,但并没有得到最佳结果:

  • 尽管任务可以以奇数或偶数时间单位开始,但我使用“ forbidStart”和“ stepFunction”限制了一半任务以偶数时间单位开始,另一半以奇数时间单位开始。
  • 对于每个资源s,我已经考虑了两个“ cumulFunction” s s_even和s_odd。
  • 禁止在偶数(奇数)时间单位上启动的任务需要s_odd(s_even)资源。我使用“ cumulFunction”和“ pulse”定义了此约束。

尽管以上过程产生了有效的调度,但由于我正在寻找最佳解决方案,这还不够。有人知道如何在CPLEX中解决此问题吗?

1 个答案:

答案 0 :(得分:0)

如Philippe Laborie在https://www.ibm.com/developerworks/community/forums/html/topic?id=ac7a4fa1-f304-420c-8302-18501b4b7602&ps=25所说

”,只需考虑一个长度为2n的附加间隔变量“任务”即可代表该任务,并在两个可选任务“ taskEven”和“ taskOdd”上有一个备选方案。这两个间隔是您模型中已经拥有的间隔足够的forbidStart约束,并为充足的资源做出了贡献。”

致谢