首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置索引变量的值?- Pyomo

如何设置索引变量的值?- Pyomo
EN

Stack Overflow用户
提问于 2020-02-28 06:15:15
回答 2查看 548关注 0票数 2

我正在做一个与AC (最优功率流)相关的项目,我试图用python解决一个问题,使用pyomo。有3条母线,母线电压和母线角度都是有限的。但是,第一条总线必须有一个voltage=1和一个angle=0。

所以,我试了一下:

代码语言:javascript
复制
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编程)如果有任何帮助,我将不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2020-03-01 18:24:34

您需要的是变量的.value属性。此外,设置变量的值并同时固定它可以简化为调用.fix()

代码语言:javascript
复制
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)
票数 2
EN

Stack Overflow用户

发布于 2020-02-29 00:20:16

您是否考虑过在约束中而不是在Var定义中初始化值?

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60442540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档