MILP/Pyomo建模下双向变流器负向功率区间约束构造问题
负向场景约束解决方案
核心逻辑
和你已实现的正向约束逻辑一致,本质是用二元变量切换功率P的可行域上下界,实现「要么落在指定区间、要么等于0」的二选一规则。
具体实现
你可以定义一个新的二元变量z(取值为0或1),仅需要两条约束即可实现要求:
# 约束1:控制功率下界 P ≥ -UB * (1 - z) # 约束2:控制功率上界 P ≤ -LB * (1 - z)
逻辑验证
我们代入z的两种取值验证约束有效性:
- 当
z=1时:
约束1化简为P ≥ -UB * 0 = 0
约束2化简为P ≤ -LB * 0 = 0
两个约束共同强制P=0,符合关断场景要求。 - 当
z=0时:
约束1化简为P ≥ -UB * 1 = -UB
约束2化简为P ≤ -LB * 1 = -LB
直接将P的可行域限制在[-UB, -LB]区间内,符合负向导通场景要求。
拓展:双向变流器三合一约束
如果你需要同时覆盖正向导通、负向导通、关断三个状态,可以直接用两个二元变量整合约束,无需分开写正负向规则:
定义二元变量x(1=正向导通,0=非正向)、y(1=负向导通,0=非负向),新增互斥约束x + y ≤ 1,再加上功率上下界约束:
P ≥ LB * x - UB * y P ≤ UB * x - LB * y
验证:
x=1,y=0:P∈[LB, UB],正向导通x=0,y=1:P∈[-UB, -LB],负向导通x=0,y=0:P=0,关断
所有状态均符合要求,可直接在Pyomo中定义实现。
内容的提问来源于stack exchange,提问作者Max W.
相关产品推荐
相关产品推荐

