日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于神经网络的控制器设计与仿真

發(fā)布時(shí)間:2025/4/5 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于神经网络的控制器设计与仿真 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

???? ???這個(gè)部分,主要是通過給定模型的輸入和輸出,然后通過網(wǎng)絡(luò)進(jìn)行訓(xùn)練,得到神經(jīng)網(wǎng)絡(luò)的辨識參數(shù)。

??????? 對于網(wǎng)絡(luò)辨識部分,其基本構(gòu)架如下所示:

??????? 上述的辨識結(jié)構(gòu),通過控制對象的輸入和輸出的延遲分別進(jìn)入F網(wǎng)絡(luò)和G網(wǎng)絡(luò),然后通過網(wǎng)絡(luò)輸出和實(shí)際輸出的誤差對網(wǎng)絡(luò)F和網(wǎng)絡(luò)G進(jìn)行在線學(xué)習(xí)。

??????? 具體理論論文講的比較詳細(xì)了,這里不再重復(fù),仿真效果如下所示:

?部分核心程序:

clc;
clear all;
close all;
warning off;
addpath 'func\'
pack;


Num_In ? ? = 6;
Num_Hidden = 12;
Num_Out ? ?= 1; ??

load func\result3.mat

[In,Out] = func_data(y3,y_out3);

parameter;

while Error>Err_goal & Iter < Max_iter
? ? ? u_delay1 = 0;
? ? ? u_delay2 = 0;
? ? ? u_delay3 = 0;
? ? ? u_delay4 = 0;
? ? ? y_delay1 = 0;
? ? ? y_delay2 = 0;
? ? ? y_delay3 = 0; ??
? ? ? y_delay4 = 0;
? ? ? Err_tmp ?= 0;
? ? ? for k=1:All_Length
? ? ? ? ??
? ? ? ? ??
? ? ? ? ? Data_Delays = [y_delay1;
? ? ? ? ? ? ? ? ? ? ? ? ?y_delay2;
? ? ? ? ? ? ? ? ? ? ? ? ?y_delay3;
? ? ? ? ? ? ? ? ? ? ? ? ?u_delay2;
? ? ? ? ? ? ? ? ? ? ? ? ?u_delay3;
? ? ? ? ? ? ? ? ? ? ? ? ?u_delay4];
? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? %隱層求和?
? ? ? ? ? [Y_hidden(k),Hidden1G,Hidden2G,Y_hiddenG(k),Hidden1F,Hidden2F,Y_hiddenF(k)] = func_Hiddern(Data_Delays,u_delay1,Num_Hidden,G_wight_In,G_wight_Inb,G_wight_Out,G_wight_Outb,F_wight_In,F_wight_Inb,F_wight_Out,F_wight_Outb);
? ? ? ? ??
? ? ? ? ? Err_tmp ? ? = Out(k)-Y_hidden(k);

? ? ? ? ? %F和G網(wǎng)絡(luò)?
? ? ? ? ? %G神經(jīng)網(wǎng)絡(luò)計(jì)算
? ? ? ? ? [dg_weight_in,dg_bweight_in,dg_weight_out,dg_bweight_out] = func_G_net(Err_tmp,Out(k),In(k),Y_hidden(k),G_wight_Out,Hidden2G,Data_Delays,Y_hiddenG(k),Hidden1G,Num_Hidden,Num_In);?
? ? ? ? ? %F神經(jīng)網(wǎng)絡(luò)計(jì)算
? ? ? ? ? [df_weight_in,df_bweight_in,df_weight_out,df_bweight_out] = func_F_net(Err_tmp,Out(k),In(k),Y_hidden(k),F_wight_Out,Hidden2F,Data_Delays,Y_hiddenG(k),Hidden1F,Num_Hidden,Num_In);

? ? ? ? ? %G網(wǎng)絡(luò)權(quán)值更新
? ? ? ? ? [G_wight_In,G_wight_Out,G_wight_Inb,G_wight_Outb]=func_G_W_updata(Learn_Rate,alpha,...
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? G_wight_In1,G_wight_Out1,G_wight_Inb1,F_wight_Outb1,...
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dg_weight_in,dg_weight_out,dg_bweight_in,dg_bweight_out,...
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? G_wight_Outb1,...
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? G_wight_In2,G_wight_Out2,G_wight_Inb2,G_wight_Outb2);
? ? ? ? ? %F網(wǎng)絡(luò)權(quán)值更新
? ? ? ? ? [F_wight_In,F_wight_Out,F_wight_Inb,F_wight_Outb]=func_F_W_updata(Learn_Rate,alpha,...
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?G_wight_In1,F_wight_Out1,F_wight_Inb1,F_wight_Outb1,...
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?df_weight_in,df_weight_out,df_bweight_in,df_bweight_out,...
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?G_wight_In2,F_wight_Out2,F_wight_Inb2,F_wight_Outb2);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? %延遲
? ? ? ? ? u_delay4 = u_delay3;
? ? ? ? ? u_delay3 = u_delay2;
? ? ? ? ? u_delay2 = u_delay1;
? ? ? ? ? u_delay1 = In(k);?
? ? ? ??
? ? ? ? ? y_delay4 = y_delay3;
? ? ? ? ? y_delay3 = y_delay2;
? ? ? ? ? y_delay2 = y_delay1;
? ? ? ? ? y_delay1 = Out(k);?

? ? ? ? ? G_wight_In2 ? = G_wight_In1;
? ? ? ? ? G_wight_In1 ? = F_wight_In;
? ? ? ? ? F_wight_Out2 ?= F_wight_Out1;
? ? ? ? ? F_wight_Out1 ?= F_wight_Out;
? ? ? ? ? F_wight_Inb2 ?= F_wight_Inb1;
? ? ? ? ? F_wight_Inb1 ?= F_wight_Inb;
? ? ? ? ? F_wight_Outb2 = F_wight_Outb1;
? ? ? ? ? F_wight_Outb1 = F_wight_Outb;

? ? ? ? ? G_wight_In2 ? = G_wight_In1;
? ? ? ? ? G_wight_In1 ? = G_wight_In;
? ? ? ? ? G_wight_Out2 ?= G_wight_Out1;
? ? ? ? ? G_wight_Out1 ?= G_wight_Out;
? ? ? ? ? G_wight_Inb2 ?= G_wight_Inb1;
? ? ? ? ? G_wight_Inb1 ?= G_wight_Inb;
? ? ? ? ? G_wight_Outb2 = G_wight_Outb1;
? ? ? ? ? G_wight_Outb1 = G_wight_Outb;
? ? ? ? ??
? ? ? end

? ? ? Error ? ? ? ?= sum((Out-Y_hidden).^2)/k;
? ? ? Error2(Iter) = Error;
? ? ? %如果當(dāng)前訓(xùn)練誤差反而增加,則放棄此次訓(xùn)練結(jié)果,重新訓(xùn)練
? ? ? if (Iter > 1) & (Error2(Iter) > 1.2*Error2(Iter-1))
? ? ? ? ?Iter ? ? ?= Iter;
? ? ? ? ?Break_cnt = Break_cnt + 1;
? ? ? ? ?if Break_cnt > 20
? ? ? ? ? ? Error2(Iter) = [];
? ? ? ? ? ? break;
? ? ? ? ?end
? ? ? else
? ? ? ? ?Break_cnt = 0;?
? ? ? ? ?Iter = Iter+1;?
? ? ? ? ?fprintf('迭代次數(shù):%d ?',Iter);
? ? ? ? ?fprintf('誤差:%f',Error);
? ? ? ? ?fprintf('\n\n');
? ? ? end
end


figure;?
subplot(121);
plot(Times(1:1000),Out(1:1000),'r'); ?
hold on;
plot(Times(1:1000),Y_hidden(1:1000),'b--'); ?
hold on;
xlabel('Times(s)');
ylabel('Out');?
legend('系統(tǒng)輸出','網(wǎng)絡(luò)輸出');

subplot(122);?
semilogy(1:length(Error2),Error2,'r-o');?
xlabel('Times(s)');
ylabel('Error');
grid on;

F_wight_In0 ? = F_wight_In;
F_wight_Out0 ?= F_wight_Out;?
G_wight_In0 ? = G_wight_In;
G_wight_Out0 ?= G_wight_Out;
F_wight_Inb0 ?= F_wight_Inb;
F_wight_Outb0 = F_wight_Outb;?
G_wight_Inb0 ?= G_wight_Inb;
G_wight_Outb0 = G_wight_Outb;

save NN_reg_signal3.mat F_wight_In0 F_wight_Out0 G_wight_In0 G_wight_Out0 ?F_wight_Inb0 F_wight_Outb0 G_wight_Inb0 G_wight_Outb0

A08-16

?

總結(jié)

以上是生活随笔為你收集整理的基于神经网络的控制器设计与仿真的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。