【預測模型】基于模糊小波神經(jīng)網(wǎng)絡(luò)目標威脅評估含matlab源碼
1 簡介
1 模糊小波神經(jīng)網(wǎng)絡(luò)原理為了加強網(wǎng)絡(luò)的自學習能力以及快速的適應(yīng)戰(zhàn)場環(huán)境變化,實現(xiàn)對目標威脅進行精確評估,將小波神經(jīng)網(wǎng)絡(luò)嵌入模糊模型的后件部分形成模糊小波神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)結(jié)構(gòu)如圖 2所示:前三層已在之前提到,第四層改為小波函數(shù)層,選擇 Gaussian 函數(shù)的一階偏導數(shù) φ(x) = x ·exp(?0.5x2) 作為母小波函數(shù),該函數(shù)具有較好的擬合性能,根據(jù)所選母小波,經(jīng)過伸縮平移變換放入第二層的神經(jīng)元中作為激活函數(shù),可以表示為

模糊小波神經(jīng)網(wǎng)絡(luò)的參數(shù)在網(wǎng)絡(luò)訓練的過程需要進行自動更新和調(diào)整,這里使用梯度下降法對網(wǎng)絡(luò)參數(shù)進行更新參數(shù) c、t、d、w 的操作,為了獲得良好的預測效果,最終會選擇這些參數(shù)的最優(yōu)值作為預測部份的參數(shù)值。
2 部分代碼
%FWNN 腳本文件,作為主程序使用
% 清理工作
close all
clear
% 關(guān)鍵變量
d = 5; % 用于輸入的寬度
m = d; % 輸入信號的個數(shù)
n = 5; % 關(guān)系函數(shù)的個數(shù),模糊判斷的個數(shù),小波函數(shù)的個數(shù)
epoch = 2000; % 迭代次數(shù)
num_yangben = 49; % 數(shù)據(jù)個數(shù)
num_test = 12;
rate = 0.08; % 學習速率
mom = 0.5; % 沖量
% 產(chǎn)生試驗數(shù)據(jù)
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);
% 隨機初始化各個參數(shù)于(0,1)
c = rand(m, n);
q = rand(m, n); % 注意:不能為零
a = rand(n, m);
b = rand(n, m);
w = rand(1, n);
% t-1迭代的參數(shù)值
pc = c;
pq = q;
pa = a;
pb = b;
pw = w;
% t+1迭代的參數(shù)值
nc = zeros(m, n);
nq = zeros(m, n);
na = zeros(n, m);
nb = zeros(n, m);
nw = zeros(1, n);
% 用于畫圖的數(shù)據(jù)
tu = zeros(epoch, num_yangben);
E = zeros(epoch, num_yangben);
%
end
toc % 結(jié)束計時,并顯示時間
figure(1)
% 圖形顯示統(tǒng)計信息
k = 1 : 1 : num_yangben;
ttu = tu(epoch, :);
plot(k, result, '-', k, ttu, '-r')
legend('樣本集結(jié)果', '樣本集預測值')
title('訓練結(jié)果');
xlabel('樣本');
ylabel('優(yōu)先級');
%%============================================================'
%%測試
%%===========================================================
for loop2 = 1 : 1 : num_test
? ? ? ?% 初始化中間數(shù)據(jù)
? ? ? ?x = zeros(1, m);
? ? ? ?g = zeros(m, n);
? ? ? ?U = zeros(1, n);
? ? ? ?p = zeros(1, n);
? ? ? ?W = zeros(1, n);
? ? ? ?%y = zeros(1, n);
? ? ? ?% 給輸入節(jié)點賦值
? ? ? ?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
? ? ? ?% 計算第二層節(jié)點的輸出值
? ? ? ?for i = 1 : 1 : m
? ? ? ? ? ?for j = 1 : 1 : n
? ? ? ? ? ? ? ?g(i, j) = relation(x(i), c(i, j), q(i, j));
? ? ? ? ? ?end
? ? ? ?end
? ? ? ?% 計算第三層節(jié)點的輸出,同時記錄第三層節(jié)點的選擇信息
? ? ? ?for i = 1 : 1 : n
? ? ? ? ? ?[min, which] = fuzzy(g, m, i);
? ? ? ? ? ?U(i) = min;
? ? ? ? ? ?p(i) = which;
? ? ? ?end
? ? ? ?% 計算第四層節(jié)點的輸出
? ? ? ?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('測試集結(jié)果', '測試集預測值')
title('測試結(jié)果');
xlabel('樣本');
ylabel('優(yōu)先級');
3 仿真結(jié)果


4 參考文獻
[1]陳俠, & 劉子龍. (2018). 基于模糊小波神經(jīng)網(wǎng)絡(luò)的空中目標威脅評估. 戰(zhàn)術(shù)導彈技術(shù)(3), 7.
博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預測、信號處理、元胞自動機、圖像處理、路徑規(guī)劃、無人機等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問題可私信交流。
部分理論引用網(wǎng)絡(luò)文獻,若有侵權(quán)聯(lián)系博主刪除。
