【复现】并_离网风光互补制氢合成氨系统容量-调度优化分析(Matlab代码实现)

简介: 【复现】并_离网风光互补制氢合成氨系统容量-调度优化分析(Matlab代码实现)

     💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文内容如下:🎁🎁🎁

⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

    或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥第一部分——内容介绍

image.gif 编辑

[摘 要]为有效削减可再生能源发电出力的波动性,提升可再生能源的整体利用效能,本研究创新性地设计了一种集并网与离网功能于一体的风光互补制氢合成氨系统。该系统以实现年度收益最大化为核心目标,在构建过程中,充分考量了系统内的电平衡、氢平衡以及与电网的交互作用等关键运行约束条件,进而建立了容量配置与调度优化的综合模型。研究以内蒙古某地区实际的风光出力数据作为模型输入,通过深入分析风光容量的配比关系,系统探究了不同风光容量配比对系统技术经济性能的具体影响。研究结果显示:经过科学的容量配置与精细的调度优化,并/离网风光互补制氢合成氨系统能够在风光出力多变的情境下,灵活切换工作模式,有效平抑风光出力的波动,确保合成氨设备能够稳定且高效地运行,其中并网型系统的综合性能优于离网型系统。在具体案例区域中,随着风电装机容量的逐步提升,系统所需配置的电解槽与储氢罐容量先呈现下降趋势,后转为上升,当风电与光伏的装机容量相近或相等时,系统的经济效率达到较高水平。

[关 键 词]风光互补系统;绿色合成氨;容量与调度优化;风光容量配比研究

image.gif 编辑

本文聚焦于内蒙古特定区域,精心打造了兼具并网与离网功能的风光制氢合成氨系统。在深入考量运行调度优化策略的前提下,构建了一个以系统收益最大化为导向的目标函数优化模型。通过细致剖析风光容量配比,深入探究了其对并网型与离网型系统技术经济层面的影响,并得出以下关键结论。

1)所构建的并/离网风光制氢合成氨系统,在历经各设备科学合理的容量配置后,展现出了良好的经济性。同时,借助系统运行调度优化分析,该系统能够在风光出力条件各异的情况下,灵活且合理地切换工作状态,确保合成氨设备实现稳定、持续的生产作业,并显著提升了可再生能源的利用效率。

2)经系统容量调度优化分析发现,并网型系统在综合性能上更胜一筹。具体而言,离网型系统的合成氨平准化成本高达3807.16元/t,较并网型系统高出15.77%。这一差异主要源于离网型系统需配置更大容量的电解槽和储氢罐,同时还需配备蓄电池,从而增加了成本。

3)在本文所研究的内蒙古特定区域内,对于并网型系统而言,当风电装机容量略高于光伏装机容量时,系统的经济性能达到最优状态;而对于离网型系统,当风光容量相近或相等时,系统的经济性能最为出色。

为积极应对全球气候变化的严峻挑战,2016年,全球主要国家携手签署了《巴黎气候协定》,达成了应对气候变化的共同意志,并共同规划了二氧化碳减排的具体路径。中国亦于2020年郑重宣布,将力争于2030年前实现碳达峰,2060年前达成碳中和的宏伟“双碳”目标。在此背景下,大力发展风能、太阳能等可再生能源,成为实现“双碳”目标、推动能源体系转型发展的核心策略与坚实支撑[1-3]。

2022年3月,中国国家发展和改革委员会与国家能源局携手发布了《氢能产业发展中长期规划(2021—2035年)》[4],清晰界定了氢能在中国能源结构调整与产业升级中的战略定位,同时明确了“构建清洁、低碳、低成本的多元制氢体系,优先发展可再生能源制氢,严格限制化石能源制氢”的发展导向。据预测,至2050年,氢能在中国能源消费中的占比将达到10%[5],有望引领人类能源体系的深刻变革,推动第三次能源革命的到来。

“绿氢”,作为二次能源的佼佼者,其潜在应用领域广泛,涵盖化工、冶金、交通、天然气掺氢、氢储能等多个行业[6]。当前,中国的氢能消费主要集中于合成氨、合成甲醇等石化领域作为工业原料,其中合成氨产业的氢气消耗量占据全国氢气总消耗量的37%[7]。利用风光等可再生能源发电生产“绿氢”,以替代“灰氢”作为化工原料合成氨(renewable power to ammonia,RePtA),已成为中国电力和化工行业碳减排的重要突破口[8-9]。然而,风能、太阳能等可再生能源具有显著的波动性、间歇性和随机性,导致风光发电出力亦呈现出较大的不稳定性。在并网型RePtA系统并网过程中,这可能引发供电电压和频率的不稳定,进而造成严重的弃风弃光现象。而对于离网型RePtA系统,风光发电出力的直接作用可能导致电解制氢设备频繁启停、寿命缩短等问题[10]。

针对RePtA系统的上述挑战,已有众多学者展开了深入探索。Richard等人[11]构建了可再生能源制氢合成氨系统的优化算法模型,深入研究了可再生能源波动对RePtA系统设计规模及经济性的影响,发现可再生能源电价、电解槽成本、哈伯-博世法操作负载以及可再生能源比例是影响系统经济性的关键因素。安光禄等[12]则从氨的季节性需求出发,构建了以系统年总成本最小化为优化目标的可再生能源合成氨系统优化设计模型,确定了系统的最优容量配置与操作计划。林今等[13]搭建了风光电解水制氢合成氨系统模型,对比分析了电网调峰型、电网友好型以及工艺离网型系统的绿氨成本及适用场景,指出近期应发展电网友好型RePtA系统,远期则应转向工艺离网型RePtA系统。李晨鹏等[14]则建立了无碳氨成本计算方法和煤电机组氨煤混燃平准化电力成本经济模型,评估了未来使用可再生能源生产的无碳氨在氨煤混燃机组中的实际应用技术经济性。尽管上述研究在RePtA系统的容量配置、运行优化以及技术经济性方面取得了有价值成果,但针对风光互补发电系统对并网型与离网型系统技术经济影响的研究仍显不足。而风光互补发电系统,正是利用风光互补的特性,对RePtA系统的容量配置与调度优化产生着重要影响。

鉴于此,本文通过构建并/离网风光互补制氢合成氨系统,以系统收益最大化为目标函数,对系统各设备的容量及运行策略进行优化,同时深入探究风光容量配比对并/离网风光互补制氢合成氨系统技术经济性的影响。

📚第二部分——运行结果

image.gif 编辑

image.gif 编辑 image.gif 编辑 image.gif 编辑 image.gif 编辑 image.gif 编辑 image.gif 编辑 image.gif 编辑 image.gif 编辑 image.gif 编辑 image.gif 编辑 image.gif 编辑

运行视频:

通过网盘分享的文件:运行视频.mp4

链接: https://pan.baidu.com/s/1XZwMlIKISKMobaCbeNFCxA?pwd=j5e3

提取码: j5e3

--来自百度网盘超级会员v6的分享

主函数代码:

%% 风光制氢合成氨系统结果生成
% 生成11张图和3个Excel表
% 包括:图2a-5b(调度结果)+ 图6-8(容量配比分析)+ 3个Excel表
addpath(genpath('.'));
clc;clear;
fprintf('========================================\n');
fprintf('生成优化结果 (11图 + 3表)\n');
fprintf('========================================\n\n');
% 加载数据
data = load_system_data();
cfg = config();
%% 第1部分:并网系统调度结果(图2a-3b)
fprintf('[1/3] 并网系统调度结果生成中...\n');
result_ongrid = optimize_ongrid(data, cfg, 'WindCapacity', 600, 'SolarCapacity', 600, 'Verbose', false);
if result_ongrid.status == 2
    % 保存Excel
    save_dispatch_results(result_ongrid.dispatch, 'results/ongrid_dispatch_results.xlsx', 'ongrid');
    
    % 读取Excel用于绘图
    dispatch_ongrid = readtable('results/ongrid_dispatch_results.xlsx');
    
    % 生成图2a-3b
    plot_power_balance_ongrid(dispatch_ongrid, 1, 168, 'results/figures/图2a_并网型大风季电力平衡.png');
    plot_power_balance_ongrid(dispatch_ongrid, 4369, 4369+168, 'results/figures/图2b_并网型小风季电力平衡.png');
    plot_hydrogen_balance(dispatch_ongrid, 1, 168, 'results/figures/图3a_并网型大风季氢平衡.png', 'ongrid');
    plot_hydrogen_balance(dispatch_ongrid, 4369, 4369+168, 'results/figures/图3b_并网型小风季氢平衡.png', 'ongrid');
    
    fprintf('  并网系统完成(4图 + 1表)\n\n');
else
    error('并网优化失败!');
end
%% 第2部分:离网系统调度结果(图4a-5b)
fprintf('[2/3] 离网系统调度结果生成中...\n');
result_offgrid = optimize_offgrid(data, cfg, 'WindCapacity', 600, 'SolarCapacity', 600, 'Verbose', false);
if result_offgrid.status == 2
    % 保存Excel
    save_dispatch_results(result_offgrid.dispatch, 'results/offgrid_dispatch_results.xlsx', 'offgrid');
    
    % 读取Excel用于绘图
    dispatch_offgrid = readtable('results/offgrid_dispatch_results.xlsx');
    
    % 生成图4a-5b
    plot_power_balance_offgrid(dispatch_offgrid, 1, 168, 'results/figures/图4a_离网型大风季电力平衡.png');
    plot_power_balance_offgrid(dispatch_offgrid, 4369, 4369+168, 'results/figures/图4b_离网型小风季电力平衡.png');
    plot_hydrogen_balance(dispatch_offgrid, 1, 168, 'results/figures/图5a_离网型大风季氢平衡.png', 'offgrid');
    plot_hydrogen_balance(dispatch_offgrid, 4369, 4369+168, 'results/figures/图5b_离网型小风季氢平衡.png', 'offgrid');
    
    fprintf('  离网系统完成(4图 + 1表)\n\n');
else
    error('离网优化失败!');
end
%% 第3部分:容量配比分析(图6-8)
fprintf('[3/3] 容量配比分析生成中...\n');
% 统一的风光配比(从150MW风电开始,总容量1200MW)
wind_caps = 150:150:1200;
solar_caps = 1200 - wind_caps;
% 并网型和离网型使用完全相同的配比
wind_caps_on = wind_caps;
solar_caps_on = solar_caps;
wind_caps_off = wind_caps;
solar_caps_off = solar_caps;
% 初始化结果存储
n_ongrid = length(wind_caps_on);
n_offgrid = length(wind_caps_off);
results_ongrid = struct('wind_cap', cell(n_ongrid,1), 'solar_cap', cell(n_ongrid,1), ...
    'electrolyzer_cap', cell(n_ongrid,1), 'h2_storage_cap', cell(n_ongrid,1), ...
    'ammonia_cap', cell(n_ongrid,1), 'total_cost', cell(n_ongrid,1), ...
    'ammonia_prod', cell(n_ongrid,1), 'unit_cost', cell(n_ongrid,1));
results_offgrid = struct('wind_cap', cell(n_offgrid,1), 'solar_cap', cell(n_offgrid,1), ...
    'electrolyzer_cap', cell(n_offgrid,1), 'h2_storage_cap', cell(n_offgrid,1), ...
    'battery_cap', cell(n_offgrid,1), 'ammonia_cap', cell(n_offgrid,1), ...
    'total_cost', cell(n_offgrid,1), 'ammonia_prod', cell(n_offgrid,1), ...
    'unit_cost', cell(n_offgrid,1));
%% 3.1 并网型配比分析
fprintf('\n[3.1] 并网型配比分析(%d个配比)...\n', length(wind_caps_on));
for i = 1:length(wind_caps_on)
    wind_cap = wind_caps_on(i);
    solar_cap = solar_caps_on(i);
    fprintf('  [%d/%d] 风电=%dMW, 光伏=%dMW ... ', i, length(wind_caps_on), wind_cap, solar_cap);
    
    try
        result = optimize_ongrid(data, cfg, ...
            'WindCapacity', wind_cap, ...
            'SolarCapacity', solar_cap, ...
            'TimeLimit', 300, ...
            'Verbose', false);
        
        if result.status == 2
            results_ongrid(i).wind_cap = wind_cap;
            results_ongrid(i).solar_cap = solar_cap;
            results_ongrid(i).electrolyzer_cap = result.capacity.electrolyzer_Nm3h;
            results_ongrid(i).h2_storage_cap = result.capacity.h2storage_kg;
            results_ongrid(i).ammonia_cap = result.capacity.nh3_capacity_ton_year;
            results_ongrid(i).total_cost = result.economics.total_cost_10k;
            results_ongrid(i).ammonia_prod = result.economics.annual_nh3_ton;
            results_ongrid(i).unit_cost = result.economics.unit_nh3_cost;
            fprintf('成本=%.2f元/t\n', result.economics.unit_nh3_cost);
        else
            error('优化失败');
        end
    catch
        fprintf('失败\n');
        results_ongrid(i).wind_cap = wind_cap;
        results_ongrid(i).solar_cap = solar_cap;
        results_ongrid(i).electrolyzer_cap = NaN;
        results_ongrid(i).h2_storage_cap = NaN;
        results_ongrid(i).ammonia_cap = NaN;
        results_ongrid(i).total_cost = NaN;
        results_ongrid(i).ammonia_prod = NaN;
        results_ongrid(i).unit_cost = NaN;
    end
end
%% 3.2 离网型配比分析
fprintf('\n[3.2] 离网型配比分析(%d个配比)...\n', length(wind_caps_off));
for i = 1:length(wind_caps_off)
    wind_cap = wind_caps_off(i);
    solar_cap = solar_caps_off(i);
    fprintf('  [%d/%d] 风电=%dMW, 光伏=%dMW ... ', i, length(wind_caps_off), wind_cap, solar_cap);
    
    try
        result = optimize_offgrid(data, cfg, ...
            'WindCapacity', wind_cap, ...
            'SolarCapacity', solar_cap, ...
            'TimeLimit', 300, ...
            'Verbose', false);
        
        if result.status == 2
            results_offgrid(i).wind_cap = wind_cap;
            results_offgrid(i).solar_cap = solar_cap;
            results_offgrid(i).electrolyzer_cap = result.capacity.electrolyzer_Nm3h;
            results_offgrid(i).h2_storage_cap = result.capacity.h2storage_kg;
            results_offgrid(i).battery_cap = result.capacity.battery_MWh;
            results_offgrid(i).ammonia_cap = result.capacity.nh3_capacity_ton_year;
            results_offgrid(i).total_cost = result.economics.total_cost_10k;
            results_offgrid(i).ammonia_prod = result.economics.annual_nh3_ton;
            results_offgrid(i).unit_cost = result.economics.unit_nh3_cost;
            fprintf('成本=%.2f元/t\n', result.economics.unit_nh3_cost);
        else
            error('优化失败');
        end
    catch
        fprintf('失败\n');
        results_offgrid(i).wind_cap = wind_cap;
        results_offgrid(i).solar_cap = solar_cap;
        results_offgrid(i).electrolyzer_cap = NaN;
        results_offgrid(i).h2_storage_cap = NaN;
        results_offgrid(i).battery_cap = NaN;
        results_offgrid(i).ammonia_cap = NaN;
        results_offgrid(i).total_cost = NaN;
        results_offgrid(i).ammonia_prod = NaN;
        results_offgrid(i).unit_cost = NaN;
    end
end
%% 3.3 保存配比分析结果
fprintf('\n[3.3] 保存配比分析结果...\n');
save_ratio_results_both(results_ongrid, results_offgrid, 'results/optimization_results.xlsx');
fprintf('  已保存: results/optimization_results.xlsx\n');
%% 3.4 绘制配比对比图
fprintf('\n[3.4] 绘制配比对比图(图6-8)...\n');
plot_capacity_ratio_analysis(results_ongrid, results_offgrid, 'results/figures');
fprintf('  图6_风光配比对电解槽容量影响.png\n');
fprintf('  图7_风光配比对储氢罐容量影响.png\n');
fprintf('  图8_风光配比对合成氨成本影响.png\n');

image.gif

🎉第三部分——参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)

[1]邓振宇,周家辉,徐钢,等.并/离网风光互补制氢合成氨系统容量-调度优化分析[J].热力发电, 2024, 53(9):136-146.

🌈第四

相关文章
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
204 0
|
3月前
|
编解码 人工智能 算法
【采用BPSK或GMSK的Turbo码】MSK、GMSK调制二比特差分解调、turbo+BPSK、turbo+GMSK研究(Matlab代码实现)
【采用BPSK或GMSK的Turbo码】MSK、GMSK调制二比特差分解调、turbo+BPSK、turbo+GMSK研究(Matlab代码实现)
193 8
|
3月前
|
机器学习/深度学习 编解码 并行计算
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
206 8
|
29天前
|
机器学习/深度学习 数据采集 存储
创新型调制方案——剪枝DFT扩展FBMC结合SC-FDMA优势研究(Matlab代码实现)
【负荷预测】基于VMD-LSTM的负荷预测研究(Python代码实现)
146 71
|
3月前
|
机器学习/深度学习 人工智能 算法
【最优潮流】直流最优潮流(OPF)课设(Matlab代码实现)
【最优潮流】直流最优潮流(OPF)课设(Matlab代码实现)
192 0
|
3月前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
229 14
|
2月前
|
传感器 机器学习/深度学习 算法
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)
154 0
|
3月前
ABCDEF题重磅更新|2025年华为杯|研究生数学建模|思路、代码、论文|持续更新中....
ABCDEF题重磅更新|2025年华为杯|研究生数学建模|思路、代码、论文|持续更新中....
226 3
|
3月前
|
算法 机器人 Serverless
【机器人路径规划】基于6种算法(黑翅鸢优化算法BKA、SSA、MSA、RTH、TROA、COA)求解机器人路径规划研究(Matlab代码实现)
【机器人路径规划】基于6种算法(黑翅鸢优化算法BKA、SSA、MSA、RTH、TROA、COA)求解机器人路径规划研究(Matlab代码实现)
414 2
|
2月前
|
传感器 机器学习/深度学习 数据采集
【航空发动机寿命预测】基于SE-ResNet网络的发动机寿命预测,C-MAPSS航空发动机寿命预测研究(Matlab代码实现)
【航空发动机寿命预测】基于SE-ResNet网络的发动机寿命预测,C-MAPSS航空发动机寿命预测研究(Matlab代码实现)
160 0