我如何获得“确保设备持续正常运行和停机过程”的代码

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

我正在使用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'=>'1',意思是操作,应该是相邻的(为了确保持续的正常运行时间)。

每次我运行这个问题时,答案总是从每个'1'离开,例如'0 1 0 1 0 0 0 1 0 0 1'。

我希望我能有一个想法或数学方法来解决这个问题。

optimization linear-programming cplex opl mixed-integer-programming
1个回答
2
投票

观察连续的三胞胎,不允许使用1 1 1(3小时正常运行时间)和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]
© www.soinside.com 2019 - 2024. All rights reserved.