虚拟电厂内多台小规模火电机组与储能聚合分析及出力优化
摘要:虚拟电厂是一种将先进的通信技术和软件系统相结合,将分布式的发电机组、储能设备系统和用户负荷等分布式设备聚合优化统一调配,参与电力市场运行的新一代控制技术,被认为是统筹协调区域能源供给、实现双碳政策的重要路径。针对当下小型火电机组并网比较困难等问题,基于虚拟电厂能够聚合优化的特性,提出一种考虑供给与负荷转移的虚拟电厂调度策略,以发电系统整体利润最优为目标,从供给侧增强虚拟电厂的调度弹性。在供给侧充分利用火电机组灵活调峰的优势,并通过储能系统实现负荷转移,发挥储能优势。仿真结果表明:储能设备参与虚拟电厂调度,显著提高了虚拟电厂运行的经济性,增强了能源的消纳水平,实现“削峰填谷”的效果。同时,该系统对于外电网的依赖程度大大降低,提高了运行的稳定性与自主性。
关键词: 虚拟电厂;小型火电聚合;储能设备;能源消纳;
[1]吕鸣阳,陈衡,马瑞,等.虚拟电厂内多台小规模火电机组与储能聚合分析及出力优化[J].河北电力技术,2023,42(03):20-25+32.
为了实现虚拟电厂调度策略的 MATLAB 代码,我们将详细分步骤构建代码。该代码将包括以下几个部分:
建立虚拟电厂模型:聚合发电机组、储能设备和用户负荷。
定义发电机组和储能系统:包括灵活调峰能力。
建立调度策略模型:以发电系统整体利润最优为目标。
实现调度优化算法:计算最佳调度策略。
仿真分析:验证调度策略的有效性和经济性。
以下是详细的步骤和 MATLAB 代码实现:
步骤 1: 建立虚拟电厂模型
matlab
复制代码
function [virtualPowerPlant] = createVirtualPowerPlant(generatorCapacity, storageCapacity, loadDemand)
% generatorCapacity: 火电机组的发电能力(数组)
% storageCapacity: 储能设备的能力
% loadDemand: 用户负荷需求(数组)
% 创建虚拟电厂模型
virtualPowerPlant = struct();
virtualPowerPlant.generatorCapacity = generatorCapacity; % 火电机组能力
virtualPowerPlant.storageCapacity = storageCapacity; % 储能设备能力
virtualPowerPlant.loadDemand = loadDemand; % 用户负荷需求
fprintf('虚拟电厂模型建立完成。\n');
end
步骤 2: 定义发电机组和储能系统
matlab
复制代码
function [generationModel] = createGenerationModel(generatorEfficiency, storageEfficiency)
% generatorEfficiency: 火电机组的效率(数组)
% storageEfficiency: 储能设备的效率
% 创建发电机组和储能系统模型
generationModel = struct();
generationModel.generatorEfficiency = generatorEfficiency; % 发电机组效率
generationModel.storageEfficiency = storageEfficiency; % 储能效率
fprintf('发电机组和储能系统模型建立完成。\n');
end
步骤 3: 建立调度策略模型
matlab
复制代码
function [dispatchModel] = createDispatchModel(virtualPowerPlant, generationModel)
% virtualPowerPlant: 虚拟电厂模型
% generationModel: 发电机组和储能系统模型
% 创建调度策略模型
dispatchModel = struct();
dispatchModel.virtualPowerPlant = virtualPowerPlant; % 包含虚拟电厂
dispatchModel.generationModel = generationModel; % 包含发电和储能模型
fprintf('调度策略模型建立完成。\n');
end
步骤 4: 实现调度优化算法
matlab
复制代码
function [optimalDispatch] = optimizeDispatch(dispatchModel)
% dispatchModel: 调度策略模型
% 模拟时间段
timePeriods = length(dispatchModel.virtualPowerPlant.loadDemand);
% 初始化调度结果
optimalDispatch = zeros(timePeriods, 1);
for t = 1:timePeriods
% 当前负荷需求
currentDemand = dispatchModel.virtualPowerPlant.loadDemand(t);
% 计算可用发电能力
availableGeneration = sum(dispatchModel.virtualPowerPlant.generatorCapacity .* dispatchModel.generationModel.generatorEfficiency);
% 计算储能的贡献
storageContribution = min(dispatchModel.virtualPowerPlant.storageCapacity, currentDemand - availableGeneration);
% 确定最终调度
if availableGeneration + storageContribution >= currentDemand
optimalDispatch(t) = currentDemand; % 满足负荷需求
else
optimalDispatch(t) = availableGeneration + storageContribution; % 达到最大可用能力
end
end
fprintf('调度优化算法执行完成。\n');
end
步骤 5: 仿真分析
matlab
复制代码
function runVirtualPowerPlantSimulation()
% 示例数据
generatorCapacity = [50, 80, 60]; % 火电机组的发电能力
storageCapacity = 100; % 储能设备的能力
loadDemand = [70, 90, 80, 100, 60]; % 用户负荷需求
% 创建虚拟电厂模型
virtualPowerPlant = createVirtualPowerPlant(generatorCapacity, storageCapacity, loadDemand);
% 创建发电机组和储能系统模型
generatorEfficiency = [0.9, 0.85, 0.88]; % 火电机组效率
storageEfficiency = 0.95; % 储能效率
generationModel = createGenerationModel(generatorEfficiency, storageEfficiency);
% 创建调度策略模型
dispatchModel = createDispatchModel(virtualPowerPlant, generationModel);
% 执行调度优化算法
optimalDispatch = optimizeDispatch(dispatchModel);
% 输出结果
disp('虚拟电厂调度结果:');
disp('每个时间段的调度量:');
disp(optimalDispatch);
fprintf('虚拟电厂调度仿真完成。\n');
end
% 运行仿真
runVirtualPowerPlantSimulation();
整体代码解释
建立虚拟电厂模型:通过 createVirtualPowerPlant 函数定义火电机组的发电能力、储能设备能力和用户负荷需求。
定义发电机组和储能系统:通过 createGenerationModel 函数定义火电机组的效率和储能设备的效率。
建立调度策略模型:通过 createDispatchModel 函数将虚拟电厂和发电/储能模型结合。
实现调度优化算法:通过 optimizeDispatch 函数计算每个时间段的最佳调度策略。
仿真分析:在 runVirtualPowerPlantSimulation 函数中整合上述步骤,准备示例数据并输出调度结果。
通过此代码实现,可以模拟虚拟电厂在电力市场中的调度策略,评估储能设备和火电机组的协同作用对经济性的影响。具体代码可以根据实际需求进一步扩展和优化。