基于条件风险价值CVaR的微网/虚拟电厂多场景随机规划 摘要:构建了含风、光、燃、储的微网/虚拟电厂优化调度模型,在此基础上,考虑多个风光出力场景,构建了微网随机优化调度模型,并在此基础上,基于条件风险价值理论,度量不确定性场景的潜在风险价值,且风险系数可以自由调节,从而观测不同风险偏好下微网的调度策略,深度体会CVaR的有效性。

一、核心目标

本代码聚焦含风、光、燃、储及电动汽车(EV)的电-冷综合能源微网虚拟电厂(VPP),构建了融合条件风险价值(CVaR)的多场景随机优化调度模型。核心目标包括:

  1. 实现多场景下(3个风光出力场景)虚拟电厂的日前经济调度,统筹燃气轮机、储能系统、光伏单元与电力市场的购售电协同运作;
  2. 引入CVaR风险度量机制,量化风光出力不确定性带来的潜在经济风险,支持风险系数自由调节,适配不同风险偏好的调度需求;
  3. 满足各类设备运行约束与功率平衡约束,在保障用户舒适度(通过冷负荷间接体现)的前提下,实现调度成本与风险的综合最优。

二、代码框架与流程图

(一)代码框架

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[程序结束]

三、核心模块详细说明

(一)程序初始化模块

  1. 环境清理:通过clc(清空命令行)、clear(清除工作区变量)、close all(关闭所有图形窗口)确保程序独立运行,避免干扰;
  2. 参数定义:
    - 市场电价:购电电价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 用于风险约束构建

(三)约束条件构建模块

约束体系涵盖设备运行约束、系统安全约束与风险控制约束,确保调度方案可行且可控:

  1. 燃气轮机约束:
    - 出力上下限:xconv(:,t)gtmin <= pmt(:,t) <= xconv(:,t)gtmax(运行时才出力,避免空载损耗);
    - 爬坡率约束:-ramp <= pmt(:,t)-pmt(:,t-1) <= ramp(限制出力突变,保护设备);
    - 启停状态约束:xconv(:,t)-xconv(:,t-1) <= yconv(:,t)(状态切换时标记启停)。
  2. 购售电约束:
    - 状态互斥:0 <= umob(w,t)+umos(w,t) <=1(同一时段同一场景不可同时购售电);
    - 交易量上限:pmgb(w,t) <= umob(w,t)*pmgmax(购电量不超过最大允许交易量)。
  3. 储能约束:
    - 充放电功率限制:0 <= gesc(:,t) <= gescmax0 <= gesd(:,t) <= gesdmax
    - 蓄电量平衡:sess(:,t) = sess(:,t-1) + gesc(:,t)*uesc - gesd(:,t)/uesd(考虑充放电效率);
    - 蓄电量上下限:sessmin <= sess(:,t) <= sessmax
  4. 功率平衡约束:gesc(w,:)+pload(1,:)+pmgs(w,:) = gesd(w,:)+ppv(w,:)+pmgb(w,:)+pmt(w,:)(充电功率+负荷+售电=放电功率+光伏出力+购电+燃气轮机出力)。
  5. CVaR风险约束:
    - 风险阈值约束:zk(w) >= -(成本函数) + varzk为风险损失超额量);
    - 非负约束:zk(w) >=0(风险损失超额量非负)。

(四)目标函数构建模块

目标函数为“期望成本+风险成本”,兼顾经济性与风险可控性:

  1. 期望成本计算:加权求和3个场景的调度成本(权重为场景概率pai),成本构成包括:
    - 市场购电成本:xbpmgb(w,:)'
    - 市场售电收益(抵减成本):-xs
    pmgs(w,:)'
    - 燃气轮机成本:固定开机费axconv(w,:)'+出力成本kcppmt(w,:)'+启停费sconv*yconv(w,:)'
  2. 风险成本计算:L(-var + paizk/(1-α)),其中:
    - L为风险系数(用户可调节,0=风险中性,越大越保守);
    - α为置信水平(代码中默认0.95,可修改);
    - var为CVaR风险阈值,zk为超额损失变量。
  3. 最终目标函数:obj_single = 期望成本 + 风险成本(最小化目标)。

(五)优化求解与结果展示模块

  1. 求解配置:调用CPLEX求解器,设置mipgap=1e-6(混合整数规划间隙,保证求解精度)、verbose=2(显示求解过程);
  2. 结果读取:通过value()函数提取优化后的变量值(如pmgb=value(pmgb)gesd=value(gesd));
  3. 可视化展示:生成6类图表,直观呈现调度结果:
    - 场景1-3功率平衡图(堆叠柱状图,展示各功率成分占比);
    - 场景1-3市场交易量图(折线图,对比不同风险系数下的购售电差异);
  4. 数据输出:直接输出关键调度数据(如风险系数=1时的购售电量矩阵pmgb1pmgs1),支持后续分析。

四、代码优势

  1. 多场景随机规划:考虑3个风光出力场景,覆盖不确定性,调度方案更具鲁棒性;
  2. 风险量化可控:引入CVaR理论,通过风险系数L自由调节风险偏好,适配不同运营策略(保守/激进);
  3. 设备模型全面:涵盖燃气轮机、储能、光伏、电力市场购售电,支持多能源协同调度;
  4. 约束体系严谨:兼顾设备物理约束、系统安全约束与风险约束,确保调度方案可行;
  5. 可视化效果好:通过堆叠柱状图、折线图直观展示功率平衡与购售电策略,便于结果分析;
  6. 扩展性强:可灵活添加冰蓄冷空调冷负荷模型、电动汽车充放电约束等,适配更多应用场景。

五、示例配置与结果说明

(一)示例配置

参数类别 关键参数值 说明
市场电价 峰时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等) 示例中为突出风险影响设置较高值

(二)典型结果说明

  1. 功率平衡结果:
    - 谷段(0-5时):负荷较低,储能充电,燃气轮机低出力,部分时段购电(电价低);
    - 峰段(9-14时、17-20时):负荷高,光伏出力充足时优先用光伏,不足时燃气轮机出力+储能放电,部分时段售电(电价高);
    - 平段(6-8时、15-16时、21-23时):光伏+储能+燃气轮机协同,按需购售电。
  2. 购售电结果:
    - 风险系数L=0.8 vs L=1.0:L越大(越保守),峰段购电量增加(避免光伏出力不足导致的缺电风险),谷段储能充电量增加(储备电能应对不确定性),售电量减少(降低出力过剩导致的售电收益损失风险);
    - 场景3(概率0.5):购售电策略更稳健,波动较小,因为高概率场景对期望成本影响更大。

六、使用说明

(一)环境准备

  1. 软件依赖:MATLAB(建议R2018b及以上)+ YALMIP工具箱 + CPLEX求解器(需激活授权);
  2. 数据准备:
    - 光伏出力数据:将ppv.xlsx文件放在与代码同目录下,文件格式为3行24列(3个场景,24小时出力);
    - 参数修改:如需调整场景数量、设备参数、电价或风险系数,直接在“定义变量”或“设置风险系数”模块修改对应参数。

(二)运行步骤

  1. 打开MATLAB,切换工作目录至代码所在文件夹;
  2. 在命令行输入VPPacev,回车运行;
  3. 查看结果:
    - 求解过程:命令行显示CPLEX求解日志(迭代次数、可行性、最优值);
    - 图形结果:自动弹出6个图表(3个功率平衡图、3个购售电对比图);
    - 数据结果:工作区变量包含pmgb(购电量)、pmgs(售电量)、pmt(燃气轮机出力)等关键数据,可直接调用分析。

(三)参数调整指南

  1. 风险偏好调整:修改L值(0=纯经济优先,1=风险优先,0.5=均衡);
  2. 场景调整:修改Sw(场景数量)、pai(场景概率),同步更新ppv(光伏出力)和pload(负荷)的维度;
  3. 设备参数调整:如储能容量、燃气轮机出力上限等,直接修改对应参数变量(如gescmaxgtmax);
  4. 求解精度调整:修改ops.cplex.mip.tolerances.mipgap(如1e-5提升精度,1e-4加快速度)。

七、注意事项

  1. 工具箱依赖:确保已正确安装YALMIP和CPLEX,且MATLAB能正常调用(可通过yalmiptest测试YALMIP,which cplex测试CPLEX路径);
  2. 数据格式:ppv.xlsx需严格为3行24列(场景×时间),否则会导致维度不匹配错误;
  3. 约束兼容性:修改设备参数(如rampgtmax)时,需确保约束之间不冲突(如爬坡率不超过出力上限);
  4. 求解时间:场景数量或变量维度增加时,求解时间会延长,可通过调整mipgapverbose参数平衡精度与速度;
  5. 结果解读:CVaR值cvar=value(L(-var+paizk/(1-0.95)))越大,说明为控制风险付出的成本越高,需结合期望成本综合评估调度方案。

八、扩展方向

  1. 设备扩展:添加冰蓄冷空调冷负荷模型、电动汽车充放电约束,完善电-冷-交通多能源协同;
  2. 场景扩展:增加风电出力场景、负荷不确定性场景,提升模型对多源不确定性的适应性;
  3. 算法优化:引入分布式求解算法,降低大规模场景下的求解复杂度;
  4. 功能扩展:添加调度方案的经济性、环保性(如碳排放)评估指标,支持多目标优化;
  5. 交互优化:开发GUI界面,可视化调整参数并实时展示结果,提升易用性。

基于条件风险价值CVaR的微网/虚拟电厂多场景随机规划 摘要:构建了含风、光、燃、储的微网/虚拟电厂优化调度模型,在此基础上,考虑多个风光出力场景,构建了微网随机优化调度模型,并在此基础上,基于条件风险价值理论,度量不确定性场景的潜在风险价值,且风险系数可以自由调节,从而观测不同风险偏好下微网的调度策略,深度体会CVaR的有效性。

Logo

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

更多推荐