jxTMS 模糊控制

2021-10-24 14:13:35 字數 2490 閱讀 6940

jxtms:低成本快速定製的業務系統開發平台。

模糊控制就是運用模糊數學的基本原理,結合產生式的知識運用方式,通過定義模糊規則,根據當前採集到的輸入量經過推理計算出控制量。

所以要實現模糊控制包括如下的幾個步驟:

注:模糊推理一般都是使用浮點數進行計算,而一般採集到的訊號與控制訊號都是數字量,所以需要根據應用場景進行資料轉換,因為這屬於領域相關的內容,所以本文不討論

下面我們逐一進行討論。

定義模糊數

定義模糊數,一般是兩個步驟:

例如,速度這個變數,我們定義了五個性質:快、慢、很快、很慢、正常。然後測得速度的範圍就是【0,6】,那麼我們先初步定義各性質的隸屬度:

請大家根據我說的點,自己畫乙個座標系後標出各點然後連線,應該就可以理解了模糊性質的隸屬度的定義方法。

注:這個隸屬度是初步的試算,是在很少經驗的情況下的主觀設定,等可以工作以後,隨著經驗的增多,根據測試結果來逐漸增加、調整組成折線的點,逐步確定隸屬度函式的定義就可以了

通過增加、改變組成折線的點,我們就可以改變相應模糊性質的隸屬度函式。

大家在剛設計乙個模糊控制系統時,就按這個三點法來給出初步的隸屬度函式就可以了,等系統可以工作了,再逐步調優。這就是模糊控制系統的優勢之一:不需要過多的領域知識就能工作,等能工作以後再隨著經驗的積累來逐步調優、提高控制精度。

使用折線法定義隸屬度有三個原則:

注:人寫的規則,當然應該符合人的思考習慣,所以這個語義的要求其實是對人的要求,如果真這麼定義了,控制系統本身還會工作,只不過工作結果會比較奇怪

定義模糊變數

模糊變數的定義非常簡單,只要定義好了模糊性質,然後給模糊變數指定其由哪幾個性質組成就可以了。

定義模糊規則

模糊控制的第二個優勢就是:天然的就是降階控制。也就是編寫某情景下的控制規則時,只考慮這個情景所涉及到的量就好了。如我上面給出的規則,其實速度的控制還需要考慮遠近的問題,但因為條件只有方位,而速度對於方位來說就是快速糾正與否的問題,所以這條規則就只根據方位的偏離大小然後決定是否進行快速的糾正而不需考慮是前進還是後退,前進後退的控制由其它規則考慮,最後再進行加權綜合就好了。

那麼,會不會出現因為速度過大,讓小車直接駛出控制範圍了呢?!答案就是模糊控制是必須要有多條規則一起生效才會起作用,如果只命中一條規則,而且次次如此,那麼就不應該使用模糊控制。為什麼呢?!

因為模糊控制所使用的模糊推理,本質上就是對多種可能情況估計各自可能性後的加權平均。如果某個控制量在每次推理時始終沒有多個規則的參與,那麼其推理結果就是不可靠的、不可用的。這個控制系統的規則體系就是失敗的,或者就不適合採用模糊控制體制。

舉個例子,筆者曾用模糊推理編寫過鬥地主的玩家出牌規則,在80條規則時,基本能達到初學者的水平了。然後筆者一激動,想通過規則的增多來提高程式的打牌水平,但在把規則增加到了四百多之後,出牌水平還下降了!!研究之後才發現,因為鬥地主一共才25張牌,在出了幾手牌之後,能覆蓋的牌型非常少,所以越往後打,所能覆蓋的規則越少,最後就成了命中一條規則,然後就直接按這條規則出牌了。而剛才說了,模糊推理的規則都是只考慮某種情況就定義了的,所以按一條規則的出牌是很差的。

也就是說,如果能覆蓋的規則很少時,越是增加規則的數量,就會導致可以覆蓋到的規則數更少【因為規則細化了,能符合規則的條件其實是提高了】,而越少的規則由於沒有加權平均,所以計算出來的結果質量就會越差。當出現每次只命中一條規則的極端情況時,模糊控制系統已經退化到比產生式還差的水平了。

模糊規則的定義,就是產生式【if-then,產生式沒有else】的定義,只不過有幾點小的修正

注:程度修飾其實就是隸屬度函式的調整,如,【非常 大】的隸屬度是【大】的隸屬度的開方,而【有些 大】的隸屬度是【大】的隸屬度的平方

模糊規則的定義比較簡單,就是先主觀再客觀,即先根據自己的想象寫一些控制規則,主要是考慮我上面所說的情況,盡量避免規則過細導致命中數量太少;然後等可以工作以後,再根據實際執行的反饋來優化規則就好了。

採集訊號與應用推理結果進行控制

這是比較簡單的,從模糊控制本身來說,就是輸入輸出資料的轉換問題,屬於領域相關問題,我們就不展開討論了。

模糊推理

前面說過了,模糊推理就是對可能性的估計,然後進行加權平均。所以模糊推理包括如下的步驟:

結論模糊控制的優點是:

模糊控制的缺點是:

所以模糊控制適合在了解不多的時候,先建立起乙個能工作的、粗略的負反饋型控制系統,然後在認識深入後,根據總結出來的規律增加其它型別的前饋型控制。

注1:但這裡的能工作,還是要求控制量相對系統行為具有足夠的精度。比如,筆者曾建立的用樹莓派根據拍攝到的人臉相對螢幕中心點的位置來控制小車使其運動到讓人臉居於螢幕的正中間。但由於樹莓派的能力限制,每一次人臉識別都需要1到2秒的時長,而小車速度過低的時候又由於摩擦力的影響無法運動,所以只能調高速度的控制量。最終的表現就是每次控制量輸出,都會讓小車的運動距離過大,結果小車就一直圍繞著中心點反覆的前後運動而無法準確鎖定後停下來:(

注2:左右的控制是靠小車兩個輪子的差速進行的,所以左右的偏差不管多大在兩三個來回後就糾正了,這就是模糊控制的優勢:我根本不知道差速和左右的控制邏輯,但簡單書寫的兩三條控制規則就完成了這個控制目標,而我隨意調整差速的配置,都基本不會影響控制效果【即基本不需要調優】

jxTMS 業務規則

jxtms的核心理念之一就是 好的系統是定義出來的。當然筆者不是反對程式設計,而是程式設計太過於專業化,同時具有動態性,這兩者的結合就導致以程式設計為主要實現的系統和業務人員絕緣了。而業務系統能否發揮出充分的作用,其主要取決於系統能否貼合業務 貼合使用者的需求。顯然,過於技術化的系統是由開發人員所主...

模糊控制實驗

1.模糊計算依據模糊規則,控制變數輸入得到輸出。2.原影象為 模糊控制器 實現 模糊控制器設計 a newfis fuzzf 建立新的模糊推理系統 輸入1 f1 1 a addvar a,input e 3f1,3f1 新增 e 的模糊語言變數 a addmf a,input 1,nb zmf 2f...

模糊PID控制

在現實控制中,被控系統並非是線性時不變的,往往需要動態調整pid的引數,而模糊控制正好能夠滿足這一需求,所以在接下來的這一節我們將討論模糊pid控制器的相關問題。模糊pid控制器是將模糊演算法與pid控制引數的自整定相結合的一種控制演算法。可以說是模糊演算法在pid引數整定上的應用。模糊演算法是一種...