考虑源荷两侧不确定性的含风电电力系统低碳优化调度MATLAB 平台:MATLAB 2023a 简介:参照考虑源荷两侧不确定性的含风电的低碳调度,引入模糊机会约束,程序包括储能、风光、火电机组及水电机组,解决了目标函数含有分类特征的约束问题、非线性约束/目标的线性转化问题,且考虑了机组的启停时间约束,目标函数考虑运行成本、弃风弃光和碳成本。 注意: 1.有详细的资料 2.模块化编程 3.注释清楚、方便学习
风光在电网里撒欢儿跑的时候,最让人头疼的就是它们的「看天吃饭」属性。咱们今天要聊的这个MATLAB调度模型,直接把手伸进风电场的概率分布里做文章------用模糊机会约束把不确定性框住,再绑上碳成本这个紧箍咒,整个活整得挺有意思。
先看模型骨架。目标函数里三层夹心饼干似的堆着运行成本、弃风弃光惩罚和碳交易成本,这里面的门道在于怎么把碳流和机组启停拧成一股绳。举个栗子,火电机组的碳排放计算直接用了分段线性化:
matlab
% 火电碳排放分段线性化处理
for k=1:num_thermal
P_thermal = sdpvar(1,24);
CO2_thermal(k,:) = (a_co2(k)*P_thermal + b_co2(k)).*ONOFF_thermal(k,:);
end
这个aco2和bco2藏着排放特性曲线的秘密,用状态变量ONOFF_thermal卡住启停时段,相当于给每个机组上了时间锁。
处理风电出力波动时,模型耍了个「模糊隶属度」的戏法。咱们用三角模糊数把预测误差包起来,代码里这个风速隶属度函数写得挺骚:
matlab
function mu = wind_membership(v_actual, v_pred)
delta = 0.3*v_pred; % 模糊带宽
mu = max(0, 1 - abs(v_actual - v_pred)/delta);
end
这玩意儿把实际风速和预测值的偏差转换成隶属度,相当于给调度决策加了缓冲气囊。当隶属度低于置信水平时,机会约束自动触发备用方案。
水电机组的爬坡约束处理得相当机灵。为了避免直接处理非线性项,用了个时间耦合的递推式:
matlab
% 水电时段耦合约束
for t=2:24
constraints = [constraints, ...
P_hydro(:,t) - P_hydro(:,t-1) <= ramp_up.*hydro_status(:,t), ...
P_hydro(:,t-1) - P_hydro(:,t) <= ramp_down.*hydro_status(:,t)];
end
rampup和rampdown这两个矩阵像交警一样,管着各水电机组每小时的最大升降幅度,hydro_status这个二值变量则盯着机组是不是在开机状态。
说到弃风惩罚,模型里玩了个分层加权。不同风电场按优先级吃惩罚系数,代码里这个权重矩阵不是固定值,而是跟着调度阶段动态调整:
matlab
wind_penalty = sum(wind_weights.*curtailed_wind, 'all') * penalty_price;
这个wind_weights矩阵的更新策略藏在另一个子函数里,根据实时负荷需求弹性变化,相当于给不同风电场发了动态VIP卡。
整个模型最后拼装成混合整数线性规划问题,调用gurobi求解器时特别注意了启停时间的处理。这里有个骚操作------用二进制变量刻画机组状态迁移:
matlab
% 火电最小启停时间约束
for k=1:num_thermal
for t=2:24
constraints = [constraints, ...
ONOFF_thermal(k,t) - ONOFF_thermal(k,t-1) <= start_up(k,t), ...
ONOFF_thermal(k,t-1) - ONOFF_thermal(k,t) <= shut_down(k,t)];
end
end
startup和shut down这两个辅助变量像开关弹簧一样,卡着机组不能随便蹦迪。配合minimumuptime矩阵,把物理限制吃得死死的。
模型跑完后的结果可视化也挺有讲究,除了常规的电力平衡曲线,还专门做了碳流追踪图。这个用 stacked area 图叠加不同机组的碳排放强度,能一眼看出什么时候在「排碳高烧期」:
matlab
area(time, CO2_stack);
xlabel('时段');
ylabel('碳排放强度(g/kWh)');
title('源-荷碳流动态追踪');
最后说下数据接口的设计------用结构体嵌套表格来组织多源数据,比如风电场的参数全塞在plant.wind这个结构体里,调用时直接点操作符一路点下去,改参数比扒拉excel表快多了。这种模块化设计在调参测试时,能避免把代码改得千疮百孔。
