我将CPLEX与OPL一起使用,并且在指定模型中需要的约束时遇到麻烦。
设备“ A”的正常运行时间为2小时。它还有至少1小时的维护停机时间。
每个时间“ t”和总t为10(离散)。 例如,
t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 ....
Equip'A' 0 1 1 0 0 0 1 1 0 1 ....
* downtime is possible to exceed its own maintain time.
在这种情况下, 我如何确保持续的正常运行时间流程。像不是'0 1 0 1'一样,我的意思是'0 1 1 0 1 1 0 0 =>'1',意味着操作应该相邻(以确保连续的正常运行时间)。
每次我运行此问题时,答案总是总是偏离每个“ 1”,例如“ 0 1 0 1 0 0 0 1 1 0 0 1”。
我希望我能找到解决这个问题的想法或数学方法。
答案 0 :(得分:2)
查看连续的三胞胎,不允许使用1 1 1
(三个小时的正常运行时间)和0 1 0
(一个小时的正常运行时间)模式。
这可以用线性不等式表示(t
从1到8):
A[t] + A[t+1] + A[t+2] <= 2 and
A[t+1] <= A[t] + A[t+2]
要涵盖极端情况(从1 0
到0 1
结束),您还需要:
A[1] <= A[2] and
A[10] <= A[9]