所以我想解决问题,看起来像是护士安排问题,不同之处在于有两种类型的工人每周应至少工作40小时,另一种类型每周应至少工作10小时。 为了用simplex解决这个问题,我必须定义shifts(shift类型)。每天的班次最少应为3个小时,最多为9个小时。 这张照片是我到目前为止尝试过的Shifts
轮班类型的总数为55。如果我将其乘以工人数和工作日数。那将是15000个变量。是否可以解决这样的问题,还是我应该尝试以其他方式解决? 有没有人建议?
答案 0 :(得分:0)
您在CPLEX_Studio129\opl\examples\opl\nurses
有一个护士的例子。
要做您需要做的事情
//global max worked time
forall(n in Nurses)
ctNurseMaxTimeConstraints:
NurseWorkTime[n] <= MaxWorkTime;
进入
forall(n in Nurses)
ctNurseMaxTimeConstraints:
NurseWorkTime[n] <= n.MaxWorkTime;
其中maxWorkTime不是全局的,而是每个护士的。 15000个二进制决策变量应该没问题。