我正在通过 MILP / Pyomo 对一些能源系统进行建模。
在这种情况下,我正在对双向电子进行建模。转换器。
功率/能量可以以两种方式流动:但是,在一种方式中,功率 P 只能在边界 [LB;UB] 内,否则它必须为 0。
我使用这个公式来确保:
LB - P <= LB * x
P <= UB * (1 - x)
x 是二元变量
它似乎正在发挥作用......
换句话说,功率 P 只能在 [-UB;-LB] 范围内,否则为 0。但我正在努力确保这一点,我只是无法获得构建这种约束背后的逻辑。 。
任何帮助和解释将不胜感激。
非常感谢,马克斯
我认为你有三个州(或可行的区域):
\n p = 0\n p \xe2\x88\x88 [L,U]\n p \xe2\x88\x88 [-U,-L]\nRun Code Online (Sandbox Code Playgroud)\n我认为这不能用一个二元变量来完成。
\n你可以这样做:
\n \xce\xb41*L-\xce\xb42*U \xe2\x89\xa4 p \xe2\x89\xa4 \xce\xb41*U-\xce\xb42*L\n \xce\xb41+\xce\xb42 \xe2\x89\xa4 1\n \xce\xb41,\xce\xb42 \xe2\x88\x88 {0,1}\nRun Code Online (Sandbox Code Playgroud)\n这本质上是:
\n \xce\xb41=\xce\xb42=0 => p = 0\n \xce\xb41=1,\xce\xb42=0 => p \xe2\x88\x88 [L,U]\n \xce\xb41=0,\xce\xb42=1 => p \xe2\x88\x88 [-U,-L]\n \xce\xb41=\xce\xb42=1: not allowed\nRun Code Online (Sandbox Code Playgroud)\n