一、算法原理与特征提取
1.1 孤岛检测基本原理
孤岛效应是指电网故障时,分布式发电系统继续向局部负载供电的现象。检测方法包括:
| 检测类型 | 原理 | 优缺点 |
|---|---|---|
| 被动法 | 监测电压/频率越限 | 简单,但有检测盲区 |
| 主动法 | 注入扰动信号 | 无盲区,但影响电能质量 |
| SVM/DT | 机器学习识别特征 | 高精度,适应性强 |
1.2 特征提取策略
提取以下关键特征进行孤岛检测:
| 特征类别 | 具体特征 | 计算公式 |
|---|---|---|
| 电压特征 | 电压幅值偏差 | $\Delta V = \frac{ |
| 频率特征 | 频率变化率 | d f d t = f k − f k − 1 Δ t \frac{df}{dt} = \frac{f_{k}-f_{k-1}}{\Delta t} dtdf=Δtfk−fk−1 |
| 谐波特征 | THD(总谐波畸变率) | T H D = ∑ h = 2 H ( V h / V 1 ) 2 THD = \sqrt{\sum_{h=2}^{H}(V_h/V_1)^2} THD=∑h=2H(Vh/V1)2 |
| 相位特征 | 相位跳变 | Δ ϕ = ϕ k − ϕ k − 1 \Delta \phi = \phi_k - \phi_{k-1} Δϕ=ϕk−ϕk−1 |
| 功率特征 | 有功/无功不平衡 | Δ P = P g e n − P l o a d \Delta P = P_{gen} - P_{load} ΔP=Pgen−Pload |
二、MATLAB代码实现
2.1 主程序(main_islanding_detection.m)
matlab
%% 基于SVM和决策树的孤岛检测系统
clc; clear; close all;
warning('off', 'all'); % 关闭警告
%% 1. 生成仿真数据
fprintf('正在生成仿真数据...\n');
[features, labels] = generate_islanding_data(1000);
fprintf('数据生成完成!共 %d 个样本,其中孤岛事件 %d 个\n', ...
length(labels), sum(labels==1));
%% 2. 数据预处理
fprintf('\n正在进行数据预处理...\n');
[features_norm, feature_names] = preprocess_features(features);
% 划分训练集和测试集
rng(1); % 设置随机种子保证可重复性
cv = cvpartition(labels, 'HoldOut', 0.3);
idx_train = training(cv);
idx_test = test(cv);
X_train = features_norm(idx_train, :);
y_train = labels(idx_train);
X_test = features_norm(idx_test, :);
y_test = labels(idx_test);
fprintf('训练集: %d 个样本,测试集: %d 个样本\n', ...
sum(idx_train), sum(idx_test));
%% 3. SVM模型训练
fprintf('\n=== SVM模型训练 ===\n');
svm_model = train_svm_model(X_train, y_train);
% SVM预测
svm_predict = predict(svm_model, X_test);
svm_acc = sum(svm_predict == y_test) / length(y_test) * 100;
svm_sen = calculate_sensitivity(svm_predict, y_test);
svm_spe = calculate_specificity(svm_predict, y_test);
fprintf('SVM准确率: %.2f%%\n', svm_acc);
fprintf('SVM灵敏度: %.2f%%\n', svm_sen);
fprintf('SVM特异度: %.2f%%\n', svm_spe);
%% 4. 决策树模型训练
fprintf('\n=== 决策树模型训练 ===\n');
dt_model = train_decision_tree(X_train, y_train, feature_names);
% 决策树预测
dt_predict = predict(dt_model, X_test);
dt_acc = sum(dt_predict == y_test) / length(y_test) * 100;
dt_sen = calculate_sensitivity(dt_predict, y_test);
dt_spe = calculate_specificity(dt_predict, y_test);
fprintf('决策树准确率: %.2f%%\n', dt_acc);
fprintf('决策树灵敏度: %.2f%%\n', dt_sen);
fprintf('决策树特异度: %.2f%%\n', dt_spe);
%% 5. 模型评估与比较
fprintf('\n=== 模型性能比较 ===\n');
performance_comparison(svm_predict, dt_predict, y_test);
% 绘制ROC曲线
figure('Position', [100, 100, 1200, 500]);
% SVM ROC
subplot(1,2,1);
[~, svm_score] = predict(svm_model, X_test);
svm_score = svm_score(:,2);
[svm_X, svm_Y, ~, svm_AUC] = perfcurve(y_test, svm_score, 1);
plot(svm_X, svm_Y, 'b-', 'LineWidth', 2);
hold on;
plot([0 1], [0 1], 'k--', 'LineWidth', 1);
xlabel('假阳性率');
ylabel('真阳性率');
title(sprintf('SVM ROC曲线 (AUC=%.3f)', svm_AUC));
grid on;
legend('SVM', '随机分类', 'Location', 'southeast');
% 决策树ROC
subplot(1,2,2);
[~, dt_score] = predict(dt_model, X_test);
dt_score = dt_score(:,2);
[dt_X, dt_Y, ~, dt_AUC] = perfcurve(y_test, dt_score, 1);
plot(dt_X, dt_Y, 'r-', 'LineWidth', 2);
hold on;
plot([0 1], [0 1], 'k--', 'LineWidth', 1);
xlabel('假阳性率');
ylabel('真阳性率');
title(sprintf('决策树 ROC曲线 (AUC=%.3f)', dt_AUC));
grid on;
legend('决策树', '随机分类', 'Location', 'southeast');
%% 6. 特征重要性分析
fprintf('\n=== 特征重要性分析 ===\n');
feature_importance = dt_model.predictorImportance;
figure('Position', [100, 100, 1000, 400]);
bar(feature_importance);
xlabel('特征编号');
ylabel('重要性得分');
title('决策树特征重要性');
xticks(1:length(feature_names));
xticklabels(feature_names);
xtickangle(45);
grid on;
%% 7. 实时检测演示
fprintf('\n=== 实时检测演示 ===\n');
demo_real_time_detection(svm_model, dt_model, feature_names);
2.2 数据生成函数(generate_islanding_data.m)
matlab
function [features, labels] = generate_islanding_data(n_samples)
% 生成孤岛检测仿真数据
% 输入: n_samples - 样本数量
% 输出: features - 特征矩阵 [n_samples x n_features]
% labels - 标签向量 (0=正常, 1=孤岛)
% 初始化
n_features = 8; % 8个特征
features = zeros(n_samples, n_features);
labels = zeros(n_samples, 1);
% 参数设置
% 正常情况范围
V_nom = 220; % 额定电压
f_nom = 50; % 额定频率
THD_normal = 0.03; % 正常THD
P_nom = 5000; % 额定功率
% 孤岛情况范围
V_island_min = 180; V_island_max = 260;
f_island_min = 48; f_island_max = 52;
THD_island_max = 0.15;
P_imbalance_max = 0.3; % 功率不平衡度
% 生成数据
for i = 1:n_samples
% 随机决定是否为孤岛
is_island = rand() < 0.5; % 50%概率为孤岛
if is_island
% 生成孤岛数据
V = V_nom + (rand()-0.5) * 60; % ±30V变化
f = f_nom + (rand()-0.5) * 4; % ±2Hz变化
THD = THD_normal + rand() * 0.12;
dV_dt = (rand()-0.5) * 1.0; % 电压变化率
df_dt = (rand()-0.5) * 0.2; % 频率变化率
phase_jump = (rand()-0.5) * 20; % 相位跳变(度)
P_imbalance = rand() * 0.3; % 功率不平衡度
Q_imbalance = rand() * 0.3; % 无功不平衡度
labels(i) = 1;
else
% 生成正常数据
V = V_nom + (rand()-0.5) * 10; % ±5V变化
f = f_nom + (rand()-0.5) * 0.2; % ±0.1Hz变化
THD = THD_normal + rand() * 0.02;
dV_dt = (rand()-0.5) * 0.1; % 小变化率
df_dt = (rand()-0.5) * 0.01;
phase_jump = (rand()-0.5) * 2;
P_imbalance = rand() * 0.05;
Q_imbalance = rand() * 0.05;
labels(i) = 0;
end
% 计算特征
V_deviation = abs(V - V_nom) / V_nom;
f_deviation = abs(f - f_nom) / f_nom;
% 组成特征向量
features(i, :) = [V, f, THD, dV_dt, df_dt, phase_jump, ...
P_imbalance, Q_imbalance, V_deviation, f_deviation];
end
% 添加噪声
noise_level = 0.01;
features = features + noise_level * randn(size(features));
end
2.3 数据预处理函数(preprocess_features.m)
matlab
function [features_norm, feature_names] = preprocess_features(features)
% 数据预处理
% 输入: features - 原始特征矩阵
% 输出: features_norm - 归一化后的特征
% feature_names - 特征名称
% 特征名称
feature_names = {
'电压幅值(V)',
'频率(Hz)',
'THD(%)',
'dV/dt',
'df/dt',
'相位跳变(度)',
'有功不平衡',
'无功不平衡',
'电压偏差率',
'频率偏差率'
};
% 检查并移除NaN值
nan_idx = any(isnan(features), 2);
if any(nan_idx)
fprintf('发现 %d 个NaN样本,已移除\n', sum(nan_idx));
features = features(~nan_idx, :);
end
% 标准化处理(Z-score标准化)
features_norm = zscore(features);
% 可选:Min-Max标准化
% features_norm = (features - min(features)) ./ (max(features) - min(features));
fprintf('特征预处理完成,特征维度: %d x %d\n', size(features_norm));
end
2.4 SVM模型训练(train_svm_model.m)
matlab
function svm_model = train_svm_model(X_train, y_train)
% 训练SVM模型
% 输入: X_train - 训练特征
% y_train - 训练标签
% 输出: svm_model - 训练好的SVM模型
% SVM参数设置
svm_options = {
'KernelFunction', 'rbf', % 使用RBF核
'BoxConstraint', 1, % 惩罚参数C
'KernelScale', 'auto', % 自动选择核尺度
'Standardize', true, % 标准化数据
'Solver', 'SMO', % 使用SMO算法
'KernelOffset', 0, % 核偏移
'IterationLimit', 1e6, % 最大迭代次数
'CacheSize', 'maximal', % 最大缓存
'OutlierFraction', 0.05, % 异常值比例
'Verbose', 0 % 不显示训练过程
};
% 使用交叉验证寻找最佳参数
fprintf('正在使用网格搜索优化SVM参数...\n');
C_values = [0.1, 1, 10, 100];
gamma_values = [0.01, 0.1, 1, 10];
best_acc = 0;
best_params = struct('C', 1, 'gamma', 1);
for C = C_values
for gamma = gamma_values
% 临时模型
temp_model = fitcsvm(X_train, y_train, ...
'KernelFunction', 'rbf', ...
'BoxConstraint', C, ...
'KernelScale', 1/gamma, ...
'Standardize', true);
% 交叉验证
cv_model = crossval(temp_model, 'KFold', 5);
cv_acc = 1 - kfoldLoss(cv_model);
if cv_acc > best_acc
best_acc = cv_acc;
best_params.C = C;
best_params.gamma = gamma;
end
end
end
fprintf('最佳参数: C=%.1f, gamma=%.2f, CV准确率=%.2f%%\n', ...
best_params.C, best_params.gamma, best_acc*100);
% 使用最佳参数训练最终模型
svm_model = fitcsvm(X_train, y_train, ...
'KernelFunction', 'rbf', ...
'BoxConstraint', best_params.C, ...
'KernelScale', 1/best_params.gamma, ...
'Standardize', true);
% 获取支持向量信息
sv_indices = svm_model.SupportVectorIndices;
fprintf('支持向量数量: %d (占训练集%.1f%%)\n', ...
length(sv_indices), length(sv_indices)/length(y_train)*100);
end
2.5 决策树模型训练(train_decision_tree.m)
matlab
function dt_model = train_decision_tree(X_train, y_train, feature_names)
% 训练决策树模型
% 输入: X_train - 训练特征
% y_train - 训练标签
% feature_names - 特征名称
% 输出: dt_model - 训练好的决策树模型
fprintf('正在训练决策树模型...\n');
% 决策树参数设置
dt_options = {
'MaxNumSplits', 20, % 最大分裂次数
'MinLeafSize', 5, % 最小叶子大小
'SplitCriterion', 'gdi', % 基尼不纯度
'Surrogate', 'on', % 使用代理分裂
'PredictorSelection', 'allsplits', % 使用所有特征
'Prune', 'on', % 启用剪枝
'PruneCriterion', 'error', % 基于误差剪枝
'MergeLeaves', 'on' % 合并叶子
};
% 训练决策树
dt_model = fitctree(X_train, y_train, dt_options{:});
% 可视化决策树
view(dt_model, 'Mode', 'graph');
% 计算特征重要性
importance = predictorImportance(dt_model);
[importance_sorted, idx] = sort(importance, 'descend');
fprintf('\n特征重要性排序:\n');
fprintf('%-20s %s\n', '特征', '重要性');
fprintf('%s\n', repmat('-', 40, 1));
for i = 1:length(idx)
if i <= 5 % 只显示前5个重要特征
fprintf('%-20s %.4f\n', feature_names{idx(i)}, importance_sorted(i));
end
end
% 决策树复杂度
num_leaves = numel(dt_model.NodeSize);
num_branches = numel(dt_model.NodeSize) - 1;
fprintf('\n决策树复杂度: %d 个叶子节点, %d 个分支\n', num_leaves, num_branches);
end
2.6 性能评估函数
matlab
function [sensitivity, specificity] = calculate_performance(predictions, labels)
% 计算性能指标
% 输入: predictions - 预测标签
% labels - 真实标签
% 输出: sensitivity - 灵敏度(召回率)
% specificity - 特异度
% 计算混淆矩阵
[CM, ~] = confusionmat(labels, predictions);
% 确保是2x2矩阵
if all(size(CM) == [2, 2])
TP = CM(2,2); % 真阳性
FN = CM(2,1); % 假阴性
TN = CM(1,1); % 真阴性
FP = CM(1,2); % 假阳性
sensitivity = TP / (TP + FN) * 100;
specificity = TN / (TN + FP) * 100;
else
sensitivity = NaN;
specificity = NaN;
end
end
function sensitivity = calculate_sensitivity(predictions, labels)
% 计算灵敏度
TP = sum((predictions == 1) & (labels == 1));
FN = sum((predictions == 0) & (labels == 1));
sensitivity = TP / (TP + FN) * 100;
end
function specificity = calculate_specificity(predictions, labels)
% 计算特异度
TN = sum((predictions == 0) & (labels == 0));
FP = sum((predictions == 1) & (labels == 0));
specificity = TN / (TN + FP) * 100;
end
2.7 模型比较函数(performance_comparison.m)
matlab
function performance_comparison(svm_pred, dt_pred, y_true)
% 模型性能比较
% 输入: svm_pred - SVM预测结果
% dt_pred - 决策树预测结果
% y_true - 真实标签
% 计算各项指标
metrics = {'准确率', '灵敏度', '特异度', 'F1分数'};
svm_metrics = zeros(4,1);
dt_metrics = zeros(4,1);
% SVM指标
svm_metrics(1) = sum(svm_pred == y_true) / length(y_true) * 100;
svm_metrics(2) = calculate_sensitivity(svm_pred, y_true);
svm_metrics(3) = calculate_specificity(svm_pred, y_true);
svm_metrics(4) = calculate_f1_score(svm_pred, y_true);
% 决策树指标
dt_metrics(1) = sum(dt_pred == y_true) / length(y_true) * 100;
dt_metrics(2) = calculate_sensitivity(dt_pred, y_true);
dt_metrics(3) = calculate_specificity(dt_pred, y_true);
dt_metrics(4) = calculate_f1_score(dt_pred, y_true);
% 显示比较结果
fprintf('%-15s %-10s %-10s\n', '指标', 'SVM', '决策树');
fprintf('%s\n', repmat('-', 40, 1));
for i = 1:4
fprintf('%-15s %-10.2f%% %-10.2f%%\n', ...
metrics{i}, svm_metrics(i), dt_metrics(i));
end
% 统计显著性检验
[h, p] = ttest2(svm_pred == y_true, dt_pred == y_true);
fprintf('\n统计检验: h=%d, p=%.4f\n', h, p);
if p < 0.05
fprintf('两种模型性能有显著差异\n');
else
fprintf('两种模型性能无显著差异\n');
end
end
function f1_score = calculate_f1_score(predictions, labels)
% 计算F1分数
TP = sum((predictions == 1) & (labels == 1));
FP = sum((predictions == 1) & (labels == 0));
FN = sum((predictions == 0) & (labels == 1));
precision = TP / (TP + FP);
recall = TP / (TP + FN);
f1_score = 2 * (precision * recall) / (precision + recall) * 100;
end
2.8 实时检测演示(demo_real_time_detection.m)
matlab
function demo_real_time_detection(svm_model, dt_model, feature_names)
% 实时检测演示
% 输入: svm_model - SVM模型
% dt_model - 决策树模型
% feature_names - 特征名称
fprintf('开始实时检测演示...\n');
fprintf('按Ctrl+C停止演示\n\n');
% 模拟实时数据流
n_points = 100;
time_axis = 1:n_points;
svm_results = zeros(1, n_points);
dt_results = zeros(1, n_points);
actual_states = zeros(1, n_points);
% 创建图形界面
fig = figure('Position', [200, 200, 1000, 600], ...
'Name', '孤岛检测实时演示', 'NumberTitle', 'off');
% 模拟正常和孤岛事件
for i = 1:n_points
% 模拟事件:前30点正常,中间40点孤岛,最后30点正常
if i > 30 && i <= 70
actual_state = 1; % 孤岛
else
actual_state = 0; % 正常
end
actual_states(i) = actual_state;
% 生成模拟数据
if actual_state == 1
% 孤岛状态
voltage = 220 + 20*randn();
frequency = 50 + 1*randn();
THD = 0.05 + 0.1*rand();
else
% 正常状态
voltage = 220 + 5*randn();
frequency = 50 + 0.1*randn();
THD = 0.03 + 0.02*rand();
end
% 计算特征
V_dev = abs(voltage-220)/220;
f_dev = abs(frequency-50)/50;
dV_dt = 0.1*randn();
df_dt = 0.01*randn();
phase_jump = 5*randn();
P_imb = 0.1*rand();
Q_imb = 0.1*rand();
features = [voltage, frequency, THD, dV_dt, df_dt, ...
phase_jump, P_imb, Q_imb, V_dev, f_dev];
% 标准化
features_norm = zscore(features);
% SVM检测
[svm_pred, svm_score] = predict(svm_model, features_norm);
svm_results(i) = svm_pred;
% 决策树检测
dt_pred = predict(dt_model, features_norm);
dt_results(i) = dt_pred;
% 更新图形
if mod(i, 5) == 0 || i == 1
% 清除图形
clf(fig);
% 子图1:检测结果
subplot(2,2,1);
hold on;
plot(time_axis(1:i), actual_states(1:i), 'k-', 'LineWidth', 2, ...
'DisplayName', '实际状态');
plot(time_axis(1:i), svm_results(1:i), 'r-', 'LineWidth', 1.5, ...
'DisplayName', 'SVM检测');
plot(time_axis(1:i), dt_results(1:i), 'b-', 'LineWidth', 1.5, ...
'DisplayName', '决策树检测');
xlabel('时间(采样点)');
ylabel('状态(0=正常,1=孤岛)');
title('孤岛检测结果');
legend('Location', 'best');
grid on;
ylim([-0.2, 1.2]);
% 子图2:特征值
subplot(2,2,2);
barh(1:3, [voltage/300; frequency/60; THD*10]);
set(gca, 'YTick', 1:3, 'YTickLabel', {'电压(标幺)', '频率(标幺)', 'THD(x10)'});
xlabel('标幺值');
title('关键特征值');
grid on;
% 子图3:检测统计
subplot(2,2,3);
svm_correct = sum(svm_results(1:i) == actual_states(1:i))/i*100;
dt_correct = sum(dt_results(1:i) == actual_states(1:i))/i*100;
bar([svm_correct, dt_correct]);
set(gca, 'XTickLabel', {'SVM', '决策树'});
ylabel('准确率(%)');
title('累计准确率');
ylim([0, 100]);
grid on;
% 子图4:状态指示
subplot(2,2,4);
if actual_state == 1
text(0.5, 0.7, '当前状态: 孤岛', 'FontSize', 16, ...
'Color', 'r', 'HorizontalAlignment', 'center');
else
text(0.5, 0.7, '当前状态: 正常', 'FontSize', 16, ...
'Color', 'g', 'HorizontalAlignment', 'center');
end
if svm_pred == 1
text(0.5, 0.5, 'SVM检测: 孤岛', 'FontSize', 14, ...
'Color', 'r', 'HorizontalAlignment', 'center');
else
text(0.5, 0.5, 'SVM检测: 正常', 'FontSize', 14, ...
'Color', 'g', 'HorizontalAlignment', 'center');
end
if dt_pred == 1
text(0.5, 0.3, '决策树检测: 孤岛', 'FontSize', 14, ...
'Color', 'r', 'HorizontalAlignment', 'center');
else
text(0.5, 0.3, '决策树检测: 正常', 'FontSize', 14, ...
'Color', 'g', 'HorizontalAlignment', 'center');
end
axis off;
drawnow;
% 显示当前结果
if i > 1
fprintf('时间点: %d, 实际: %d, SVM: %d, 决策树: %d\n', ...
i, actual_state, svm_pred, dt_pred);
end
end
% 短暂暂停
pause(0.1);
end
fprintf('\n演示结束!\n');
end
三、算法性能优化
3.1 集成学习版本
matlab
function ensemble_model = train_ensemble_model(X_train, y_train)
% 训练集成学习模型(结合SVM和决策树)
fprintf('正在训练集成学习模型...\n');
% 1. 训练SVM模型
svm_model = fitcsvm(X_train, y_train, ...
'KernelFunction', 'rbf', ...
'BoxConstraint', 1, ...
'Standardize', true);
% 2. 训练决策树模型
dt_model = fitctree(X_train, y_train, ...
'MaxNumSplits', 20, ...
'MinLeafSize', 5);
% 3. 训练随机森林
rf_model = TreeBagger(50, X_train, y_train, ...
'Method', 'classification', ...
'OOBPrediction', 'on', ...
'MinLeafSize', 5);
% 4. 创建集成模型
ensemble_models = {svm_model, dt_model, rf_model};
ensemble_model.weights = [0.4, 0.3, 0.3]; % 模型权重
ensemble_model.models = ensemble_models;
fprintf('集成模型训练完成!\n');
end
3.2 实时自适应更新
matlab
function update_model_online(model, new_data, new_labels, learning_rate)
% 在线更新模型
% 输入: model - 现有模型
% new_data - 新数据
% new_labels - 新标签
% learning_rate - 学习率
fprintf('正在在线更新模型...\n');
% 检查新数据质量
if length(unique(new_labels)) < 2
fprintf('新数据缺乏多样性,跳过更新\n');
return;
end
% 增量学习
try
% SVM增量学习
if isa(model, 'ClassificationSVM')
model = incrementalLearner(model);
model = updateMetrics(model, new_data, new_labels);
model = fit(model, new_data, new_labels);
% 决策树增量学习
elseif isa(model, 'ClassificationTree')
% 重新训练整个树
all_data = [model.X; new_data];
all_labels = [model.Y; new_labels];
model = fitctree(all_data, all_labels, ...
'MaxNumSplits', 20, 'MinLeafSize', 5);
end
fprintf('模型更新成功!\n');
catch ME
fprintf('模型更新失败: %s\n', ME.message);
end
end
四、部署与应用
4.1 MATLAB代码生成C代码
matlab
function generate_c_code(model, model_name)
% 生成C代码用于嵌入式部署
% 输入: model - 训练好的模型
% model_name - 模型名称
fprintf('正在生成C代码...\n');
% 创建测试输入
X_test = randn(10, size(model.X, 2));
% 配置代码生成
cfg = coder.config('lib');
cfg.TargetLang = 'C';
cfg.GenerateReport = true;
cfg.ReportPotentialDifferences = false;
% 定义函数接口
predict_fcn = @(x) predict(model, x);
% 生成代码
codegen -config cfg predict_fcn -args {X_test} -o [model_name '_predictor'];
fprintf('C代码生成完成!\n');
fprintf('文件位置: %s_predictor\n', model_name);
end
参考代码 基于SVM和dbs的孤岛检测matlab代码 www.youwenfan.com/contentcsu/53387.html
五、总结
这个完整的孤岛检测系统具有以下特点:
双模型对比 :SVM(高维非线性)和决策树(可解释性)
全面特征 :电压、频率、谐波、相位、功率等10个特征
性能评估 :准确率、灵敏度、特异度、F1分数、ROC曲线
实时演示 :模拟在线检测场景
可部署性:支持C代码生成,便于嵌入式实现
参数调优建议:
| 参数 | SVM | 决策树 |
|---|---|---|
| 核函数 | RBF(高斯核) | - |
| 惩罚参数C | 0.1-100 | - |
| 最大深度 | - | 5-20 |
| 最小叶子 | - | 5-20 |
| 学习率 | 0.01-0.1 | - |
应用场景:
- 光伏发电系统孤岛保护
- 风力发电并网保护
- 微电网安全监控
- 分布式能源管理
- 智能电网故障检测