如何使用CPLEX opl添加这样的约束?

问题描述 投票:0回答:1

S [i] [j] [k]是机器[k]上操作O [i] [j]的开始时间。

C [i] [j] [k]在机器[k]上的操作O [i] [j]完成时间。

v [i] [j] [k]等于1,如果操作O [i] [j]在机器[k]上执行,则为0。

我想添加S [i] [j] [k] + C [i] [j] [k] <= v [i] [j] [k] * Big-M的约束,其中k属于MC [i] [j]

MC [i] [j]是可以处理操作O [i] [j]的候选机器集。

任何人都可以提出这个问题吗?

[我不是CPLEX的新手,而且我不知道如何添加这样的约束(因为k有一些约束,即k应该属于MC [i] [j])

algorithm scheduling cplex opl
1个回答
0
投票

在OPL中,您几乎可以像自然语言一样编写这种约束:

float bigM = ...; // Put some value for bigM
forall (i in I)
  forall (j in J)
    forall (k in MC[i][j])
      S[i][j][k] + S[i][j][k] <= v[i][j][k] * bigM;

注意,您的描述中似乎存在问题:S [i] [j] [k]同时指定了作业的开始[[和完成时间。那很可能不是您想要的。

© www.soinside.com 2019 - 2024. All rights reserved.