Discussione sull’articolo "Algoritmi di ottimizzazione della popolazione: Sciame di particelle (PSO)"

 

Il nuovo articolo Algoritmi di ottimizzazione della popolazione: Sciame di particelle (PSO) è stato pubblicato:

In questo articolo, prenderò in considerazione il famoso algoritmo Particle Swarm Optimization (PSO). In precedenza, abbiamo discusso caratteristiche così importanti degli algoritmi di ottimizzazione come convergenza, tasso di convergenza, stabilità, scalabilità, nonché sviluppato un banco di prova e considerato il più semplice algoritmo RNG.

Poiché utilizzo la stessa struttura per la costruzione degli algoritmi come nel primo articolo della serie (e continuerò a farlo in futuro) descritto in Fig. 2, allora non sarà difficile per noi collegare l'algoritmo al banco di prova .

Durante l'esecuzione del banco, vedremo animazioni simili a quelle mostrate di seguito. In questo caso, possiamo vedere chiaramente come si comporta uno sciame di particelle. Lo sciame si comporta davvero come uno sciame in natura. Sulla mappa termica della funzione, si muove sotto forma di una nuvola densa.

Come ricorderete, il cerchio nero indica l'ottimo globale (max) della funzione, mentre il punto nero indica le migliori coordinate medie dell'algoritmo di ricerca ottenute al momento dell'iterazione corrente. Lasciatemi spiegare da dove provengono i valori medi. La mappa termica è bidimensionale nelle coordinate e la funzione ottimizzata può includere centinaia di variabili (misurazioni). Pertanto, il risultato è mediato dalle coordinate.

n1

  PSO sulla funzione test Skin .

n2

  PSO sulla funzione di test Forest .

n3

  PSO sulla funzione di test Megacity .

Come puoi vedere nell'animazione, i test hanno dimostrato che PSO gestisce abbastanza bene e fluidamente la prima funzione, ma solo quando si ottimizzano due variabili. Con un aumento della dimensione dello spazio di ricerca, l'efficienza dell'algoritmo diminuisce drasticamente. Ciò è particolarmente evidente sulla seconda e discreta sulla terza funzione. I risultati sono notevolmente peggiori dell'algoritmo casuale descritto nell'articolo precedente. Torneremo sui risultati e li discuteremo in dettaglio quando formeremo una tabella comparativa dei risultati.

Autore: Andrey Dik

 
Sospetto che se si smorzasse linearmente il termine di peso d'inerzia (w) durante la ricerca, si migliorerebbe la capacità di ricerca locale degli sciami e si accelererebbe la convergenza. La maggior parte della letteratura suggerisce di imporre un limite inferiore di w=0,4. Ho riscontrato che lo schema PSO è molto efficace per un'ampia classe di problemi con questo valore.
 
koehnw limite inferiore di w=0,4. Ho riscontrato che lo schema PSO è molto efficace per un'ampia classe di problemi con questo valore.

grazie per il commento! sì, è possibile collegare i coefficienti alle iterazioni, come viene fatto nell'algoritmo di ottimizzazione da un branco di lupi grigi. si vedano i miei articoli seguenti.

Purtroppo non tutti gli articoli sono ancora stati pubblicati in inglese.
Population Optimization Algorithms: Ant Colony Optimization (ACO): https://www.mql5.com/ru/articles/11602
Algoritmi di ottimizzazione delle popolazioni: Colonia di api artificiali (ABC): https://www.mql5.com/ru/articles/11736
Algoritmi di ottimizzazione delle popolazioni: Ottimizzazione da parte di un branco di lupi grigi (GreyWolf Optimizer - GWO): https://www.mql5.com/ru/articles/11785

tabella di stima
 

Gli articoli sulle tecniche di ottimizzazione meta-euristica sono fantastici! Stai facendo un ottimo lavoro Andrey, è incredibile la quantità di esperienza che hai da condividere con noi, grazie!

@METAQUOTES per favore prendete in considerazione l'implementazione di questi obiettivi di ottimizzazione meta-euristica nell'ottimizzatore! Sarebbe fantastico per il software.

Qualcosa di semplice che l'utente può impostare all'interno di OnTester():

OptimizerSetEngine("ACO"); // Ottimizzazione delle colonie di formiche
OptimizerSetEngine("COA"); // algoritmo di ottimizzazione cuckoo
OptimizerSetEngine("ABC"); // colonia di api artificiale
OptimizerSetEngine("GWO"); // ottimizzatore lupo grigio
OptimizerSetEngine("PSO"); // ottimizzazione a sciame di particelle 



Saluti dal Brasile

 
Vinicius Barenho Pereira #:

Gli articoli sulle tecniche di ottimizzazione meta-euristica sono fantastici! Stai facendo un ottimo lavoro Andrey, è incredibile quanta esperienza hai da condividere con noi, grazie!

@METAQUOTES per favore prendete in considerazione l'implementazione di questi obiettivi di ottimizzazione meta-euristica nell'ottimizzatore! Sarebbe fantastico per il software.

Qualcosa di semplice che l'utente può impostare all'interno di OnTester() come:


Saluti dal Brasile

Grazie per la recensione! Ogni nuovo articolo per me è una nuova scoperta, sono felice che tu sia con me.

 
Grazie, ma temo di essere al di là delle mie conoscenze.