我遇到的问题通常发生在能源系统建模(存储建模)中,在存储系统放电时不允许对存储系统进行充电,反之亦然。
让x
和y
成为连续的正决策变量,代表存储单元的充电/放电功率。现在我试图在方程式或不等式中表达以下逻辑:
if x > 0:
y = 0
if y > 0:
x = 0
我知道如果b
是二进制变量且x_ub
和y_ub
代表变量的上限,则可以通过以下等式用二进制变量实现:
x <= b * x_ub
y <= (1-b) * y_ub
这导致混合整数线性程序(MILP),当然会导致MILP的所有属性,这些属性位于更高的运行时间,解决方案的其他解释,......
获得纯LP制定的另一种方法是使用附加到x
和y
的(非常低)成本,以便只将两个变量中的一个设置为正值。但这也影响了我的目标,还有一些其他缺点,因为它有点像修补程序。
所以这是我的问题:有没有办法在纯线性程序(LP)中表达上面的逻辑(if / else)?
提前致谢!