本文将介绍如何使用混合整数约束来表达设备「最小连续启停时间约束」。

想必点进来阅读的读者已经具备一定的数学基础,那容许我快点介绍一下问题的背景。工程上为了保护一些设备,会要求设备启停满足最小连续启停时间,即机器启动至少要运行一段时间才能关闭,反之关闭后只要等一段时间才能关闭。例如,现在某个设备的最小连续启停时间分别是 4 小时和 2 小时,这就意味着这个机器启动后,至少运行 4 小时才能关闭;某时刻关闭后,至少等 2 小时才能启动。如果研究的优化问题涉及这类设备,那么要怎样建模才能将这个条件用数学语言表达呢?

这个问题也可以换问的更大一点:如何用数学语言表达逻辑约束关系?答案是有的,那就是引入「0 - 1」变量,「0」表示「否」,「1」表示「是」。对于这个问题,首先,可以引入 3 组「0 - 1」变量:

  • $ x_t $ 表示 t 时间段设备的运行状态,「0」表示关闭,「1」表示运行
  • $ u_{up, t} $ 表示 t 时间段开始时刻是否执行开机操作,「0」表示不执行开机操作,「1」表示执行开机操作
  • $ u_{down, t} $ 表示 t 时间段开始时刻是否执行关机操作,「0」表示不执行关机操作,「1」表示执行关机操作

设设备的最小连续启动时间是 $ T_{up, \min} $,最小连续停机时间是 $ T_{down, \min} $,运行周期是 $ T $,设备在某个时间段内启停状态单一。于是,最小连续启停时间约束可以表达为:

$$ \begin{cases} x_t-x_{t-1}=u_{up, t}-u_{down, t}\\ 0\leqslant u_{down, t}+u_{up, t}\leqslant 1\\ T_{up, \min}\cdot u_{up,t}\leqslant \sum_{t=h}^{h+T_{up, \min}-1}{x_t}, \forall h=1,...,T-T_{up, \min}+1\\ T_{down, \min}\cdot u_{down, t}\leqslant \sum_{t=h}^{h+T_{down, \min}-1}{x_t}, \forall h=1,...,T-T_{down, \min}+1\\ \end{cases} $$

以上的数学表达来源于「Bi-level sizing optimization of a distributed solar hybrid CCHP system considering economic, energy, and environmental objectives」,DOI:10.1016/j.ijepes.2022.108684,我对他第一个式子做了一些小修改,我把我的思路放在下面。

思路解读

为了方便解读,上面的式子分别叫做「式 1」、「式 2」等等,以此类推。首先,看式 2,这个式子描述机器在某时间段开始前的开关状态,与下面的情况等价:

$u_{up, t}$$u_{down, t}$说明
10t 时间段开始前,机器执行开启操作
01t 时间段开始前,机器执行关闭操作
00t 时间段开始前,机器不执行开启或者关闭操作

再看式 1,基于式 2,我们可以列举出这个式子表达的所有情况:

$x_t$$x_{t-1}$$u_{up, t}$$u_{down, t}$说明
1010
0000
0101
1100

同样,我们列举启停操作与机器运行状态之间的关系。列举所有情况:

$x_{t-1}$$u_{up, t}$$u_{down, t}$$x_t$说明
0101
0010舍去
0000
1101舍去
1010
1001

因为在机器运行(关闭)状态下再开机(关机)是无效操作,所以舍去两种情况。可以发现这与式 1 等价。

再看式 3 和式 4,这两个式子就是描述最小启停时间是多少,这里就不再做过多的分析。

最后修改:2023 年 12 月 23 日
如果觉得我的文章对你有用,请随意赞赏