【预测模型】模糊小波神经网络目标威胁评估【含Matlab源码 1621期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

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

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 : epoch
for 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 : d
x(i) = data(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;
% 计算最终的输出
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 : n
        Etow(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 : n
        for j = 1 : 1 : m
            temp3(i, j) = varz2(x(j), a(i, j), b(i, j)); % temp3= z^2
            temp4(i, j) = exp(-temp3(i, j)/2) / sqrt(abs(a(i, j))^3); % temp4 = ?
        end
    end
  
    % 计算E对b的偏导数
    Etob = zeros(n, m);
    for i = 1 : 1 : n
        for j = 1 : 1 : m
            temp5 = temp3(i, j); % temp5 = z^2
            Etob(i, j) = sima(i) * (3 * temp5 - temp5^3) * temp4(i , j);
        end
    end
    % 计算E对c、q的偏导数
    utoU = zeros(1, n);
    for i = 1 : 1 : n
        utoU(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 : m
        for j = 1 : 1 : n
            temp6 = temp1 * utoU(j);
            Etoc(i, j) = temp6 * Utoc(i, j);
            Etoq(i, j) = temp6 * Utoq(i, j);
        end
    end
    % 对参数修正
    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,t
    pw = 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 : 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(‘优先级’);

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]胡立伟,凌浩晗,杨锦青,赵雪亭,尹宇,田海龙.基于模糊小波神经网络的营运客车运行风险评估模型研究[J].安全与环境学报. 2020,20(03)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值