Domanda

Sto cercando un'applicazione pratica per cui utilizzare un algoritmo genetico. Alcune cose che hanno pensato sono:

  • Ottimizzazione dell'interfaccia del sito web
  • Ottimizzazione del veicolo con un simulatore fisico
  • Programmazione genetica
  • Generazione automatica di test case

Ma nessuno mi è davvero apparso. Quindi, se avessi del tempo libero (qualche mese) da dedicare a un progetto di algoritmi genetici, cosa sceglieresti di affrontare?

È stato utile?

Soluzione

Un argomento con molte possibilità è quello di utilizzare algoritmi evolutivi per evolvere strategie di gioco. Le persone hanno usato l'evoluzione per generare strategie per poker, dama / dama, Go e molti altri giochi. Le J-GAP hanno usato la programmazione genetica per far evolvere i bot per Robocode .

Di recente ho pubblicato un articolo introduttivo sul calcolo evolutivo. Include i dettagli di alcune cose per cui sono stati utilizzati algoritmi evolutivi. Adam Marczyk ha anche scritto un eccellente articolo con molti esempi. Il blog di Argonaut genetico contiene dozzine di collegamenti a interessanti progetti evolutivi.

Un tipo meno comune di algoritmo evolutivo è il sistema di classificazione dell'apprendimento . Ciò evolve un insieme di regole per la classificazione degli input. Può essere applicato allo stesso tipo di problemi per cui vengono utilizzate le reti neurali. Potrebbe essere interessante sviluppare un LCS per un problema particolare, come tentare di prevedere i risultati sportivi in ??base al modulo.

Altri suggerimenti

Potresti essere interessato a qualcosa come di Roger Alsing Mona Lisa

Considero strutture lego in evoluzione di gran lunga il più interessante progetto giocattolo per GA.

http://static.23.nu/md/Pictures/ZZ099735B6.jpg

Ho letto qualcosa di simile a quello proposto in questione alla generazione automatica dei casi di test. In realtà era esattamente l'opposto. Si specificano casi di test e si lascia l'algoritmo (programmazione genetica) per creare il codice che passerà. In questo modo fornisci le specifiche e allevi il tuo programma. Se vai un po 'su Google per questo puoi trovare alcuni studi su di esso.
Trovo che sia un'idea molto intrigante. Naturalmente ora nessuno creerebbe alcuna app come questa, ma questa è un'ottima area di studio.

Forse trovare un tour per venditori ambulanti . Di recente ho provato a trovare un tour a piedi in circa 66 località a Parigi e ho trovato molto divertente codificare tutte queste cose. Pensavo che la mia eccitazione derivasse da due fonti: il fatto che potevo disegnare i tour (anche una cosa positiva dell'idea della Gioconda, o se l'ingegneria è la tua passione, le strutture Lego) e il fatto che ci sono così tanti approcci che puoi confrontare:

  • Puoi utilizzare l'euristica semplice, ad esempio "inizia da qualche parte e vai sempre alla posizione più vicina e non visitata".
  • Puoi utilizzare euristiche più complesse, come " continua ad aggiungere bordi (ovunque) in ordine aumentando i costi, tranne quando causerebbe tre bordi su un vertice o un ciclo più piccolo "
  • Puoi utilizzare algoritmi di approssimazione, come uno semplice basato su alberi di spanning minimi se i costi soddisfano la disuguaglianza del triangolo. Come bonus, puoi codificare alberi di spanning minimi (forse potresti persino usare GAs lì, nonostante la disponibilità di algoritmi esatti veloci e facili). Se ti senti sicuro, puoi codificare l'algoritmo di approssimazione più difficile (3/2) basato su alberi di spanning minimi e abbinamenti perfetti.
  • Se hai un tour di venditori ambulanti che si incrocia da solo, puoi migliorarlo "sbattendolo". Ancora una volta, ciò presuppone alcune condizioni sulla funzione di costo.
  • Puoi anche provare a trovare un tour da solo e vedere se riesci a battere il tuo computer.
  • Ultimo ma non meno importante, algoritmi genetici! Il problema si adatta molto bene agli GA perché c'è una funzione di fitness molto chiara e un modo molto semplice di fare la ricombinazione.

È stato utilizzato in sintetizzatori complessi per generare patch audio (ad es. Clavia Nord Modular G2 ) Lo proverei anche per altre macchine, mi viene in mente la Yamaha DX7 ma immagino ci siano parecchie alternative di software là fuori. O generazione di immagini.

Leggi la teoria alla base degli algoritmi di patch in un articolo di Palle Dahlstedt . Al momento sembra essere in calo ...

Gli algoritmi genetici sono adatti per l'ottimizzazione e la pianificazione. Un esempio potrebbe essere la pianificazione di una serie di macchine, con parti e operatori nel tempo per completare una serie di attività. Anche se probabilmente non è il progetto più entusiasmante, avrebbe applicazioni nel mondo reale.

Mi sono divertito a giocare con Conway's Game of Life e Genetic Algorithms,
cercando di evolvere forme di vita avanzate .. Non sono sicuro se ti terrà occupato per
diversi mesi però ..

Credo di aver visto la menzione di un progetto per usarne uno per provare a scoprire con l'ottimale il layout della tastiera sarebbe: "battere Dvorak", " com'era. : D

Al college ho fatto la minimizzazione della funzione multidimensionale .. diciamo che hai af (x) che accetta i parametri x1, x2, x3, ..., xn e genera un valore Y .. devi trovare i parametri x1, .., xn tale che Y = Y1 .. non è così difficile .. modo interessante per imparare comunque. Sebbene Nedlermead sia molto più efficiente .. questo non è incline a rimanere bloccato nelle minimas locali.

Genera composizioni musicali! Leggi di David Cope e del suo programma Emily Howell.

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