Che cos’è la programmazione genetica?

La programmazione genetica è il processo di utilizzo di un programma per computer per scrivere un altro programma per computer utilizzando una metodologia basata su algoritmi evolutivi. Questo processo è spesso paragonato alla programmazione lineare, in cui il programmatore scrive istruzioni specifiche che il computer deve eseguire. 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 è spesso citata come esempio di calcolo bioispirato.

I programmi genetici (GP) funzionano generando ed eseguendo migliaia di programmi e scelgono il più efficace da usare. Ad esempio, un medico potrebbe essere utilizzato per creare un programma per disegnare uno schizzo di una fotografia. La prima cosa che farebbe il medico generico è creare un insieme di programmi che utilizzano varie funzioni di disegno del computer in combinazioni casuali. Quindi il GP eseguirà ciascuno di questi programmi in ordine, inviando i risultati di ciascuno a 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 medico di famiglia utilizzerà 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 medico di base selezionava i primi e scartava il resto. Il processo di selezione è noto come valutazione dell’idoneità ed è generalmente considerato la parte più difficile della programmazione genetica.

Una volta selezionati i primi pochi programmi, il medico li utilizzerà come base per un nuovo lotto di programmi. Ogni nuovo batch è chiamato generazione. I due modi di creare la nuova generazione sono mutazione e crossover. La mutazione funziona prendendo uno dei programmi esistenti e apportandovi modifiche casuali, si spera in meglio. Crossover, chiamato anche allevamento, funziona prendendo due dei migliori programmi e combinandone elementi per creare nuovi programmi.

Dopo aver creato un nuovo batch di programmi, il medico di famiglia ripete il processo di esecuzione e valutazione, quindi ripete i processi di selezione, eliminazione e generazione. I medici di base eseguiranno spesso 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, inclusi l’ingegneria robotica e i problemi di intelligenza artificiale.