考虑频率-惯量安全约束的新型电力系统优化调度
摘要:大规模清洁能源电力的接入削弱了电力系统在有功扰动下的惯量支撑和频率调节能力,在调度中需考虑系统的频率-惯量约束。构建了考虑频率-惯量安全约束的新型电力系统优化调度模型,引入先进绝热压缩空气储能系统作为储能装置进行风电消纳,以频率变化率和稳态频率偏差约束系统所能承载的风力发电极限,并在经济调度目标中考虑了常规机组运行成本、风电出力惩罚成本、碳排放治理成本。以改进的IEEE 30节点系统为算例进行仿真,结果表明:考虑频率-惯量安全约束,求得系统所能承载的风力发电极限,通过控制相关机组启停来调整风电渗透率,可使系统等效惯量始终高于临界惯量。
关键词: 新型电力系统;先进绝热压缩空气储能;频率安全;惯量评估;低碳经济调度;
[1]洪晗笑,吴晨曦,倪索引.考虑频率-惯量安全约束的新型电力系统优化调度[J/OL].电力自动化设备,1-12[2024-07-27].https://doi.org/10.16081/j.epae.202312046.
为了实现考虑频率-惯量安全约束的新型电力系统优化调度模型,我们需要在MATLAB中构建一个综合模型,包含系统的频率响应、经济调度、以及碳排放治理成本。以下是详细的MATLAB代码实现。
第一步:定义电力系统的基本参数和模型
首先,我们需要定义系统的基本参数和各类设备的数学模型。
matlab
复制代码
% 电力系统基本参数
numNodes = 30; % 节点数量
numGenerators = 5; % 发电机数量
numWindFarms = 3; % 风电场数量
% 生成器参数 (假设)
genCapacities = [100, 120, 80, 60, 90]; % MW
genCosts = [20, 25, 30, 28, 22]; % $/MWh
genMinUpDownTime = [2, 2, 1, 1, 2]; % 最小启停时间 (小时)
% 风电场参数 (假设)
windCapacities = [50, 70, 60]; % MW
windPenalties = [15, 10, 20]; % 风电出力惩罚成本 $/MWh
% 碳排放治理成本 (假设)
carbonCost = 10; % $/吨
% 频率响应参数 (假设)
baseInertia = 5; % 基础惯量常数 (s)
criticalInertia = 3.5; % 临界惯量常数 (s)
frequencyDeviationLimit = 0.5; % 稳态频率偏差限制 (Hz)
% 负荷数据 (假设)
loadProfiles = rand(numNodes, 24); % 随机生成负荷数据,单位:MW
% 初始状态
initialGenStatus = ones(numGenerators, 1); % 发电机初始状态,全部开启
% 储能系统参数 (假设)
storageCapacity = 100; % 储能容量 (MWh)
storagePower = 50; % 储能功率 (MW)
第二步:定义频率响应和惯量约束模型
matlab
复制代码
function [frequencyResponse, inertiaSupport] = frequencyInertiaConstraints(genOutput, windOutput, inertiaConstant)
% 计算系统总发电输出
totalGenOutput = sum(genOutput);
totalWindOutput = sum(windOutput);
% 计算总输出和惯量支持
totalOutput = totalGenOutput + totalWindOutput;
inertiaSupport = inertiaConstant * (totalGenOutput / (totalGenOutput + totalWindOutput));
% 计算频率响应 (简化模型)
frequencyResponse = 1 - (totalOutput / (totalGenOutput * inertiaSupport));
end
第三步:定义经济调度目标函数
matlab
复制代码
function totalCost = economicDispatch(genOutput, windOutput, genCosts, windPenalties, carbonCost)
% 计算常规机组运行成本
genCost = sum(genOutput .* genCosts);
% 计算风电出力惩罚成本
windCost = sum(windOutput .* windPenalties);
% 计算碳排放治理成本 (假设每MWh发电的碳排放量为0.5吨)
carbonEmission = 0.5 * sum(genOutput);
carbonEmissionCost = carbonEmission * carbonCost;
% 总成本
totalCost = genCost + windCost + carbonEmissionCost;
end
第四步:使用遗传算法进行优化调度
我们将使用遗传算法来优化系统的调度策略。
matlab
复制代码
function [optimalGenOutput, optimalWindOutput, minCost] = optimizeDispatch(loadProfiles, genCapacities, windCapacities, genCosts, windPenalties, carbonCost, baseInertia, criticalInertia, frequencyDeviationLimit)
% 遗传算法参数
PopulationSize = 50;
MaxGenerations = 100;
% 目标函数
fitnessFunction = @(x) economicDispatch(x(1:length(genCapacities)), x((length(genCapacities)+1):end), genCosts, windPenalties, carbonCost);
% 约束条件
constraintFunction = @(x) frequencyInertiaConstraints(x(1:length(genCapacities)), x((length(genCapacities)+1):end), baseInertia) - criticalInertia;
% 遗传算法配置
options = optimoptions('ga', 'PopulationSize', PopulationSize, 'MaxGenerations', MaxGenerations, 'UseParallel', true);
% 优化变量
numVariables = length(genCapacities) + length(windCapacities);
lb = zeros(1, numVariables); % 下界
ub = [genCapacities, windCapacities]; % 上界
% 优化
[optimalSolution, minCost] = ga(fitnessFunction, numVariables, [], [], [], [], lb, ub, constraintFunction, options);
% 分离发电机和风电场的输出
optimalGenOutput = optimalSolution(1:length(genCapacities));
optimalWindOutput = optimalSolution((length(genCapacities)+1):end);
end
第五步:主函数和结果展示
最后编写主函数来运行整个模拟过程,并展示优化结果。
matlab
复制代码
function main()
% 示例数据加载
genCapacities = [100, 120, 80, 60, 90]; % MW
genCosts = [20, 25, 30, 28, 22]; % $/MWh
windCapacities = [50, 70, 60]; % MW
windPenalties = [15, 10, 20]; % $/MWh
carbonCost = 10; % $/吨
loadProfiles = rand(30, 24); % 随机生成负荷数据,单位:MW
baseInertia = 5; % 基础惯量常数 (s)
criticalInertia = 3.5; % 临界惯量常数 (s)
frequencyDeviationLimit = 0.5; % 稳态频率偏差限制 (Hz)
% 系统优化
[optimalGenOutput, optimalWindOutput, minCost] = optimizeDispatch(loadProfiles, genCapacities, windCapacities, genCosts, windPenalties, carbonCost, baseInertia, criticalInertia, frequencyDeviationLimit);
% 显示结果
fprintf('最优发电机输出: %s MW\n', mat2str(optimalGenOutput));
fprintf('最优风电场输出: %s MW\n', mat2str(optimalWindOutput));
fprintf('最小成本: %.2f $\n', minCost);
end
% 运行主函数
main();
这段代码涵盖了从系统模型的建立到优化策略的实现,通过遗传算法进行优化,以考虑频率-惯量安全约束下的电力系统调度,并实现最优的经济性和环保性。