Articoli Manifesto Tools Links Canali Libri Contatti ?
Logica Fuzzy

FuzzyWorld: un framework per oggetti fuzzy (seconda parte)

Abstract
Cos'è la logica fuzzy e cos'è FuzzyWorld.
Data di stesura: 11/01/2002
Data di pubblicazione: 11/01/2003
Ultima modifica: 04/04/2006
di Lorenzo Schiavina Discuti sul forum   Stampa

Cos'è la logica fuzzy

La logica fuzzy è una estensione della logica classica, che viene trattata come caso particolare di questo tipo di logica.

La L.F. si differenzia dalla logica classica per due aspetti fondamentali:

  • L'eliminazione del principio del terzo escluso, secondo il quale ogni proposizione è vera o falsa, ma non entrambe le cose
  • L'appartenenza di una entità ad un insieme con un grado (valore fra 0 e 1 compresi) anzichè un valore binario (0 = non appartiene, 1 = appartiene)

Alla sua nascita, probabilmente anche a ragione del nome, la L.F. ebbe una cattiva accettazione da parte del mondo scientifico, che spesso la riteneva un inutile doppione della statistica.

Tra l'altro, il significato inglese di "fuzzy" è quello di "confuso, non chiaro"; inoltre, nei paesi anglosassoni il termine fuzzy era associato ad uno scioglilingua per bambini che diceva: "Fuzzy Wuzzy was a bear; Fuzzy Wuzzy had no hair; Fuzzy Wuzzy wasn't very fuzzy, was he ?". Come si vede, la scelta del nome può far diventare grandi prodotti mediocri o ridurre l'importanza di quelli rilevanti!

Poi, le applicazioni (soprattutto nel mondo orientale), hanno dimostrato l'interesse pratico che questo approccio può produrre.

Secondo B. Kosko, l'accettazione della L.F. nel mondo orientale è favorita dal buddismo e ostacolata nel mondo occidentale dall'abitudine alla logica aristotelica.
L'interesse applicativo non è di certo diminuito da risvolti tecnici che generano talvolta conseguenze implausibili: ad esempio, se due uomini sono ricchi allo stesso grado e se è mezzo vero dire di uno di loro che è ricco, è mezzo vero dire che uno è ricco e l'altro no.

La L.F. è ormai una vera e propria teoria, orientata soprattutto ad affrontare il problema della vaghezza del linguaggio umano e ad offrire un supporto per una sua matematicizzazione, in grado di fare entrare in modo rigoroso il problema dell'incertezza associata al mondo reale.

Si osservi che l'incertezza e la probabilità sono due concetti assolutamente differenti; l'incertezza, infatti, nasce dall'ambiguità di situazioni attuali, che può essere rimossa solamente ricorrendo ad approfondimenti che spesso contribuiscono a rendere più complesso il problema anzichè risolverlo, mentre la probabilità comporta valutazioni sull'accadimento di eventi futuri che talvolta non si verificheranno neppure.

Al fine del problema di formulare un modello della realtà mediante l'approccio ad oggetti, appare quindi evidente che la L.F. è, quanto meno, uno strumento promettente.

Purtroppo, proprio per i suoi contenuti tecnici e scientifici, la L.F. è tutt'altro che semplice da padroneggiare e manovrare da parte di una persona non specializzata.

Da queste osservazioni nasce il progetto FuzzyWorld.

Cos'è FuzzyWorld

FuzzyWorld è semplicemente un'estensione della tecnologia ad oggetti alla L.F.; tutta la teoria dei fuzzy sets è riportata in classi che permettono l'utilizzo della L.F. senza preoccuparsi dei dettagli ma solo del suo utilizzo.

FuzzyWorld realizza i seguenti aspetti della L.F.

  • Il trattamento delle variabili letterali, cioè delle variabili che oltre a presentare valori numerici sono caratterizzate da descrizioni in linguaggio naturale
  • Il trattamento dei fuzzy set che caratterizzano le variabili letterali; come detto, i fuzzy set permettono concetti di appartenenza che estendono la logica tradizionale
  • L'algebra associata a questo tipo di logica
  • La trasformazione dei valori numerici tradizionali che misurano le variabili letterali in gradi di appartenenza ai fuzzy set relativi
  • Inoltre, dato che un sistema fuzzy è una forma particolare di rete neurale (Neural Network), in FuzzyWorld è possibile addestrare il sistema sviluppato mediante le copie di osservazioni / conclusioni osservate nel passato

Il vero valore applicativo della teoria dei fuzzy set non è costituito tuttavia dalla sua struttura logica, ma dal fatto che i suoi elementi sono particolarmente adatti a costruire sistemi esperti in grado di controllare una grandissima quantità di fenomeni.

Con il termine sistema esperto si intende un complesso di programmi in grado di risolvere problemi applicativi come (più o meno) potrebbe risolverli un esperto umano.

Un sistema esperto (che in genere viene incluso fra le applicazioni tipiche dell'Intelligenza Artificiale), si differenzia dai tradizionali programmi perchè non solo è capace di trattare i dati, ma è altresì in grado di generare conclusioni sulla base di una logica associata al problema da risolvere.

La parte "intelligente" del S.E. è il motore inferenziale, che è costituito da una serie di regole che vengono applicate alle varie situazioni.

Queste regole vengono presentate mediante una struttura "SE ? ALLORA ?" (IF ? THAN ?), dove il SE (antecedente) è una condizione rilevabile nella realtà e ALLORA (conseguente) è l'azioni più adatta (come suggerirebbe l'esperto umano) alla circostanza rilevata.

I S.E. che utilizzano la logica classica, sono stati usati per parecchi anni, dando risultati assai controversi.

Con l'utilizzo della logica classica, la creazione di un motore inferenziale è un problema tutt'altro che trascurabile, data la difficoltà di esprimere l'ambiguità del mondo in regole capaci di controllarlo: alle difficoltà tipiche del problema, vengono associate difficoltà di formulazione, che talvolta richiedono conoscenze matematiche e statistiche spesso di grado assai elevato.

L'utilizzo della L.F. non annulla naturalmente la difficoltà del problema, ma ne rende assai più maneggevole la rappresentazione con un approccio assai simile al linguaggio corrente utilizzato dall'esperto.

Si osservi che "linguaggio corrente" e "linguaggio naturale" sono due concetti non necessariamente coincidenti.

La L.F. permette infatti di esprimere il sistema da controllare in modo più diretto, facilitando la formulazione delle regole che costituiscono il motore inferenziale in modo strutturalmente piuttosto simile alla formulazione che l'esperto umano (la cui conoscenza deve essere trasferita nel S.E.) utilizza nella formulazione non legata alla tecnologia dei S.E.

FuzzyWorld permette la formulazione di questi tipi di sistemi ed offre la possibilità di controllare (ed utilizzare) il sistema descritto mediante la L.F. attraverso un S.E.

Apposite classi permettono all'utente di formulare sia il proprio motore inferenziale mediante un insieme di regole "SE ? ALLORA ..", sia la base di conoscenza, costituita dalla descrizione del sistema (le variabili letterali ed i fuzzy sets).

Dal punto di vista della tecnologia dei F.S., l'ambiente di FuzzyWorld costituisce quello che in letteratura viene identificato come un sistema di fuzzificazione / defuzzificazione.

L'utente si limita a fornire sia valori "tradizionali" (crisp) che valori fuzzy per le variabili letterali di input, che serviranno per la fase di fuzzificazione.

Nella fase di fuzzificazione, il sistema trasforma i valori forniti dall'utente in gradi appartenza ai relativi fuzzy sets e da questi, applicando l'algebra propria della L.F. viene determinata la forza di applicazione dell'antecedente al conseguente.

Si noti che il trattamento dell'ambiguità tipica della L.F. permette di applicare (eventualmente) una pluralità di regole per ogni valore di input fornito: l'applicazione della regola avviene con una forza proporzionale al grado di appartenenza al fuzzy sets, in modo tale che i conseguenti sono calcolabili come una pesatura dei risultati di input.

Una volta determinate le conseguenze, queste possono essere trasformate in un nuovo valore crisp (defuzzificazione), che può essere eventualmente utilizzato come input per successive elaborazioni.

Come detto, in circostanze particolari (verificate nel nostro modello) un sistema fuzzy a regole è una forma di rete neurale a tre livelli.

In FuzzyWorld è quindi possibile addestrare il sistema mediante una serie di casi già verificati, in modo tale che le regole vengano generate direttamente dal sistema secondo un approccio DI-RO (Dati Input - Rules Out)

FuzzyWorld nasconde totalmente l'aspetto tecnico e computistico associato al ciclo precedentemente descritto e permette all'utente di concentrarsi sugli aspetti di rilievo (dal suo punto di vista) del sistema da modellizzare.

Gli oggetti aventi un comportamento fuzzy ereditano dalla classe FuzzyObject, che è la classe di livello massimo della gerarchia; gli oggetti con comportamento fuzzy dell'utente sono sottoclassi di FuzzyObject e possono contenere variabili di istanza che permettano di unire comportamenti "tradizionali" e comportamenti fuzzy.

L'oggetto fuzzy generato può disporre di regole di comportamento, per cui questo oggetto rappresenta uno specifico S.E. del proprio dominio modellizzato dalla classe e appare, rispetto ad un osservatore esterno, "intelligente".

La classe FuzzyObject non è una classe astratta, in quanto è il modello di una interfaccia grafica che permette la generazione di sistemi esperti generici.

In conseguenza di ciò, FuzzyWorld può essere utilizzato in due modi:

  • come generatore di specifici oggetti fuzzy che devono rappresentare un accurato modello della realtà che l'oggetto descrive
  • come shell per la generazione di sistemi esperti, sul tipo di altri già esistenti in commercio

In quest'ultimo caso, anche se il risultato dal punto di vista dell'utente è identico a quello che si otterrebbe utilizzando un approccio procedurale, cambia totalmente il paradigma risolutivo, dato l'approccio tipicamente OOP che è stato utilizzato per la realizzazione della shell.

Informazioni sull'autore

Lorenzo Schiavina, laureato in Economia e Commercio all'Università Cattolica nel 1967. Specializzato in Ricerca Operativa nel 1968. Esperienza di analisi e programmazione presso grandi aziende. Responsabile tecnico del Centro di Calcolo di Busto dell'Università Cattolica dal 1972 al 1975. Esperienza nel settore finanziario con particolare riferimento ai contratti a premio. Fondatore di EDOR M.Q. nel 1972. Professore di Ricerca Operativa presso la Facoltà di Matematica dell'Università Cattolica (Brescia) dal 1982. Esperienza di OOP dal 1982. Probabilmente primo utilizzatore in Italia di Smalltalk.

È possibile consultare l'elenco degli articoli scritti da Lorenzo Schiavina.

Altri articoli sul tema Logica Fuzzy.

Risorse

  1. Parte 1: FuzzyWorld: un framework per oggetti fuzzy
    http://www.siforge.org/articles/2002/11/19-fuzzy-word-1.html
Discuti sul forum   Stampa

Cosa ne pensi di questo articolo?

Discussioni

Questo articolo o l'argomento ti ha interessato? Parliamone.