使用自定義功能構建Mamdani系統

這裏推薦搭建先看這個ppt,再看後面matlab的實現,這樣你會很清晰,爲了賺點積分,這裏設置一下積分,抱歉大家了。

詳細講解模糊邏輯的ppt

如何在設計器中使用自定義函數構建模糊推理系統

當構建模糊推理系統時,如Fuzzy Inference Process中所述,可以用自定義函數替換內置的隸屬函數或推理函數,或兩者。在本節中,您將學習如何使用GUI中的自定義功能來構建模糊推理系統。要了解如何在命令行中使用自定義功能來構建系統,請參閱在“ 構建Mamdani系統(代碼)”中指定自定義成員資格和推斷功能

要在設計器中使用自定義函數構建模糊推理系統,請執行以下操作:

  1. 通過鍵入在MATLAB以下開放模糊邏輯設計®提示:

    fuzzyLogicDesigner
  2. “模糊邏輯設計器”中所述指定模糊系統的輸入和輸出數量。

  3. 創建自定義成員資格函數,並用它們替換內置的成員資格函數,如指定自定義成員資格函數中所述

    隸屬度函數定義如何將輸入空間中的每個點映射到0到1之間的隸屬度值。

  4. 創建使用規則編輯器,在描述規則的規則編輯器

    規則定義了輸入和輸出之間的邏輯關係。

  5. 創建自定義推斷函數,並用它們替換內置的推斷函數,如指定自定義推斷函數中所述

    推理方法包括AND,OR,蘊涵,聚合和去模糊方法。該動作生成模糊系統的輸出值。

    下圖顯示的傾翻問題示例,其中內置的啓示聚合去模糊化功能與自定義函數代替,customimpcustomagg,和customdefuzz,分別。

              6.選擇“ 視圖” >“ 曲面”以在“曲面查看器”中查看模糊推理系統的輸出,如《曲面查看器》中所述

指定自定義成員資格功能

您可以創建自定義的隸屬度函數,並在模糊推理過程中使用它們。這些函數的值必須在0到1之間。將自定義成員資格函數保存在當前工作文件夾中。要了解如何使用自定義隸屬函數構建模糊系統,請參閱Designer中的如何使用自定義函數構建模糊推理系統

要創建自定義成員資格功能並替換內置成員資格功能,請執行以下操作:

  1. 創建一個MATLAB函數,並將其保存在當前工作文件夾中。

    要了解如何創建MATLAB函數,請參見MATLAB文檔中的“ 腳本與函數 ”。

    以下代碼是一個多步驟自定義成員資格函數的示例,該函數custmf1取決於0和之間的八個參數10

% Function to generate a multi-step custom membership function
% using 8 parameters for the input argument x
function out = custmf1(x, params)
for i = 1:length(x)
  if x(i) < params(1)
    y(i) = params(1);
  elseif x(i) < params(2)
    y(i) = params(2);
  elseif x(i) < params(3)
    y(i) = params(3);
  elseif x(i) < params(4)
    y(i) = params(4);
  elseif x(i) < params(5)
    y(i) = params(5);
  elseif x(i) < params(6)
    y(i) = params(6);
  elseif x(i) < params(7)
    y(i) = params(7);
  elseif x(i) < params(8)
    y(i) = params(8);
  else
    y(i) = 0;
  end
end
out = 0.1*y'; % scaling the output to lie between 0 and 1

注意:    自定義隸屬函數可以爲輸入參數最多包含16個參數。

  1. 如果尚未打開Fuzzy Logic Designer,請在MATLAB提示符下鍵入以下內容:

    fuzzyLogicDesigner

    Fuzzy Logic Designer將使用默認的FIS名稱打開Untitled,幷包含一個輸入input1和一個輸出output1

  2. 在模糊邏輯設計器中,選擇“ 編輯” >“ 成員關係函數”以打開成員關係函數編輯器。

    默認情況下,將顯示三個input1的三角形隸屬函數。

 

要在成員資格功能編輯器中將默認成員資格功能替換爲自定義功能,請執行以下操作:

  1. 選擇“ 編輯” >“ 刪除所有MF”以刪除input1的默認隸屬函數。

  2. 選擇“ 編輯” >“ 添加自定義MF”以打開“自定義成員資格功能”對話

要在“自定義成員資格功能”對話框中指定自定義功能,請執行以下操作:

  1. 在“ MF名稱”字段中爲自定義成員資格功能指定一個名稱。

    注意:    添加其他自定義成員資格功能時,請爲每個功能指定不同的MF名稱

  2. 在“ M文件功能名稱”字段中指定定製成員資格功能文件的名稱

  3. 在“ 參數列表”字段中指定參數向量。

    這些值確定隸屬函數的形狀和位置,並使用這些參數值評估函數。

    注意:    參數向量的長度必須大於或等於定製成員資格函數中的參數數。

    使用custmf1步驟1中的示例,“自定義成員資格功能”對話框的外觀類似於下圖。

  1. 單擊“ 確定”添加自定義成員資格功能。

  2. 同時指定範圍顯示範圍[0 10]相匹配的自定義隸屬函數的範圍。

成員資格功能編輯器顯示自定義成員資格功能圖。

此操作還將自定義成員資格功能添加到“規則查看器”,並使其可用於爲模糊推理過程創建規則。要在“規則查看器”中查看自定義函數,請在“ 模糊邏輯設計器”或“隸屬函數編輯器中選擇“ 編輯” > “規則”

  1. 要爲output1添加自定義成員資格函數,請在Membership Function Editor中選擇它,然後重複步驟4和5。

指定自定義推理功能

您可以使用自定義函數替換內置的AND,OR,蘊涵,聚合和解模糊推理方法。創建自定義推斷功能後,將其保存在當前工作文件夾中。若要了解如何使用自定義推理功能構建模糊系統,請參閱“設計器”部分中的 “ 如何使用自定義函數構建模糊推理系統”

以下各節介紹了創建和指定用於構建模糊推理系統的功能的準則。

創建自定義AND和OR函數

 

自定義AND和OR推理函數必須爲MATLAB功能上的矩陣操作逐列,以同樣的方式maxminprod

對於行或列矩陣xmin(x)返回最小元素。

x = [1 2 3 4];
min(x)
ans =
     1

對於矩陣xmin(x)返回一個行向量,其中包含每列中的最小元素。

x = [1 2 3 4;5 6 7 8;9 10 11 12];
min(x)
ans =
     1     2     3     4

對於ND陣列,min(x)將沿第一個非單維進行操作。

 

該函數min(x,y)返回一個數組,該數組的大小與相同,xy帶有x或中的最小元素y。輸入自變量中的任何一個都可以是標量。max,和等功能prod以類似的方式操作。

在工具箱中,AND蘊涵方法執行逐個元素矩陣運算,類似於MATLAB函數min(x,y)

a = [1 2; 3 4];
b = [2 2; 2 2];
min(a,b)
ans = 
    1     2
    2     2

OR蘊涵方法執行逐個元素的矩陣運算,類似於MATLAB函數max(x,y)

創建自定義蘊涵函數

自定義功能含義必須以同樣的方式操作的MATLAB功能maxminprod

以下是自定義蘊涵函數的示例:

function y = customimp(x1,x2)

if nargin==1
    y = prod(x1).^2;
else
    y = (x1.*x2).^2;
end

隱含函數必須支持一個或兩個輸入,因爲該軟件以兩種方式調用該函數:

  • 要使用所有規則的觸發強度和相應的輸出隸屬度函數來計算輸出模糊設定值。在這種情況下,軟件使用兩個輸入來調用蘊涵函數,類似於以下示例:

    impvals = customimp(w,outputmf)
    • w—多個規則的射擊強度,指定爲nr - ns矩陣。在此,nr是規則數,而ns是輸出隸屬函數的樣本數。

      w(:,j) = w(:,1)對於所有jw(i,1)是的發射強度個規則。

    • outputmf—輸出隸屬函數值,指定爲nr - ns矩陣。在此,nr是規則數,而ns是輸出隸屬函數的樣本數。

      outputmf(i,:)包含第個輸出隸屬函數的數據。

  • 對於給定樣本,使用單個規則的觸發強度和相應的輸出隸屬度函數來計算輸出模糊值。在這種情況下,軟件使用一個輸入來調用蘊涵函數,類似於以下示例:

    impval = customimp([w outputmf])

    woutputmf是代表規則的點火強度的標量值以及對應於給定樣本的輸出隸屬函數值。

創建自定義聚合函數

自定義聚合函數必須以相同的方式操作的MATLAB功能maxmin或者prod必須是形式y = customagg(x)

X是一個NV -by- NR矩陣,它是由爲每個規則的含義方法返回截斷輸出功能的列表。nv是輸出變量的數量,nr是規則的數量。聚合方法的輸出是每個輸出變量的一個模糊集。

以下是自定義聚合功能的示例:

function aggfun = customagg(x)
aggfun = (sum(x)/2).^0.5;

創建自定義解模糊功能的準則

自定義解模糊功能的格式必須爲y = customdefuzz(xmf,ymf),其中(xmf,ymf)是隸屬函數值的有限集合。xmf是隸屬函數輸入範圍內的值的向量。YMF是隸屬函數的值XMF

以下是自定義解模糊功能的示例:

 

function defuzzfun = customdefuzz(xmf,ymf)
total_area = sum(ymf);
defuzzfun = sum(ymf.*xmf)/total_area;

指定自定義推理功能的步驟

創建並保存自定義推理函數後,請使用以下步驟在模糊推理過程中指定該函數:

  1. 在“模糊邏輯設計器”的左下方面板中,Custom從下拉菜單中選擇與您要爲其指定自定義函數的推理方法相對應。

 

  1. 此操作將打開一個對話框,您可以在其中指定自定義推斷函數的名稱。

  2. 在“ 方法名稱”字段中,指定自定義推斷函數的名稱,然後單擊“ 確定”

 

  1. 構建模糊推理系統時,自定義函數將替換內置函數。

    注意:    爲了指定自定義推斷功能,必須首先向FIS添加至少一個規則。

  2. 要爲其他推理方法指定自定義函數,請重複步驟1和2。

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