負荷予測の例-BPニューラルネットワーク

1.主題の背景:

北欧の特定の地域におけるユーザー負荷予測を対象として、1年間で合計300人のユーザーがランダムに選択されます。ユーザータイプには、住宅ユーザーと商用ユーザーが含まれます。そのうち、住宅ユーザーが主なユーザーであり、合計300ユーザーの負荷が予測ターゲットです。24時間前の予測では、年間36日のデータがテストセットとしてランダムに選択され、他のデータはトレーニングセットです。
アイデア1
ユーザーを24時間の日負荷曲線でクラスター化し、各タイプのユーザーの総電力消費量を個別に予測し、重ね合わせた後の総負荷の予測値を取得できます。
アイデア2:
総負荷を直接予測できます。
トレーニングセットは
load0〜load299(I:KV)、合計7897行を抜粋します。image.png テストセットは抜粋します。
image.png

2.入力、出力を構築します

入力(INPUT)としてA:Eを選択する
理由:テストセットの要件を逆にすることができます。
出力選択のアイデア2は、出力として使用されます。これは単純です。

3.BPニューラルネットワークを構築します

3.1 xlsreadを使用してファイルを読み取り、名前を付けます
3.2マトリックスの転置を行い
ます3.3ネットワークBPを構築します
3.4トレーニング済みネットワークを使用してテストセットを予測します

デモの例:

%%
%清空环境变量
clc
clear
close all
%%

load train.mat
input_datas = (input_datas)';
output_datas = (output_datas)';
%%
%构建网络
net = newff(input_datas,output_datas, [10], { 'logsig' 'purelin' } , 'traingdx' , 'learngdm') ;%输入数据为 特征数*数据个数,输出为 类别向量*数据个数
net.trainParam.showWindow = 0;% 不显示窗口
net.trainparam.show = 10 ;%每间隔50步显示一次训练结果
net.trainparam.epochs = 200;%允许最大训练步数200步
net.trainparam.goal = 0.0001 ;%训练目标最小误差0.0001
net.trainParam.lr = 0.0005 ;%学习速率0.0005
%% 开始训练
net = train( net,input_datas,output_datas);
%%开始测试
test = xlsread('test.xlsx');
input_test = test';
predict_output = sim( net,input_test)' ;
复制代码

image.png

おすすめ

転載: juejin.im/post/7079969139409846309