Published
Edited
Apr 28, 2021
Insert cell
md`# Algoritmi genetici

Gli algoritmi genetici sono una classe di algoritmi che mimano il comportamento dei sistemi evolutivi per determinare soluzioni a problemi spesso molto complessi.

Così come gli organismi viventi, tramite la riproduzione, mischiano i loro caratteri genetici il proprio adattamento all'ambiente, gli algoritmi genetici "migliorano" le possibili soluzioni ad un problema generando nuove soluzioni dalle precedenti.

La soluzione ad un problema è come l'individuo in una popolazione. Essa presenta un "genoma", ovvero delle caratteristiche peculiari che la rappresentano.

## Accoppiamento

Durante l'esecuzione dell'algoritmo genetico diverse soluzioni vengono "accoppiate" e i loro genomi vengono "mischiati". Le nuove soluzioni che si generano a partire da queste possono essere migliori o peggiori delle soluzioni genitrici. Qualora fossero migliori, queste verranno selezionate per produrre nuove popolazioni di soluzioni.

## Mutazioni

Una singola mutazione (individuo) può subire una mutazione casuale. Tali mutazioni possono essere costruttive o distruttive: sarà la selezione "naturale" a deciderne l'esito.

Dopo diverse iterazioni, se l'algoritmo sta funzionando, si osserverà l'emergere di una popolazione di soluzioni sempre migliori. Queste rappresenteranno la soluzione al problema iniziale.

## Il problema del commesso viaggiatore

Uno dei tipici problemi risolvibili mediante algoritmi genetici è il cosidetto [Problema del commesso viaggiatore](https://it.wikipedia.org/wiki/Problema_del_commesso_viaggiatore).

Dato un insieme di città, e note le distanze tra ciascuna coppia di esse, trovare il tragitto di minima percorrenza che un commesso viaggiatore deve seguire per visitare tutte le città una ed una sola volta e ritornare alla città di partenza.

Ecco una possibile [implementazione](https://observablehq.com/@john-clarke/genetic-algorithm-tsp) della soluzione.

## Il problema del "Calendario dei consigli di classe"

Quanti Consigli di classe (CDC) si possono calendarizzare nella stessa fascia oraria? Ci sono infatti CDC *incompatibili* tra di loro, nel senso che alcuni di essi condividono gli stessi insegnanti e non possono essere quindi svolti in contemporanea. Un algoritmo genetico può trovare le migliori possibili soluzioni.

## Automobili "genetiche"

Ed ecco l'implementazione di un algoritmo genetico che seleziona la migliore macchina da corsa in una [gara virtuale](https://rednuht.org/genetic_cars_2/) tra automobili.

## Riferimenti

1. https://towardsdatascience.com/a-gentle-introduction-to-genetic-algorithms-c5bc15827e2d

`
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more