资源受限的项目调度,以便根据最高优先级安排任务

Resource Constrained Project Scheduling such that tasks are scheduled based on highest priority

这是关于资源受限项目调度问题 (RCPSP)。这涉及根据人力可用性在机器上及时安排某些任务 windows。这是以整数程序的形式设置的。我正在使用统一的离散时间表示。

决策变量是x_it:x_it = 1 if activity i is scheduled to start at a discrete time point t.

由于外部原因,每个任务都有一个与之关联的优先级。为了说明目标,请考虑 3 个任务 - p1、p2、p3,优先级为 3、3、4。 (两个优先级 - 3,4)要求是这样的 - 如果有足够的人力来单独安排 p1 和 p2 或 p3,即使 p1+p2 > p3,也必须选择 p3。我正在寻找一种使用决策变量 x_it.

来实现此逻辑的方法

我已经尝试通过以下方式实现我的要求:为每个任务分配一个新的优先级 (P):P1 = 3,P2 = 3,P3 = 7;从本质上讲,这涉及缩放每个优先级,以便低优先级任务的组合不能高于此优先级,并将 objective 函数设置为 "maximize P_i*x_it"

这种方法的问题在于,在扩展大量任务(~300 个任务)和多个优先级(20 个级别)时,新的优先级值会迅速变成巨大的数字 (~10^17)。

在整数规划范例中是否有更稳健的方法来实现此要求?

一种方法是:

  1. 解决具有最高优先级的作业(比如优先级 1)。设作业计划数为 n1。
  2. 添加约束:scheduled number of jobs with priority 1 = n1
  3. 求解优先级为 1 和 2 的作业。令优先级为 2 的计划作业数为 n2。
  4. 添加约束:scheduled number of jobs with priority 2 = n2 等等