CHANGE LANGUAGE | Home > Metodi e Strategie > Reti Neurali su .... > Realizzazione Software

Reti Neurali su personal computer e fuzzy logic

Introduzione

Reti Neurali Error Back Propagation

Applicazioni pratiche di una rete neurale EBP

Reti Neurali Autoorganizzanti

Fuzzy Logic e La teoria del Ragionamento sfumato

Dove si Applica la Fuzzy Logic

Fuzzyficazione dell' Input

Valutazione delle Regole

Defuzzyficazione del'output

Realizzazione Software

Applicazioni

Neurfuzz 1.0

Guida al software allegato

Guida agli applicativi

Bibliografia in lingua Inglese

Reti neurali su Personal Computer e Fuzzy Logic: Fuzzy Logic e La teoria del Ragionamento sfumato

Realizzazione Software

La realizzazione software di un sistema a regole basato su ragionamento sfumato non è particolarmente difficile in quanto non presenta particolari difficoltà tecniche. Naturalmente a seconda del tipo di applicazione che può avere esigenze di velocità esecutiva o meno, si potranno scegliere soluzioni differenti sia dal punto di vista strettamente teorico relativo alla scelta delle funzioni, sia dal punto di vista della programmazione. Quando si progetta un sistema fuzzy bisogna tenere presente alcuni passi fondamentali :

1) definizione delle classi per ogni variabile di ingresso

2) definizione delle classi per ogni variabile di uscita

3) definizione della forma che descrive il "degree of membership" e delle formule da usare per fuzzyficazione e defuzzyficazione (decidendo anche se utilizzare una normalizzazione dei dati)

4) definizione delle regole di base del motore decisionale

5) realizzazione del programma in modo che sia possibile aggiungere regole e modificare i limiti delle classi molto facilmente.

6) test del programma sul problema e sintonizzazione del sistema sul risultato desiderato tramite operazioni successive di affinamento tipo aggiunta/modifica di nuove regole e modifica dei limiti delle classi (talvolta anche ridefinizione del numero di classi presente sul range di una variabile)

Questo ultimo passo è senza dubbio il più difficile e il più lungo, tanto che ultimamente sono stati realizzati sistemi che permettono di sintonizzare un sistema fuzzy sulla soluzione del problema tramite reti neuronali e sono in fase di studio anche sistemi che cercano di pilotare la evoluzione di un fuzzy_system tramite algoritmi genetici, cioè algoritmi che seguono i principi della teoria di Darwin. Dal punto di vista strettamente inerente la tecnica di programmazione credo che le soluzioni stilistiche possano essere ben differenziate anche a seconda dell utilizzo o meno di un linguaggio object oriented come il c++: in ogni caso uno schema di base da seguire può essere quello seguente.

dati definiti in partenza:

float inp_class_min[n][m] (vettore con limiti minimi di m classi su n input)

float inp_class_max[n][m] (vettore con limiti massimi di m classi su n input)

float out_class_min[n][m] (vettore con limiti minimi di m classi su n output)

float out_class_max[n][m] (vettore con limiti massimi di m classi su n output)

programma:

per ogni input

{ leggi il valore fuzzyficazione: per ogni classe { if (min < valore < max) calcola grado appartenenza } }

per ogni regola

{ if(ipotesi input) imposta tesi output con grado di forza associato }

defuzzyficazione: per ogni output { calcola i conflitti con il "gravity center method" }

 

Luca Marchese

PerformanceTrading.it ed il suo contenuto sono di esclusiva proprietà degli autori. E' vietata la riproduzione anche parziale di qualsiasi parte del sito senza autorizzazione, compresa la grafica e il layout. Prima della consultazione del sito leggere il disclaimer nella sezione [info].