Algoritmo evolutivo – Spiegazione delle mutazioni

Algoritmo evolutivo - Spiegazione delle mutazioni genetiche

Illustrazioni con implementazione del codice, applicato come esempio a TSP

Immagine creata da DALL·E 3 basata sulla richiesta “Disegna un'immagine dall'aspetto fantascientifico che rappresenti una mutazione. Mostra il 'prima' a sinistra e il 'dopo' a destra.”

Questo è un proseguimento di Algoritmo evolutivo – Spiegazioni sulle selezioni.

Se stai leggendo per ottenere una comprensione a livello generale della ricombinazione e delle mutazioni nella rappresentazione basata sulla permutazione, questo articolo sarà autonomo e autoesplicativo.

Tuttavia, per comprendere tutti i dettagli di ogni fase del processo, sarà utile leggere prima l’articolo collegato sopra prima di continuare qui.

Insieme agli spezzoni di codice del precedente articolo, sarai in grado di risolvere il famoso problema del commesso viaggiatore (TSP) sul tuo personal computer. Ancora più importante, apprezzerai tutto ciò che accade dietro le quinte.

Arrivare alla stessa pagina

Nella prima parte, ho dato un’outline del framework dell’Algoritmo evolutivo come segue:

Immagine dell'autore

Dopo aver esaminato un paio di terminologie usate in EA, ci siamo addentrati nei dettagli dell’inizializzazione del genotipo appropriato (nella Sezione 3.1, per <1>) così come nella selezione della ruota della roulette e del torneo (nella Sezione 3.2, per <2>).

Continueremo ora con la Sezione 3.3.

3.3 – Variazione

Le variazioni possono essere unarie (coinvolgono un solo genotipo) o binarie (coinvolgono due genotipi). L’obiettivo è ottenere nuovi genotipi che, si spera, abbiano una fitness più alta rispetto ai loro predecessori.

Le statistiche ci aiutano a realizzare questa speranza. Per puro caso, alcuni genotipi saranno migliori, mentre altri saranno peggiori. Collaborando strettamente con la selezione dei genitori (Sezione 3.2) e la selezione della sopravvivenza (Sezione 3.4), i ‘successi’ contano molto di più dei ‘fallimenti’.

Nelle Sezioni 3.3.1 e 3.3.2, ci concentriamo sulle variazioni app