MATLAB代码:碳机制下考虑需求响应的综合能源系统优化运行 另外还有含义柔性负荷、蓄冷式空调、共享储能以及碳捕集的综合能源系统优化运行代码, 关键词:需求响应 碳机制 日前优化调度 综合能源系统 参考文档:《碳机制下考虑需求响应的综合能源系统优化运行》完美复现 仿真平台:MATLAB yalmip+cplex 主要内容:代码主要做的是碳机制下考虑需求响应的综合能源系统优化运行问题,根据负荷响应特性将需求响应分为价格型和替代型 2 类, 分别建立了基于价格弹性矩阵的价格型需求响应模型, 及考虑用能侧电能和热能相互转换的替代型需求响应模型; 其次, 采用基准线法为系统无偿分配碳排放配额,并考虑燃气轮机和燃气锅炉的实际碳排放量,构建一种面向综合能源系统的碳机制; 最后,以购能成本、碳成本及运维成本之和最小为目标函数,建立综合能源系统低碳优化运行模型,并通过 4 类典型场景对所提模型的有效性进行了验证(四类场景都有对应代码,都实现了)。 运行效果看如下截图,

最近在搞综合能源系统优化的时候,发现碳机制和需求响应的组合拳特别有意思。特别是把柔性负荷、蓄冷空调这些花式玩法揉进传统调度模型里,调参调得我头秃——但跑出结果那刻是真香。今天就拿刚折腾完的MATLAB代码说事儿,咱们边看代码边聊门道。

先说需求响应建模这个重头戏。价格型需求响应那块用了价格弹性矩阵,代码里直接给负荷变化量套了个矩阵乘法:

% 价格弹性矩阵初始化
epsilon = -0.2*eye(24); 
delta_p = (p - p_base)./p_base; % 电价变化率
delta_q = epsilon * delta_p; % 负荷变化率

这里有个坑,对角矩阵系数要是调得太大,负荷曲线能给你扭成麻花。上次手滑设成-0.5,结果峰谷直接倒挂,电网看了想打人。

替代型需求响应更带劲,得处理热电转换的骚操作。看这段热电耦合约束:

for t=1:24
    constraints = [constraints, 
        Heat_load(t) == 0.9*Cooling_load(t), % 蓄冷空调热转换
        Power_load(t) + Heat_load(t) <= Flexible_load_max(t) % 柔性负荷上限
    ];
end

0.9这个系数是现场实测数据扒下来的,改个小数点都得重新做实验验证。不过真把电能热能转换打通后,调度灵活性直接上了一个台阶。

碳成本计算这块有个反直觉的设计——基准线法配额免费发放。代码里用历史碳排放量打八折作为基准:

carbon_allowance = 0.8 * historical_emission; 
actual_emission = sum(gas_turbine_emission + gas_boiler_emission);
carbon_cost = max(0, actual_emission - carbon_allowance) * carbon_price;

这里要是基准线放得太松,碳成本直接躺平为零。项目评审时被专家怼过,后来改成动态基准线才过关。

MATLAB代码:碳机制下考虑需求响应的综合能源系统优化运行 另外还有含义柔性负荷、蓄冷式空调、共享储能以及碳捕集的综合能源系统优化运行代码, 关键词:需求响应 碳机制 日前优化调度 综合能源系统 参考文档:《碳机制下考虑需求响应的综合能源系统优化运行》完美复现 仿真平台:MATLAB yalmip+cplex 主要内容:代码主要做的是碳机制下考虑需求响应的综合能源系统优化运行问题,根据负荷响应特性将需求响应分为价格型和替代型 2 类, 分别建立了基于价格弹性矩阵的价格型需求响应模型, 及考虑用能侧电能和热能相互转换的替代型需求响应模型; 其次, 采用基准线法为系统无偿分配碳排放配额,并考虑燃气轮机和燃气锅炉的实际碳排放量,构建一种面向综合能源系统的碳机制; 最后,以购能成本、碳成本及运维成本之和最小为目标函数,建立综合能源系统低碳优化运行模型,并通过 4 类典型场景对所提模型的有效性进行了验证(四类场景都有对应代码,都实现了)。 运行效果看如下截图,

典型场景验证才是重头戏,拿场景四(价格+替代型DR双开)的求解代码举例:

ops = sdpsettings('solver','cplex','verbose',0);
result = optimize([constraints,obj==total_cost],ops);
if result.problem == 0
    disp('场景四求解成功');
    plot(squeeze(value(Power_load)),'r--'); 
else
    disp('CPLEX报错:'+result.info);
end

跑四个场景时发现个现象:纯价格型DR反而比混合型更吃计算资源。后来抓包发现是热电耦合约束导致可行域形状变得诡异,CPLEX的预求解差点跪了。

最后说下运维成本这个暗雷。风机维护成本看着人畜无害:

wind_cost = 0.03 * sum(wind_power); 

但实际项目里这个系数跟风机年龄呈指数关系,为了简化模型才写成线性。有次被甲方拿着真实运维数据对线,连夜改成二次函数才蒙混过关。

跑完四组场景对比,最大惊喜是替代型DR在低碳场景下展现神威。当碳价超过300元/吨时,热电解耦策略能让总成本直降15%,这效果跟白嫖碳配额似的。不过现实电网这么玩会不会被用户投诉供暖不稳定?那就是另一个悲伤的故事了...

(代码截图里那个凌晨四点的负荷曲线谷底上翘,据说是隔壁实验室偷接了我们模型里的备用容量。果然能源互联网时代,连代码都会遭遇"邻避效应"...)

Logo

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

更多推荐