Domanda

Sto lavorando con un paio di algoritmi di intelligenza artificiale a scuola e ho scoperto che le persone usano le parole Fuzzy Logic per spiegare qualsiasi situazione che possono risolvere con un paio di casi.Quando torno ai libri ho appena letto di come invece di uno stato che va da On a Off c'è una linea diagonale e qualcosa può essere in entrambi gli stati ma su "livelli" diversi.

Ho letto la voce di Wikipedia e un paio di tutorial e persino materiale programmato che "usa la logica fuzzy" (un rilevatore di bordi e un robot autocontrollato a 1 ruota) e trovo ancora molto confuso passare dalla teoria al codice.. .per te, nella definizione meno complicata, cos'è la logica fuzzy?

È stato utile?

Soluzione

La logica fuzzy è logica in cui l'appartenenza dello stato è, essenzialmente, un galleggiante con la gamma 0..1 invece di un int 0 o 1. Il chilometraggio si ottiene fuori di esso è che cose come, ad esempio, le modifiche apportate in un sistema di controllo sono un po 'naturalmente più perfezionato di quello che si otterrebbe con la logica binaria ingenuo.

Un esempio potrebbe essere logica che strozza indietro l'attività del sistema basato su connessioni TCP attive. Dire si definisce "un po 'troppi" connessioni TCP sulla macchina come 1000 e "un sacco di troppo", come 2000. In qualsiasi momento, il sistema dispone di uno stato di "troppe connessioni TCP" da 0 (<= 1000) a 1 (> = 2000), che si può usare come un coefficiente nell'applicazione qualunque limitazione meccanismi che avete a disposizione. Questo è molto più tollerante e sensibile al comportamento del sistema di logica binaria ingenuo che solo sa come determinare "troppi", e accelerare bruscamente e completamente, o "non troppi", e non valvola a farfalla a tutti.

Altri suggerimenti

Mi piacerebbe aggiungere alle risposte (che sono stati modded up) che, un buon modo di visualizzare la logica fuzzy è segue:

Tradizionalmente, con logica binaria si avrebbe un grafico la cui funzione di appartenenza è vero o falso che, in un sistema a logica fuzzy, la funzione di appartenenza non è.

1|
 |   /\
 |  /  \
 | /    \
0|/      \
 ------------
   a  b c   d

Si supponga per un secondo che la funzione è "ama noccioline"

a. kinda likes peanuts
b. really likes peanuts
c. kinda likes peanuts
d. doesn't like peanuts

La funzione stessa non deve essere triangolare e spesso non è (è solo più facile con ASCII art).

Un sfocata Sistema probabilmente avrà molti di questi, alcuni addirittura sovrapposte (anche opposti) in questo modo:

1|   A    B
 |   /\  /\      A = Likes Peanuts
 |  /  \/  \     B = Doesn't Like Peanuts
 | /   /\   \
0|/   /  \   \
 ------------
  a  b  c d

così ora c è "genere piace arachidi, un po 'non gli piace noccioline" e d è "in realtà non piace noccioline"

e si può programmare di conseguenza in base a queste informazioni.

Spero che questo aiuti per gli studenti visiva là fuori.

La migliore definizione della logica fuzzy è dato dal suo inventore Lotfi Zadeh :

  

“mediante logica fuzzy di rappresentare i problemi ai computer in un modo simile al modo umano risolverli e l'essenza della logica fuzzy è che tutto è una questione di grado.”

Il significato di risolvere i problemi con i computer simile al modo umano di risolvere può essere facilmente spiegato con un semplice esempio da una partita di basket; se un giocatore vuole custodire un altro giocatore in primo luogo si deve considerare quanto alto è e come le sue abilità di gioco sono. Semplicemente se il giocatore che vuole guardia è alto e gioca molto lento rispetto a lui, allora egli userà il suo istinto per determinare a prendere in considerazione se doveva custodire quel giocatore in quanto v'è un'incertezza per lui. In questo esempio, il punto importante è la proprietà sono relative al giocatore e non v'è un grado per l'altezza e la riproduzione di abilità per il giocatore rivale. La logica fuzzy fornisce un modo deterministico per questa situazione incerta.

Ci sono alcuni passi per elaborare la logica fuzzy (Figura-1). Questi passaggi sono; innanzitutto fuzzificazione dove ingressi croccanti vengono convertiti agli ingressi Fuzzy dall'altro questi ingressi vengono trattati con regole fuzzy per creare uscita fuzzy e defuzzification infine che risulta con grado di risultato come in logica fuzzy ci possono essere più di uno risultato con gradi differenti.

image004

Figura 1 - Fuzzy Fasi del processo (David M. Bourg p.192)

Per esemplificare le fasi del processo sfocati, la precedente situazione di gioco di basket potrebbe essere utilizzato. Come accennato nell'esempio il giocatore rivale è alto con 1,87 metri, che è piuttosto alto rispetto al nostro giocatore e può palleggiare con 3 m / s, che è lento rispetto al nostro giocatore. Oltre a questi dati, sono necessarie alcune regole da considerare che sono chiamati regole fuzzy come;

if player is short but not fast then guard,
if player is fast but not short then don’t guard
If player is tall then don’t guard
If player is average tall and average fast guard

image005

Figura 2 - quanto alto

image007

Figura 3- quanto velocemente

Secondo le norme ei dati di ingresso un'uscita verrà creato da sistema fuzzy come; il grado di protezione è 0,7, grado di volte guardia è 0,4 e mai guardia è 0.2.

image009

Figura 4-output fuzzy set

L'ultimo passo, defuzzication , sta usando per la creazione di un'uscita croccante che è un numero che può determinare l'energia che dovremmo usare per proteggere il giocatore durante il gioco. Il centro di massa è un metodo comune per creare l'output. In questa fase i pesi per calcolare il punto medio è totalmente dipende dall'implementazione. In questa applicazione si ritiene che invia alto peso di guardia o meno guardia ma basso peso dato a volte guardia. (David M. Bourg, 2004)

image012

Figura 5- uscita sfocata (David M. Bourg P.204)

  Output = [0.7 * (-10) + 0.4 * 1 + 0.2 * 10] / (0.7 + 0.4 + 0.2) ≈ -3.5

Di conseguenza logica fuzzy sta usando in condizioni di incertezza per prendere una decisione e per scoprire il grado di decisione. Il problema della logica fuzzy è il numero di ingressi aumentare il numero di regole esponenziale.

Per ulteriori informazioni e la sua possibile applicazione in un gioco che ho scritto un piccolo articolo check this out

Per costruire la risposta del caos, una logica formale non è altro che un insieme definito induttivamente che associa le frasi a una valutazione.Almeno, questo è il modo in cui un teorico dei modelli pensa alla logica.Nel caso di una logica booleana sentenziale:

 (basis clause) For all A, v(A) in {0,1}
 (iterative) For the following connectives,
   v(!A) = 1 - v(A)
   v(A & B) = min{v(A), v(B)}
   v(A | B) = max{v(A), v(B)}
 (closure) All sentences in a boolean sentential logic are evaluated per above.

Un cambiamento di logica fuzzy sarebbe definito induttivamente:

 (basis clause) For all A, v(A) between [0,1]
 (iterative) For the following connectives,
   v(!A) = 1 - v(A)
   v(A & B) = min{v(A), v(B)}
   v(A | B) = max{v(A), v(B)}
 (closure) All sentences in a fuzzy sentential logic are evaluated per above.

Si noti che l'unica differenza nella logica sottostante è il permesso di valutare una frase come avente un "valore di verità" pari a 0,5.Una questione importante per un modello di logica fuzzy è la soglia che conta per la soddisfazione della verità.Questo è chiedere:per una valutazione v(A), per quale valore D è il caso v(A) > D significa che A è soddisfatto.

Se vuoi davvero saperne di più sulle logiche non classiche come la logica fuzzy, ti consiglio entrambe Un'introduzione alla logica non classica:Da Se a È O Possibilità e paradosso

Rimettendomi il cappello da programmatore, starei attento all'uso della logica fuzzy nella programmazione del mondo reale, a causa della tendenza della logica fuzzy a essere indecidibile.Forse è troppa complessità per un piccolo guadagno.Ad esempio, una logica supervalutativa può essere molto utile per aiutare un programma a modellare la vaghezza.O forse la probabilità sarebbe abbastanza buona.In breve, devo convincermi che il modello di dominio combacia con una logica fuzzy.

Forse un esempio chiarisce quali sono i benefici possono essere:

Diciamo che si vuole fare un termostato e si vuole che sia 24 gradi.


Questo è il modo che ci si implementa utilizzando la logica booleana:

  • Regola1: riscaldare a piena potenza quando è più freddo di 21 gradi.
  • Regola2: raffreddare a piena potenza quando è più caldo di 27 gradi.

Tale sistema sola volta e mentre essere di 24 gradi, e sarà molto inefficiente.


Ora, usando la logica fuzzy, sarebbe come qualcosa di simile a questo:

  • Regola1:. Per ogni grado che è più freddo di 24 gradi, alzare il riscaldamento di una tacca (0 a 24)
  • Regola2:. Per ogni grado che è più caldo di 24 degress, alzare il dispositivo di raffreddamento di una tacca (0 a 24)

Questo sistema sarà sempre da qualche parte circa 24 gradi, e soltanto una volta e sarà solo una volta e un po 'di fare un piccolo aggiustamento. E sarà anche più alta efficienza energetica.

Beh, si potrebbe leggere le opere di Bart Kosko , uno dei 'padri fondatori '. ' Thinking Fuzzy: The New Science of Fuzzy Logic ' dal 1994 è leggibile ( ed è disponibile abbastanza a buon mercato di seconda mano con Amazon). A quanto pare, ha un libro più recente ' rumore ' dal 2006 che è anche abbastanza avvicinabile.

In sostanza anche se (nella mia parafrasi - non avendo letto il primo di quei libri per diversi anni), la logica fuzzy è su come affrontare il mondo in cui qualcosa è forse il 10% fresco, il 50% caldo, e il 10% a caldo , dove diverse decisioni possono essere prese sulla misura in cui i diversi stati sono vere (e no, non era del tutto un caso che queste percentuali non si sommano al 100% - anche se mi piacerebbe accettare la correzione, se necessario).

Un'ottima spiegazione, con l'aiuto di Fuzzy Logic Macchine lavatrici .

Lo so cosa vuoi dire sul fatto che sia difficile andare dal concetto al codice. Sto scrivendo un sistema di punteggio che guarda ai valori di sysinfo e / proc sui sistemi Linux e viene fornito con un numero compreso tra 0 e 10, 10 è il peggiore in assoluto. Un semplice esempio:

Hai 3 medie di carico (1, 5, 15 minuti) con (almeno) tre possibili stati, buono, sempre cattivo, cattivo. In espansione che, si potrebbe avere sei possibili stati per media, l'aggiunta di 'sta per' ai tre che ho appena notato. Eppure, il risultato di tutte le 18 possibilità può dedurre solo 1 dal punteggio. Ripetere che, con scambio consumato, attuale VM memoria allocata (impegnati) e altre cose .. e si dispone di una grande ciotola di spaghetti condizionali:)

La sua tanto una definizione in quanto è un'arte, come implementare il processo decisionale è sempre più interessante il paradigma stesso .. considerando che in un mondo booleano, la sua piuttosto tagliare e asciutto.

Sarebbe molto facile per me dire se CARICA1 <2 detrarre 1, ma non molto preciso a tutti.

Se si può insegnare ad un programma per fare quello che si potrebbe fare quando si valuta un insieme di circostanze e mantenere il codice leggibile, è stato implementato un buon esempio della logica fuzzy.

Logica Fuzzy è una metodologia soluzione dei problemi che si presta alla realizzazione di sistemi che vanno da semplici, piccoli, incorporati micro-controllori a grande, rete, PC multicanale o acquisizione dati basato su workstation e sistemi di controllo. Si può essere implementato in hardware, software, o una combinazione di entrambi. Logica Fuzzy fornisce un modo semplice per arrivare a una conclusione definitiva sulla base di informazioni di ingresso vago, ambiguo, imprecise, rumoroso, o mancante. approccio Fuzzy Logic per controllare problemi imita come una persona potrebbe prendere decisioni, solo molto più veloce.

logica Fuzzy si è rivelata particolarmente utile nel sistema esperto ed altre applicazioni di intelligenza artificiale. E 'utilizzato anche in alcuni correttori ortografici per suggerire un elenco di parole probabili per sostituire uno errata.

Per saperne di più, basta controllare: http://en.wikipedia.org/wiki/Fuzzy_logic .

Quello che segue è una sorta di una risposta empirica.

Un semplice (risposta forse semplicistica) è che "fuzzy logic" è una logica che restituisce valori diversi da dritto vero / falso, oppure 1 / 0. Ci sono un sacco di variazioni su questo e tendono ad essere altamente specifico dominio .

Per esempio, nella mia vita precedente ho fatto i motori di ricerca che hanno usato "la ricerca somiglianza contenuto" al contrario di allora comune "ricerca booleana". Il nostro sistema somiglianza utilizzato il coefficiente del coseno di vettori-attributo calibrato rappresentano la query e documenti e valori prodotti nell'intervallo 0..1. Gli utenti avrebbero fornire "relevance feedback", che è stato utilizzato per spostare il vettore della query in direzione di documenti desiderabili. Questo è in qualche modo legato alla formazione fatto in alcuni sistemi di intelligenza artificiale in cui la logica viene "premiato" o "punito" per i risultati delle corse di prova.

In questo momento Netflix è in esecuzione un concorso per trovare un algoritmo di suggerimento migliore per la loro azienda. Vedere http://www.netflixprize.com/ . Efficacemente tutti gli algoritmi potrebbero essere caratterizzato come "logica fuzzy"

La logica fuzzy è il calcolo algoritmo basato su umana, come modo di pensare. È particolarmente utile quando v'è un gran numero di variabili di ingresso. viene dato un calcolatore online logica fuzzy per l'ingresso di due variabili:

http://www.cirvirlab.com/simulation/fuzzy_logic_calculator.php

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top