如何使用 MILP 对泵行为进行建模?

计算科学 混合整数规划
2021-12-19 02:14:16

泵的行为如下:

  • 如果hhstart, 那么泵送流量是一个常数Qp. 只要泵工作h>hstop
  • 如果hhstop,则泵送流量为 0。泵将关闭,直到h<hstart.

这里h是抽水井中的水位,hstart是泵启动的高度,和hstop是泵停止的高度。

我使用 MILP 将其建模为:

htemp=bhstart+(1b)hstop
hhstartM(1b)
hstophMb

Q={Qpif hhtemp0otherwise

在哪里b是一个二进制变量并且Q是泵送流量。

这很好用hhstart或者什么时候hhstop. 但我不确定什么时候的行为hstophhstart. 在这种情况下,两者b=0b=1是有效的可能性。

有没有办法对这种行为进行建模,使得b不能改变值,除非hhstart或者什么时候hhstop?

谢谢。

1个回答

您正在处理具有“滞后”的系统,即泵的动作不仅取决于当前的扬程h,而且还放在过去的历史头上。

您的系统有四种可识别的状态:

1:hhstart.

2:hhstop.

3:hstophhstarth最近在hstart.

4:hstophhstarth最近在hstop.

您可以使用两个二进制变量在任何时间点对这四种状态进行编码。一个二进制变量是不够的,因为它只能编码两种状态。

如果您想对系统的动态活动进行建模,那么您需要及时对每个时刻(在某种离散的“时刻”意义上)这个状态进行编码。