摘要:随着“碳中和,碳达峰”目标的提出,大规模、高容量、强随机性、清洁低碳的海上风电场集群并网,由于缺乏潮流调控手段,输电网将会出现潮流分布不均,断面输电能力达到瓶颈等问题,进而导致了严重的弃风现象。统一潮流控制器(unified power flow controller,UPFC)可以主动控制潮流分布以解决断面输电能力出现瓶颈的问题,同时储能装置可以起到提升电网灵活性、激励新能源消纳的作用。针对海上风电集群并网带来的一系列挑战,文中提出将基于海上风电集群并网的UPFC与储能协同优化配置方法,将UPFC和储能装置的选址和定容同时作为决策变量,并考虑海上风电出力的不确定性和时序相关性,提出UPFC与储能协同配置的分布鲁棒优化方法。然后采用二阶锥凸松弛、大M法等技术将原混合整数非凸非线性规划模型转化成混合整数二阶锥规划模型,以实现高效求解。最后,以某个209节点的海上风电集群并网的输电系统为算例进行仿真计算,验证了所提模型和算法的有效性。
关键词: 海上风电;统一潮流控制器;协同配置;分布鲁棒优化;时序相关性;
[1]樊玮,何宏亮,肖晃庆,等.基于海上风电集群并网的统一潮流控制器与储能协同优化配置研究[J/OL].现代电力,1-13[2024-07-16].https://doi.org/10.19725/j.cnki.1007-2322.2023.0229.
2024/7/16 10:22:34
为了解决海上风电集群并网带来的潮流控制挑战,文中提出的协同优化配置方法需要在MATLAB中实现以下步骤:
步骤 1: 定义UPFC和储能装置选址和定容问题
matlab
复制代码
function [upfcLocation, energyStorageSize] = optimizeUPFCandStorage(windPowerForecast, powerGrid, options)
% windPowerForecast: 海上风电出力预测数据
% powerGrid: 输电系统参数
% options: 求解器参数
% 定义决策变量:UPFC的位置和储能装置的大小
numNodes = powerGrid.numNodes;
upfcVar = optimvar('upfc', numNodes, 'Type', 'integer', 'LowerBound', 0, 'UpperBound', 1);
storageVar = optimvar('storage', numNodes, 'LowerBound', 0);
% 目标函数:最小化总成本,包括UPFC和储能装置的投资成本和运行成本
% 示例目标函数
objective = sum(upfcVar) * powerGrid.upfcCost + sum(storageVar) * powerGrid.storageCost;
% 创建优化问题
optimizationProblem = optimproblem('Objective', objective);
% 添加约束:例如潮流平衡、设备容量限制、安全约束等
% 示例约束
constraints = [sum(upfcVar) <= powerGrid.maxUpfc, sum(storageVar) <= powerGrid.maxStorage];
optimizationProblem.Constraints.UPFCandStorage = constraints;
% 求解优化问题
[solution, ~, exitflag, ~] = solve(optimizationProblem, options);
upfcLocation = solution.upfc;
energyStorageSize = solution.storage;
end
步骤 2: 二阶锥凸松弛和大M法转化混合整数非凸非线性规划模型
此步骤涉及到原模型的具体转化过程,需要根据模型的具体数学表达式来实现。这里假设模型转化已完成,我们将直接调用一个求解函数。
matlab
复制代码
function [optimizedModel] = convertToSOCP(mipModel)
% mipModel: 混合整数非凸非线性规划模型
% 此函数实现模型转化的逻辑
% 请参考具体的数学模型来实现这部分代码,通常涉及到的操作包括添加辅助变量、引入松弛变量等
% 此示例代码采用伪代码表示
socpModel = "转化后的二阶锥模型"; % 伪代码,需要替换为真实逻辑
optimizedModel = socpModel; % 返回优化后的模型
end
步骤 3: 求解转化后的混合整数二阶锥规划模型
matlab
复制代码
function [solution] = solveSOCP(optimizedModel, options)
% optimizedModel: 转化后的二阶锥规划模型
% options: 求解器参数
% 使用一个适合混合整数二阶锥规划的求解器求解问题
% MATLAB内置求解器之一是'intlinprog',但不支持二阶锥规划
% 需要使用其他支持MISOCP的求解器,例如MOSEK、Gurobi等
% 此示例代码采用伪代码表示
[solution, ~, exitflag, ~] = "求解器"(optimizedModel, options); % 伪代码,需要替换为真实逻辑
end
步骤 4: 验证所提模型和算法的有效性
matlab
复制代码
function validateModel(windPowerForecast, powerGrid)
% windPowerForecast: 海上风电出力预测数据
% powerGrid: 输电系统参数
% 设置求解器参数
options = optimoptions('intlinprog', 'Display', 'iter', 'MaxTime', 3600);
% 优化UPFC和储能装置配置
[upfcLocation, energyStorageSize] = optimizeUPFCandStorage(windPowerForecast, powerGrid, options);
% 将原优化问题转化为混合整数二阶锥规划问题
optimizedModel = convertToSOCP(powerGrid);
% 求解混合整数二阶锥规划问题
solution = solveSOCP(optimizedModel, options);
% 输出结果
disp('优化结果:');
disp(['UPFC位置:', num2str(upfcLocation)]);
disp(['储能装置大小:', num2str(energyStorageSize)]);
disp(['优化解:', num2str(solution)]);
end
% 示例参数(需要根据实际情况设置)
windPowerForecast = ...; % 海上风电出力预测数据
powerGrid = ...; % 输电系统参数
% 运行验证
validateModel(windPowerForecast, powerGrid);
以上MATLAB代码实现了从UPFC和储能装置配置的优化,到混合整数非凸非线性规划模型的转化,进而求解混合整数二阶锥规划模型,并验证了所提模型和算法的有效性。在实际应用中,上述代码中的伪代码部分需要根据具体的数学模型和求解器的接口来实现。