-1

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

决策变量是 x_it:如果活动 i 计划在离散时间点 t 开始,则 x_it = 1。

由于外部原因,每个任务都有一个与之关联的优先级。为了说明目标,请考虑 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;本质上,这涉及缩放每个优先级,使得低优先级任务的组合不能高于此优先级,并将目标函数设置为“最大化 P_i*x_it”

这种方法的问题在于,虽然针对大量任务(~300 个任务)和多个优先级(20 个级别)进行扩展,但新的优先级值很快就会变成巨大的数字(~10^17)。

在整数编程范式中是否有更强大的方法来实现此要求?

4

1 回答 1

0

一种方法是:

  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
于 2018-11-13T11:56:06.003 回答