我正在做一个与AC (最优功率流)相关的项目,我试图用python解决一个问题,使用pyomo。有3条母线,母线电压和母线角度都是有限的。但是,第一条总线必须有一个voltage=1和一个angle=0。
所以,我试了一下:
model.busvoltage = Var(model.bus, initialize=1, bounds=(0.95, 1.05), doc='Bus Voltage')
model.busvoltage[1].fixed=True
model.busangle = Var(model.bus, initialize=0, bounds=(-3.14, 3.14), doc='Bus angle')
model.busangle[1].fixed=True问题是,我只想为第一条总线设置总线电压和总线角度,而不是用这些值初始化其他总线。我不知道这是否重要,但我使用ipopt作为求解器。
(这是我第一次用Python编程)如果有任何帮助,我将不胜感激!
发布于 2020-03-01 18:24:34
您需要的是变量的.value属性。此外,设置变量的值并同时固定它可以简化为调用.fix()
model.busvoltage = Var(model.bus, bounds=(0.95, 1.05), doc='Bus Voltage')
model.busvoltage[1].fixed = True
model.busvoltage[1].value = 1
model.busangle = Var(model.bus, bounds=(-3.14, 3.14), doc='Bus angle')
model.busangle[1].fix(0)发布于 2020-02-29 00:20:16
您是否考虑过在约束中而不是在Var定义中初始化值?
model.busvoltage = Var(model.bus, bounds=(0.95, 1.05), doc='Bus Voltage')
model.busvoltage[1].fixed=True
def bus_voltage_1_value_constraint(model, b):
if b == 1:
return model.busvoltage[b] == 1
return Constraint.Skip
model.bus_voltage_1_value = Constraint(model.bus, rule=bus_voltage_1_value_constraint)https://stackoverflow.com/questions/60442540
复制相似问题