基于条件风险价值CVaR的微网虚拟电厂多场景随机规划与风险价值度量研究
基于条件风险价值CVaR的微网/虚拟电厂多场景随机规划 摘要:构建了含风、光、燃、储的微网/虚拟电厂优化调度模型,在此基础上,考虑多个风光出力场景,构建了微网随机优化调度模型,并在此基础上,基于条件风险价值理论,度量不确定性场景的潜在风险价值,且风险系数可以自由调节,从而观测不同风险偏好下微网的调度策略,深度体会CVaR的有效性。
一、核心目标
本代码旨在构建含风光燃储及电动汽车(EV)的电-冷综合能源微网虚拟电厂(VPP)日前经济调度模型,核心目标如下:
- 统筹光伏、燃气轮机、储能系统与电力市场购售电的协同运作,在3个风光出力场景下实现多场景随机优化调度;
- 引入条件风险价值(CVaR)理论度量风光出力不确定性带来的潜在经济风险,支持风险系数自由调节,适配不同风险偏好下的调度需求;
- 满足设备运行约束、系统功率平衡约束及用户舒适度相关要求(通过冷负荷间接体现),实现调度成本与风险的综合最优。
二、代码框架与流程图
(一)代码框架
VPP_ac_ev.m ├── 1.程序初始化:环境清理与基础参数定义 ├── 2.变量声明:决策变量与状态变量定义(含连续变量、二进制变量) ├── 3.约束条件构建:设备运行约束、系统平衡约束、CVaR风险约束 ├── 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[目标函数构建:场景加权期望成本+风险系数×CVaR风险成本] F --> G[求解器配置:设置CPLEX为求解器,配置精度、日志显示参数] G --> H[调用optimize函数求解优化模型] H --> I{求解是否成功?} I -- 是 --> J[读取结果:购售电量、设备出力、蓄电量、CVaR值] I -- 否 --> K[输出“求解出错”错误信息] J --> L[可视化展示:3个场景功率平衡图、3个场景市场交易量对比图] L --> M[程序结束]三、核心模块详细说明
(一)程序初始化模块
- 环境清理:通过
clc、clear、close all三条命令,清除MATLAB工作区残留变量、命令行冗余信息及历史图形窗口,确保程序独立运行无干扰; - 基础参数定义:
- 市场电价参数:购电电价xb与售电电价xs(二者取值完全一致),为24小时分时电价数组,涵盖谷段(0-5时、22-23时)630元/MWh、平段(6-8时、15-16时、21时)1020元/MWh、峰段(9-14时、17-20时)1520元/MWh三个时段;
- 燃气轮机参数:固定开机费用a=600元、分段线性化费用kcp=300元/(MW·h)、启停费用sconv=600元、最大出力gtmax=3.31MW、最小出力gtmin=1.3MW、爬坡率ramp=1.5MW/h;
- 储能系统参数:最大充电功率gescmax=1MW、最大放电功率gesdmax=1MW、最大蓄电量sessmax=4MWh、最小蓄电量sessmin=0MWh、充电效率uesc=0.95、放电效率uesd=0.95;
- 系统与负荷参数:最大市场交易量pmgmax=20MW、电负荷pload为24小时时序数据(经1.3倍系数调整)、光伏出力ppv从ppv.xlsx文件读取并转置,场景数量Sw=3;
- 场景概率参数:3个风光出力场景的发生概率pai=[0.2,0.3,0.5]。
(二)变量声明模块
基于YALMIP工具箱的sdpvar(连续决策变量)和binvar(二进制状态变量)进行定义,变量详情如下:
| 变量类型 | 变量名 | 维度 | 核心含义 | 取值约束 |
|---|---|---|---|---|
| 二进制变量 | umob | 3×24 | 各场景各时段购电状态 | 0(不购电)或1(购电) |
| 二进制变量 | umos | 3×24 | 各场景各时段售电状态 | 0(不售电)或1(售电) |
| 二进制变量 | xconv | 3×24 | 各场景各时段燃气轮机工作状态 | 0(停机)或1(运行) |
| 二进制变量 | yconv | 3×24 | 各场景各时段燃气轮机启停状态 | 0(无启停)或1(启停) |
| 连续变量 | pmgb | 3×24 | 各场景各时段市场购电量 | ≥0,单位:MW |
| 连续变量 | pmgs | 3×24 | 各场景各时段市场售电量 | ≥0,单位:MW |
| 连续变量 | pmt | 3×24 | 各场景各时段燃气轮机出力 | ≥0,单位:MW |
| 连续变量 | gesc | 3×24 | 各场景各时段储能充电功率 | ≥0,单位:MW |
| 连续变量 | gesd | 3×24 | 各场景各时段储能放电功率 | ≥0,单位:MW |
| 连续变量 | sess | 3×24 | 各场景各时段储能蓄电量 | ≥0,单位:MWh |
| 连续变量 | zk | 3×1 | 各场景CVaR风险损失超额量 | ≥0 |
| 连续变量 | var | 1×1 | CVaR风险阈值变量 | 无强制非负(代码中注释了var≥0约束) |
(三)约束条件构建模块
约束体系围绕设备运行物理特性、系统功率平衡及风险控制构建,共5类核心约束:
- 燃气轮机运行约束:
- 出力上下限约束:xconv(:,t)gtmin <= pmt(:,t) <= xconv(:,t)gtmax(t=1-24),即燃气轮机停机时出力为0,运行时出力在最小与最大出力之间;
- 初始爬坡率约束:pmt(:,1) <= ramp(首时段出力突变不超过爬坡率);
- 初始工作状态约束:xconv(:,1) <= yconv(1)(首时段工作状态与启停状态关联);
- 时序爬坡率约束:-ramp <= pmt(:,t)-pmt(:,t-1) <= ramp(t=2-24),即相邻时段出力变化量不超过爬坡率上限;
- 启停状态关联约束:xconv(:,t)-xconv(:,t-1) <= yconv(:,t)(t=2-24),即燃气轮机从停机转为运行时,启停状态变量标记为1。
- 市场购售电约束(t=1-24,w=1-3):
- 状态互斥约束:0 <= umob(w,t)+umos(w,t) <=1,同一时段同一场景下,购电与售电状态不可同时激活;
- 购电量上限约束:0 <= pmgb(w,t) <= umob(w,t)pmgmax,仅购电状态激活时可购电,且购电量不超过最大交易量;
- 售电量上限约束:0 <= pmgs(w,t) <= umos(w,t)pmgmax,仅售电状态激活时可售电,且售电量不超过最大交易量。
- 储能系统约束:
- 充放电功率约束:0 <= gesc(:,t) <= gescmax、0 <= gesd(:,t) <= gesdmax(t=1-24),充放电功率不超过设备额定上限;
- 蓄电量上下限约束:0 <= sess(:,t) <= sessmax(t=1-24),蓄电量在最小与最大容量之间;
- 初始蓄电量约束:sess(:,1) == gesc(:,1)uesc - gesd(:,1)/uesd(首时段蓄电量由充电量(含充电效率)与放电量(含放电效率)决定);
- 时序蓄电量平衡约束:sess(:,t) == sess(:,t-1) + gesc(:,t)uesc - gesd(:,t)/uesd(t=2-24),后续时段蓄电量由前一时段蓄电量、本时段充放电量及效率共同决定。
- 系统功率平衡约束(w=1-3):
gesc(w,:)+pload(1,:)+pmgs(w,:) == gesd(w,:)+ppv(w,:)+pmgb(w,:)+pmt(w,:)
左侧为总消耗功率(储能充电功率+电负荷+市场售电功率),右侧为总供给功率(储能放电功率+光伏出力+市场购电功率+燃气轮机出力),实现供需实时平衡。
- CVaR风险约束(w=1-3):
- 风险损失超额量约束:zk(w) >= -(xbpmgb(w,:)'-xspmgs(w,:)'+axconv(w,:)'+kcppmt(w,:)'+sconv*yconv(w,:)')+var,zk(w)为各场景下实际成本超过风险阈值var的部分;
- 非负约束:zk(w) >=0,风险损失超额量不可为负。
(四)目标函数构建模块
目标函数以“最小化总成本”为核心,总成本由“场景加权期望成本”和“CVaR风险成本”两部分构成:
- 场景加权期望成本:按场景概率
pai加权求和各场景的调度成本,单个场景成本构成如下:
成本 = 市场购电成本 - 市场售电收益 + 燃气轮机固定开机费 + 燃气轮机出力费 + 燃气轮机启停费
数学表达式:xbpmgb(w,:)'-xspmgs(w,:)'+axconv(w,:)'+kcppmt(w,:)'+sconvyconv(w,:)'
期望成本计算:obj_single = sum(pai(w)单个场景成本)(w=1-3)
- CVaR风险成本:
L(-var + paizk/(1-α)),其中:
-L=0.8为风险系数(代码注释说明因聚合单元单一,风险系数变化不明显,为区分效果故意设置较高值);
-α=0.95为置信水平(代码中存在两处CVaR计算表达式,一处为1-0.6,一处为注释的1-0.95,最终结果读取采用1-0.95);
-var为风险阈值,zk为各场景超额损失变量。
- 最终目标函数:
obj_single = 期望成本 + L(-var + paizk/(1-0.95))
(五)优化求解模块
- 求解器配置:采用CPLEX求解器,通过
sdpsettings设置求解参数:
-'solver','cplex':指定CPLEX为求解器;
-'verbose',2:显示求解过程日志;
-'usex0',0:不使用初始变量值;
-ops.cplex.mip.tolerances.mipgap=1e-6:设置混合整数规划间隙为1e-6,保证求解精度。
- 求解执行:调用
result=optimize(C,objsingle,ops)执行优化,其中C为所有约束条件集合,objsingle为目标函数。
(六)结果处理与展示模块
- 结果读取:通过
value()函数提取优化后的关键变量数值,包括pmgb(购电量)、pmgs(售电量)、gesc(储能充电功率)、gesd(储能放电功率)、pmt(燃气轮机出力)、cvar(CVaR风险成本); - 可视化展示:生成6类图形图表,具体如下:
- 场景1-3功率平衡图:采用堆叠柱状图,分别展示各场景24小时“储能充电、负荷、市场售电”(正向功率)与“储能放电、光伏、市场购电、燃气轮机”(反向功率)的功率分布,标注时间轴与功率单位(MW);
- 场景1-3市场交易量图:采用折线图,对比各场景24小时购电(红色实线)、售电(蓝色实线)与风险系数=1时购电(红色虚线)、售电(青色虚线)的交易量差异,标注时间轴与功率单位(MW); - 辅助数据输出:直接定义风险系数=1时的购售电量矩阵
pmgb1(3×24)和pmgs1(3×24),用于对比分析不同风险系数的影响。
四、代码核心特性
- 忠实还原多场景随机规划:基于3个风光出力场景,通过场景概率加权实现不确定性下的调度优化,贴合实际风光出力的随机性;
- CVaR风险度量精准:严格遵循CVaR理论构建风险约束与风险成本,支持风险系数自由调节,可直接观测不同风险偏好对调度策略的影响;
- 约束体系完整:覆盖设备物理约束(出力、爬坡、充放电)、系统运行约束(功率平衡)、市场交易约束(购售电互斥)及风险约束,确保调度方案可行;
- 结果可视化直观:通过柱状图、折线图清晰展示功率平衡与购售电策略,同时提供具体数值矩阵,便于量化分析;
- 参数可扩展性强:市场电价、设备参数、场景数量、风险系数等核心参数均集中定义,可直接修改适配不同应用场景。
五、使用说明
(一)运行环境要求
- 软件环境:MATLAB(兼容YALMIP工具箱版本)+ YALMIP工具箱 + CPLEX求解器(需激活授权);
- 数据准备:将光伏出力数据文件
ppv.xlsx放置于代码同级目录,文件格式需为3行24列(3个场景×24小时)。
(二)运行步骤
- 打开MATLAB,切换工作目录至代码所在文件夹;
- 在命令行输入
VPPacev,回车执行程序; - 查看结果:
- 求解日志:命令行输出CPLEX求解过程(迭代次数、可行性、最优目标函数值);
- 图形结果:自动弹出6个可视化图表,可直接查看各场景功率平衡与购售电策略;
- 数值结果:工作区生成pmgb、pmgs、pmt等变量,可直接调用进行后续分析。
(三)参数修改说明
- 风险系数调整:修改
L的值(如L=0为风险中性,L=1为高风险厌恶); - 场景参数调整:修改
Sw(场景数量)、pai(场景概率),同步更新ppv(光伏出力)的维度(需与场景数量一致); - 设备参数调整:直接修改燃气轮机(
gtmax、ramp等)、储能(gescmax、sessmax等)的参数值; - 电价调整:修改
xb数组的24小时电价数值,可适配不同地区的分时电价政策; - 求解精度调整:修改
ops.cplex.mip.tolerances.mipgap(如1e-5提升精度,1e-4加快求解速度)。
六、注意事项
- 工具箱依赖:确保YALMIP工具箱与CPLEX求解器正确安装且配置成功,可通过
yalmiptest验证YALMIP可用性,which cplex验证CPLEX路径正确性; - 数据格式一致性:
ppv.xlsx的行数必须与场景数量Sw一致(当前为3行),列数必须为24列(对应24小时),否则会出现维度不匹配错误; - 约束兼容性:修改设备参数(如
ramp、gtmax)时,需确保参数之间逻辑一致(如爬坡率不超过最大出力),避免约束冲突导致求解失败; - 代码注释保留:代码中关于风险系数设置原因、CVaR计算表达式的注释为核心逻辑说明,修改相关参数时需参考注释含义;
- 结果解读:CVaR值
cvar越大,代表为规避不确定性风险付出的额外成本越高,需结合期望成本综合评估调度方案的经济性与稳健性。
基于条件风险价值CVaR的微网/虚拟电厂多场景随机规划 摘要:构建了含风、光、燃、储的微网/虚拟电厂优化调度模型,在此基础上,考虑多个风光出力场景,构建了微网随机优化调度模型,并在此基础上,基于条件风险价值理论,度量不确定性场景的潜在风险价值,且风险系数可以自由调节,从而观测不同风险偏好下微网的调度策略,深度体会CVaR的有效性。
