Quando gli algoritmi genetici sono una buona scelta per l'ottimizzazione?


20

Gli algoritmi genetici sono una forma di metodo di ottimizzazione. Spesso la discendenza stocastica a gradiente e i suoi derivati ​​sono la scelta migliore per l'ottimizzazione delle funzioni, ma a volte vengono ancora utilizzati algoritmi genetici. Ad esempio, l'antenna del veicolo spaziale ST5 della NASA è stata creata con un algoritmo genetico:

Antenna ST5

Quando i metodi di ottimizzazione genetica sono una scelta migliore rispetto ai più comuni metodi di discesa del gradiente?


7
+1 per l'esempio, ho trovato il documento originale: alglobus.net/NASAwork/papers/Space2006Antenna.pdf
Tim

Risposte:


19

Gli algoritmi genetici (GA) sono una famiglia di euristiche che sono empiricamente bravi a fornire una risposta decente in molti casi, sebbene raramente siano l'opzione migliore per un determinato dominio.

Lei menziona algoritmi basati su derivati, ma anche in assenza di derivati ​​ci sono molti algoritmi di ottimizzazione senza derivati ​​che funzionano in modo molto migliore rispetto agli GA. Vedi questa e questa risposta per alcune idee.

Ciò che molti algoritmi di ottimizzazione standard hanno in comune (anche metodi privi di derivati) è l'assunto che lo spazio sottostante sia una varietà liscia (forse con alcune dimensioni discrete) e che la funzione di ottimizzazione sia in qualche modo ben educata.

Tuttavia, non tutte le funzioni sono definite su una varietà liscia. A volte vuoi ottimizzare su un grafico o su altre strutture discrete (ottimizzazione combinatoria) - qui ci sono algoritmi dedicati, ma GA funzionerebbe anche.

Più vai verso le funzioni definite su strutture complesse e discrete, più GA possono essere utili, specialmente se riesci a trovare una rappresentazione in cui gli operatori genetici lavorano al meglio (che richiede molta regolazione manuale e conoscenza del dominio).

Naturalmente, il futuro potrebbe portare a dimenticare del tutto le GA e sviluppare metodi per mappare gli spazi discreti allo spazio continuo e utilizzare i macchinari di ottimizzazione che abbiamo sulla rappresentazione continua.


2

I metodi genetici sono adatti all'ottimizzazione multicriteria quando la discesa del gradiente è dedicata all'ottimizzazione monocriteria. La discesa a gradiente consente di trovare il minimo di funzioni quando esistono derivati ​​e esiste solo una soluzione ottimale (se si escludono le minimas locali). Un algoritmo genetico può essere utilizzato in problemi multicriteri e portare a un continuum di soluzioni, ognuna delle quali è costituita da individui di una popolazione, essendosi evoluta da una popolazione iniziale. I valori da ottimizzare sono i fenotipi degli individui e possono esserci diversi fenotipi. In generale, nessuno degli individui ha contemporaneamente il miglior valore di ciascun fenotipo, quindi non esiste una sola soluzione. Gli individui nella popolazione finale, che sono tutte soluzioni di ottimizzazione, fanno parte del "fronte di Pareto" e sono contrassegnati come "Pareto di primo livello" individui. Ciò significa che rispetto a tutti gli altri individui che hanno le stesse prestazioni per ciascun fenotipo, sono almeno migliori per un fenotipo rispetto agli altri.


Ok per un downvote, ma potresti spiegare dove sbaglio?
manu190466,

5
Questo sito valorizza le risposte che forniscono contesto e background. Vedi questa pagina di aiuto per come fornire risposte che aggiungeranno al nostro repository di risposte utili a domande interessanti. Spiegare la tua risposta è anche un buon modo per testare la tua comprensione. Ad esempio, in questo caso potresti voler ampliare il modo in cui gli algoritmi genetici "sono adatti all'ottimizzazione multicriteria", poiché la pagina di Wikipedia sembra implicare funzioni di fitness a valore singolo come obiettivi per algoritmi genetici.
EdM

0

Il migliore in che senso?

Nella mia esperienza, i GA sono uno degli ottimizzatori più pragmatici. Mentre molti algoritmi più precisi richiedono tempo e fatica per formalizzare problemi reali nel mondo matematico, gli GA possono gestire qualsiasi funzione di costo con regole e vincoli complessi (gli GA sono correlati da un approccio di esecuzione dopotutto e non da calcoli specifici). Questo processo è semplice e puoi provare molti approcci per il lavoro esplorativo.

Apprezzo anche la possibilità di reintegrare le soluzioni passate dell'algoritmo per le esecuzioni future, il che è utile per compiti ripetuti.

Concettualmente, un algoritmo genetico può essere rappresentato da una hashmap di funzioni e si adatta a linguaggi così funzionali come Clojure, che è anche un linguaggio in cui è possibile ottenere grandi risultati molto rapidamente.

Gli algoritmi genetici possono anche essere nidificati: la funzione di costo di un GA può essere un GA! Questi algoritmi sfruttano l'hardware e l'infrastruttura moderni che consentono loro di calcolare una popolazione molto ampia in modo che, anche con semplici operazioni di mutazione / selezione, sia ancora possibile ottenere buoni risultati.

Anche per problemi semplici come trovare il minimo di una funzione d'onda, i GA non sono così male e possono raggiungere una precisione decente in un tempo accettabile.

Quindi sì, le soluzioni analitiche possono avere tempi di esecuzione e precisione più rapidi, ma il tempo necessario per produrli supera i benefici attesi spesso! Cosi quando ? Quasi sempre per me, almeno per la meta-ottimizzazione.


La principale spinta di questo argomento sembra essere che gli algoritmi genetici siano ottimizzatori black-box. Ma ci sono molti ottimizzatori black-box là fuori. Perché sarebbe meglio di altre scelte? Inoltre, non credo che i GA possano gestire facilmente i vincoli. Ad esempio, se la funzione non è definita ad eccezione di un sottospazio 3D in un mondo 4D, sicuramente un GA vanilla fallirebbe.
Cliff AB,

@CliffAB In realtà non ho detto nulla al riguardo e forse il contrario. In GA, hai molto controllo sul calcolo del core, GA in sé è una sequenza di passaggi e ordinamento leggero. Quando si definiscono le funzioni di costo, è possibile gestire qualsiasi cosa nella funzione, anche i vincoli esterni su cui è possibile eseguire query. I miei argomenti principali sono: gestire molti problemi, non devi preoccuparti della compatibilità con il framework (devi solo restituire un costo), trovare una soluzione decente nella vita reale nella maggior parte dei casi aziendali ANCHE se non sempre il migliore
Joseph Yourine,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.