Il concetto di algoritmo genetico è molto datato: si parla del 1960.
Anche se è solo nel 1975 che viene creato un algoritmo genetico propriamente detto.
Sono usati anche per la produzione di reti neurali artificiali e per l'implementazione di intelligenze artificiali.
Inoltre ultimamente sono stati utilizzati anche per decodificare il Ransomware Petya: Come Decodificare Il Ransomware Petya.
Vengono chiamati così, essendo basati sulla metafora dell’evoluzione biologica.
Ad esempio vengono usati quando non esistono basi teoriche forti che supportino la scrittura di un dato codice o quando un problema ha moltissime soluzioni impossibili da valutare una per una.
Una volta posto il problema, si vuole far evolvere una popolazione di soluzioni possibili fino a che non se ne trovi una ottima, che non è necessariamente la soluzione esatta ma magari quella meno sbagliata.
SOPRAVVIVENZA, EVOLUZIONE, SOLUZIONE, GENI
Questi algoritmi operano su un determinato range di potenziali soluzioni applicando il principio dell'evoluzione: sopravvive solo la soluzione migliore.
Il sistema evolverà verso una soluzione che dovrebbe avvicinarsi alla reale soluzione del problema.
Ad ogni generazione, un nuovo insieme di soluzioni è creato dal processo di selezione che, basandosi sul livello di adeguatezza (funzione Fitness), seleziona i migliori "membri della popolazione"(ovvero n individui o, in questo caso, n soluzioni) e li fa evolvere utilizzando una serie di operatori genetici mutuati dalla genetica naturale.
Ad ogni soluzione è associato un valore di Fitness.
Questo processo porta ad un insieme di soluzioni che meglio rispondono al problema posto in principio.
Ogni soluzione è codificata sotto forma di stringa.
Il sistema di codifica più utilizzato è il sistema binario: cioè 0 ed 1.
Ogni soluzione, possiede una Fitness, ovvero una misura (o livello di adeguatezza) di quanto la soluzione è in grado di rispondere al problema posto.
Cosi come nella natura solamente gli individui che meglio si adattano all’ambiente sono in grado di sopravvivere e di riprodursi, anche negli algoritmi genetici le soluzioni migliori sono quelle che hanno la maggiore probabilità di trasmettere i propri geni alle generazioni future.
Il principio di selezione ha il compito di selezionare le soluzioni che meglio rispondono al problema da risolvere.
La selezione si basa sulla Fitness degli individui: le soluzioni con Fitness maggiore (rispetto alla media delle altre soluzioni) avranno maggiori possibilità di partecipare alla riproduzione e quindi di trasmettere alle future generazioni i propri "geni".
Dopo aver selezionato un numero n di individui, l’algoritmo genetico emula la riproduzione sessuata che avviene in natura e ri-combina il materiale genetico dei genitori, dando vita ai figli, ovvero alla futura generazione di soluzioni.
La ri-combinazione avviene tramite operatori genetici di Crossover e Mutazione Puntuale.
La nuova generazione di soluzioni prende il posto della generazione precedente, dalla quale è nata per ri-combinazione.
Il processo viene reiterato per un numero x di volte fino a quando o si raggiunge una approssimazione accettabile della soluzione al problema o si raggiunge il numero massimo di iterazioni prefissato.
Schematizzando, gli elementi costitutivi di un algoritmo genetico sono:
Inoltre gli operatori genetici combinano i geni delle diverse soluzioni al fine di esplorare nuove soluzioni.
Una volta che un gruppo di soluzioni viene individuato come idoneo alla riproduzione, l’operatore genetico di cross over, emulando la riproduzione sessuata degli esseri viventi, combina i geni dei genitori e formula una nuova generazione di soluzioni.
Un altro operatore genetico largamente utilizzato è la Mutazione puntuale (modifica un "gene" a caso).
Nessun commento:
Posta un commento