
含分布式能源电网储能容量优化:双层优化模型及改进粒子群+cplex算法研究(内层
购电成本最低,外层综合运行成本优化及参考文献分析)
最近在研究分布式能源电网的储能容量优化,发现这玩意儿真是烧脑。双层优化模型就像套娃,外
层管储能配置和电网整体成本,内层负责实时购电策略。这周终于把改进粒子群算法和CPLEX的结合跑通
了,必须记录下这段掉头发的经历。
先说外层这老六,目标函数里同时掺着储能建设成本、新能源弃电惩罚和网损成本。举个栗子,当我
们在某节点布置储能时,容量变量X既要考虑电池组价格,又要算它未来二十年能省下多少弃风弃光费。这
时候改进粒子群的优势就来了——在传统粒子群速度更新公式里,我给惯性权重加了自适应衰减因子:
```python
# 自适应惯性权重
def update_inertia(iter, max_iter):
return 0.9 - 0.5 * (iter / max_iter)
# 粒子速度更新
v = w*v + c1*rand()*(pbest_pos - current_pos) + c2*rand()*(gbest_pos - current_pos)
```
这种动态调整让算法前期广域搜索,后期精细收敛。实测在50节点系统里,比标准粒子群的收敛速
度快了23.6%,特别是处理储能容量这种高维度离散变量时,跳出局部最优的能力明显提升。
内层优化直接上CPLEX暴力求解,目标是最小化购电成本。这里有个骚操作:把分布式电源出力、储
能充放电状态、主网交互功率打包成混合整数规划问题。代码里最核心的是购电成本约束:
```python
# CPLEX购电模型片段
model = cplex.Cplex()
model.variables.add(names=["grid_purchase"], lb=[0], ub=[5000]) # 主网购电量
model.objective.set_sense(model.objective.sense.minimize)
model.objective.set_linear("grid_purchase", grid_price) # 实时电价
# 添加功率平衡约束
load_balance = [
[["pv_output", "wind_output", "grid_purchase", "battery_discharge"],
[1.0, 1.0, 1.0, 1.0]],
["L", "R"],
[total_load, total_load] # 等式约束