工作进度汇报:风电容量可信度的测算

任务:用RTS-79系统测算风电容量可信度。

1.RTS79系统的介绍

RTS(Reliability Test System)提供了一个基准模型,用于研究电力系统的可靠性和稳定性问题 。

它包含了24个节点、32个发电机组、38条输电线路。

设计动机:为了给比较不同方法得到的电力系统可靠性结果提供依据,最好有一个包含可靠性评估所需的基本数据的参考或“试验”系统。这个系统被设计为具有高度的代表性,能够模拟现实世界电力系统的各种操作条件和故障情况。

2.测算风电容量前,先算LOLE(加风电的情况)

目前问题是不明确风电如何接入,用那部分的数据。

机组容量(MW)强迫停运率(%)
2010.00 
2010.00 
762.00 
762.00 
2010.00 
2010.00 
762.00 
762.00 
1004.00 
1004.00 
1004.00 
1975.00 
1975.00 
1975.00 
122.00 
122.00 
122.00 
122.00 
122.00 
1554.00 
1554.00 
40012.00 
40012.00 
501.00 
501.00 
501.00 
501.00 
501.00 
501.00 
1554.00 
1554.00 
3508.00 

录入数据,我们算此时的LOLE。

% 发电机组的容量和可靠性数据
gen_capacity =table2array(fuhe(:,1)); % 发电机组容量(MW)
gen_failure_rate = table2array(fuhe(:,2)) * 0.01; % 发电机组故障率,我直接用了强迫停运率,有问题
gen_work_rate=table2array(fuhe(:,4));
average_wind_output=0;%风电取0

% 假设有一个负荷需求
load_demand = 3045;% 负荷需求(MW)3045

% 计算系统的总可用容量(包括风电)
total_capacity = sum(gen_capacity) + average_wind_output;

suoyin=@(num_remain)...
    randperm(length(gen_capacity), num_remain);
remaining_capacity = @(num_remain)...
    sum(gen_capacity(suoyin(num_remain))) + average_wind_output;
%randperm(length(gen_capacity), num_fails))生成1到32索引

% 计算LOLP
lolp = 0;
p=0;
for i = 1:32
    fails = i-1; % 失败的发电机组数量
    num_remain=32-fails;
    % 计算在各种故障状态下系统的剩余容量
    if remaining_capacity(num_remain)<load_demand
        % 得到要保留的索引
        indices_to_keep = setdiff(1:32, suoyin(num_remain));
        % 使用索引数组来提取元素
        filtered_arr = gen_work_rate(indices_to_keep);
        p=prod(filtered_arr);%相乘
    lolp=lolp+p;
    end
end

% 显示LOLP结果
disp(['LOLE with wind power integration: ', num2str(lolp)]);

上述为运行结果。(不加风电)值只能作为平均值。问题一:这是因为我在代码中犯了错,没有完全遍历。

问题2:结果甚至不是定义的LOLE。因为LOLE是对时间指标上的相加,我的数据里并没有用时间上的指标?

加风电,我查到:

% 计算风电场的平均出力
average_wind_output = wind_capacity * wind_output_factor;

% 计算系统的总可用容量(包括风电)
total_capacity = sum(gen_capacity) + average_wind_output;

然后直接加到容量里,我认为是有误的。

问题3:风电的接入是需要利用什么数据呢?是用所谓平均出力来描述?

我们改一下代码:

%该系统是由10条 发电母线、17个负荷节点、33条输电线、5台变压器和32台发电机组组成,该系统的
% 总装机容量是3405MW,系统最大负荷是2850MW。
% 负荷模型数据、常规发电机组模型数据将采用IEEE—RTS79系统中的可靠性分析数据。

% 假设数据
gen_capacity =table2array(fuhe(:,1)); % 发电机组容量(MW)
wind_turbines = 50; % 风电机组数量
wind_capacity = wind_turbines * 200; % 风电机组总容量,假设每台风机容量为2MW
load_demand =3045; % 系统负荷需求

% 系统可靠性评估参数
num_simulations = 10000; % 蒙特卡罗仿真次数

% 初始化可靠性指标
total_outages = 0; % 总停电次数
total_duration = 0; % 停电总时长

% 蒙特卡罗仿真
for i = 1:num_simulations
    % 随机生成系统运行状态
    gen_status = randi([0, 1], length(gen_capacity), 1); % 发电机组运行状态(0-故障,1-运行)
    wind_output = randi([0, wind_capacity], 1, 1); % 风电输出,假设风电输出在0到风电总容量之间随机

    % 计算当前可用容量
    available_capacity = sum(gen_capacity .* gen_status) + wind_output;

    % 检查是否发生停电
    if available_capacity < load_demand
        total_outages = total_outages + 1; % 停电次数加1
        % 假设每次停电持续时间为1小时,可以根据实际情况调整
        total_duration = total_duration + 1;
    end
end

% 计算LOLP和EENS
LOLP = total_outages / num_simulations; % 失负荷概率
EENS = total_duration / num_simulations * 8760; % 年期望能量不供应量

% 输出结果
fprintf('LOLP: %.4f\n', LOLP);
fprintf('EENS: %.2f MWh\n', EENS);

这里风电机组取了50个。想确认下这样的算法正确吗,与论文结果比对发现:

LOLP相差较大,EENS相差在可容忍范围内。

3.算好之后,用截弦法来求交点

记录一些AI写的:

def secant_method(f, x0, x1, tolerance):
    """
    使用截弦法求解方程 f(x) = 0 的根。

    参数:
    f -- 需要求解的函数
    x0 -- 第一个初始近似值
    x1 -- 第二个初始近似值
    tolerance -- 容许误差

    返回:
    x -- 方程的近似根
    """
    while abs(x1 - x0) > tolerance:
        # 计算新的近似值
        x = x1 - f(x1) * (x1 - x0) / (f(x1) - f(x0))
        # 更新近似值
        x0, x1 = x1, x
    return x

# 定义一个示例函数
def example_function(x):
    return x**2 - 2  # 例如,求解 x^2 - 2 = 0

# 初始近似值
x0 = 1.0
x1 = 1.5

# 容许误差
tolerance = 1e-5

# 调用截弦法求解
root = secant_method(example_function, x0, x1, tolerance)
print(f"方程 {example_function.__name__} 的近似根是: {root}")

当然可以求f(x)=a的根。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值