本文将介绍如何使用混合整数约束来表达设备「最小连续启停时间约束」。
想必点进来阅读的读者已经具备一定的数学基础,那容许我快点介绍一下问题的背景。工程上为了保护一些设备,会要求设备启停满足最小连续启停时间,即机器启动至少要运行一段时间才能关闭,反之关闭后只要等一段时间才能关闭。例如,现在某个设备的最小连续启停时间分别是 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,我对他第一个式子做了一些小修改,我把我的思路放在下面。
$u_{up, t}$ | $u_{down, t}$ | 说明 |
---|---|---|
1 | 0 | t 时间段开始前,机器执行开启操作 |
0 | 1 | t 时间段开始前,机器执行关闭操作 |
0 | 0 | t 时间段开始前,机器不执行开启或者关闭操作 |
再看式 1,基于式 2,我们可以列举出这个式子表达的所有情况:
$x_t$ | $x_{t-1}$ | $u_{up, t}$ | $u_{down, t}$ | 说明 |
---|---|---|---|---|
1 | 0 | 1 | 0 | |
0 | 0 | 0 | 0 | |
0 | 1 | 0 | 1 | |
1 | 1 | 0 | 0 |
同样,我们列举启停操作与机器运行状态之间的关系。列举所有情况:
$x_{t-1}$ | $u_{up, t}$ | $u_{down, t}$ | $x_t$ | 说明 |
---|---|---|---|---|
0 | 1 | 0 | 1 | |
0 | 0 | 1 | 0 | 舍去 |
0 | 0 | 0 | 0 | |
1 | 1 | 0 | 1 | 舍去 |
1 | 0 | 1 | 0 | |
1 | 0 | 0 | 1 |
因为在机器运行(关闭)状态下再开机(关机)是无效操作,所以舍去两种情况。可以发现这与式 1 等价。
再看式 3 和式 4,这两个式子就是描述最小启停时间是多少,这里就不再做过多的分析。