基于条件风险价值CVaR的微网虚拟电厂多场景随机规划与风险优化调度策略
·
基于条件风险价值CVaR的微网/虚拟电厂多场景随机规划 摘要:构建了含风、光、燃、储的微网/虚拟电厂优化调度模型,在此基础上,考虑多个风光出力场景,构建了微网随机优化调度模型,并在此基础上,基于条件风险价值理论,度量不确定性场景的潜在风险价值,且风险系数可以自由调节,从而观测不同风险偏好下微网的调度策略,深度体会CVaR的有效性。
一、核心目标
本代码聚焦含风、光、燃、储及电动汽车(EV)的电-冷综合能源微网虚拟电厂(VPP),构建了融合条件风险价值(CVaR)的多场景随机优化调度模型。核心目标包括:
- 实现多场景下(3个风光出力场景)虚拟电厂的日前经济调度,统筹燃气轮机、储能系统、光伏单元与电力市场的购售电协同运作;
- 引入CVaR风险度量机制,量化风光出力不确定性带来的潜在经济风险,支持风险系数自由调节,适配不同风险偏好的调度需求;
- 满足各类设备运行约束与功率平衡约束,在保障用户舒适度(通过冷负荷间接体现)的前提下,实现调度成本与风险的综合最优。
二、代码框架与流程图
(一)代码框架
VPP_ac_ev.m
├── 1.程序初始化模块:环境清理与参数定义
├── 2.变量声明模块:决策变量与状态变量定义
├── 3.约束条件构建模块:设备约束、系统约束、风险约束
├── 4.目标函数构建模块:期望成本+CVaR风险成本
├── 5.优化求解模块:调用CPLEX求解器求解
├── 6.结果处理模块:数值读取与可视化展示
└── 7.辅助输出模块:关键调度数据(购售电、设备出力)输出
(二)核心流程图
graph TD
A[程序启动] --> B[初始化:clc/clear/close all]
B --> C[参数定义:电价/设备参数/负荷/光伏出力]
C --> D[变量声明:sdpvar/binvar定义决策变量]
D --> E[约束构建]
E --> E1[燃气轮机约束:出力/爬坡/启停状态]
E --> E2[购售电约束:状态互斥/交易量上限]
E --> E3[储能约束:充放电功率/蓄电量平衡]
E --> E4[功率平衡约束:供需功率等式]
E --> E5[CVaR风险约束:风险阈值/非负约束]
E --> F[目标函数构建:期望成本+L*CVaR风险成本]
F --> G[设置求解参数:CPLEX求解器配置]
G --> H[调用optimize求解]
H --> I{求解成功?}
I -- 是 --> J[读取结果:购售电/出力/蓄电量]
I -- 否 --> K[输出错误信息]
J --> L[可视化展示:功率平衡/购售电对比]
L --> M[程序结束]
三、核心模块详细说明
(一)程序初始化模块
- 环境清理:通过
clc(清空命令行)、clear(清除工作区变量)、close all(关闭所有图形窗口)确保程序独立运行,避免干扰; - 参数定义:
- 市场电价:购电电价xb与售电电价xs(24小时分时电价,区分峰谷时段);
- 燃气轮机参数:固定开机费a、分段线性化费用kcp、启停费sconv、出力上下限gtmax/gtmin、爬坡率ramp;
- 储能参数:充放电功率上限gescmax/gesdmax、蓄电量上下限sessmax/sessmin、充放电效率uesc/uesd;
- 负荷与新能源:电负荷pload(24小时时序数据)、光伏出力ppv(从Excel文件ppv.xlsx读取,3个场景);
- 其他参数:最大市场交易量pmgmax、场景数量Sw=3、场景概率pai=[0.2,0.3,0.5]。
(二)变量声明模块
采用YALMIP工具箱的sdpvar(连续变量)和binvar(二进制变量)定义,核心变量如下:
| 变量类型 | 变量名 | 含义 | 维度 | 说明 |
|---|---|---|---|---|
| 二进制变量 | umob/umos | 购电/售电状态 | 3×24 | 1=运行,0=停止,互斥 |
| 二进制变量 | xconv/yconv | 燃气轮机工作/启停状态 | 3×24 | xconv=1表示运行,yconv=1表示启停 |
| 连续变量 | pmgb/pmgs | 市场购电/售电量 | 3×24 | 单位:MW |
| 连续变量 | pmt | 燃气轮机出力 | 3×24 | 单位:MW |
| 连续变量 | gesc/gesd | 储能充/放电功率 | 3×24 | 单位:MW |
| 连续变量 | sess | 储能蓄电量 | 3×24 | 单位:MWh |
| 连续变量 | zk/var | CVaR风险相关变量 | 3×1/1×1 | 用于风险约束构建 |
(三)约束条件构建模块
约束体系涵盖设备运行约束、系统安全约束与风险控制约束,确保调度方案可行且可控:
- 燃气轮机约束:
- 出力上下限:xconv(:,t)gtmin <= pmt(:,t) <= xconv(:,t)gtmax(运行时才出力,避免空载损耗);
- 爬坡率约束:-ramp <= pmt(:,t)-pmt(:,t-1) <= ramp(限制出力突变,保护设备);
- 启停状态约束:xconv(:,t)-xconv(:,t-1) <= yconv(:,t)(状态切换时标记启停)。 - 购售电约束:
- 状态互斥:0 <= umob(w,t)+umos(w,t) <=1(同一时段同一场景不可同时购售电);
- 交易量上限:pmgb(w,t) <= umob(w,t)*pmgmax(购电量不超过最大允许交易量)。 - 储能约束:
- 充放电功率限制:0 <= gesc(:,t) <= gescmax、0 <= gesd(:,t) <= gesdmax;
- 蓄电量平衡:sess(:,t) = sess(:,t-1) + gesc(:,t)*uesc - gesd(:,t)/uesd(考虑充放电效率);
- 蓄电量上下限:sessmin <= sess(:,t) <= sessmax。 - 功率平衡约束:
gesc(w,:)+pload(1,:)+pmgs(w,:) = gesd(w,:)+ppv(w,:)+pmgb(w,:)+pmt(w,:)(充电功率+负荷+售电=放电功率+光伏出力+购电+燃气轮机出力)。 - CVaR风险约束:
- 风险阈值约束:zk(w) >= -(成本函数) + var(zk为风险损失超额量);
- 非负约束:zk(w) >=0(风险损失超额量非负)。
(四)目标函数构建模块
目标函数为“期望成本+风险成本”,兼顾经济性与风险可控性:
- 期望成本计算:加权求和3个场景的调度成本(权重为场景概率
pai),成本构成包括:
- 市场购电成本:xbpmgb(w,:)';
- 市场售电收益(抵减成本):-xspmgs(w,:)';
- 燃气轮机成本:固定开机费axconv(w,:)'+出力成本kcppmt(w,:)'+启停费sconv*yconv(w,:)'。 - 风险成本计算:
L(-var + paizk/(1-α)),其中:
-L为风险系数(用户可调节,0=风险中性,越大越保守);
-α为置信水平(代码中默认0.95,可修改);
-var为CVaR风险阈值,zk为超额损失变量。 - 最终目标函数:
obj_single = 期望成本 + 风险成本(最小化目标)。
(五)优化求解与结果展示模块
- 求解配置:调用CPLEX求解器,设置
mipgap=1e-6(混合整数规划间隙,保证求解精度)、verbose=2(显示求解过程); - 结果读取:通过
value()函数提取优化后的变量值(如pmgb=value(pmgb)、gesd=value(gesd)); - 可视化展示:生成6类图表,直观呈现调度结果:
- 场景1-3功率平衡图(堆叠柱状图,展示各功率成分占比);
- 场景1-3市场交易量图(折线图,对比不同风险系数下的购售电差异); - 数据输出:直接输出关键调度数据(如风险系数=1时的购售电量矩阵
pmgb1、pmgs1),支持后续分析。
四、代码优势
- 多场景随机规划:考虑3个风光出力场景,覆盖不确定性,调度方案更具鲁棒性;
- 风险量化可控:引入CVaR理论,通过风险系数
L自由调节风险偏好,适配不同运营策略(保守/激进); - 设备模型全面:涵盖燃气轮机、储能、光伏、电力市场购售电,支持多能源协同调度;
- 约束体系严谨:兼顾设备物理约束、系统安全约束与风险约束,确保调度方案可行;
- 可视化效果好:通过堆叠柱状图、折线图直观展示功率平衡与购售电策略,便于结果分析;
- 扩展性强:可灵活添加冰蓄冷空调冷负荷模型、电动汽车充放电约束等,适配更多应用场景。
五、示例配置与结果说明
(一)示例配置
| 参数类别 | 关键参数值 | 说明 |
|---|---|---|
| 市场电价 | 峰时1520元/MWh,平段1020元/MWh,谷段630元/MWh | 24小时分时电价,贴合实际电力市场 |
| 燃气轮机 | 出力上限3.31MW,爬坡率1.5MW/h,开机费600元 | 小型燃气轮机参数,适配微网规模 |
| 储能 | 充放电功率上限1MW,蓄电量上限4MWh,效率0.95 | 锂电池储能典型参数 |
| 场景设置 | 场景1概率0.2,场景2概率0.3,场景3概率0.5 | 高概率场景权重更高,贴合实际出力分布 |
| 风险系数 | L=0.8(可修改为0/0.5/1.0等) | 示例中为突出风险影响设置较高值 |
(二)典型结果说明
- 功率平衡结果:
- 谷段(0-5时):负荷较低,储能充电,燃气轮机低出力,部分时段购电(电价低);
- 峰段(9-14时、17-20时):负荷高,光伏出力充足时优先用光伏,不足时燃气轮机出力+储能放电,部分时段售电(电价高);
- 平段(6-8时、15-16时、21-23时):光伏+储能+燃气轮机协同,按需购售电。 - 购售电结果:
- 风险系数L=0.8 vs L=1.0:L越大(越保守),峰段购电量增加(避免光伏出力不足导致的缺电风险),谷段储能充电量增加(储备电能应对不确定性),售电量减少(降低出力过剩导致的售电收益损失风险);
- 场景3(概率0.5):购售电策略更稳健,波动较小,因为高概率场景对期望成本影响更大。
六、使用说明
(一)环境准备
- 软件依赖:MATLAB(建议R2018b及以上)+ YALMIP工具箱 + CPLEX求解器(需激活授权);
- 数据准备:
- 光伏出力数据:将ppv.xlsx文件放在与代码同目录下,文件格式为3行24列(3个场景,24小时出力);
- 参数修改:如需调整场景数量、设备参数、电价或风险系数,直接在“定义变量”或“设置风险系数”模块修改对应参数。
(二)运行步骤
- 打开MATLAB,切换工作目录至代码所在文件夹;
- 在命令行输入
VPPacev,回车运行; - 查看结果:
- 求解过程:命令行显示CPLEX求解日志(迭代次数、可行性、最优值);
- 图形结果:自动弹出6个图表(3个功率平衡图、3个购售电对比图);
- 数据结果:工作区变量包含pmgb(购电量)、pmgs(售电量)、pmt(燃气轮机出力)等关键数据,可直接调用分析。
(三)参数调整指南
- 风险偏好调整:修改
L值(0=纯经济优先,1=风险优先,0.5=均衡); - 场景调整:修改
Sw(场景数量)、pai(场景概率),同步更新ppv(光伏出力)和pload(负荷)的维度; - 设备参数调整:如储能容量、燃气轮机出力上限等,直接修改对应参数变量(如
gescmax、gtmax); - 求解精度调整:修改
ops.cplex.mip.tolerances.mipgap(如1e-5提升精度,1e-4加快速度)。
七、注意事项
- 工具箱依赖:确保已正确安装YALMIP和CPLEX,且MATLAB能正常调用(可通过
yalmiptest测试YALMIP,which cplex测试CPLEX路径); - 数据格式:
ppv.xlsx需严格为3行24列(场景×时间),否则会导致维度不匹配错误; - 约束兼容性:修改设备参数(如
ramp、gtmax)时,需确保约束之间不冲突(如爬坡率不超过出力上限); - 求解时间:场景数量或变量维度增加时,求解时间会延长,可通过调整
mipgap或verbose参数平衡精度与速度; - 结果解读:CVaR值
cvar=value(L(-var+paizk/(1-0.95)))越大,说明为控制风险付出的成本越高,需结合期望成本综合评估调度方案。
八、扩展方向
- 设备扩展:添加冰蓄冷空调冷负荷模型、电动汽车充放电约束,完善电-冷-交通多能源协同;
- 场景扩展:增加风电出力场景、负荷不确定性场景,提升模型对多源不确定性的适应性;
- 算法优化:引入分布式求解算法,降低大规模场景下的求解复杂度;
- 功能扩展:添加调度方案的经济性、环保性(如碳排放)评估指标,支持多目标优化;
- 交互优化:开发GUI界面,可视化调整参数并实时展示结果,提升易用性。
基于条件风险价值CVaR的微网/虚拟电厂多场景随机规划 摘要:构建了含风、光、燃、储的微网/虚拟电厂优化调度模型,在此基础上,考虑多个风光出力场景,构建了微网随机优化调度模型,并在此基础上,基于条件风险价值理论,度量不确定性场景的潜在风险价值,且风险系数可以自由调节,从而观测不同风险偏好下微网的调度策略,深度体会CVaR的有效性。

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)