两阶段鲁棒优化模型 多场景 采用matlab编程两阶段鲁棒优化程序,考虑四个场景,模型采用列与约束生成(CCG)算法进行求解,场景分布的概率置信区间由 1-范数和∞-范数约束,程序含拉丁超立方抽样+kmeans数据处理程序,程序运行可靠,有详细资料
一、代码整体概述
本套代码基于MATLAB平台开发,采用列与约束生成(CCG)算法求解含四个场景的两阶段鲁棒优化模型,聚焦电热综合能源系统的优化调度问题。通过引入1-范数和∞-范数约束界定场景分布的概率置信区间,综合考虑微燃机、储能系统、电锅炉、风电、光伏等多种能源设备,以及电/热负荷需求响应机制,实现系统运行成本最小化与能源利用效率最大化的双重目标。代码由主程序、主问题求解程序、子问题求解程序及辅助工具程序构成,各模块协同完成场景生成、约束构建、优化求解与结果可视化全流程。
二、核心文件功能拆解
(一)主程序:MAIN427.m
作为代码入口,负责全局参数初始化、迭代求解调度、结果计算与可视化输出,是整个优化流程的核心调度中心。
1. 参数初始化
- 基础参数配置:设定场景概率
ps0(经归一化处理)、置信水平alfa1/alfaw、采样次数N,通过公式计算概率置信区间的范数约束参数theta1/thetaw;定义时序长度tn=24(对应一天24小时)。 - 设备参数配置:
- 微燃机:最大出力
Pgmax=300kW、爬坡约束ru=50kW/rd=50kW、运行成本cg=1.7、启停成本cqt=0.25、电热比d2h=1.2。 - 储能系统(电储能):容量
Sch=400kW、最大充电功率Pchmax=0.2Sch、初始电量ee0=0.5Sch、SOC上下限socmax=0.9/socmin=0.1、充放电效率eta=0.95、老化成本ccn=0.3*7/100。 - 电锅炉:转换效率
yitagl=0.9。 - 经济成本参数:弃风弃光成本
cq=0.62、需求响应补偿成本cdz=0.5/cdd=0.5/chd=0.05。 - 边界参数初始化:设定目标函数上下界
UB=inf/LB=-inf,用于迭代收敛判断。
2. 迭代求解流程
采用CCG算法框架,通过4次迭代(对应4个场景)交替求解主问题(MP427.m)和子问题(SP427.m):
- 主问题求解:生成当前迭代的可行解,更新目标函数下界
LB并存储于LB1数组。 - 子问题求解:基于主问题解寻找最坏场景下的最优响应,更新目标函数上界
UB并存储于UB2数组。 - 迭代终止:固定迭代4次(可修改为
while UB-LB>1的收敛条件),确保解的精度与计算效率平衡。
3. 结果计算与可视化
- 核心指标计算:统计弃风率
qw、弃光率qv,为能源利用效率评估提供依据。 - 多维度可视化图表:
- 目标函数收敛图:绘制迭代过程中
UB与LB的变化曲线,验证算法收敛性。 - 电/热功率平衡图(分4个场景):通过堆叠柱状图展示电锅炉、售电、充电、放电、购电、微燃机发电、风电、光伏等电侧设备出力,以及储热、放热、微燃机热供应等热侧设备出力,叠加电/热负荷曲线,直观呈现供需平衡状态。
- 需求响应效果对比图:对比需求响应前后的电/热负荷变化,展示可转移负荷、可中断负荷的调节效果。
(二)主问题求解程序:MP427.m
构建两阶段鲁棒优化的主问题模型,通过CPLEX求解器寻找最小化系统运行成本的可行解,输出决策变量与中间成本参数。
1. 决策变量定义
- 连续变量:电储能充/放电功率
pch/pdis、电锅炉功率pgl、购/售电功率pbuy/psell、风电/光伏实际出力pwt/ppv、微燃机出力pg、热储能充/放热功率hch/hdis、需求响应相关变量(可转移电负荷pdz、可中断电负荷pdd、可削减热负荷phd)、鲁棒优化目标辅助变量yita。 - 二进制变量:电储能充/放电状态
uuch/uudis、微燃机启停状态uum、热储能充/放热状态uhch/uhdis、启停线性化辅助变量yu、不确定性变量辅助二进制变量sigmap/sigmad。
2. 约束条件构建
约束体系涵盖设备运行约束、能量平衡约束、需求响应约束三大类,采用矩阵化表达简化模型求解:
- 设备运行约束:
- 微燃机:出力上下限约束(
Q1x<=Pgmax/Q1x>=0)、爬坡约束(Q12x<=T12/Q12x>=T120)、启停状态约束(通过y_u实现线性化)。 - 电储能:充放电互斥约束(
uch+udis<=1)、功率上下限约束(Q2x<=T2/Q2x>=0)、能量守恒约束(Q3x==0)、SOC范围约束(Q4x<=T41/Q4*x>=T42)。 - 热储能:充放电互斥约束(
uhch+uhdis<=1)、功率上下限约束(0<=hch<=hchmax.uhch/0<=hdis<=hchmax.uhdis)、能量平衡约束(0.1sh<=0.5sh+sum(yitahchhch(1:t,j)-hdis(1:t,j)/yitahdis)<=0.9sh)。 - 能量平衡约束:
- 电功率平衡:
Q5*x==T5,确保发电侧(风电、光伏、微燃机、购电、放电)与用电侧(负荷、售电、充电、电锅炉)功率平衡。 - 热功率平衡:
Q6*x==T6,确保供热侧(微燃机余热、电锅炉、放热)与用热侧(热负荷、储热)功率平衡。 - 需求响应约束:可转移电负荷调节幅度约束(
-atse.pl<=pdz<=atse.pl)、可转移负荷总量守恒(sum(pdz)==0)、可中断负荷上限约束(0<=pdd<=aie.pl/0<=phd<=bie.ph)、售电功率上限约束(0<=p_sell<=20)。
3. 目标函数构建
主问题目标函数为系统总运行成本最小化,涵盖:
- 微燃机启停成本:
cqt*sum(sum(y_u))。 - 鲁棒优化目标项:
yita(包含各场景下的购电成本、微燃机运行成本、储能老化成本、弃风弃光成本、需求响应补偿成本等加权和,权重为场景概率ps)。 - 辅助成本项:碳排放或其他附加成本(
0.13sum(0.82pbuy+0.49pg)+0.011sum(hch+pdis))。
4. 求解与结果输出
调用CPLEX求解器求解混合整数线性规划(MILP)模型,输出决策变量的最优值(pch/pdis/p_wt等)、中间成本参数(c1/c2/c3/c4/Cz)及弃风弃光率(qw/qv),为子问题求解提供输入。
(三)子问题求解程序:SP427.m
基于主问题的决策变量,构建最坏场景下的优化模型,寻找对目标函数最不利的场景概率分布,为上界更新提供依据。
1. 变量与约束定义
- 决策变量:聚焦不确定性变量
psp(场景概率正偏差)、psd(场景概率负偏差)、ps(更新后的场景概率),以及辅助二进制变量sigmap/sigmad。 - 不确定性约束:场景概率偏差的范数约束(
sum(psp+psd)<=theta1/psp+psd<=thetaw)、偏差变量与二进制变量关联约束(0<=psp<=sigmaptheta1/0<=psd<=sigmadtheta1)、场景概率更新约束(ps==ps0'+psd+psp)。 - 继承主问题的设备运行与能量平衡约束矩阵(
Q1/Q12等),确保子问题解的可行性。
2. 目标函数构建
子问题目标函数为最大化主问题成本的负向加权和(obj_sp=-sum(Cz'.*ps)),即寻找最坏场景下的最大成本增量,实现鲁棒性验证。
3. 求解与上界计算
调用CPLEX求解器求解后,通过UB1=LB-yita-Q计算当前迭代的上界,其中Q为子问题目标函数最优值,用于主程序上界更新。
(四)辅助工具程序
1. 抽样函数:betaLHS.m/normLHS.m/uniLHS.m
基于拉丁超立方抽样(LHS)方法,生成符合特定分布的随机样本,用于场景生成的不确定性数据采样:
betaLHS.m:生成Beta分布样本,用于光伏出力不确定性建模(参数alfa=2.5/bata=0.5)。normLHS.m:生成正态分布样本,用于风电出力不确定性建模(参数u=0.5/d=0.33)。uniLHS.m:生成均匀分布样本,用于电价不确定性建模(参数A=0.1/B=0.5)。- 核心逻辑:通过分布反函数生成样本,结合随机排序实现抽样的均匀性与代表性。
2. 场景生成程序:datap.m
采用“抽样-聚类”两步法生成多场景数据,为优化模型提供输入场景集:
- 抽样阶段:对光伏、风电、电/热负荷、电价分别进行LHS抽样,生成
ns=1000个原始样本。 - 聚类阶段:采用K-Means算法对原始样本聚类,光伏/风电聚类为5类,负荷/电价聚类为2类,最终生成
552*2=100个组合场景(代码中实际使用4个典型场景)。 - 场景修正:考虑负荷对电价的需求响应,通过
DR3函数修正负荷样本,提升场景的合理性。
3. 聚类工具:kmeans.m
实现K-Means聚类算法,用于场景缩减与典型场景提取:
- 核心步骤:随机初始化聚类中心、计算样本到聚类中心的欧氏距离、分配簇标签、更新聚类中心、迭代收敛(聚类中心变化量<0.1)。
- 输出结果:聚类中心(典型场景数据)、各簇样本占比(场景概率参考),并绘制3D聚类图可视化场景分布。
三、模型核心特性与技术亮点
(一)鲁棒优化框架
采用两阶段鲁棒优化建模,第一阶段决策(微燃机启停、储能充放电计划等)在不确定性发生前制定,第二阶段决策(购售电调整、弃风弃光控制等)在不确定性实现后执行,通过1-范数和∞-范数约束场景概率置信区间,提升系统应对风光出力、负荷波动的抗干扰能力。
(二)多能源协同调度
整合电、热两大能源系统,通过微燃机的电热联供特性、电锅炉的电-热转换功能、储能系统的削峰填谷作用,实现电/热负荷的互补平衡,提高能源综合利用效率。
(三)需求响应机制
引入可转移负荷、可中断负荷等需求响应资源,通过价格信号引导用户调整用能行为,降低系统峰谷差,减少弃风弃光,降低整体运行成本。
(四)高效求解算法
采用CCG算法将复杂的鲁棒优化问题分解为主问题与子问题交替求解,避免直接求解大规模 MILP 问题的计算瓶颈,结合CPLEX求解器的高效计算能力,确保模型在合理时间内收敛。
四、使用说明与注意事项
(一)环境配置
- 运行平台:MATLAB R2016b及以上版本。
- 依赖工具:YALMIP工具箱(用于建模)、CPLEX求解器(用于求解MILP问题)。
- 文件路径:确保所有代码文件(MAIN427.m、MP427.m等)位于同一目录下,避免路径错误导致函数调用失败。
(二)参数调整建议
- 场景数量:可通过修改主程序迭代次数(
for k=1:4)调整场景数量,增加场景可提升模型精度,但会增加计算量。 - 收敛条件:建议将固定迭代改为收敛判据(
while UB-LB>1e-3),根据精度需求调整阈值。 - 设备参数:可根据实际工程场景修改微燃机出力、储能容量、成本系数等参数,适配不同规模的电热系统。
(三)结果解读要点
- 收敛性:关注
UB与LB的差值,差值越小说明解的精度越高。 - 经济性:重点分析弃风弃光率、购电成本、微燃机运行成本占比,评估系统经济性能。
- 鲁棒性:对比不同场景下的设备出力变化,验证系统在不确定性条件下的稳定运行能力。
五、总结
本套代码完整实现了含多场景、多设备、多约束的电热综合能源系统两阶段鲁棒优化调度,通过模块化设计确保代码的可读性与可扩展性。模型不仅考虑了风光出力、负荷的不确定性,还融合了需求响应与多能源协同机制,可为电热系统的优化运行提供科学的决策支持。通过调整参数与约束,可适配不同地区、不同规模的综合能源系统应用场景,具有较强的工程实用价值。
两阶段鲁棒优化模型 多场景 采用matlab编程两阶段鲁棒优化程序,考虑四个场景,模型采用列与约束生成(CCG)算法进行求解,场景分布的概率置信区间由 1-范数和∞-范数约束,程序含拉丁超立方抽样+kmeans数据处理程序,程序运行可靠,有详细资料