Particle Swarm Optimization
In informatica, la particle swarm optimization (PSO, traducibile come "ottimizzazione con sciami di particelle") è un metodo computazionale iterativo per l'ottimizzazione di problemi. Ad ogni iterazione, l'algoritmo identifica un nuovo "candidato all'ottimo" nello spazio di ricerca, sulla base di una specifica misura di qualità (fitness). La PSO rientra nell'egida delle meta-euristiche, poiché non fa alcuna assunzione sul problema e consente l'esplorazione di larghissimi spazi di soluzioni. Per come è strutturato l'algoritmo, tuttavia, non c'è alcuna garanzia che la soluzione ottima verrà mai trovata.
La particle swarm optimization non fa uso di un gradiente nel corso dell'ottimizzazione, dunque non è richiesta la differenziabilità del problema da analizzare, cosa che invece avviene nei metodi di ottimizzazione tradizionali come la discesa del gradiente. Per questa ragione, può essere utilizzata con successo in problemi di ottimizzazione irregolari, rumorosi, variabili nel tempo, eccetera.
La PSO ottimizza un problema utilizzando una popolazione di soluzioni candidate (dette "particelle") che si spostano nello spazio di ricerca sulla base di semplici formule, che tengono in considerazione la loro velocità di spostamento corrente, le loro conoscenze dello spazio di fitness (ovvero la migliore soluzione che han esplorato finora) e la conoscenza condivisa (cioè la miglior soluzione generale identificata). L'algoritmo consente di pesare queste tre componenti (inerzia, cognitiva e sociale) e utilizza dei piccoli jittering casuali per minimizzare la possibilità di intrappolamento in minimi locali.
La PSO è generalmente attribuita a Kennedy, Eberhart and Shi, che la introdussero nello studio dei comportamenti sociali simulati. L'algoritmo fu semplificato quando si comprese che poteva effettuare ottimizzazione.