Algoritmo genetico: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
|||
(17 versioni intermedie di 12 utenti non mostrate) | |||
Riga 1:
{{tmp|Algoritmo}}
Un '''algoritmo genetico''' è un [[algoritmo]] [[euristico]] utilizzato per tentare di risolvere problemi di [[Ottimizzazione (matematica)|ottimizzazione]] per i quali non si conoscono altri algoritmi efficienti di [[Teoria della complessità computazionale|complessità]] lineare o polinomiale. L'aggettivo "genetico", ispirato al principio della [[selezione naturale]] ed [[evoluzione]] biologica teorizzato nel 1859 da [[Charles Darwin]], deriva dal fatto che, al pari del modello evolutivo darwiniano che trova spiegazioni nella branca della [[biologia]] detta [[genetica]], gli algoritmi genetici attuano dei meccanismi concettualmente simili a quelli dei processi [[biochimica|biochimici]] scoperti da questa scienza.
In sintesi si può dire che gli algoritmi genetici consistono in algoritmi che permettono di valutare delle soluzioni di partenza e che ricombinandole ed introducendo elementi di disordine sono in grado di crearne di nuove nel tentativo di convergere verso soluzioni "ottime". Nonostante questo utilizzo nell'ambito dell'ottimizzazione, data la natura intrinseca di un algoritmo genetico, non vi è modo di sapere a priori se sarà effettivamente in grado di trovare una soluzione accettabile al problema considerato.▼
Gli algoritmi genetici rientrano nello studio dell'[[intelligenza artificiale]] e più in particolare nella branca della ''[[computazione evolutiva]]'', vengono studiati e sviluppati all'interno del campo dell'intelligenza artificiale e delle tecniche di [[soft computing]], ma trovano applicazione in un'ampia varietà di problemi afferenti a diversi contesti quali l'[[elettronica]]<ref>{{en}}[http://www.informatik.uni-osnabrueck.de/papers_pdf/xplorer_report_volker.pdf Progettazione di disposizioni LVSI attraverso algoritmi genetici. Studio di Volker Schnecke ed Oliver Vornberger dell'Università di Osnabruck]</ref>, la biologia<ref>{{en}}[http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2143927/ Presentazione di un algoritmo per lo studio del ripiegamento proteico di M.J. Bayley, J. Jones, G. William e M.P. Williamson, NCBI USA]</ref> e l'[[economia]]<ref>{{en}}[http://static.wingedleopard.net/lucas/projects/urchine/paper.pdf Gli algoritmi genetici nell'economia di J.L. Reddinger, Montana State University] {{webarchive|url=https://web.archive.org/web/20160305091654/http://static.wingedleopard.net/lucas/projects/urchine/paper.pdf |data=5 marzo 2016 }}</ref>.▼
== Storia ==
Line 14 ⟶ 10:
Nel 1995 [[Stewart Wilson]] re-inventò i [[sistemi a classificatori]] dell'intelligenza artificiale ri-denominandoli come [[XCS]] e rendendoli capaci di apprendere attraverso le tecniche degli algoritmi genetici mentre nel 1998 Herrera e Lozano presentarono un'ampia rassegna di operatori genetici. Gli operatori di Herrera e Lozano sono applicabili a soluzioni codificate mediante numeri reali ed hanno reso il campo dei numeri reali un'appropriata e consolidata forma di rappresentazione per gli algoritmi genetici in domini continui.
== Descrizione ==
▲In sintesi
▲Gli algoritmi genetici rientrano nello studio dell'[[intelligenza artificiale]] e più in particolare nella branca della ''[[computazione evolutiva]]'', vengono studiati e sviluppati all'interno del campo dell'intelligenza artificiale e delle tecniche di [[soft computing]], ma trovano applicazione in un'ampia varietà di problemi afferenti a diversi contesti quali l'[[elettronica]]<ref>{{Cita testo|lingua=en
== Funzionamento ==
Line 36 ⟶ 37:
=== La codifica ===
Come accennato, le soluzioni al problema considerato, siano
Le codifiche più diffuse sono:
Line 50 ⟶ 51:
=== La logica di selezione ===
A causa di complessi fenomeni di interazione non lineare ([[epistaticità]]), non è dato per scontato né che da due soluzioni promettenti
*''Selezione a roulette'': la probabilità che una soluzione venga scelta per farla evolvere è direttamente proporzionale al valore restituito dalla funzione di fitness. Questa tecnica presenta dei problemi nel caso in cui ci siano delle grosse differenze di valori perché le soluzioni peggiori verrebbero selezionate troppo raramente.
*''Selezione per categoria'': simile alla selezione per roulette ma la valutazione è effettuata in maniera proporzionale alla somma del valore della funzione di fitness per ogni coppia possibile di soluzioni. Il problema presentato da questa tecnica di scelta è rappresentato dalla lentezza di convergenza nel caso in cui ci siano delle differenze troppo piccole tra coppie di soluzioni candidate.
Line 65 ⟶ 66:
=== Il crossover ===
Per semplicità, durante la spiegazione del crossover, si farà riferimento alle codifiche vettoriali ma il procedimento per le codifiche ad albero è simile ed invece che essere applicato ai campi dei vettori viene applicato ai nodi dell'albero. In base ad un [[operatore (matematica)|operatore]] stabilito inizialmente, alcune parti dei geni delle soluzioni candidate all'evoluzione vengono mescolate per ricavare nuove soluzioni.
Gli operatori più comunemente utilizzati sono:
Riga 76:
*Crossover uniforme: consiste nello scambiare casualmente dei bit tra le soluzioni candidate all'evoluzione. Si segnala l'esistenza anche di crossover uniformi parziali ossia dei crossover uniformi dove lo scambio di bit è limitato ad una percentuale fissa o dinamica dei cromosomi candidati all'evoluzione.
*Crossover aritmetico: consiste nell'utilizzare un'operazione aritmetica per creare la nuova soluzione. (es. [[Algebra di Boole#XOR|XOR]] o un [[Algebra di Boole#AND|AND]]).
Non è detto che il crossover debba avvenire ad ogni iterazione dell'algoritmo genetico. Generalmente la frequenza di crossover è regolata da un apposito parametro comunemente denominato <math>p_c</math>.
Line 107 ⟶ 106:
==Progetti reali con algoritmi genetici==
*[[Acovea]]: [[software]] [[open source]] studiato per trovare il profilo migliore delle opzioni di ottimizzazione del [[compilatore]] [[gNU Compiler Collection|gcc]] che rappresenta un problema di elevata complessità<ref>{{Cita testo|lingua=en
== Note ==
Line 118 ⟶ 117:
* Poli, R., Langdon, W. B., McPhee, N. F. (2008), ''A Field Guide to Genetic Programming'', Lulu.com, disponibile gratuitamente via internet ISBN 978-1-4092-0073-4
* Alden H. Wright, Genetic Algorithms for Real Parameter Optimization, 1991 [http://citeseer.ist.psu.edu/wright91genetic.html]
* {{cita web|url=http://www.econ.iastate.edu/tesfatsi/holland.GAIntro.htm|titolo=''Genetic Algorithms'' di J. Holland|lingua=en}}
* {{cita web|url=http://www.it-weise.de/projects/book.pdf|titolo=Global Optimization Algorithms - Theory and Application|lingua=en|accesso=27 maggio 2008|urlarchivio=https://web.archive.org/web/20080911075107/http://www.it-weise.de/projects/book.pdf|urlmorto=sì}}
== Voci correlate ==
* [[
* [[Programmazione evolutiva]]
* [[Programmazione genetica]]
Line 131 ⟶ 130:
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC|genetic algorithm|genetic algorithm}}
* {{cita web|url=http://www.obitko.com/tutorials/genetic-algorithms/
* {{cita web|url=http://www.
* {{cita web|url=http://www.geneoverload.com/|titolo=Gioco multigiocatore di strategia online basato su Algoritmici Genetici (richiede registrazione).|lingua=en|accesso=9 ottobre 2011|urlarchivio=https://web.archive.org/web/20110925015119/http://www.geneoverload.com/|urlmorto=sì}}
*
{{Genetica}}
{{Apprendimento automatico}}
{{Portale|ingegneria|statistica|Biologia|informatica}}▼
{{Controllo di autorità}}
[[Categoria:Intelligenza artificiale]]
[[Categoria:Apprendimento automatico]]
[[Categoria:Algoritmi di ricerca|Genetico]]
[[Categoria:Matematica per la genetica]]
|