title: Particle Swarm Optimization
text: # Particle Swarm Optimization
  
  In informatica, l'ottimizzazione con sciami di particelle, nota anche come particle swarm optimization (PSO), è un algoritmo di ottimizzazione e appartiene ad una particolare classe di algoritmi utilizzati in diversi campi, tra cui l'intelligenza artificiale. È un metodo euristico di ricerca ed ottimizzazione, ispirato al movimento degli sciami.
  
  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.
  
  L'algoritmo 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", le particle) 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 hanno 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, studiando il movimento degli stormi di uccelli o dei banchi di pesci. L'algoritmo fu semplificato quando si comprese che poteva effettuare ottimizzazione.
  
  Anche l'algoritmo del PSO può essere implementato per risolvere dei problemi di ottimizzazione multiobiettivo, dove il fronte di Pareto aiuta a scegliere le soluzioni ottimali del problema.
  
  