在 CPLEX 中进行任务调度和资源分配时如何对流水线处理进行建模?
How to model pipeline processing when doing task scheduling and resource allocation in CPLEX?
我提出了一个任务调度和资源分配问题,其中资源可以启动运行一个具有复杂条件的新任务。
- 如果资源可以在偶数时间单位开始新任务,前提是从开始上一个以偶数时间单位开始的任务起至少经过了 2n 个时间单位。
- 同样适用于奇数时间单位。
以下是对单个资源的有效调度。每个数字代表此时开始了一个新的任务。
- 0, 1, 2n, 2n+1, 4n, 4n+1, ...
我有很多之间有优先关系的任务(我知道如何处理优先关系)和一些此类资源。我按照以下方式进行了调度,但没有产生最佳结果:
- 尽管任务可以在奇数或偶数时间单位开始,但我使用 "forbidStart" 和 [= 限制了一半任务在偶数时间单位开始,另一半在奇数时间单位开始37=].
- 每个资源 s,我考虑了两个 "cumulFunction"s s_even 和 s_odd.
- 禁止在偶(奇)时间单位启动的任务需要s_odd(s_even)资源。我使用 "cumulFunction" 和 "pulse".
定义了这个约束
虽然上述过程产生了有效的调度,但还不够,因为我正在寻找最佳解决方案。有人知道如何在 CPLEX 中解决这个问题吗?
如 Philippe Laborie 在 https://www.ibm.com/developerworks/community/forums/html/topic?id=ac7a4fa1-f304-420c-8302-18501b4b7602&ps=25 所说
just consider an additional interval variable 'task' of length 2n that represents the task and have an alternative on two optional tasks 'taskEven' and 'taskOdd'. These two intervals are the ones you already have in your model (with the adequate forbidStart constraints, and with a contribution to the adequate resource).
我提出了一个任务调度和资源分配问题,其中资源可以启动运行一个具有复杂条件的新任务。
- 如果资源可以在偶数时间单位开始新任务,前提是从开始上一个以偶数时间单位开始的任务起至少经过了 2n 个时间单位。
- 同样适用于奇数时间单位。
以下是对单个资源的有效调度。每个数字代表此时开始了一个新的任务。
- 0, 1, 2n, 2n+1, 4n, 4n+1, ...
我有很多之间有优先关系的任务(我知道如何处理优先关系)和一些此类资源。我按照以下方式进行了调度,但没有产生最佳结果:
- 尽管任务可以在奇数或偶数时间单位开始,但我使用 "forbidStart" 和 [= 限制了一半任务在偶数时间单位开始,另一半在奇数时间单位开始37=].
- 每个资源 s,我考虑了两个 "cumulFunction"s s_even 和 s_odd.
- 禁止在偶(奇)时间单位启动的任务需要s_odd(s_even)资源。我使用 "cumulFunction" 和 "pulse". 定义了这个约束
虽然上述过程产生了有效的调度,但还不够,因为我正在寻找最佳解决方案。有人知道如何在 CPLEX 中解决这个问题吗?
如 Philippe Laborie 在 https://www.ibm.com/developerworks/community/forums/html/topic?id=ac7a4fa1-f304-420c-8302-18501b4b7602&ps=25 所说
just consider an additional interval variable 'task' of length 2n that represents the task and have an alternative on two optional tasks 'taskEven' and 'taskOdd'. These two intervals are the ones you already have in your model (with the adequate forbidStart constraints, and with a contribution to the adequate resource).