假设微电网中有风、光、微型燃气轮机、蓄电池,且已知各时段负荷需求;考虑各机组运行成本、燃料成本、与污染物处理成本。 该程序可解决在孤岛运行模式下,各机组出力如何分配才能达到经济最优的问题

微电网里风机转着、光伏板晒着、燃气轮机嗡嗡响,蓄电池在角落里默默充放电。这哥几个怎么配合才能既不断电又最省钱?今天咱们直接上代码搞个明白。

先看核心矛盾:既要满足每个时段的用电需求,又要让总成本(设备磨损+燃料费+环保罚款)降到最低。这本质上是个带约束的数学规划问题,Python里用Pyomo库建模正合适。

`python

from pyomo.environ import *

# 初始化模型

model = ConcreteModel()

# 定义时间步长(假设24小时调度)

model.T = RangeSet(1, 24)

# 定义设备集合

devices = ['风机', '光伏', '燃机', '电池放电']

`

重点来了——成本函数。燃机烧天然气时,成本曲线不是直线。这里用二次函数模拟更真实:

`python

def 燃机成本规则(model, t):

return 0.5 model.燃机出力[t]2 + 20 model.燃机出力[t]

model.燃机成本 = Expression(model.T, rule=燃机成本规则)

# 总目标函数

model.总成本 = Objective(

expr=sum(model.燃机成本[t] +

3*model.风机出力[t] + # 风机运维成本

2*model.光伏出力[t] + # 光伏运维成本

0.1*abs(model.电池充放电[t]) # 电池折旧

for t in model.T),

sense=minimize)

`

注意电池的充放电状态需要联动处理。这里引入中间变量实现能量守恒:

`python

# 电池SOC状态

model.电池SOC = Var(model.T, bounds=(0.2, 0.8)) # SOC限制在20%~80%

# 充放电逻辑约束

def 电池逻辑(model, t):

if t == 1:

return model.电池SOC[t] == 0.5 # 初始SOC设为50%

else:

return model.电池SOC[t] == model.电池SOC[t-1] + \

0.9*model.电池充放电[t]/电池容量 # 充放电效率90%

model.电池状态 = Constraint(model.T, rule=电池逻辑)

`

求解器跑完后,得检查几个关键点:

  1. 负荷缺口是否为零:sum(设备出力) == 负荷需求
  2. 燃机出力是否在30%-100%之间波动
  3. 光伏出力是否符合预测曲线
  4. 电池是否在电价低谷时充电、高峰时放电

实际跑数据时会发现有趣现象:当风光出力突降时,燃机会像弹簧一样瞬间顶上去,而电池则像缓冲垫般平滑过渡。这种多时间尺度的响应配合,正是优化算法的精妙之处。

最后留个思考题:如果突然要求减排指标下降20%,代码里哪个参数最敏感?试着把污染成本系数从0.5调到1.2,观察燃机出力曲线如何"瘦身"——这就是环保与经济的经典博弈现场。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐