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.