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

模糊小波神经网络的参数在网络训练的过程需要进行自动更新和调整,这里使用梯度下降法对网络参数进行更新参数 c、t、d、w 的操作,为了获得良好的预测效果,最终会选择这些参数的最优值作为预测部份的参数值。
2 部分代码
%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);
%
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);
U = zeros(1, n);
p = zeros(1, n);
W = zeros(1, n);
%y = zeros(1, n);
% 给输入节点赋值
for i = 1 : 1 : d
x(i) = u_test(loop2,i);
end
%for i = 1 : 1 : d
% x(m + 1 - i) = result(loop2 - i);
%end
% 计算第二层节点的输出值
for i = 1 : 1 : m
for j = 1 : 1 : n
g(i, j) = relation(x(i), c(i, j), q(i, j));
end
end
% 计算第三层节点的输出,同时记录第三层节点的选择信息
for i = 1 : 1 : n
[min, which] = fuzzy(g, m, i);
U(i) = min;
p(i) = which;
end
% 计算第四层节点的输出
for i = 1 : 1 : n
for j = 1 : 1 : m
W(i) = W(i) + wavelet(x(j), a(i, j), b(i, j));
end
end
y = 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('优先级');
3 仿真结果


4 参考文献
[1]陈侠, & 刘子龙. (2018). 基于模糊小波神经网络的空中目标威胁评估. 战术导弹技术(3), 7.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
