離散論域模糊控制表的離線計算_第1頁
離散論域模糊控制表的離線計算_第2頁
離散論域模糊控制表的離線計算_第3頁
離散論域模糊控制表的離線計算_第4頁
離散論域模糊控制表的離線計算_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

離散論域模糊控制表的離線計算離散論域模糊控制表的離線計算離散論域模糊控制表的離線計算資料僅供參考文件編號:2022年4月離散論域模糊控制表的離線計算版本號:A修改號:1頁次:1.0審核:批準:發(fā)布日期:離散論域模糊控制表的離線計算一、題目已知單變量兩維輸入,一維輸出模糊控制器,其兩維輸入為E,EC,一維輸出為I,論域均為E,EC,I∈{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},E的論域劃分為{NB,NM,NS,NZ,PZ,PS,PM,PB},共8個模糊子集,其各自的隸屬度函數(shù)如表1所示。EC和I的論域劃分為{NB,NM,NS,ZE,PS,PM,PB},共7個模糊子集,它們的隸屬度函數(shù)都如表2所示。已知控制規(guī)則表如表3所示,試求解輸出控制表(如當e=-6,ec=-6時,求輸出i=,最終輸出的控制表格式如如表4所示)。其中輸入采用單點模糊法,輸出清晰量采用加權(quán)平均法進行解模糊,可以用MATLAB編程計算。各變量的隸屬度函數(shù)以及控制規(guī)則表如下:表1輸入變量E的隸屬度函數(shù)表E-6-5-4-3-2-10123456NB00000000NM00000000NS00000000NZ0000000000PZ0000000000PS00000000PM00000000PB00000000表2變量EC和I的隸屬度函數(shù)表-6-5-4-3-2-10123456NB0000000000NM00000000NS00000000ZE00000000PS00000000PM00000000PB0000000000表3控制規(guī)則表ECECIENBNMNSZEPSPMPBNBNBNBNBNBNMZEZENMNBNBNBNBNMZEZENSNMNMNMNMZEPSPSNZNMNMNSZEPSPMPMPZNMNMNSZEPSPMPMPSNSNSZEPMPMPMPMPMZEZEPMPBPBPBPBPBZEZEPMPBPBPBPB表4輸出控制表(e,ec,i均為清晰量)eeiec-6-5-4-3-2-10123456-6-5-4-3-2-10123456二、基本原理這是一個二輸入、單輸出的模糊控制器的設(shè)計,主要包括輸入模糊化、模糊推理、解模糊等基本過程,現(xiàn)在敘述如下:1、輸入模糊化在本實驗實際過程中采用單點模糊集合的方法實現(xiàn)輸入的模糊化,例如e為離散論域E={-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},則x*=,0的輸入模糊集合可表示為:2、模糊推理設(shè)某一時刻偏差為e*,偏差變化量為ec*,則可根據(jù)由各條規(guī)則給出的模糊蘊含關(guān)系進行合成推理運算,得到相應(yīng)的輸出控制量的模糊值:其中,m和n分別表示e和ec的論域所劃分的模糊自己的個數(shù),在本實驗中,m=8,n=7,對應(yīng)著本題目中規(guī)定的56條控制規(guī)則??刂破髟O(shè)計的核心就是對上式進行編程。3、解模糊本實驗采用加權(quán)平均的方式解模糊,其精確值的計算公式如下:三、實驗程序:實驗最終采用的程序如文件program中所示,和為了說明程序優(yōu)化使用。就本題目而言,三個程序都可以解決問題。是最大最小合成函數(shù),供運行時調(diào)用。各個excel表格說明如下:、、分別為兩個輸入變量以及輸出變量的隸屬度函數(shù)表,用于在MATLAB執(zhí)行程序的時候讀入,為程序運行結(jié)果。本實驗采用的程序如下:%離散論域模糊控制表的離線計算e_domain=-6:6;ec_domain=e_domain;u_domain=e_domain;%隸屬度函數(shù)讀入Input1_Terms_Membership=xlsread('');Input2_Terms_Membership=xlsread('');Output_Terms_Membership=xlsread('');Rule=xlsread('');%語言規(guī)則錄入%如果論域長度和隸屬度函數(shù)列數(shù)不同,程序報錯iflength(e_domain)~=size(Input1_Terms_Membership,2)fprintf('Error!Pleaseinputthemembershipofinput1again!')endiflength(ec_domain)~=size(Input2_Terms_Membership,2)fprintf('Error!Pleaseinputthemembershipofinput2again!')endiflength(u_domain)~=size(Output_Terms_Membership,2)fprintf('Error!Pleaseinputthemembershipofoutputagain!')endform=1:length(ec_domain)fork=1:length(e_domain)%單點模糊化ec=zeros(1,length(ec_domain));ec(m)=1;e=zeros(1,length(e_domain));e(k)=1;Uo=zeros(1,length(u_domain));fori=1:size(Input1_Terms_Membership,1)forj=1:size(Input2_Terms_Membership,1)a=Input1_Terms_Membership(i,:);b=Input2_Terms_Membership(j,:);c=Output_Terms_Membership(Rule(i,j),:);A1=a'*ones(size(c));B1=ones(size(a'))*c;R1=min(A1,B1);A2=b'*ones(size(c));B2=ones(size(b'))*c;R2=min(A2,B2);%最大-最小合成運算U1a=zeros(size(e,1),size(R1,2));U1b=zeros(size(ec,1),size(R2,2));fors=1:size(e,1)fort=1:size(R1,2)U1a(s,t)=max(min(e(s,:),R1(:,t)'));endendfors=1:size(ec,1)fort=1:size(R2,2)U1b(s,t)=max(min(ec(s,:),R2(:,t)'));endendU1=min(U1a,U1b);Uo=max(Uo,U1);endend%解模糊U(m,k)=sum(u_domain.*Uo)/sum(Uo);endendxlswrite('',U);%將結(jié)果以excel表格的形式給出運行結(jié)果如題目中的表格4所示,各個精確量保留四位小數(shù)。四、程序優(yōu)化及討論1、此程序中各個變量表的輸入都是通過excel實現(xiàn)的。讓MATLAB通過程序從excel表中讀入數(shù)組到工作空間中,同時為了方便查看結(jié)果,又將結(jié)果寫到excel表中。這樣,我們在設(shè)計一個二輸入單輸出的模糊控制器時,只需要在四個excel表中輸入相應(yīng)的數(shù)值,而不需要進行程序的修改,唯一需要修改的就是各個變量的論域。整個程序的適應(yīng)性還是比較強的,具有通用性。但付出的代價就是計算時間的延長,而時間延長的主要部分就花費在讀取excel表上:>>tic;Input1_Terms_Membership=xlsread('');tocElapsedtimeisseconds.可以看出,每讀一個excel表,就要花費約的時間。然而,這對一些數(shù)據(jù)量比較多的隸屬度函數(shù)表來說是有利的,我們可以將隸屬度函數(shù)表以excel的表格儲存起來,直接調(diào)用,從而免去了在每次執(zhí)行程序的時候在程序中修改輸入量或者計算一個模糊控制器就新建一個新程序,這樣對提高工作效率和程序的通用性還是有很大幫助的。同時,我們也不需要擔心輸出的結(jié)果在MATLAB關(guān)閉以后就丟失,可以直接儲存在excel表中。本實驗采用的程序時間復(fù)雜度如下:>>tic;fuc1;toc;Elapsedtimeisseconds.此外,其中求56條規(guī)則的并采用在循環(huán)中每一次都與上一次求并,并且用此次的計算值沖掉上一次的計算值,這樣就節(jié)省了硬件上RAM空間的開銷。2、在最開始的編程中,計算最大最小合成以及蘊含模糊關(guān)系時,我采用了子函數(shù)調(diào)用的方式,這樣可以使得主程序變得簡潔,而如果一個功能相同的程序段在程序中重復(fù)出現(xiàn)時,我們考慮到程序的簡潔性,就采用子程序調(diào)用的方法,但這個方法帶來的代價也是程序調(diào)用花費的時間開銷。這種方法的實現(xiàn)是通過實現(xiàn)的,程序段如下:R1=maxmin(a',c);R2=maxmin(b',c);U1a=maxmin(e,R1);U1b=maxmin(ec,R2);子程序如下:function[T]=maxmin(R,S)%最大最小合成運算T=zeros(size(R,1),size(S,2));fors=1:size(R,1)fort=1:size(S,2)T(s,t)=max(min(R(s,:),S(:,t)'));endendend其時間復(fù)雜度為:>>tic;fuc1_1;tocElapsedtimeisseconds.可見,該方法相比實驗采用的程序,速度要慢。3、如果僅考慮該實驗,而不用考慮程序的通用性,直接在.m文件中輸入各個變量,即略去讀寫excel的過程,同時也不采用子程序調(diào)用的方式,這樣的程序運行速度就要快很多。程序如所示。其時間復(fù)雜度為:>>tic;fuc1_2;tocElapsedtimeisseconds.該程序運行所花費的時間明顯要低很多。4、綜合分析為了程序的通用性,同時考慮到在實際應(yīng)用中,二輸入單輸出的情況居多,因此我采用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論