<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是模糊算法

汽車電子技術 ? 來源:滑小稽筆記 ? 作者:電子技術園地 ? 2023-03-01 14:22 ? 次閱讀

3.1 概述

所謂模糊控制,就是對難以用已有規律描述的復雜系統,采用自然語言(如大,中,?。┘右悦枋?,借助定性的,不精確的以及模糊的條件語句來表達,模糊控制是一種基于語言的智能控制。

傳統的自動控制器的綜合設計都要建立在被控對象準確的數學模型(即傳遞函數模型或狀態空間模型)的基礎上,但是實際上,很多系統的影響因素很多,通常找出精確的數學模型,這種情況下,模糊控制的誕生就顯得意義重大,因為模糊控制不需要建立數學模型,不需要預先知道過程精確的數學模型。模糊控制與傳統的PID控制,具有如下優點:

(1)無需知道被控對象的數學模型

(2)反映人類智慧思維的智能控制

(3)易被人們所接受,是一種語言變量控制器

(4)構造容易,從屬于智能控制的范疇,尤其適用于非線性,時變,滯后系統的控制

(5)抗干擾能力強,響應速度快,并對系統參數的變化有較強的魯棒性

3.1.1 工作原理

把各種傳感器測出的精確量轉換為適用于模糊運算的模糊量,然后將這些量在模糊控制器中加以運算,最后再將運算結果中的模糊量轉換為精確量,以便對各執行器進行具體的操作控制,這就說明在模糊控制中,存在著一個模糊量與精確量之間相互轉化的問題,如下圖所示:

圖片

模糊控制原理圖如下圖所示:

圖片

3.1.2 模糊語言集

模糊語言集用表示,一般有={負大,負中,負小,零,正小,正中,正大},用模糊語言變量E來描述偏差,或者用符號表示:

負大:Negative Big,簡稱NB

負中:Negative Medium,簡稱NM

負?。篘egative Small,簡稱NS

零:Zero,簡稱ZE

正?。篜ositive Small,簡稱PS

正中:Positive Medium,簡稱PM

正大:Positive Big,簡稱PB

圖片

3.1.3 隸屬函數

各參數相對應子集的隸屬函數分別由不同的函數族決定,參數的相應子集指該參數被人為地劃分成的等級所構成的一組模糊集合,相應子集的多少,由控制精度決定,例如,參數“溫差”的相應子集可以是“正大,正中,負小,負大”,也可以是“正大,正中,正小,負小,負中,負大”,后者比前者模糊子集多,所以控制精度更高(在其他相同條件的情況下)。

常用的隸屬函數如下所示。

(1)z型隸屬度函數zmf

圖片

(2)S型隸屬度函數smf

圖片

(3)三角形隸屬度函數trimf

圖片

**3.2 **模糊控制數學基礎

3.2.1 模糊控制集合的代數運算

圖片

3.2.2 模糊關系

(1)普通關系:兩個集合中的元素之間是否有關聯。

(2)模糊關系:兩個模糊集合中的元素之間關聯程度的多少。

圖片

3.2.3 模糊關系的合成

圖片

3.2.4 模糊推理

圖片

3.2.5 模糊決策

模糊決策(模糊判決,解模糊,清晰化):由模糊推理得到的結論或者操作是一個模糊向量,轉化為確定值的過程。

(1)最大隸屬度法

圖片

(2)加權平均判決法

圖片

(3)中位數法

圖片

3.1.6 模糊推理的運用

圖片

3.2.7 模糊控制系統的組成

圖片

與一般的計算機控制系統不同的是,模糊控制系統的控制器是模糊控制器,模糊控制器是基于模糊條件語句描述的語言控制規則,又稱為模糊語言控制器。

輸入輸出變量

(1)模糊控制的輸入變量通常取E或E,EC或E,EC,ER,分別構成所謂的一維,二維,三維模糊控制器,一般選擇控制量的增量作為模糊控制器的輸出變量。

(2)描述模糊控制器的輸入,輸出變量狀態:負大(NB),負中(NM),負?。∟S),零(O),正?。≒S),正中(PM),正大(PB)。

(3)描述誤差變量的詞集一般取為:負大(NB),負中(NM),負?。∟S),負零(NO),正零(PO),正?。≒S),正中(PM),正大(PB)。

模糊變量E的賦值表

圖片

模糊控制規則

(1)條件語句的基本類型為:if A or B and C or D then E

例如水溫控制規則之一為:若水溫高或偏高,且溫度上升快或較快,則加大冷水流量。

用條件語句表達為:if E=NB or NM and EC=NB or NM then U=PB

3.2.8 模糊控制算法的工程實現

在大型的模糊控制系統中常采用軟件模糊推理法,模糊關系,模糊推理以及模糊判決的運算可以離線進行,最后得到模糊控制器輸入量的量化等級E,EC與輸出量即系統控制量的量化等級U之間的確定關系,這種關系通常稱為控制表。

3.3 水位控制系統

3.3.1 控制目標

控制模型如下圖所示,控制進水閥S1和出水閥S2,使水箱水位保持在目標水位O處。

圖片

3.3.2 控制規則

(1)若當前水位高于目標水位,則向外排水,差值越大,排水越快

(2)若當前水位低于目標水位,則向內注水,差值越大,注水越快

(3)若當前水位和目標水位相差很小,則保持排水速度和注水速度相等

注:建立模糊控制規則的基本思想:當誤差大或較大時,選擇控制量應該以盡快消除誤差為主,而當誤差較小時,選擇控制量要防止超調,以系統的穩定性為主要出發點。

3.3.3 控制步驟

(1)我們選擇目標水位和當前水位的差值e作為觀察量,選取閥門開度u為控制量。

(2)將偏差e劃分為5個模糊集,負大(NB)、負?。∟S)、零(ZO)、正?。≒S)、正大(PB),e為負表示當前水位低于目標水位,e為正表示當前水位高于目標水位。設定e的取值范圍為[-3,3],隸屬度函數如下圖所示。

圖片

此時偏差e對應的模糊表如下表所示。

-3 -2 -1 0 1 2 3
PB 0 0 0 0 0 0.5 1
PS 0 0 0 0.5 1 0.5 0
ZO 0 0 0.5 1 0.5 0 0
NS 0 0.5 1 0.5 0 0 0
NB 1 0.5 0 0 0 0 0

(3)將控制量u劃分為5個模糊集,負大(NB)、負?。∟S)、零(ZO)、正?。≒S)、正大(PB),u為負表示增大進水閥門S1的開度(同時減小出水閥門S2的開度),u為正表示減小進水閥門S1的開度(同時增大出水閥門S2的開度)。設定u的取值范圍為[-4,4],隸屬度函數如下。

圖片

此時控制量u對應的模糊表如下表所示。

-4 -3 -2 -1 0 1 2 3 4
PB 0 0 0 0 0 0 0 0.5 1
PS 0 0 0 0 0 0.5 1 0.5 0
ZO 0 0 0 0.5 1 0.5 0 0 0
NS 0 0.5 1 0.5 0 0 0 0 0
NB 1 0.5 0 0 0 0 0 0 0

(4)制定模糊規則:模糊規則的制定是模糊控制的核心內容,控制性能的好壞很大程度上由模糊規則決定,目前主要是根據經驗來制定相應的規則

若e負大,則u負大

若e負小,則u負小

若e為零,則u為零

若e正小,則u正小

若e正大,則u正大

(6)進行模糊決策:最終需要的控制量u即為模糊控制的輸出,u可由偏差矩陣e和模糊關系矩陣R合成得到

(7)控制量的反模糊化

我們模糊決策得到的控制量u是一個矩陣,并不能直接應用在工程上,因此需要將u解釋為實際中的特定行為,即反模糊化操作。目前常用的反模糊化方法有以下幾種:

最大隸屬度法:應用于計算簡單控制要求不高場合

重心法:可以使得輸出更平滑

加權平均法:工業上應用最廣泛

3.4 模糊控制算法實現

3.4.1 MATLAB代碼

clc
clear
%創建模糊控制器
a = newfis('fuzzy tank');
%輸入變量
a = addvar(a,'input','e',[-3,3]);                           %設置變量e為輸入且定義域[-3,3]
a = addmf(a,'input',1,'NB','zmf',[-3,-1]);                  %Z型隸屬度函數
a =addmf(a,'input',1,'NS','trimf',[-3,-1,1]);               %三角形隸屬度函數
a =addmf(a,'input',1,'ZO','trimf',[-2,0,2]);                %三角形隸屬度函數
a =addmf(a,'input',1,'PS','trimf',[-1,1,3]);                %三角形隸屬度函數
a = addmf(a,'input',1,'PB','smf',[1,3]);                     %S型隸屬度函數
%輸出變量
a = addvar(a,'output','u',[-4,4]);                            %設置變量u為輸出且定義域[-4,4]
a = addmf(a,'output',1,'NB','zmf',[-4,-2]);                 %Z型隸屬度函數
a =addmf(a,'output',1,'NS','trimf',[-4,-2,0]);             %三角形隸屬度函數
a =addmf(a,'output',1,'ZO','trimf',[-2,0,2]);               %三角形隸屬度函數
a =addmf(a,'output',1,'PS','trimf',[0,2,4]);                %三角形隸屬度函數
a = addmf(a,'output',1,'PB','smf',[2,4]);                    %S型隸屬度函數
%建立模糊規則
rulelist=[1 1 1 1;
          2 2 1 1;
          3 3 1 1;
          4 4 1 1;
          5 5 1 1];
a = addrule(a,rulelist);
%設置反模糊化算法
a1 = setfis(a,'DefuzzMethod','mom');                         %采用最大隸屬度平均法進行反模糊化
writefis(a1,'tank');                                         %保存tank文件
a2 = readfis('tank');                                        %讀取tank文件
%繪制圖像
figure(1);  plotfis(a2);                                     %繪制模糊控制器結構
figure(2);  plotmf(a,'input',1);                              %繪制輸入隸屬度函數圖像
figure(3);  plotmf(a,'output',1);                             %繪制輸出隸屬度函數圖像
%打開模糊調試器
showrule(a);
ruleview('tank');

MATLAB仿真結果如下圖所示。

圖片

3.4.2 C語言代碼

#include 
#include 
#include 
#define  N  7                      //定義量化論域模糊子集的個數
//模糊語言定義
#define  NB  -3
#define  NM  -2
#define  NS  -1
#define  ZO  0
#define  PS  1
#define  PM  2
#define  PB  3
struct
{
  //規則表
  int rule[ N ][ N ] ;                //模糊規則表
  //隸屬度函數
  char *f_type_e ;                  //e的隸屬度函數類型
  char *f_type_de ;                  //de的隸屬度函數類型
  char *f_type_u ;                  //u的隸屬度函數類型
  float paras_e[ 3*N ] ;                //e的隸屬度函數的參數
  float paras_de[ 3*N ] ;              //de的隸屬度函數的參數
  float paras_u[ 3*N ] ;                //u的隸屬度函數的參數
  //模糊運算參數
  float Ke ;                    //Ke=n/emax,量化論域為[-3,-2,-1,0,1,2,3]
  float Kde ;                    //Ke=n/demax,量化論域為[-3,-2,-1,0,1,2,3]
  float Ku ;                    //Ke=umax/n,量¢化論域為[-3,-2,-1,0,1,2,3]
  float umax ;                    //輸出的上限
  float emax ;                    //誤差基本論域上限
  float demax ;                    //誤差變化率基本論域的上限
  //控制目標參數
  float target ;                  //控制目標
  float actual ;                  //實際值
  float e ;                    //誤差
  float e_pre ;                    //上一次的誤差
  float de ;                    //誤差的變化率
}_fuzzy_;
/*******************************************************
Name      :trimf
Function    :三角隸屬度函數
Parameter  :
      x:自變量
      (a,b,c):定義域
Return    :結果
*******************************************************/
float trimf( float x, float a, float b, float c )
{
  float u ;
  if( ( x>=a )&&( x<=b ) )
    u = ( x-a )/( b-a ) ;
  else if( ( x>b )&&( x<=c ) )
    u = ( c-x )/( c-b ) ;
  else
    u = 0 ;
  return u ;
}
/*******************************************************
Name      :gaussmf
Function    :正態隸屬度函數
Parameter  :
      x:自變量
      ave:均值
      sigma:方差
Return    :結果
*******************************************************/
float gaussmf( float x, float ave, float sigma )
{
  float u ;
  if( sigma<0 )
    printf("方差不允許小于0\\n");
  else
    u = exp( -pow( ( ( x-ave )/sigma ), 2 ) ) ;
  return u ;
}
/*******************************************************
Name      :trapmf
Function    :梯形隸屬度函數
Parameter  :
      x:自變量
      (a,b,c,d):定義域
Return    :結果
*******************************************************/
float trapmf( float x, float a, float b, float c, float d )
{
  float u ;
  if( ( x>=a )&&( xelse if( ( x>=b )&&( x

**
最終代碼運行結果如下圖所示。

圖片

參考于CDSN

**

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模糊控制
    +關注

    關注

    2

    文章

    260

    瀏覽量

    25426
  • 復雜系統
    +關注

    關注

    0

    文章

    7

    瀏覽量

    6973
  • 自然語言
    +關注

    關注

    1

    文章

    271

    瀏覽量

    13231
收藏 人收藏

    評論

    相關推薦

    PID算法模糊PID 精選資料推薦

    這方面的需求而設計的。專家算法模糊算法都歸屬于智能算法的范疇,智能算法最大的優點就是在控制模型未知的情況下,可以對模型進行控制。這里需要注
    發表于 07-19 06:29

    基于單片機模糊算法-PID

    模糊-PID控制技術運用到程控電壓源的設計中,從而使得電壓源的輸出電壓值達到預定的要求,提高輸出電壓的精度和反應速度。采用51單片機,利用adc0832和DAC0832,通過220V市電通過整流
    發表于 07-19 08:32

    如何去實現一種基于單片機模糊算法溫度控制系統設計

    020【畢設課設】基于單片機模糊算法溫度控制系統設計,本電路為基于單片機的溫度控制系統??刂葡到y采用模糊控制器實現。采用PT100鉑電阻溫度傳感器測量溫度。鉑電阻溫度傳感器的調理電路以子電路的形式
    發表于 11-10 07:16

    基于模糊算法的水泥燒成控制系統研究

    針對水泥生產中的核心環節――燒成系統具有非線性、大滯后且難以建立精確數學模型的特點,采用可編程控制器(PLC)結合模糊算法實現水泥回轉窯煅燒過程的控制。結果表明,
    發表于 07-30 14:56 ?24次下載

    基于模糊算法的生化過程溫度控制系統

    本文表述了一種基于模糊算法的生化過程溫度控制系統,詳細論述了系統的總體結構、控制算法及軟件實現流程。系統采用80C196KB 單片機為主控制器,控制算法采用
    發表于 08-12 09:03 ?26次下載

    采用模糊算法的蘋果無損分揀技術研究

    采用模糊算法的蘋果無損分揀技術研究 主要對蘋果分揀技術進行了研究,并給出了蘋果分揀系統的結構。由于蘋果的好壞主要由蘋果的大小、形狀和成熟度
    發表于 02-27 09:30 ?13次下載

    遺傳模糊算法在短期負荷預測中的應用

    遺傳模糊算法在短期負荷預測中的應用 提出了一種基于模糊邏輯原理的負荷預測方法,使用遺傳算法對系統參數進行訓練。在以往的模糊邏輯系統
    發表于 07-11 18:48 ?560次閱讀
    遺傳<b class='flag-5'>模糊</b><b class='flag-5'>算法</b>在短期負荷預測中的應用

    一種脈沖多普勒雷達解距離模糊的新算法

    一種脈沖多普勒雷達解距離模糊的新算法,下來看看
    發表于 12-23 02:40 ?19次下載

    自適應神經模糊算法在光伏MPPT中的仿真分析

    自適應神經模糊算法在光伏MPPT中的仿真分析_榮德生
    發表于 01-07 18:56 ?0次下載

    基于模糊算法的多移動機器人目標跟蹤_梁順健

    基于模糊算法的多移動機器人目標跟蹤_梁順健
    發表于 01-12 22:22 ?3次下載

    基于LO正則化去模糊算法

    隨著視頻監控技術的發展、監控攝像頭的普及和人們對安全信息需求的提升,監控中圖像去模糊技術得到迫切需求?;趫D像強度和梯度的LO正則化去模糊算法能有效恢復模糊的文本圖像,但是由于車牌圖像
    發表于 11-08 14:28 ?2次下載
    基于LO正則化去<b class='flag-5'>模糊</b><b class='flag-5'>算法</b>

    基于單片機模糊算法溫度控制系統設計(畢設課設資料)

    020【畢設課設】基于單片機模糊算法溫度控制系統設計,本電路為基于單片機的溫度控制系統??刂葡到y采用模糊控制器實現。采用PT100鉑電阻溫度傳感器測量溫度。鉑電阻溫度傳感器的調理電路以子電路的形式
    發表于 11-05 13:36 ?5次下載
    基于單片機<b class='flag-5'>模糊</b><b class='flag-5'>算法</b>溫度控制系統設計(畢設課設資料)

    基于深度學習的圖像去模糊算法及應用

    當前,絕大部分基于深度學習的圖像去模糊算法是不區分場景的,也就是他們是對常見的自然與人為設計的場景進行去模糊。但是,在現實生活中,經常會遇到一些特定場景的圖像去模糊。比如人臉去
    的頭像 發表于 10-28 16:00 ?1932次閱讀

    MATLAB學習筆記之模糊算法1

    所謂模糊控制,就是對難以用已有規律描述的復雜系統,采用自然語言(如大,中,?。┘右悦枋?,借助定性的,不精確的以及模糊的條件語句來表達,模糊控制是一種基于語言的智能控制。
    的頭像 發表于 02-27 14:28 ?2191次閱讀
    MATLAB學習筆記之<b class='flag-5'>模糊</b><b class='flag-5'>算法</b>1

    模糊算法適對發射點擴散函數(PSF)的假設要求最低

    ? ? ? ? 長期以來,在顯微鏡領域獲得高分辨率圖像一直是一個挑戰。去卷積是一種增強圖像清晰度的方法,它通常會放大樣品和圖像之間的噪聲。波士頓大學的研究人員最近開發了一種新的去模糊算法,可以
    的頭像 發表于 11-02 09:15 ?353次閱讀
    去<b class='flag-5'>模糊</b><b class='flag-5'>算法</b>適對發射點擴散函數(PSF)的假設要求最低
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>