如果容量也经过优化并且存在最小功率,如何在 MILP 中实现关闭、启动、上升和下降

How to implement shutdown, start-up, ramp-up and ramp-down in a MILP if capacity is optimized as well and minimum power exists

我目前正在尝试解决混合整数线性问题。我有一个组件,我想优化其容量和操作。该组件的操作下限为 p_low。优化可以 运行 其上限(容量)之间的组件或 p_low,但它也应该能够关闭组件。

问题从这里开始:我不知道如何实现这两种可能性,因为关机会违反最小功率限制。

我考虑过使用二进制变量进行决策 (b_status),但我对组件的容量有疑问,因为它也经过优化并将容量变量与二进制变量结合在一起:

p >= p_low * 容量 * b_status -> 如果 b_status 为 0 -> p >= 0;否则:p >= p_low * 容量

... 会导致非线性问题,因为容量和 b_status 的组合在线性模型(两个变量)中是不允许的。

有人知道实现这个的方法吗?我知道这不是这里的主要话题,但可能值得一试。

你快到了...

你是对的,你需要 2 个变量来为这个设备建模。让:

x_on = {0, 1} a binary variable to indicate whether system is on/off
x_load = {x: x >= 0 } a continuous, non-negative variable to indicate the current load

然后您需要创造性地使用 x_on 作为 指标变量 在约束范围内将 x_load 设置为零或在低-高之间限制...

High constraint:  x_load <= x_on * high_limit
Low constraint:   x_load >= x_on * low_limit

那些是线性的。插入一些值以确保您相信它们。 :).据推测,您正在模型中的某处最小化 x_load,这将完成它。

================= 编辑可变容量

我误解了你的问题。根据您的评论,我认为您又走上了正确的轨道,使用大 M 约束可以做到这一点。

除了上面的变量x_onx_load

C = {x : x >=0} a continuous non-negative variable to represent the capacity of the machine
M = any reasonable upper bound on C

你有一个可行的下限解决方案。通过对 high 使用 2 个约束(总共 3 个约束),您还可以将 big-M 用于 high

Low:   x_load >= low_lim * C - M * (1 - x_on)
High:  x_load <= C
Off:   x_load <= M * x_on