MATLAB -Funktionen und -Anwendungen

Fakultät Maschinenwesen der TU Dresden Institut für Verfahrenstechnik und Umwelttechnik Professur Verfahrensautomatisierung Ausgewählte MATLAB1-Funk...
Author: Julia Albert
22 downloads 1 Views 2MB Size
Fakultät Maschinenwesen der TU Dresden Institut für Verfahrenstechnik und Umwelttechnik Professur Verfahrensautomatisierung

Ausgewählte

MATLAB1-Funktionen und -Anwendungen zur Nutzung in der Lehrveranstaltung “Experimentelle Prozessanalyse“

Stand: 09. 04. 2015

1 ®

Matlab® R2014a + Toolboxes (Statistics-TB, Fuzzy-TB) The MathWorks, Inc.

-2-

1. Matlab-Komponenten zur statistischen Datenanalyse und Modellierung 1.1. Laden von Daten in den Workspace Der Menüpunkt Import Data im Filemenü startet den Import Wizard. Die Daten werden unter dem Filenamen (ohne Erweiterung) im Workspace abgelegt. Im folgenden seien Daten unter den Variablen x, y (Vektoren) und daten (Datenmatrix) bzw. in den Beispielen unter Auto und Schokvm verfügbar. Die Workspace-Variablen können über den Menüpunkt Save Workspace as ... im Filemenü als Matlab-File (Standarderweiterung .mat) gespeichert und über Open im Filemenü wieder eingelesen werden.

1.2. Statistische und empirische Kennwerte -

mean(x) median(x) var(x) std(x) range(x) iqr(x) corrcoef(daten) corrcoef(x,y) zscore(daten) prctile(x,q)

Mittelwert Median Streuung Standardabweichung Spanne (= xmax - xmin ) Interquartilspanne (F-Spread) Korrelationsmatrix R entspricht corrcoef([x y]) Normierung auf Mittelwert 0 und Streuung 1 Quantile der Ordnung q

1.3. Statistical Plots * Box-Plot-Darstellungen -

boxplot(daten) boxplot(daten(:,m1:m2),notch,...,‘symbol‘,...,’orientation’,...) Merkmale (Spalten der Datenmatrix) m1 bis m2 werden dargestellt; notch = ‘on’: „eingekerbtes“ Boxplot notch = ‘off’: rechteckiges Boxplot (Standard) symbol: Plot-Symbol für Ausreißer (Standard ´r+´) orientation=’horizontal’: horizontales Boxplot orientation=’vertical’: vertikales Boxplot (Standard)

-3Beispiel:

boxplot(Schokvm(:,6:9),’notch‘,’on’,’symbol’,’*‘,’orientation’,’horizontal’)

* Histogramme -

hist(x,p) Histogramm mit p Balken histfit(x,p) wie oben, aber zusätzlich wird die zugehörige Normalverteilung eingeblendet

Beispiel:

histfit(Schokvm(:,6),20)

-4* Scattergramme -

scatter(x,y) X-Y-Plot gscatter(x,y,group,‘clr‘,‘sym‘,siz) group: Gruppierungsvariable (Vektor der gleichen Länge wie x und y) clr: Farbstring-Vektor sym: Plotsymbol-Vektor siz: Markergröße

Beispiel:

-

gscatter(Schokvm(:,1),Schokvm(:,6),Schok3,‘rgb‘,‘+*o‘,8) (Schok3 enthält die Klassennummern einer 3-Klassenlösung)

plotmatrix(daten(:,m1:m2),daten(:,m3:m4)) Matrix aus Scatterplots, sonst wie scatter plotmatrix(daten,[]) alle paarweisen X-Y-Plots aus daten auch als gplotmatrix entsprechend gscatter

Beispiel:

plotmatrix(Schokvm(:,1:3),Schokvm(:,6:9))

-51.4. Hauptkomponenten- und Faktorenanalyse -

[coeff, score, ew] = princomp(X) X: coeff: score: ew:

-

n × m - Datenmatrix m × m - Matrix der Hauptkomponenten (Transformationsmatrix) n × m - die in den Raum der HK transformierte Datenmatrix Vektor der Eigenwerte

fakt = factoran ( X, p, ‘rotate’, rot) X: p: rot:

Hauptkomponentenanalyse

n × m - Datenmatrix Anzahl der Faktoren Rotationsverfahren:

Faktorenanalyse

‘none’: ‘varimax’:

keine Rotation Varimax-Rot. (Standard)

fakt: Ladungsmatrix

1.5. Multiple quasilineare Regression -

[b,bint,r,rint,stats] = regress(y,X) y: n × 1 - Vektor der Ausgangsgröße (Regressand) X: n × p - Matrix der Regressoren (s.Bemerkung unten) b: nach MkQ geschätzter Parametervektor des parameterlinearen Modells bint: Vektor der 95%-Konfidenzintervalle [bint(:,1),bint(:,2)] für b r: Residuenvektor rint: Vektor der 95%-Konfidenzintervalle für r stats(1):Bestimmtheitsmaß Achtung: X muss alle Regressoren enthalten, einschließlich des konstanten Terms im Ansatz! Bei rein linearen Modellen sollte deshalb wie folgt vorgegangen werden: X = [ones(size(daten,1),1) daten] (dies erzeugt die um die „Einser-Spalte“ erweiterte Datenmatrix). Das Anfügen quadratischer Terme geht dann z.B. sehr elegant durch folgenden Befehl: XQ = [X daten .* daten] Neben dieser Variante können auch Funktionen zur Konstruktion von Versuchsplanmatrizen für das Aufstellen der Regressorenmatrix herangezogen werden: X = x2fx(daten) für das lineare Modell bzw. X = x2fx(daten,‘model‘) für andere Modelle, und zwar ´model‘ = ´interaction‘ konstanter Term, lineare Terme und einfache Wechselwirkungen ´model‘ = ´quadratic‘ konstanter Term, lineare und quadratische Terme und einfache Wechselwirkungen ´model‘ = ´purequadratic‘ konstanter Term, lineare und quadratische Terme.

-6Beispiel: X = [ones(size(Schokvm,1),1) Schokvm(:,1:5)]; [b,bint,r,rint,stats] = regress(Schokvm(:,6),X); plot(r,‘*‘); % einfache Residuendarstellung (Plot links) % oder rcoplot(r,rint); % spezielle Residuendarstellung (Plot rechts) % Konfidenzintervalle, die Null nicht enthalten, könnten auf % Ausreißer deuten

-

stepwise(X,y)

Interaktives Tool zur schrittweisen Regression

X: n × p - Matrix der (potentiellen) Regressoren (ohne „Einserspalte“) y: n × 1 - Vektor der Ausgangsgröße (Regressand) Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme von Termen ins Modell bzw. des Streichens aus dem Modell. Koeffizienten sind nicht signifikant von Null verschieden (und sollten deshalb aus dem Modell eliminiert werden), wenn ihr Konfidenzintervall Null enthält. Ein Mausklick auf die Konfidenzintervall-Linie führt zur Änderung des Status des betreffenden Koeffizienten (im Modell vorhanden - blau dargestellt - oder nicht vorhanden - rot dargestellt - ). Bei stark unterschiedlicher Größenordnung der Einflussgrößen (und damit in der Regel auch der Koeffizienten) ist zur Verbesserung der visuellen Beurteilung im Menüpunkt “Stepwise” der Schalter Scale Inputs zu setzen. Achtung: Das Regressionsmodell enthält hier automatisch auch den konstanten Term, ohne dass dieser angezeigt wird oder exportiert werden kann. Also liefert regress(y,[ones(size(daten,1),1) daten]) die gleichen Ergebnisse wie stepwise(daten,y).

-7Beispiel: stepwise([Schokvm(:,1:5) Schokvm(:,1:5).*Schokvm(:,1:5)], Schokvm(:,6)); % Ansatz aus konst., lin. + quadr. Termen der Einflussgroessen; % Ergebnisfenster zeigen die Signifikanz der ersten Einflussgroesse (linear + quadr.);

-

rstool(X,y)

Interaktives graphisches Tool zur Regression

X: n × m - Matrix der Eingangsgrößen (Achtung: nicht aller Regressoren) y: n × 1 - Vektor der Ausgangsgröße (Regressand) generiert ein rein lineares Regressionsmodell mit konstantem Term -

rstool(X,y,‘model‘)

generiert verschiedene Standardmodelle (vgl. x2fx-Funktion auf Seite 7)

-8Möglichkeiten im Graphikfenster: ° Vorhersage von Werten bei interaktiver Veränderung der Werte der Eingangsgrößen ° Änderung der Modellstruktur ° Export der Ergebnisse (Parameter, Residuen, RMSE = root mean squared error)

Beispiel: rstool(Schokvm(:,1:5) , Schokvm(:,6) , ‘purequadratic‘); % Ansatz aus konst., lin. + quadr. Termen der Einflussgroessen; % Ergebnisfenster zeigt die Signifikanz der ersten Einflussgroesse;

1.6. Parameter-nichtlineare Regression -

[b,res] = nlinfit(X,y,‘model‘,bstart) X: n × m - Matrix der Eingangsgrößen y: n × 1 - Vektor der Ausgangsgröße (Regressand) ´model‘: String, der den Namen der nichtlinearen Funktion enthält bstart: Anfangsschätzung für die Parameter b: MkQ-Schätzung für die Parameter res: Residuenvektor

-9-

nlintool(X,y,‘model‘,bstart) interaktives graphisches Tool zur nichtlinearen Regression (analog rstool) Möglichkeiten im Graphikfenster: ° Vorhersage von Werten bei interaktiver Veränderung der Werte der Eingangsgrößen ° Export der Ergebnisse (Parameter, Residuen, RMSE = root mean squared error)

Beispiel: [b,res] = nlinfit(Schokvm(:,1:2),Schokvm(:,6),‘nilifun‘,[1 1 1]); ---------unter nilifun.m sei dabei untenstehende Datei abgelegt, die folgenden nichtlinearen Zusammenhang zwischen der Ausgangsgröße y und dem zweidimensionalen Eingangsgrößenvektor x beschreibt:

function y = nilifun(bstart,x); y = exp(bstart(1) * x(:,1).*x(:,2)+ bstart(2)*x(:,2)) ./ ( x(:,1) + bstart(3)* x(:,2));

1.7. Clusteranalyse * Berechnung von Abstandsmaßen -

y = pdist(X,‘metric‘)

Berechnung der paarweisen Abstände der Datensätze zueinander

X: y:

n × m - Datenmatrix n(n-1)/2 × 1 - Vektor der paarweisen Abstände in der Reihenfolge (1,2), (1,3), ..., (1,n), (2,3), ..., (n-1,n) ‘metric‘ = ‘Euclid‘: Euklidische Metrik (L2 ) - Standard = ‘CityBlock‘: Manhattan-Metrik (L1 ) = ‘Mahalanobis‘: Mahalanobis-Metrik -

squareform(y)

zugehörige Matrixdarstellung

Beispiel: D = squareform(pdist(Schokvm(1:5,:))); % Berechnung der Distanzmatrix (Euklidische Metrik) für die ersten fünf Datensätze % der Schokoladen-Daten liefert folgendes Ergebnis: D= 0 40.9530 181.2837 92.2334 50.7375

40.9530 0 141.2411 52.7421 12.0829

181.2837 141.2411 0 89.1020 134.1581

92.2334 52.7421 89.1020 0 47.2738

50.7375 12.0829 134.1581 47.2738 0

-10* KMEANS-Verfahren -

[cnr, cmw, var] = kmeans(X, k, ’replicates’, p, ’options’,...) X: n × m - Datenmatrix k: Klassenanzahl cnr: Vektor der Klassennummern cmw: k × m - Matrix der Klassenschwerpunkte var: Vektor der Klassenvarianzen p: Anzahl der Wiederholungen mit verschiedenen zufälligen Startpartitionen options: verschiedene Einstellungen bzgl. der Ergebnisausgabe (s. Beispiel)

Beispiel: [cnr, cmw, sum]=kmeans(AUTO,3,'replicates',10,'options',statset('Display', 'final')) % liefert folgende Ergebnisse: 5 iterations, total sum of distances = 24.8462 4 iterations, total sum of distances = 24.8462 7 iterations, total sum of distances = 24.8462 5 iterations, total sum of distances = 24.8462 11 iterations, total sum of distances = 24.8462 12 iterations, total sum of distances = 24.8462 5 iterations, total sum of distances = 24.8462 5 iterations, total sum of distances = 24.8462 6 iterations, total sum of distances = 24.8462 5 iterations, total sum of distances = 24.8462 cnr = 3 3 1 3 3 1 3 3 3 3 3 1 3 3 3 2 2 2 2 2

-11cmw = 4.8333 2.2600 2.1083

2.8667 5.4000 3.4417

3.8667 3.9200 3.9417

3.3333 5.4600 3.7000

var = 4.8667 5.2120 14.7675

* Agglomerative Clusteranalyse -

Z = linkage(y,‘method‘)

Erzeugen eines hierarchischen Clusterbaumes

y: Z:

Abstandsvektor wie oben angegeben (n-1) x 3-Matrix, wobei die ersten beiden Spalten die Nummern der auf jeder Hierarchiestufe verschmelzenden Klassen enthalten, die dritte Spalte das zugehörige Abstandsniveau der beiden Klassen. Die neu entstehenden Klassen werden dabei von n+1 beginnend durchnumeriert. ´method‘ = ‘single‘: Single-Linkage-Verfahren ( Standard ) = ‘complete‘: Complete-Linkage-Verfahren = ‘average‘: Average-Linkage-Verfahren = ‘centroid‘: Centroid-Verfahren = ‘ward‘: Ward-Verfahren

-

[H,T] = dendrogram(Z,p) Z: p: H: T:

Dendrogrammdarstellung

Hierarchischer Clusterbaum wie oben angegeben Anzahl der maximal angezeigten letzten Hierarchieebenen (Standard: 30); für p = 0 werden alle Hierarchieebenen angezeigt. (n-1) x 1-Vektor der Linien-Handles im Dendrogramm (n-1) x 1-Vektor der Klassennummern der Datenmatrix in der p-ten Hierarchieebene

Beispiel: Z = linkage(pdist(Auto),‘complete‘) Z=

7.0000 10.0000 21.0000 1.0000 23.0000 16.0000 4.0000 18.0000

8.0000 15.0000 14.0000 2.0000 11.0000 17.0000 5.0000 19.0000

% liefert folgende Ergebnisse: 0.1732 0.5477 0.5916 0.6083 0.7071 0.7141 0.7937 1.0296

-1222.0000 25.0000 27.0000 6.0000 28.0000 26.0000 31.0000 3.0000 24.0000 37.0000 38.0000 [H,T] = dendrogram(Z,10)

T=

1 1 3 4 4 6 7 7 7 10 7 2 10 7 10 5

13.0000 9.0000 29.0000 12.0000 20.0000 33.0000 30.0000 32.0000 35.0000 36.0000 34.0000

1.1269 1.3304 1.6155 1.6217 1.7029 2.0640 2.2226 2.8036 3.0183 4.9295 6.4552 % zeichnet das Dendrogramm für die % letzten 10 Hierarchiestufen und liefert:

-135 8 8 9

f = find(T==10) f=

-

% liefert die zur Klasse 10 gehörigen Datensatz% nummern:

10 13 15

C = cluster(Z,anz) Z: anz: C:

erzeugt die Klassenstruktur einer ausgewählten Hierarchieebene hierarchischer Clusterbaum im Ergebnis der Linkage-Funktion Klassenanzahl (anz >= 2) n x 1 - Vektor der Klassennummern der anz-Klassenlösung

Beispiel: C = cluster(Z,3); f2 = find(C==2) f2 =

% liefert

3 6 12

1.8. Diskriminanzanalyse - class = classify(daten, trainingsdaten,cnr) daten: trainingsdaten: cnr: class:

p × m - Matrix der Teststichprobe n × m - Matrix der Lernstichprobe Vektor der Klassennummern Vektor der prognostizierten Klassennummern der Teststichprobe

-14-

2. Die GUI-Tools der Fuzzy-Logic-Toolbox Im folgenden sollen die wichtigsten Komponenten, die „Graphical user interface (GUI-) tools“, zum Erstellen von Fuzzy-Produktionsregelsystemen (fuzzy inference systems) erläutert werden. Die Beschreibungen orientieren sich am Fuzzy Logic Toolbox User´s Guide1 und werden anhand des dort verwendeten Beispiels eines Fuzzy-Systems für die Trinkgeldhöhe (tip) in Abhängigkeit vom Bedienservice (service) und der Speisenqualität (food) vorgenommen. 2.1. Der FIS-Editor Der Aufruf des FIS-Editors erfolgt entweder aus den anderen GUI-Tools oder über den Befehl fuzzy oder fuzzy name (bzw. fuzzy(‘name‘) ), wobei name.fis ein bereits in einem Suchpfad existierendes Fuzzy-Inferenzsystem ist. Ist name eine FIS-Variable im Workspace, so erfolgt der Aufruf mit fuzzy(name). Das nachfolgende Bild erscheint nach Eingabe von fuzzy tipper. Input-Variablen (Doppelklick öffnet Membership-Function-Editor)

Systemname (Doppelklick öffnet Rule-Editor)

Output-Variable (Doppelklick öffnet Membership-Function-Editor)

Pop-up-Menüs zur Auswahl der Inferenz- und Defuzzifizierungsmethoden

Statusanzeige

Editierfeld für die Namen der Input- und Outputvariablen

1

© Copyright 1995-1998 by The MathW orks, Inc.

-15Über den Menüpunkt File in der Kopfzeile kann ein neues FIS-System (Mamdani- oder SugenoSystem) angelegt werden, und es können FIS-Systeme (Datei mit Erweiterung .fis) importiert oder exportiert werden. Im Menüpunkt Edit können Variablen gelöscht oder hinzugefügt sowie Membership-Function-Editor (2.2.) und Rule-Editor (2.3.) aktiviert werden. Über View können Rule-Viewer (2.4.) und Surface-Viewer (2.5.) aufgerufen werden.

2.2. Der Membership-Function-Editor Der Aufruf des Membership-Function-Editors erfolgt in der Regel aus den anderen GUI-Tools oder über den Befehl mfedit oder mfedit name (bzw. mfedit(‘name‘) ), wobei name.fis ein bereits in einem Suchpfad existierendes Fuzzy-Inferenzsystem ist. Ist name eine FIS-Variable im Workspace, so erfolgt der Aufruf über mfedit(name). Das nachfolgende Bild erscheint nach Doppelklick auf die Input-Variable service im oben abgebildeten FIS-Editor. Variablenpalette (Auswahl durch Anklicken)

Anzeige der Zugehörigkeitsfunktionen der aktuellen Variable (Auswahl durch Anklicken)

Editierfelder zur Änderung von Wertebereich und dargestelltem Bereich der aktuellen Variablen

Editier- bzw. Auswahlfenster für Name, Typ und Parameter der ausgewählten Zugehörigkeitsfunktion

-16Für die Zugehörigkeitsfunktionen stehen verschiedene Typen zur Verfügung, z. B. Dreiecksfunktionen (trimf), Trapeze (trapmf), Gausskurven (gaussmf, gauss2mf) und andere. Die Form der ausgewählten Zugehörigkeitsfunktion kann neben der Änderung über die Editierfelder auch über das Ziehen mit dem Mauszeiger verändert werden. Die Menüpunkte File und View in der Kopfzeile entsprechen denen im FIS-Editor. Im Menüpunkt Edit können Variablen und Zugehörigkeitsfunktionen gelöscht oder hinzugefügt sowie FIS-Editor (2.1.) und Rule-Editor (2.3.) aktiviert werden. 2.3. Der Rule-Editor Der Aufruf des Rule-Editors erfolgt in der Regel aus den anderen GUI-Tools oder über den Befehl ruleedit oder ruleedit name (bzw. ruleedit(‘name‘) ), wobei name.fis ein bereits in einem Suchpfad existierendes Fuzzy-Inferenzsystem ist. Ist name eine FIS-Variable im Workspace, so erfolgt der Aufruf über ruleedit(name). Das nachfolgende Bild erscheint nach Aufruf des RuleEditors zum angegebenen Beispiel. Auswahlmenüs für die Werte der Input- und Outputvariablen

Wahl des Wichtungsfaktor VerknüpfungsOperators

Liste der aktuellen Regeln

Negationsschalter

Buttons zum Hinzufügen, Löschen oder Ändern von Regeln

-17Die Menüpunkte File und View in der Kopfzeile entsprechen denen im FIS-Editor. Im Menüpunkt Edit können FIS-Editor (2.1.) und Membership-Function-Editor (2.2.) aktiviert werden. Im Menüpunkt Option können die Sprache der Regelsyntax (englisch, deutsch, französisch) und das Format der Regeldarstellung ausgewählt werden.

2.4. Der Rule-Viewer Der Aufruf des Rule-Viewers erfolgt in der Regel aus den anderen GUI-Tools oder über den Befehl ruleview oder ruleview(‘name‘), wobei name.fis ein bereits in einem Suchpfad existierendes Fuzzy-Inferenzsystem ist, bzw. ruleview(name), falls name eine FIS-Variable im Workspace ist. Das nachfolgende Bild erscheint nach Aufruf des Rule-Viewers zum angegebenen Beispiel.

Anzeige des Erfülltheitsgrades der RegelInputs für jede Regel; die Linien zeigen den aktuellen Wert der Input-Variablen

Editierfeld zur Eingabe der Werte der InputVariablen

Statuszeile

Anzeige des Erfülltheitsgrades des Regel-Outputs für jede Regel

Buttons zum Verschieben der Plots

Aggregierter Output; die Linie zeigt den defuzzifizierten Wert

-18Jede Zeile der Plots repräsentiert eine Regel. Beim Anklicken einer Zeilennummer erscheint die entsprechende Regel in der Statuszeile. Die Werte der Input-Variablen können neben der Eingabe über das Editierfeld auch über das Verschieben der aktuellen Werte-Linien mit dem Mauszeiger verändert werden. Der Menüpunkt File in der Kopfzeile entspricht dem im FIS-Editor. Im Menüpunkt Edit können FIS-Editor (2.1.), Membership-Function-Editor (2.2.) und Rule-Editor (2.3.) aktiviert werden; im Menüpunkt View der Surface-Viewer (2.5.). Im Menüpunkt Option kann das Format der Regeldarstellung ausgewählt werden. 2.5. Der Surface-Viewer Der Aufruf des Surface-Viewers erfolgt in der Regel aus den anderen GUI-Tools oder über den Befehl surfview oder surfview(‘name‘), wobei name.fis ein bereits in einem Suchpfad existierendes Fuzzy-Inferenzsystem ist, bzw. surfview(name), falls name eine FIS-Variable im Workspace ist. Das nachfolgende Bild erscheint nach Aufruf des Surface-Viewers zum angegebenen Beispiel. 3D-Darstellung des Outputs in Abhängigkeit von einem oder zwei ausgewählten Inputs ( Mit der Maus können die Achsen rotieren! )

Popup-Menüs zur Auswahl der Inputs

Editierfelder für die Gitterdichte

Werteeingabe für nicht dargestellte Inputs

Popup-Menü zur Auswahl des Outputs

-19Die Menüpunkte File und Edit in der Kopfzeile entsprechen denen im Rule-Viewer. Im Menüpunkt View kann der Rule-Viewer (2.4.) aktiviert werden. Im Menüpunkt Option können PlotOptionen (Surface, Mesh, Contour, ...) und die Farbpalette festgelegt werden.

2.6. Der ANFIS-Editor Im ANFIS-Tool (adaptive neuro-fuzzy inference system) können Fuzzy-Produktionsregelsysteme für die datengestützte Modellierung entwickelt werden. Bei gegebener Datenmatrix wird ein Fuzzy-Inferenzsystem (FIS) aufgebaut, bei dem die Parameter der Zugehörigkeitsfunktionen in einem Lernverfahren an die Daten angepasst werden. Für die Optimierung werden die aus den Techniken der Neuronalen Netze bekannten Verfahren des Backpropagation-Algorithmus (auch in Kombination mit der Methode der kleinsten Fehlerquadrate) eingesetzt. Gegenüber dem FIS-Modul hat ANFIS folgende Beschränkungen: nur Systeme vom Sugeno-Typ nullter oder erster Ordnung möglich (Regeloutputs: Konstanten oder lineare Funktionen in den Inputs) Single-Output-Systeme gewichteter Mittelwert als Defuzzifizierungsmethode Wichtungsfaktor aller Regeln ist Eins. Die Datenmatrix (File mit Standarderweiterung .dat) muss die Daten in üblicher Form enthalten, in den ersten Spalten die Eingangsgrößen; die letzte Spalte ist zwingend die Ausgangsgröße. Gegebenenfalls sollte eine Aufteilung in Teststichprobe und Lernstichprobe erfolgen, um die Güte des Modells bewerten zu können. Achtung !

Die Anzahl der Optimierungsparameter hängt von der Anzahl der Eingangsgrößen, der Anzahl ihrer Werte (Zugehörigkeitsfunktionen) und vom Typ der Zugehörigkeitsfunktion (Anzahl der benötigten Parameter) ab. So kann schnell ein äußerst hochdimensionales Optimierungsproblem entstehen. Beispiel: - nur 3 Eingangsgrößen mit je 3 Werten, beschrieben über Trapeze, - 1 Ausgangsgröße als lineare Funktion - ergeben 144 Parameter, nämlich 3 x 3 x 4 = 36 nichtlineare für die Beschreibung der Trapeze und 3 x 3 x 3 x (3+1) = 108 lineare für die Sugeno-Ausgangsfunktion der 3 x 3 x 3 = 27 Regeln (jede mögliche Kombination der Eingangsgrößenwerte ergibt eine Regel).

Der Aufruf des ANFIS-Editors erfolgt über den Befehl anfisedit oder anfisedit name (bzw. anfisedit(‘name‘) ), wobei name.fis ein bereits in einem Suchpfad existierendes, für ANFIS geeignetes Fuzzy-Inferenzsystem ist. Ist name eine entsprechende FIS-Variable im Workspace, so erfolgt der Aufruf mit anfisedit(name). Das nachfolgend gezeigte Bild erscheint nach Eingabe von anfisedit und dem Einlesen der Trainingsdaten. Es handelt sich dabei um ein einfaches Beispiel aus der Fuzzy-Toolbox mit 25 Datensätzen und einer Einflussgröße.

-20Plotfeld mit Anzeige der Outputs

Laden der Daten nach Auswahl von Typ und Quelle

Wahl der graphischen Anzeige der FIS-Struktur

Erzeugen einer FIS-Struktur (Untermenü)

Editierfelder für Fehlerschranke und Anzahl der Lernschritte

Auswahl der Optimierungsmethode

Die Menüpunkte File, Edit und View in der Kopfzeile entsprechen denen im FIS-Editor. Es ist zu beachten, dass nur FIS-Strukturen geladen werden können, die den angegebenen Beschränkungen von ANFIS genügen. In der Regel wird der Ablauf der Modellierung aber mit dem Laden der Daten (Trainingsdaten) beginnen und die zugehörige FIS-Struktur im Editor interaktiv entworfen. Dies geschieht in folgenden Schritten: -

Auswahl der Anfangspartitionierung der Eingangs- und Ausgangsvariablen durch Wahl von * Grid Partition, die gleichabständige Aufteilung, oder * Subtractive Clustering, eine natürliche Gruppierung, die aus den Daten mittels eines einfachen Clusteranalyseverfahrens gewonnen wird. Die im Untermenü abgefragten Parameter sollten dabei mit ihren Standardwerten übernommen werden.

-21-

Aufruf des Untermenüs zum Erzeugen der FIS-Struktur über den Generate FIS...Button. Es erscheint folgendes Bild: Hier können die Anzahl der Zugehörigkeitsfunktionen für jede Input-Variable (hier 3 ZGF für die eine Variable), ihr Typ (hier Dreiecksfunktionen) und der Typ der Outputfunktion (hier eine Konstante) festgelegt werden. Nach der Generierung der FISStruktur kann diese durch Anwahl des Buttons Structure im ANFISEditor angezeigt werden. Für das angegebene Beispiel ergibt sich dann folgendes Bild:

Die Verknüpfungsoperatoren der Regeln sind an den unterschiedlichen Farben der Knoten (blau: AND, rot: OR) bzw. Verbindungslinien (grün: NOT) zu erkennen. Beim Anklicken eines Knotens wird die Systemgröße angezeigt, die er in der Struktur symbolisiert (z.B. Input1, Mf 3 für den weißen Knoten links unten).

Danach schließt sich die Lernphase des Optimierungsalgorithmus an. Dies geschieht in folgenden Schritten: -

Auswahl des Optimierungsalgorithmus (hybrid oder backpropagation) Eingabe der Fehlerschranke (Null empfohlen) Eingabe der Anzahl der Lernschritte Anklicken des Train Now -Buttons

-22Danach wird im Plot-Fenster des ANFIS-Editors der Optimierungsfehler während des Lernprozesses graphisch dargestellt. Wenn sich der Fehler nicht mehr signifikant verringert, sollte der Lernvorgang beendet werden. Durch Anklicken des Test Now -Buttons wird nun die Testphase des Fuzzy-Produktionsregelsystems aktiviert. Für die oben angegebenen Einstellungen ergibt sich nach 160 Lernschritten zum Beispiel folgendes Bild:

Danach können z.B. Testdaten geladen, und das Fuzzysystem kann auf diese angewendet werden. Bei nicht befriedigender Übereinstimmung kann der Lernvorgang wiederholt werden, ggf. ist eine neue FIS-Struktur zu generieren. Vor der Bearbeitung eines neuen Problems ist der ANFIS-Editor neu aufzurufen; ein Betätigen der Clear-Schalter reicht dafür nicht.