✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
采用电力系统短期负荷预测算法以及相关的仿真软件构建出负荷预测模型,并结合电力系统历史负荷数据对模型进行"学习"训练.该模型可用于对电力系统短期负荷预测,预测模型的准确性不仅对电力调度科学合理地运行和相关电力调度规划的制定具有重要的意义,也是电网系统安全可靠,节能经济运行发展必要的信息保障. 目前,用于短期负荷预测的算法及其对应的数学模型有多种,但是传统的预测算法依赖于较为精确的数学模型,而在实际预测过程中一些影响负荷波动的特性参数通常采用恒值假定的方法,从而导致预测得到的负荷数据不能真实地反映出电力需求侧负荷的总体调度要求,在准确性,可靠性,和实时性等方面较差. 随着电力建设的加速,现代电网在结构和功能等多方面也越来越复杂,且实际运行中需求侧负荷变化量具有多元非线性时变特性.模糊神经网络模型结合了神经网络强大的非线性数据样本智能学习训练和模糊逻辑优化优点,通过采用网络模型内部各层神经元间的模糊学习推理运算方法可获得高准确度的负荷预测数据.
⛄ 部分代码
%% Harmony Search Time Series Forecasting - Created in 15 Jan 2022 by Seyed Muhammad Hossein Mousavi
% This code uses Harmony Search evolutionary algorithm in order to forecast
% desired steps into the future based on input vector of time series data.
% You can load your data vector and play with parameters based on your
% data and system.
%% Clearing Things
clc
clear
close all
warning ('off');
%% Data Load and Preparation
Data=load('CovidTimeSeries');
Data=Data.CovidTimeSeries';
Data=Data(1:400);
%% K is Number of Desired Steps into the Future
K = 100;
%% Basic Forecast
nstep = 80;
sys = nlarx(Data,nstep);
opt = forecastOptions('InitialCondition','e');
[Future,ForecastMSE] = forecast(sys,Data,K,opt);
datsize=size(Data);
datsize=datsize(1,1);
ylbl=datsize+K;
t = linspace(datsize,ylbl,length(Future));
% Creating Inputs and Targets
Delays = [1];
[Inputs, Targets] = MakeTheTimeSeries(Future',Delays);
data.Inputs=Inputs;
data.Targets=Targets;
% Making Data
Inputs=data.Inputs';
Targets=data.Targets';
Targets=Targets(:,1);
nSample=size(Inputs,1);
% Shuffle Data
% S=randperm(nSample);
% Inputs=Inputs(S,:);
% Targets=Targets(S,:);
% Train Data
pTrain=1.0;
nTrain=round(pTrain*nSample);
TrainInputs=Inputs(1:nTrain,:);
TrainTargets=Targets(1:nTrain,:);
TestInputs=Inputs(nTrain+1:end,:);
TestTargets=Targets(nTrain+1:end,:);
% Making Final Data Struct
data.TrainInputs=TrainInputs;
data.TrainTargets=TrainTargets;
data.TestInputs=TestInputs;
data.TestTargets=TestTargets;
%% Basic Fuzzy Model Creation
ClusNum=8; % Number of Clusters in FCM
fis=GenerateFuzzy(data,ClusNum);
%% Tarining Harmony Search Algorithm
HarmonySearchFis = HarmonySearchFCN(fis,data);
%% Plot Fuzzy Harmony Search Time Series Train Result
% Train Output Extraction
TrTar=data.TrainTargets;
TrainOutputs=evalfis(data.TrainInputs,HarmonySearchFis);
% Train calculation
Errors=data.TrainTargets-TrainOutputs;
r0 = -1 ;
r1 = +1 ;
range = max(Errors) - min(Errors);
Errors = (Errors - min(Errors)) / range;
range2 = r1-r0;
Errors = (Errors * range2) + r0;
MSE=mean(Errors.^2);
⛄ 运行结果
⛄ 参考文献
[1] 胡玲. 基于模糊神经网络的短期电力负荷预测研究[D]. 南华大学.
[2] 高淑芝, 高宪文, 王介生. 基于和声搜索优化多T-S模糊神经网络的聚合釜过程软测量建模[J]. 仪器仪表学报, 2011, 32(3):6.
[3] 张彩云. 基于改进PSO算法的模糊神经网络研究[D]. 哈尔滨理工大学, 2014.