这是关于资源受限的项目调度问题 (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)。
在整数编程范式中是否有更强大的方法来实现此要求?