多时间尺度源储荷协调调度+日前日内实时+需求响应 对于:《考虑特性分布的储能电站接入的电网多时间尺度源储荷协调调度策略》的基本复现 简介: 为提高区域电网新能源消纳率,使电力系统运行成本最小,提高电力系统供电可靠性。 提出考虑特性分布的储能电站接入的电网多时间尺度“源–储–荷”协调调度策略。 综合储能电站、负荷侧各类需求响应资源的多时间尺度特性制定日前调度计划,并通过日内滚动与实时修正实现对预测数据更高精度的保证。 以系统运行成本、弃风惩罚成本、失负荷惩罚成本为目标函数,建立多时间尺度调度模型。 最后通过 MATLAB 平台调用商用软件包 CPLEX 完成混合整数规划优化,结果表明该调度策略可以达到系统运行成本最优,降低弃风率的效果。 有效提高了“源–储–荷”系统的新能源消纳率。 使用matlab+yalmip+cplex进行代码 )

最近复现了一篇很有意思的论文,关于《考虑特性分布的储能电站接入的电网多时间尺度源储荷协调调度策略》。这篇论文的目的很明确,就是要提高区域电网新能源消纳率,让电力系统运行成本最小,同时提高供电可靠性。

它提出了一个超棒的策略,考虑特性分布的储能电站接入的电网多时间尺度“源–储–荷”协调调度策略。这个策略综合了储能电站、负荷侧各类需求响应资源的多时间尺度特性来制定日前调度计划,还通过日内滚动与实时修正实现对预测数据更高精度的保证。

目标函数是以系统运行成本、弃风惩罚成本、失负荷惩罚成本为基础建立的多时间尺度调度模型。最后通过 MATLAB 平台调用商用软件包 CPLEX 完成混合整数规划优化。结果表明这个调度策略真的很厉害,可以达到系统运行成本最优,还能降低弃风率,有效提高了“源–储–荷”系统的新能源消纳率。

多时间尺度源储荷协调调度+日前日内实时+需求响应 对于:《考虑特性分布的储能电站接入的电网多时间尺度源储荷协调调度策略》的基本复现 简介: 为提高区域电网新能源消纳率,使电力系统运行成本最小,提高电力系统供电可靠性。 提出考虑特性分布的储能电站接入的电网多时间尺度“源–储–荷”协调调度策略。 综合储能电站、负荷侧各类需求响应资源的多时间尺度特性制定日前调度计划,并通过日内滚动与实时修正实现对预测数据更高精度的保证。 以系统运行成本、弃风惩罚成本、失负荷惩罚成本为目标函数,建立多时间尺度调度模型。 最后通过 MATLAB 平台调用商用软件包 CPLEX 完成混合整数规划优化,结果表明该调度策略可以达到系统运行成本最优,降低弃风率的效果。 有效提高了“源–储–荷”系统的新能源消纳率。 使用matlab+yalmip+cplex进行代码 )

下面来看看代码部分。我是用 matlab+yalmip+cplex 来实现的。

% 定义一些参数
num_time_steps = 24; % 时间步数,这里假设一天24小时
num_generators = 3; % 发电机数量
num_storage_units = 2; % 储能单元数量
num_demand_points = 4; % 负荷点数量

% 随机生成一些数据作为示例
generator_capacity = rand(num_generators, 1) * 100; % 发电机容量
storage_capacity = rand(num_storage_units, 1) * 50; % 储能容量
demand = rand(num_demand_points, num_time_steps) * 80; % 负荷需求

% 定义变量
gen_output = sdpvar(num_generators, num_time_steps); % 发电机输出
storage_charge = sdpvar(num_storage_units, num_time_steps); % 储能充电
storage_discharge = sdpvar(num_storage_units, num_time_steps); % 储能放电
lambda = sdpvar(1, num_time_steps); % 拉格朗日乘子

% 目标函数
objective = sum(gen_output(:, :)' * lambda) +...
            sum(storage_charge(:, :)' * lambda) -...
            sum(storage_discharge(:, :)' * lambda);

% 约束条件
constraints = [];

% 发电机容量约束
for i = 1:num_generators
    constraints = [constraints, gen_output(i, :) >= 0];
    constraints = [constraints, gen_output(i, :) <= generator_capacity(i)];
end

% 储能容量约束
for i = 1:num_storage_units
    constraints = [constraints, storage_charge(i, :) >= 0];
    constraints = [constraints, storage_discharge(i, :) >= 0];
    constraints = [constraints, storage_charge(i, :) + storage_discharge(i, :) <= storage_capacity(i)];
end

% 功率平衡约束
for t = 1:num_time_steps
    constraints = [constraints, sum(gen_output(:, t)) + sum(storage_discharge(:, t)) - sum(storage_charge(:, t)) == sum(demand(:, t))];
end

% 求解
ops = sdpsettings('solver', 'cplex');
sol = optimize(constraints, objective, ops);

% 输出结果
if sol.problem == 0
    disp('Optimal solution found');
    disp('Generator output:');
    disp(double(gen_output));
    disp('Storage charge:');
    disp(double(storage_charge));
    disp('Storage discharge:');
    disp(double(storage_discharge));
else
    disp('No optimal solution found');
end

分析一下这段代码哈。首先定义了一堆参数,像时间步数、发电机数量、储能单元数量、负荷点数量啥的,然后随机生成了一些数据作为示例。接着定义了变量,包括发电机输出、储能充电、储能放电和拉格朗日乘子。目标函数就是根据论文里的要求来的,把系统运行成本相关的部分都加起来。

约束条件部分,有发电机容量约束,保证发电机输出在合理范围内;储能容量约束,让储能的充放电都符合它的容量;还有功率平衡约束,确保每个时间步的功率都是平衡的。最后用 sdpsettings 设置求解器为 cplex 来求解,要是找到了最优解就输出结果,没找到就提示没有最优解。

这个复现过程真的很有趣,通过代码实现论文里的策略,更深入地理解了整个多时间尺度源储荷协调调度的过程。感觉自己对电力系统调度这块又有了新的认识!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐