✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
????个人主页:Matlab科研工作室
????个人信条:格物致知。
更多Matlab仿真内容点击????
⛄ 内容介绍
随着现代居民居住地愈发集中,供水管网规模不断扩大,水资源供给面临着新的困难和挑战.其中包括水资源调度时的动态变化,管网的突发故障,水资源的不可控流失以及多目标和计算量庞大等问题.BP神经网络因拥有较强的自学习能力和泛化能力而被广泛应用于水资源预测问题中,但其也存在收敛速度慢,容易陷入局部极值的问题.群智能算法作为一种寻优算法,具有操作简单,收敛速度快,全局寻优能力强等优点.为提高BP神经网络在水资源预测方面的收敛速度和预测精度,提出一种基于改进鲸鱼算法优化的BP神经网络水资源需求预测模型,通过改变鲸鱼优化算法收敛因子的计算方式以及增加惯性权重来加强算法的寻优广度和精度,再通过BP神经网络采用改进的WOA算法输出的最优权值,阈值作为初始参数值训练模型.实验验证,改进的WOA-BP神经网络方法相比传统WOA-BP方法在收敛速度和预测精度方面都有更优的表现.
⛄ 部分代码
function [mae,mse,rmse,mape,error,errorPercent]=compute_error(x1,x2)
%此函数用于计算预测值和实际(期望)值的各项误差指标
% 参数说明
%----函数的输入值-------
%----函数的返回值-------
% mae:平均绝对误差(是绝对误差的平均值,反映预测值误差的实际情况.)
% mse:均方误差(是预测值与实际值偏差的平方和与样本总数的比值)
% rmse:均方误差根(是预测值与实际值偏差的平方和与样本总数的比值的平方根,也就是mse开根号,
% 用来衡量预测值同实际值之间的偏差)
% mape:平均绝对百分比误差(是预测值与实际值偏差绝对值与实际值的比值,取平均值的结果,可以消除量纲的影响,用于客观的评价偏差)
% error:误差
% errorPercent:相对误差
if nargin==2
if size(x1,2)==1
x1=x1'; %将列向量转换为行向量
end
if size(x2,2)==1
x2=x2'; %将列向量转换为行向量
end
num=size(x1,2);%统计样本总数
error=x2-x1; %计算误差
errorPercent=abs(error)./x1; %计算每个样本的绝对百分比误差
mae=sum(abs(error))/num; %计算平均绝对误差
mse=sum(error.*error)/num; %计算均方误差
rmse=sqrt(mse); %计算均方误差根
mape=mean(errorPercent); %计算平均绝对百分比误差
%结果输出
disp(['平均绝对误差mae为: ',num2str(mae)])
disp(['均方误差mse为: ',num2str(mse)])
disp(['均方误差根rmse为: ',num2str(rmse)])
disp(['平均绝对百分比误差mape为: ',num2str(mape*100),' %'])
else
disp('函数调用方法有误,请检查输入参数的个数')
end
end
⛄ 运行结果
⛄ 参考文献
[1]马创, 周代棋, 张业. 基于改进鲸鱼算法的BP神经网络水资源需求预测方法[J]. 计算机科学, 2020, 47(S02):5.
❤️ 关注我领取海量matlab电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除