一、模糊小波神经网络简介

1 模糊小波神经网络原理
为了加强网络的自学习能力以及快速的适应战场环境变化,实现对目标威胁进行精确评估,将小波神
经网络嵌入模糊模型的后件部分形成模糊小波神经网络,网络结构如图 2所示:前三层已在之前提到,第四层改为小波函数层,选择 Gaussian 函数的一阶偏导数 φ(x) = x ·exp(−0.5x2) 作为母小波函数,该函数具有较好的拟合性能,根据所选母小波,经过伸缩平移变换放入第二层的神经元中作为激活函数,可以表示为


模糊小波神经网络的参数在网络训练的过程需要进行自动更新和调整,这里使用梯度下降法对网络参
数进行更新参数 c、t、d、w 的操作,为了获得良好的预测效果,最终会选择这些参数的最优值作为预测部份的参数值。

二、部分源代码

%FWNN 脚本文件,作为主程序使用
% 清理工作
close all
clear
% 关键变量
d = 5; % 用于输入的宽度
m = d; % 输入信号的个数
n = 5; % 关系函数的个数,模糊判断的个数,小波函数的个数
epoch = 2000; % 迭代次数
num_yangben = 49; % 数据个数
num_test = 12;
rate = 0.08; % 学习速率
mom = 0.5; % 冲量 % 产生试验数据
data = indata();
%result = plant(data);
result = data(:,d+1);
% TEST
file_yangben = '测试集.dat';
fid = fopen(file_yangben);
%u = fread(fid,[size_input_x,size_input_y],'float');
u_test = dlmread(file_yangben,',');
fclose(fid);% 随机初始化各个参数于(0,1)
c = rand(m, n);
q = rand(m, n); % 注意:不能为零
a = rand(n, m);
b = rand(n, m);
w = rand(1, n);% t-1迭代的参数值
pc = c;
pq = q;
pa = a;
pb = b;
pw = w;% t+1迭代的参数值
nc = zeros(m, n);
nq = zeros(m, n);
na = zeros(n, m);
nb = zeros(n, m);
nw = zeros(1, n);% 用于画图的数据
tu = zeros(epoch, num_yangben);
E = zeros(epoch, num_yangben);% 训练过程
tic % 开始计时
for loop1 = 1 : 1 : epochfor loop2 = 1 : 1 : num_yangben% 初始化中间数据x = zeros(1, m);g = zeros(m, n);U = zeros(1, n);p = zeros(1, n);W = zeros(1, n);%y = zeros(1, n);% 给输入节点赋值for i = 1 : 1 : dx(i) = data(loop2,i);end%for i = 1 : 1 : d% x(m + 1 - i) = result(loop2 - i);%end% 计算第二层节点的输出值for i = 1 : 1 : mfor j = 1 : 1 : ng(i, j) = relation(x(i), c(i, j), q(i, j));endend% 计算第三层节点的输出,同时记录第三层节点的选择信息for i = 1 : 1 : n[min, which] = fuzzy(g, m, i);U(i) = min;p(i) = which;end% 计算第四层节点的输出for i = 1 : 1 : nfor j = 1 : 1 : mW(i) = W(i) + wavelet(x(j), a(i, j), b(i, j));endendy = w .* W;% 计算最终的输出u = defuzz(U, y, n);tu(loop1, loop2) = u;% 计算误差temp1 = u - result(loop2);E(loop1, loop2) = temp1^2 / 2;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 下面使用梯度下降算法修正参数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 计算E对w的偏导数temp2 = sigamau(U, n);Etow = zeros(1, n);sima = zeros(1, n);for i = 1 : 1 : nEtow(i) = temp1 * U(i) * W(i) / temp2;sima(i) = temp1 * U(i) * w(i) / temp2;end% 计算几个下面会重复使用的数据temp3 = zeros(n, m);temp4 = zeros(n, m);for i = 1 : 1 : nfor j = 1 : 1 : mtemp3(i, j) = varz2(x(j), a(i, j), b(i, j)); % temp3= z^2temp4(i, j) = exp(-temp3(i, j)/2) / sqrt(abs(a(i, j))^3); % temp4 = ?endend% 计算E对b的偏导数Etob = zeros(n, m);for i = 1 : 1 : nfor j = 1 : 1 : mtemp5 = temp3(i, j); % temp5 = z^2Etob(i, j) = sima(i) * (3 * temp5 - temp5^3) * temp4(i , j);endend% 计算E对c、q的偏导数utoU = zeros(1, n);for i = 1 : 1 : nutoU(i) = (y(i) - u) / temp2; % temp2 = sigama(U)end[Utoc, Utoq] = Utocq(g, x, c, q, m, n, p);Etoc = zeros(m, n);Etoq = zeros(m, n);for i = 1 : 1 : mfor j = 1 : 1 : ntemp6 = temp1 * utoU(j);Etoc(i, j) = temp6 * Utoc(i, j);Etoq(i, j) = temp6 * Utoq(i, j);endend% 对参数修正nw = w - rate * Etow + mom * (w - pw);na = a - rate * Etoa + mom * (a - pa);nb = b - rate * Etob + mom * (b - pb);nc = c - rate * Etoc;nq = q - rate * Etoq;% 修改参数t-1,tpw = w; w = nw;pa = a; a = na;pb = b; b = nb;c = nc;q = nq;end
end
toc % 结束计时,并显示时间
figure(1)
% 图形显示统计信息
k = 1 : 1 : num_yangben;
ttu = tu(epoch, :);
plot(k, result, '-', k, ttu, '-r')
legend('样本集结果', '样本集预测值')
title('训练结果');
xlabel('样本');
ylabel('优先级');
%%============================================================'
%%测试
%%===========================================================
for loop2 = 1 : 1 : num_test% 初始化中间数据x = zeros(1, m);g = zeros(m, n);% 计算第三层节点的输出,同时记录第三层节点的选择信息for i = 1 : 1 : n[min, which] = fuzzy(g, m, i);U(i) = min;p(i) = which;end% 计算第四层节点的输出for i = 1 : 1 : nfor j = 1 : 1 : mW(i) = W(i) + wavelet(x(j), a(i, j), b(i, j));endendy = w .* W;% 计算最终的输出result_test(loop2) = defuzz(U, y, n);
end
figure(2)
% 图形显示测试信息
k = 1 : 1 : num_test;
plot(k, u_test(:,6), 'g',k, result_test, 'r')
legend('测试集结果', '测试集预测值')
title('测试结果');
xlabel('样本');
ylabel('优先级');

三、运行结果


四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]胡立伟,凌浩晗,杨锦青,赵雪亭,尹宇,田海龙.基于模糊小波神经网络的营运客车运行风险评估模型研究[J].安全与环境学报. 2020,20(03)

【预测模型】基于matlab模糊小波神经网络目标威胁评估【含Matlab源码 1621期】相关推荐

  1. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  2. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  3. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  4. 【Matlab车牌识别】停车计费系统【含GUI源码 735期】

    一.代码运行视频(哔哩哔哩) [Matlab车牌识别]停车计费系统[含GUI源码 735期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MATLA ...

  5. 【Matlab水果识别】自助水果超市【含GUI源码 594期】

    一.代码运行视频(哔哩哔哩) [Matlab水果识别]自助水果超市[含GUI源码 594期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]倪云峰,叶健,樊娇娇 ...

  6. 【单目标优化求解】基于matlab黑猩猩算法求解单目标问题【含Matlab源码 1413期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[单目标优化求解]基于matlab黑猩猩算法求解单目标问题[含Matlab源码 1413期] 点击上面蓝色字体,直接付费下载,即可. 获取代 ...

  7. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  8. 【Matlab树叶分类】BP神经网络植物叶片分类【含GUI源码 916期】

    一.代码运行视频(哔哩哔哩) [Matlab树叶分类]BP神经网络植物叶片分类[含GUI源码 916期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  9. 【Matlab语音处理】汉宁窗FIR陷波滤波器语音信号加噪去噪【含GUI源码 1711期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]汉宁窗FIR陷波滤波器语音信号加噪去噪[含GUI源码 1711期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  10. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

最新文章

  1. ZooKeeper的基本原理
  2. Fortinet网络接入及安全方案配置步骤
  3. No module named ‘win32gui’ 以及 No module named ‘win32console’解决办法
  4. Mark一下,滑动门插件
  5. 类的成员包含 java_Java 面向对象(十五)类的成员 之 内部类
  6. 多线程put后可能导致get死循环
  7. html旋转代码_用CSS实现一个抽奖转盘(附详细代码+思路)
  8. PCL:Ubuntu下安装配置PCL
  9. python接口测试框架django_开源~自研接口测试平台 Django2.0+Vue
  10. 刚刚,字节跳动发布了1295个Java岗,平均薪资40K!
  11. linux安装redis插件,Linux平台安装redis及redis扩展的方法
  12. 输出一串小于100的随机数(rand())
  13. 从零开始使用Nadam进行梯度下降优化
  14. 二元隐函数求二阶偏导_二元隐函数的二阶偏导数的计算方法
  15. React从零到一Demo演练(上)
  16. 操作MySQL出错提示“BLOB/TEXT column used in key specification without a key length”解决办法
  17. layui之 数据表格动态cols(字段)动态变化,实现自定义表头
  18. 解决win10每次重启后桌面图标排列混乱的问题。
  19. ubuntu安装企业微信
  20. c语言书面作业3,C语言程序设计

热门文章

  1. 端口冲突,可爱的8080
  2. 富文本编辑器使用案例
  3. Oracle 中列出当前年所有日期和当前月所有日期
  4. java中session对象及其常用方法
  5. 数据库系统异常排查之DMV(转)
  6. 设置table的td宽度,不随文字变宽
  7. 20190911每日一句
  8. 190614每日一句
  9. 传智播客Java 二维数组
  10. 每个初学者都应该搞懂的问题