国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【模糊神經(jīng)網(wǎng)絡(luò)】基于simulink的模糊神經(jīng)網(wǎng)絡(luò)控制器設(shè)計

這篇具有很好參考價值的文章主要介紹了【模糊神經(jīng)網(wǎng)絡(luò)】基于simulink的模糊神經(jīng)網(wǎng)絡(luò)控制器設(shè)計。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.軟件版本

MATLAB2010b

2.模糊神經(jīng)網(wǎng)絡(luò)理論概述

? ? ? ? 由于模糊控制是建立在專家經(jīng)驗的基礎(chǔ)之上的,但這有很大的局限性,而人工神經(jīng)網(wǎng)絡(luò)可以充分逼近任意復(fù)雜的時變非線性系統(tǒng),采用并行分布處理方法,可學習和自適應(yīng)不確定系統(tǒng)。利用神經(jīng)網(wǎng)絡(luò)可以幫助模糊控制器進行學習,模糊邏輯可以幫助神經(jīng)網(wǎng)絡(luò)初始化及加快學習過程。通常神經(jīng)網(wǎng)絡(luò)的基本構(gòu)架如下所示:

【模糊神經(jīng)網(wǎng)絡(luò)】基于simulink的模糊神經(jīng)網(wǎng)絡(luò)控制器設(shè)計

? ? ? 整個神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)為五層,其中第一層為“輸入層“,第二層為“模糊化層”,第三層為“模糊推理層”,第四層為“歸一化層”,第五層為“解模糊輸出層”。?

? ? ? 第一層為輸入層,其主要包括兩個節(jié)點,所以第一層神經(jīng)網(wǎng)絡(luò)的輸入輸出可以用如下的式子表示:

【模糊神經(jīng)網(wǎng)絡(luò)】基于simulink的模糊神經(jīng)網(wǎng)絡(luò)控制器設(shè)計

【模糊神經(jīng)網(wǎng)絡(luò)】基于simulink的模糊神經(jīng)網(wǎng)絡(luò)控制器設(shè)計

? ? ? ??第二層為輸入變量的語言變量值,通常是模糊集中的n個變量,它的作用是計算各輸入分量屬于各語言變量值模糊集合的隸屬度。用來確定輸入在不同的模糊語言值對應(yīng)的隸屬度,以便進行模糊推理,如果隸屬函數(shù)為高斯函數(shù),那么其表達式為:

【模糊神經(jīng)網(wǎng)絡(luò)】基于simulink的模糊神經(jīng)網(wǎng)絡(luò)控制器設(shè)計

其中變量的具體含義和第一層節(jié)點的變量含義相同。

第三層是比較關(guān)鍵的一層,即模糊推理層,這一層的每個節(jié)點代表一條模糊規(guī)則,其每個節(jié)點的輸出值表示每條模糊規(guī)則的激勵強度。該節(jié)點的表達式可用如下的式子表示:

?【模糊神經(jīng)網(wǎng)絡(luò)】基于simulink的模糊神經(jīng)網(wǎng)絡(luò)控制器設(shè)計

第四層為歸一化層,其輸出是采用了Madmdani模糊規(guī)則,該層的表達式為:?

【模糊神經(jīng)網(wǎng)絡(luò)】基于simulink的模糊神經(jīng)網(wǎng)絡(luò)控制器設(shè)計

第五層是模糊神經(jīng)網(wǎng)絡(luò)的解模糊層,即模糊神經(jīng)網(wǎng)絡(luò)的清晰化.?

3.算法的simulink建模

? ? ? ? 為了對比加入FNN控制器后的性能變化,我們同時要對有FNN控制器的模型以及沒有FNN控制器的模型進行仿真,仿真結(jié)果如下所示:

? ? ? ? 非FNN控制器的結(jié)構(gòu):

【模糊神經(jīng)網(wǎng)絡(luò)】基于simulink的模糊神經(jīng)網(wǎng)絡(luò)控制器設(shè)計

其仿真結(jié)果如下所示:

【模糊神經(jīng)網(wǎng)絡(luò)】基于simulink的模糊神經(jīng)網(wǎng)絡(luò)控制器設(shè)計

FNN控制器的結(jié)構(gòu):

【模糊神經(jīng)網(wǎng)絡(luò)】基于simulink的模糊神經(jīng)網(wǎng)絡(luò)控制器設(shè)計

??? 其仿真結(jié)果如下所示:

【模糊神經(jīng)網(wǎng)絡(luò)】基于simulink的模糊神經(jīng)網(wǎng)絡(luò)控制器設(shè)計

前面的是訓(xùn)練階段,后面的為實際的輸出,為了能夠體現(xiàn)最后的性能,我們將兩個模型的最后輸出進行對比,得到的對比結(jié)果所示:

【模糊神經(jīng)網(wǎng)絡(luò)】基于simulink的模糊神經(jīng)網(wǎng)絡(luò)控制器設(shè)計

?? 從上面的仿真結(jié)果可知,PID的輸出值范圍降低了很多,性能得到了進一步提升。

調(diào)速TS模型,該模型最后的仿真結(jié)果如下所示:

【模糊神經(jīng)網(wǎng)絡(luò)】基于simulink的模糊神經(jīng)網(wǎng)絡(luò)控制器設(shè)計

??? 從上面的仿真結(jié)果可知,采用FNN控制器后,其PID的輸出在一個非常小的范圍之內(nèi)進行晃動,整個系統(tǒng)的性能提高了80%。這說明采用模糊神經(jīng)網(wǎng)絡(luò)后的系統(tǒng)具有更高的性能和穩(wěn)定性。

4.部分程序

Mamdani模糊控制器的S函數(shù)

function [out,Xt,str,ts] = Sfunc_fnn_Mamdani(t,Xt,u,flag,Learn_rate,coff,lamda,Number_signal_in,Number_Fuzzy_rules,x0,T_samples)

%輸入定義

% t,Xt,u,flag        :S函數(shù)固定的幾個輸入腳

% Learn_rate         :學習度
% coff               :用于神經(jīng)網(wǎng)絡(luò)第一層的參數(shù)調(diào)整
% lamda              :神經(jīng)網(wǎng)絡(luò)的學習遺忘因子
% Number_signal_in   :輸入的信號的個數(shù) 
% Number_Fuzzy_rules :模糊控制規(guī)則數(shù)
% T_samples          :模塊采樣率

%輸入信號的個數(shù) 
Number_inport = Number_signal_in;
%整個系統(tǒng)的輸入x,誤差輸入e,以及訓(xùn)練指令的數(shù)組的長度
ninps         = Number_inport+1+1;   
NumRules      = Number_Fuzzy_rules;
Num_out1      = 3*Number_signal_in*Number_Fuzzy_rules  + ((Number_signal_in+1)*NumRules)^2 + (Number_signal_in+1)*NumRules;
Num_out2      = 3*Number_signal_in*Number_Fuzzy_rules + (Number_signal_in+1)*NumRules;

%S函數(shù)第一步,參數(shù)的初始化
if flag == 0
out = [0,Num_out1+Num_out2,1+Num_out1+Num_out2,ninps,0,1,1];  
str = [];                                                         
ts  = T_samples;                                                         
Xt  = x0;



%S函數(shù)的第二步,狀態(tài)的計算
elseif flag == 2
%外部模塊的輸出三個參數(shù)變量輸入x,誤差輸入e,以及訓(xùn)練指令的數(shù)組的長度
x        = u(1:Number_inport);%輸入x
e        = u(Number_inport+1:Number_inport+1);%誤差輸入e
learning = u(Number_inport+1+1);%訓(xùn)練指令的數(shù)組的長度

%1的時候為正常工作狀態(tài)
if learning == 1 
Feedfor_phase2;  

%下面定義在正常的工作狀態(tài)中,各個網(wǎng)絡(luò)層的工作
%層1:
In1     = x*ones(1,Number_Fuzzy_rules);
Out1    = 1./(1 + (abs((In1-mean1)./sigma1)).^(2*b1));
%層2:
precond = Out1'; 
Out2    = prod(Out1)';
S_2     = sum(Out2);
%層3:
if S_2~=0
   Out3 = Out2'./S_2;
else
   Out3 = zeros(1,NumRules);
end 
%層4:
Aux1 = [x; 1]*Out3;
%訓(xùn)練數(shù)據(jù)
a = reshape(Aux1,(Number_signal_in+1)*NumRules,1);  
 
%參數(shù)學習
P           = (1./lamda).*(P - P*a*a'*P./(lamda+a'*P*a));
ThetaL4     = ThetaL4 + P*a.*e;
ThetaL4_mat = reshape(ThetaL4,Number_signal_in+1,NumRules);

%錯誤反饋
e3          = [x' 1]*ThetaL4_mat.*e;
denom       = S_2*S_2;

%下面自適應(yīng)產(chǎn)生10個規(guī)則的模糊控制器
Theta32     = zeros(NumRules,NumRules);
if denom~=0
   for k1=1:NumRules
        for k2=1:NumRules
             if k1==k2 
                Theta32(k1,k2) = ((S_2-Out2(k2))./denom).*e3(k2);
             else
                Theta32(k1,k2) = -(Out2(k2)./denom).*e3(k2);
             end
        end
   end
end

e2 = sum(Theta32,2);

%層一
Q = zeros(Number_signal_in,Number_Fuzzy_rules,NumRules);  
for i=1:Number_signal_in
   for j=1:Number_Fuzzy_rules
     for k=1:NumRules  
      	if Out1(i,j)== precond(k,i) && Out1(i,j)~=0
      			Q(i,j,k) = (Out2(k)./Out1(i,j)).*e2(k);
            else
        		Q(i,j,k) = 0;
        end
     end 
   end 
 end

Theta21 = sum(Q,3);
 
%自適應(yīng)參數(shù)調(diào)整 
if isempty(find(In1==mean1))
    
deltamean1   =  Theta21.*(2*b1./(In1-mean1)).*Out1.*(1-Out1);
deltab1      =  Theta21.*(-2).*log(abs((In1-mean1)./sigma1)).*Out1.*(1-Out1);
deltasigma1  =  Theta21.*(2*b1./sigma1).*Out1.*(1-Out1);                
dmean1       = Learn_rate*deltamean1 + coff*dmean1;
mean1        = mean1 + dmean1;
dsigma1      = Learn_rate*deltasigma1 + coff*dsigma1;
sigma1       = sigma1 + dsigma1;
db1          = Learn_rate*deltab1 + coff*db1;
b1           = b1 + db1;
               
for i=1:Number_Fuzzy_rules-1
    if ~isempty(find(mean1(:,i)>mean1(:,i+1)))
        for i=1:Number_signal_in
            [mean1(i,:) index1] = sort(mean1(i,:));
            sigma1(i,:)         = sigma1(i,index1);
            b1(i,:)             = b1(i,index1);
        end
    end
end

end

%完成參數(shù)學習過程
%并保存參數(shù)學習結(jié)果
Xt = [reshape(mean1,Number_signal_in*Number_Fuzzy_rules,1);reshape(sigma1,Number_signal_in*Number_Fuzzy_rules,1);reshape(b1,Number_signal_in*Number_Fuzzy_rules,1);reshape(P,((Number_signal_in+1)*NumRules)^2,1);ThetaL4;reshape(dmean1,Number_signal_in*Number_Fuzzy_rules,1);reshape(dsigma1,Number_signal_in*Number_Fuzzy_rules,1);reshape(db1,Number_signal_in*Number_Fuzzy_rules,1);dThetaL4;];
end

out=Xt;

%S函數(shù)的第三步,定義各個網(wǎng)絡(luò)層的數(shù)據(jù)轉(zhuǎn)換
elseif flag == 3
Feedfor_phase;
%定義整個模糊神經(jīng)網(wǎng)絡(luò)的各個層的數(shù)據(jù)狀態(tài)
%第一層
x       = u(1:Number_inport);
In1     = x*ones(1,Number_Fuzzy_rules);%第一層的輸入
Out1    = 1./(1 + (abs((In1-mean1)./sigma1)).^(2*b1));%第一層的輸出,這里,這個神經(jīng)網(wǎng)絡(luò)的輸入輸出函數(shù)可以修改
%第一層
precond = Out1'; 
Out2    = prod(Out1)';
S_2     = sum(Out2);%計算和
%第三層
if S_2~=0
   Out3 = Out2'./S_2;
else
   Out3 = zeros(1,NumRules);%為了在模糊控制的時候方便系統(tǒng)的運算,需要對系統(tǒng)進行歸一化處理
end
%第四層
Aux1    = [x; 1]*Out3;
a       = reshape(Aux1,(Number_signal_in+1)*NumRules,1);%控制輸出
%第五層,最后結(jié)果輸出
outact  = a'*ThetaL4;
%最后的出處結(jié)果
out     = [outact;Xt];             
else
out     = [];
end

TS模糊控制器的S函數(shù)

function [out,Xt,str,ts] = Sfunc_fnn_TS(t,Xt,u,flag,Learn_rate,coffa,lamda,r,vigilance,coffb,arate,Number_signal_in,Number_Fuzzy_rules,x0,Xmins,Data_range,T_samples)


%輸入定義

% t,Xt,u,flag        :S函數(shù)固定的幾個輸入腳

% Learn_rate         :學習度
% coffb               :用于神經(jīng)網(wǎng)絡(luò)第一層的參數(shù)調(diào)整
% lamda              :神經(jīng)網(wǎng)絡(luò)的學習遺忘因子
% Number_signal_in   :輸入的信號的個數(shù) 
% Number_Fuzzy_rules :模糊控制規(guī)則數(shù)
% T_samples          :模塊采樣率 
    
Data_in_numbers       = Number_signal_in;
Data_out_numbers      = 1;
%整個系統(tǒng)的輸入x,誤差輸入e,以及訓(xùn)練指令的數(shù)組的長度
ninps                 = Data_in_numbers+Data_out_numbers+1;   
Number_Fuzzy_rules2   = Number_Fuzzy_rules;
Num_out1              = 2*Number_signal_in*Number_Fuzzy_rules + ((Number_signal_in+1)*Number_Fuzzy_rules2)^2 + (Number_signal_in+1)*Number_Fuzzy_rules2 + 1;
Num_out2              = 2*Number_signal_in*Number_Fuzzy_rules +  (Number_signal_in+1)*Number_Fuzzy_rules2;

%S函數(shù)第一步,參數(shù)的初始化
if flag == 0
out = [0,Num_out1+Num_out2,1+Num_out1+Num_out2,ninps,0,1,1];  
str = [];                                                        
ts  = T_samples;                                                 
Xt  = x0;


%S函數(shù)的第二步,狀態(tài)的計算
elseif flag == 2
x1       = (u(1:Data_in_numbers) - Xmins)./Data_range;
x        = [ x1; ones(Data_in_numbers,1) -  x1]; 
e        = u(Data_in_numbers+1:Data_in_numbers+Data_out_numbers);
learning = u(Data_in_numbers+Data_out_numbers+1);

%1的時候為正常工作狀態(tài)
if learning == 1 
   
NumRules   = Xt(1);
NumInTerms = NumRules;
Feedfor_phase;  
%最佳參數(shù)搜索
New_nodess = 0;
reass      = 0;
Rst_nodes  = [];                   
rdy_nodes  = [];

while reass == 0 && NumInTerms<Number_Fuzzy_rules 
      %搜索最佳點
      N          = size(w_a,2);
      node_tmp   = x * ones(1,N);                                                                   
      A_AND_w    = min(node_tmp,w_a);  
      Sa         = sum(abs(A_AND_w)); 
      Ta         = Sa ./ (coffb + sum(abs(w_a)));  

      %節(jié)點歸零
      Ta(Rst_nodes) = zeros(1,length(Rst_nodes));
      Ta(rdy_nodes) = zeros(1,length(rdy_nodes));    
      [Tamax,J]     = max(Ta);  
      w_J           = w_a(:,J);              
      xa            = min(x,w_J);

      %最佳節(jié)點測試
      if sum(abs(xa))./Number_signal_in >= vigilance,
         reass    = 1;   
         w_a(:,J) = arate*xa + (1-arate)*w_a(:,J);

      elseif sum(abs(xa))/Number_signal_in < vigilance,
             reass = 0;     
             Rst_nodes = [Rst_nodes  J ];
      end  

      if  length(Rst_nodes)== N || length(rdy_nodes)== N
          w_a        = [w_a x];
          New_nodess = 1;    
          reass      = 0;   
      end

end;      
                          
%節(jié)點更新
u2          = w_a(1:Number_signal_in,:);
v2          = 1 - w_a(Number_signal_in+1:2*Number_signal_in,:);
NumInTerms  = size(u2,2);
NumRules    = NumInTerms;

if New_nodess == 1
    ThetaL5  = [ThetaL5; zeros(Number_signal_in+1,1)];
    dThetaL5 = [dThetaL5; zeros(Number_signal_in+1,1)];
    P        =  [  P                                                           zeros((Number_signal_in+1)*(NumRules-1),Number_signal_in+1);
                  zeros(Number_signal_in+1,(Number_signal_in+1)*(NumRules-1))  1e6*eye(Number_signal_in+1); ];
    du2      = [du2  zeros(Number_signal_in,1);];      
    dv2     = [dv2  zeros(Number_signal_in,1);];
end

 
%層2:
x1_tmp  = x1;
x1_tmp2 = x1_tmp*ones(1,NumInTerms);
Out2    = 1 - check(x1_tmp2-v2,r) - check(u2-x1_tmp2,r);
%層3: 
Out3    = prod(Out2);  
S_3     = sum(Out3);
%層4:
if S_3~=0
   Out4 = Out3/S_3;
else 
   Out4 = zeros(1,NumRules); 
end

Aux1    = [x1_tmp; 1]*Out4;
a       = reshape(Aux1,(Number_signal_in+1)*NumRules,1);

%層五
P           = (1./lamda).*(P - P*a*a'*P./(lamda+a'*P*a));
ThetaL5     = ThetaL5 + P*a.*e;
ThetaL5_tmp = reshape(ThetaL5,Number_signal_in+1,NumRules);

%錯誤反饋
%層4:
e4          = [x1_tmp' 1]*ThetaL5_tmp.*e;
denom       = S_3*S_3;
%層3:
Theta43 = zeros(NumRules,NumRules);
if denom~=0
    for k1=1:NumRules
        for k2=1:NumRules
            if k1==k2
                Theta43(k1,k2) = ((S_3-Out3(k2))./denom).*e4(k2);
            else
                Theta43(k1,k2) = -(Out3(k2)./denom).*e4(k2);
            end
        end
    end
end

e3 = sum(Theta43,2);

%層2
Q = zeros(Number_signal_in,NumInTerms,NumRules);  
for i=1:Number_signal_in
    for j=1:NumInTerms
        for k=1:NumRules  
            if j==k && Out2(i,j)~=0
      		     Q(i,j,k) = (Out3(k)./Out2(i,j)).*e3(k);
            else
        		 Q(i,j,k) = 0;
            end
         end 
   	 end 
 end

Thetass  = sum(Q,3);
Thetavv  = zeros(Number_signal_in,NumInTerms);
Thetauu  = zeros(Number_signal_in,NumInTerms);

for i=1:Number_signal_in
    for j=1:NumInTerms
       if ((Out2(i)-v2(i,j))*r>=0) && ((Out2(i)-v2(i,j))*r<=1)
          Thetavv(i,j) = r;
       end
       if ((u2(i,j)-Out2(i))*r>=0) && ((u2(i,j)-Out2(i))*r<=1)
          Thetauu(i,j) = -r;
       end
   end
end
  
%根據(jù)學習結(jié)果辨識參數(shù)計算
e3_tmp = (e3*ones(1,Number_signal_in))';
du2    = Learn_rate*Thetavv.*e3_tmp.*Thetass + coffa*du2;
dv2    = Learn_rate*Thetauu.*e3_tmp.*Thetass + coffa*dv2;
v2     = v2 + du2;
u2     = u2 + dv2;

 
if ~isempty(find(u2>v2))
   for i=1:Number_signal_in
     for j=1:NumInTerms
        if u2(i,j) > v2(i,j)
            temp = v2(i,j);
            v2(i,j) = u2(i,j);
            u2(i,j) = temp;
        end
     end
   end
end

if ~isempty(find(u2<0)) || ~isempty(find(v2>1))
   for i=1:Number_signal_in
      for j=1:NumInTerms
        if u2(i,j) < 0
           u2(i,j) = 0;
        end
        if v2(i,j) > 1
           v2(i,j) = 1;
        end
      end
   end
end

%WA由學習結(jié)果更新
w_a = [u2; 1-v2];

%上面的結(jié)果完成學習過程

Xt1 = [NumRules;reshape(w_a,2*Number_signal_in*NumInTerms,1);reshape(P,((Number_signal_in+1)*NumRules)^2,1); ThetaL5;reshape(du2,Number_signal_in*NumInTerms,1);reshape(dv2,Number_signal_in*NumInTerms,1);dThetaL5;];
ns1 = size(Xt1,1);
Xt  = [Xt1; zeros(Num_out1+Num_out2-ns1,1);];       
end 

out=Xt;




%S函數(shù)的第三步,定義各個網(wǎng)絡(luò)層的數(shù)據(jù)轉(zhuǎn)換
elseif flag == 3
NumRules   = Xt(1);
NumInTerms = NumRules;
Feedfor_phase;  
u2         = w_a(1:Number_signal_in,:);
v2         = 1 - w_a(Number_signal_in+1:2*Number_signal_in,:);

%層1輸出
x1      = (u(1:Data_in_numbers) - Xmins)./Data_range; 
%層2輸出
x1_tmp  = x1; 
x1_tmp2 = x1_tmp*ones(1,NumInTerms); 
Out2    = 1 - check(x1_tmp2-v2,r) - check(u2-x1_tmp2,r);
%層3輸出
Out3    = prod(Out2); 
S_3     = sum(Out3);
%層4輸出.
if S_3~=0
   Out4 = Out3/S_3;
else 
   Out4 = zeros(1,NumRules); 
end

%層5輸出
Aux1   = [x1_tmp; 1]*Out4;
a      = reshape(Aux1,(Number_signal_in+1)*NumRules,1);
outact = a'*ThetaL5;
out    = [outact;Xt];              
else
out    = [];
end

function y = check(s,r);

rows = size(s,1);
columns = size(s,2);
y = zeros(rows,columns);
for i=1:rows
   for j=1:columns
        if s(i,j).*r>1
            y(i,j) = 1;
        elseif 0 <= s(i,j).*r && s(i,j).*r <= 1
            y(i,j) = s(i,j).*r;
        elseif s(i,j).*r<0
            y(i,j) = 0;
        end
    end
end

return 


A05-04文章來源地址http://www.zghlxwxcb.cn/news/detail-404837.html

到了這里,關(guān)于【模糊神經(jīng)網(wǎng)絡(luò)】基于simulink的模糊神經(jīng)網(wǎng)絡(luò)控制器設(shè)計的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【一級倒立擺】基于simulink的一級倒立擺控制器系統(tǒng)仿真
  • 第三十四課.模糊神經(jīng)網(wǎng)絡(luò)

    第三十四課.模糊神經(jīng)網(wǎng)絡(luò)

    在本篇內(nèi)容中,我們將了解模糊神經(jīng)網(wǎng)絡(luò)(Fuzzy Neural Network),在此之前,先了解模糊理論?,F(xiàn)實世界總是充滿不確定性。因此,在建模系統(tǒng)的時候,我們需要考慮這種不確定性。我們之前其實已經(jīng)在概率論中接觸過這種不確定的建模形式。類似于概率論,Zadeh開發(fā)了一種不同

    2023年04月23日
    瀏覽(28)
  • 常規(guī)PID、模糊PID和神經(jīng)網(wǎng)絡(luò)PID

    常規(guī)PID、模糊PID和神經(jīng)網(wǎng)絡(luò)PID是三種常見的PID控制器變種,它們在控制算法和性能方面有所不同。 常規(guī)PID控制器是最常用的PID控制器,它根據(jù)系統(tǒng)的誤差、誤差變化率和誤差積分值計算控制器輸出,并使用比例、積分和微分系數(shù)來調(diào)整控制器的響應(yīng)速度和穩(wěn)定性。 模糊PID控

    2024年02月13日
    瀏覽(21)
  • 基于PID控制器的四旋翼無人機控制系統(tǒng)的simulink建模與仿真,并輸出虛擬現(xiàn)實動畫

    基于PID控制器的四旋翼無人機控制系統(tǒng)的simulink建模與仿真,并輸出虛擬現(xiàn)實動畫

    目錄 1.課題概述 2.系統(tǒng)仿真結(jié)果 3.核心程序與模型 4.系統(tǒng)原理簡介 4.1四旋翼無人機的動力學模型 4.2 PID控制器設(shè)計 4.3 姿態(tài)控制實現(xiàn) 4.4 VR虛擬現(xiàn)實動畫展示 5.完整工程文件 ? ? ? ?基于PID控制器的四旋翼無人機控制系統(tǒng)的simulink建模與仿真,并輸出vr虛擬現(xiàn)實動畫,輸出PID控制器

    2024年04月09日
    瀏覽(105)
  • 模糊神經(jīng)網(wǎng)絡(luò)(FNN)的實現(xiàn)(Python,附源碼及數(shù)據(jù)集)

    模糊神經(jīng)網(wǎng)絡(luò)(FNN)的實現(xiàn)(Python,附源碼及數(shù)據(jù)集)

    模糊神經(jīng)網(wǎng)絡(luò)(Fuzzy Neural Network,簡稱FNN)本質(zhì)上是一種將模糊理論與人工前向神經(jīng)網(wǎng)絡(luò)相結(jié)合的多層前向神經(jīng)網(wǎng)絡(luò),在處理信息時,該網(wǎng)絡(luò)能夠具有更大的處理范圍以及更快的信息處理速度,因此該網(wǎng)絡(luò)的自學習能力與映射也相對較高。與反向傳播神經(jīng)網(wǎng)絡(luò)(BPNN)相似,其

    2023年04月08日
    瀏覽(18)
  • 非線性質(zhì)量彈簧阻尼器的神經(jīng)網(wǎng)絡(luò)仿真研究(Matlab代碼&Simulink仿真實現(xiàn))

    非線性質(zhì)量彈簧阻尼器的神經(jīng)網(wǎng)絡(luò)仿真研究(Matlab代碼&Simulink仿真實現(xiàn))

    ? 目錄 ??1 概述 ??2 運行結(jié)果 ??3?參考文獻 ??4 Matlab代碼、Simulink仿真實現(xiàn) 非線性質(zhì)量彈簧阻尼器(Nonlinear Mass-Spring-Damper,NMSD)是一種常見的振動控制裝置,廣泛應(yīng)用于工程結(jié)構(gòu)的減震和振動控制中。為了進行NMSD的神經(jīng)網(wǎng)絡(luò)仿真研究,以下步驟進行: 1. 數(shù)據(jù)收集:收集

    2024年02月16日
    瀏覽(29)
  • 神經(jīng)網(wǎng)絡(luò)自適應(yīng)PID控制及其應(yīng)用

    神經(jīng)網(wǎng)絡(luò)自適應(yīng)PID控制及其應(yīng)用

    總結(jié)來自重慶大學宋永瑞教授2022暑期校園行學術(shù)會議 ??目前人工智能的發(fā)展為很多領(lǐng)域里的研究提供了可延展性,提供了新的研究問題的思路,無人系統(tǒng)和人工智能正走向深度融合,無人系統(tǒng)里具有核心驅(qū)動作用的智能控制算法的研究成為了熱點問題。 人工智能的理論深

    2024年01月21日
    瀏覽(21)
  • 【Simulink】仿真_PID控制器調(diào)諧/調(diào)參/整定

    【Simulink】仿真_PID控制器調(diào)諧/調(diào)參/整定

    如何使用PID調(diào)諧器自動調(diào)優(yōu)PID控制器塊? 模型下載: 轉(zhuǎn)速閉環(huán) PID調(diào)諧器提供了一種快速和廣泛適用的 single-loop PID通過Simulink控制塊的整定方法。通過這種方法,可以調(diào)優(yōu)PID控制器參數(shù),以實現(xiàn)具有所需響應(yīng)時間(response time)的魯棒(robust)設(shè)計。 PID調(diào)諧器的典型設(shè)計工作流程包括

    2024年02月05日
    瀏覽(23)
  • 模糊PID控制器的實現(xiàn)

    模糊PID控制器的實現(xiàn)

    本文討論有關(guān)模糊PID相關(guān)的問題。模糊PID是一種將PID控制和模糊算法結(jié)合起來的控制算法,其實質(zhì)上是將模糊算法用在了PID的參數(shù)整定上,以此來滿足需要動態(tài)調(diào)整PID參數(shù)的系統(tǒng)的要求。 (1)傳統(tǒng)的控制方法有時無法滿足控制精度的要求,而且抗干擾的能力較弱,模糊控制可以

    2023年04月16日
    瀏覽(32)
  • AI 與控制:神經(jīng)網(wǎng)絡(luò)模型用于模型預(yù)測控制(Model Predictive Control)

    AI 與控制:神經(jīng)網(wǎng)絡(luò)模型用于模型預(yù)測控制(Model Predictive Control)

    最優(yōu)控制理論處理的問題通常是找到一個滿足容許控制的 u*,把它作用于系統(tǒng)(被控對象)?(t)=f(x(t),u(t),t) 從而可以得到系統(tǒng)的狀態(tài)軌跡 x(t),使得目標函數(shù)最優(yōu)。對于軌跡跟蹤問題,那目標函數(shù)就是使得這個軌跡在一定的時間范圍[t0tf]內(nèi)與我們期望的軌跡(目標)x*(t) 越近

    2024年02月04日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包