控制算法(二)—— 模糊控制算法

       模糊控制是以模糊集理論、模糊語言變量和模糊邏輯推理爲基礎的一種智能控制方法,它是從行爲上模仿人的模糊推理和決策過程的一種智能控制算法。模糊控制首先將操作人員或專家經驗編成模糊規則,然後將來自傳感器的實時信號模糊化,將模糊化後的信號作爲模糊規則的輸入,完成模糊推理,將推理後得到的輸出量加到執行器上。

        模糊控制的過程如下圖所示。

        上圖中,包括了模糊控制的主要過程。關於模糊控制的基本原理,在很多文章中都有介紹,但一般介紹都比較抽象,讀者不容易理解。在本文中,我們通過一個簡單的例子來進行介紹。

1、模糊化

        以水溫的電加熱爲例,我們對模糊控制進行介紹。在一個容器中裝滿了水,我們要將水維持在一個恆定的溫度,比如:60度。我們控制水溫的工具是電加熱器。在這個控制系統中,控制算法的輸入爲溫度的偏差,即期望溫度與實際溫度的插,我們假設這個偏差的範圍爲[-20, 20],我們稱它爲基本論域。算法的輸出爲電加熱的功率,我們假設它的基本論域爲[0, 2000],單位是瓦。

        我們取輸入和輸出的模糊集合分別爲{NB, NS, O, PS, PB},{NB, NS, O, PS, PB}。其中NB表示負大,NS表示負小,O表示零,PS表示正小,PB表示正大。另外,我們取輸入和輸出的模糊子集論域爲{-4,-3,-2,-1,0,1,2,3,4},{-3,-2,-1,0,1,2,3}。我們可以得出一般的公式,由基本論域到[a, b]模糊子集論域[-n, n]的轉換關係:

y=\left ( x-(a+b)/2 \right )\cdot 2n/(b-a)

        通過上面的公式我們可以將基本論域上的精確至映射到模糊子集論域內,接下來我們要通過隸屬度關係計算出我們的輸入或輸出變量對模糊集合的隸屬度,這個過程稱爲模糊化。隸屬度關係我們一般通過隸屬度圖或隸屬度表格來表示。如下圖所示,爲輸入的隸屬度圖。

用表格表示,如下所示。

  -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
O 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

同樣,輸出的隸屬度關係,用表格表示爲

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

有了上邊的關係,我們就可以將控制算法的輸入進行模糊化。比如我們期望的溫度是60度,實際的溫度爲45度,則溫度偏差爲15度,則對應的模糊子集論域上的取值爲:

y=(15-(-20+20)/2)\cdot 2\cdot 4/(20+20)=3

我們從表中可以看到,3對應PB的隸屬度爲0.5,PS的隸屬度爲0.5。這樣我們完成了偏差15的模糊化。

2、建立模糊控制規則

        模糊規則是模糊控制算法的核心,它決定了算法的控制規則。在我們這個例子中,如果偏差很大,我們模糊化後爲PB,則實際溫度比期望溫度低很多,這是我們需要用很大的功率來加熱,所以控制量爲PB;如果實際溫度已經達到了期望溫度,則輸入的溫度偏差模糊化後爲O,這時,我們爲了維持溫度,需要用中等的功率來維持溫度,所以控制量爲O。如果輸入量爲NB,相應的控制量爲NB。所以根據這個原則,我們可以得到模糊控制規則,如下表。

if(若) NBe NSe Oe PSe PBe
then(則) NBu NSu Ou PSu PBu

3、求模糊關係

      模糊控制規則是一個多條語句,它可以表示爲EXU上的模糊子集,即模糊關係R,它通過下面的式子計算。

R=\left ( NBe\cap NBu \right )\cup \left ( NSe\cap NSu \right )\cup \left ( Oe\cap Ou \right )\cup \left ( PSe\cap PSu \right )\cup \left ( PBe\cap PBu \right )

其中,\cap表示求交集,對於兩個數值來說,就是取數值小的數值。\cup表示求並集,對於兩個數值來說就是取數值大的數值。NBe、NBu等爲最上面的表格中的隸屬度的向量,我們進行計算得到下面的結果。

NBe\cap NBu=\begin{bmatrix} 1\\ 0.5\\ 0\\ 0\\ 0\\ 0\\ 0\\ 0\\ 0\end{bmatrix}\cap \begin{bmatrix} 1 & 0.5 & 0 & 0 & 0 & 0 & 0 \end{bmatrix}=\begin{bmatrix} 1 & 0.5 & 0 & 0 & 0 & 0 & 0\\ 0.5 & 0.5 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 \end{bmatrix}

NSe\cap NSu=\begin{bmatrix} 0\\ 0.5\\ 1\\ 0.5\\ 0\\ 0\\ 0\\ 0\\ 0\end{bmatrix}\cap \begin{bmatrix} 0 & 0.5 & 0.5 & 0 & 0 & 0 & 0 \end{bmatrix}=\begin{bmatrix} 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0.5 & 0.5 & 0 & 0 & 0 & 0\\ 0 & 0.5 & 0.5 & 0 & 0 & 0 & 0\\ 0 & 0.5 & 0.5 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 \end{bmatrix}

Oe\cap Ou=\begin{bmatrix} 0\\ 0\\ 0\\ 0.5\\ 1\\ 0.5\\ 0\\ 0\\ 0\end{bmatrix}\cap \begin{bmatrix} 0 & 0 & 0.5 & 1 & 0.5 & 0 & 0 \end{bmatrix}=\begin{bmatrix} 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0.5 & 0.5 & 0.5 & 0 & 0\\ 0 & 0 & 0.5 & 1 & 0.5 & 0 & 0\\ 0 & 0 & 0.5 & 0.5 & 0.5 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 \end{bmatrix}

PSe\cap PSu=\begin{bmatrix} 0\\ 0\\ 0\\ 0\\ 0\\ 0.5\\ 1\\ 0.5\\ 0\end{bmatrix}\cap \begin{bmatrix} 0 & 0 & 0 & 0 & 0.5 & 0.5 & 0 \end{bmatrix}=\begin{bmatrix} 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0.5 & 0.5 & 0\\ 0 & 0 & 0 & 0 & 0.5 & 0.5 & 0\\ 0 & 0 & 0 & 0 & 0.5 & 0.5 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 \end{bmatrix}

PBe\cap PBu=\begin{bmatrix} 0\\ 0\\ 0\\ 0\\ 0\\ 0\\ 0\\ 0.5\\ 1\end{bmatrix}\cap \begin{bmatrix} 0 & 0 & 0 & 0 & 0 & 0.5 & 1 \end{bmatrix}=\begin{bmatrix} 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0.5 & 0.5\\ 0 & 0 & 0 & 0 & 0 & 0.5 & 1 \end{bmatrix}

將上面的5個矩陣求並集計算得到模糊關係如下。

R=\begin{bmatrix} 1 & 0.5 & 0 & 0 & 0 & 0 & 0\\ 0.5 & 0.5 & 0.5 & 0 & 0 & 0 & 0\\ 0 & 0.5 & 0.5 & 0 & 0 & 0 & 0\\ 0 & 0.5 & 0.5 & 0.5 & 0.5 & 0 & 0\\ 0 & 0 & 0.5 & 1 & 0.5 & 0 & 0\\ 0 & 0 & 0.5 & 0.5 & 0.5 & 0.5 & 0\\ 0 & 0 & 0 & 0 & 0.5 & 0.5 & 0\\ 0 & 0 & 0 & 0 & 0.5 & 0.5 & 0.5\\ 0 & 0 & 0 & 0 & 0 & 0.5 & 1 \end{bmatrix}

4、模糊決策

        模糊控制器的輸出爲誤差向量和模糊關係的合成:

u=e\circ R

例如,如果誤差爲PS,則對應的向量

e=\begin{bmatrix} 0 & 0 & 0 & 0 & 0 & 0.5 & 1 & 0.5 & 0 \end{bmatrix}

u=e\circ R=\begin{bmatrix} 0 & 0 & 0 & 0 & 0 & 0.5 & 1 & 0.5 & 0 \end{bmatrix}\circ \begin{bmatrix} 1 & 0.5 & 0 & 0 & 0 & 0 & 0\\ 0.5 & 0.5 & 0.5 & 0 & 0 & 0 & 0\\ 0 & 0.5 & 0.5 & 0 & 0 & 0 & 0\\ 0 & 0.5 & 0.5 & 0.5 & 0.5 & 0 & 0\\ 0 & 0 & 0.5 & 1 & 0.5 & 0 & 0\\ 0 & 0 & 0.5 & 0.5 & 0.5 & 0.5 & 0\\ 0 & 0 & 0 & 0 & 0.5 & 0.5 & 0\\ 0 & 0 & 0 & 0 & 0.5 & 0.5 & 0.5\\ 0 & 0 & 0 & 0 & 0 & 0.5 & 1 \end{bmatrix}=\begin{bmatrix} 0 & 0 & 0.5 & 0.5 & 0.5 & 0.5 & 0.5 \end{bmatrix}

5、控制量的反模糊化

        由上面的計算得到u=\begin{bmatrix} 0 & 0 & 0.5 & 0.5 & 0.5 & 0.5 & 0.5 \end{bmatrix}

這幾個係數,對應於模糊子集論域,一般表示爲

u=\frac{0}{-3}+\frac{0}{-2}+\frac{0.5}{-1}+\frac{0.5}{0}+\frac{0.5}{1}+\frac{0.5}{2}+\frac{0.5}{3}

注意這個式子只是一個表示方式,不是除的計算。

一般,我們採用重心發來計算控制量的模糊值,如下進行計算

U=\frac{\sum x_{i}\mu _{N}\left ( x_{i} \right )}{\sum \mu _{N}\left ( x_{i} \right )}=\frac{-0.5\ast 1+0.5\ast 0+0.5\ast 1+0.5\ast 2+0.5*3}{0.5+0.5+0.5+0.5+0.5}=1

注意這個u的值是模糊子集論域中的值,它的取值範圍是[-n, n],用項目的公式,可以將它轉換爲[a, b]空間上。

u=\frac{a+b}{2}+\frac{b-a}{2n}U

在這個示例中,a=0,b=2000,n=3,U=1。代入公式計算得到u=1333,即需要用1333瓦的功率來進行加熱。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章