Cos'è la programmazione genetica?
La programmazione genetica è il processo di utilizzo di un programma per scrivere un altro programma utilizzando una metodologia basata su algoritmo evolutivo. Questo processo viene spesso paragonato alla programmazione lineare, in cui il programmatore scrive istruzioni specifiche da eseguire per il computer. LISP e Scheme sono i linguaggi di programmazione più comuni per questo tipo di lavoro grazie alla loro funzionalità e flessibilità di alto livello. A causa della sua somiglianza concettuale con l'evoluzione biologica, la programmazione genetica viene spesso citata come esempio di elaborazione bioispirata.
I programmi genetici (GP) funzionano generando ed eseguendo migliaia di programmi e sceglie il più efficace da utilizzare. Ad esempio, un GP potrebbe essere utilizzato per creare un programma per disegnare uno schizzo di una fotografia. La prima cosa che farebbe il GP è creare una serie di programmi che usano varie funzioni di disegno al computer in combinazioni casuali. Quindi il GP eseguirà ciascuno di questi programmi in ordine, trasmettendo i risultati di ciascuno ai file di immagine.
Il prossimo passo per il GP è selezionare il migliore di quei programmi dal set. Questo processo è generalmente la parte più difficile della programmazione genetica. Nel caso del programma di disegno, il GP userebbe il software di confronto delle immagini per determinare quale dei disegni casuali era più simile all'immagine che il software stava tentando di disegnare. Dei programmi generati casualmente, il GP selezionerebbe i primi diversi e scarterebbe il resto. Il processo di selezione è noto come valutazione della forma fisica ed è generalmente considerato la parte più difficile della programmazione genetica.
Una volta selezionati i primi programmi, il GP li utilizzerà come base per un nuovo batch di programmi. Ogni nuovo batch è chiamato generazione. I due modi di creare la nuova generazione sono la mutazione e il crossover. La mutazione funziona prendendo uno dei programmi esistenti e apportando modifiche casuali ad esso, speriamo in meglio. Crossover, chiamato anche allevamento, funziona prendendo due dei migliori programmi e combinandone gli elementi per creare nuovi programmi.
Dopo aver creato un nuovo batch di programmi, il GP ripete il processo di esecuzione e valutazione, quindi ripete i processi di selezione, eliminazione e generazione. I medici eseguiranno frequentemente centinaia di generazioni prima di trovare un singolo programma con un risultato soddisfacente. Nonostante questa limitazione, la programmazione genetica è un modo comune per risolvere alcuni tipi di problemi informatici difficili, tra cui l'ingegneria robotica e problemi di intelligenza artificiale.