Optimización por enjambre de partículas

De Wikipedia, la enciclopedia libre

En informática, la optimización por nube de partículas u optimización por enjambre de partículas (conocida por sus siglas en inglés: PSO, de «particle swarm optimization») hace referencia a una metaheurística que evoca el comportamiento de las partículas en la naturaleza.

Los métodos PSO se atribuyen originalmente a los investigadores Kennedy, Eberhart[1]​ y Shi.[2]​ En un principio fueron concebidos para elaborar modelos de conductas sociales,[3]​ como el movimiento descrito por los organismos vivos en una bandada de aves o un banco de peces. Posteriormente el algoritmo se simplificó y se comprobó que era adecuado para problemas de optimización. El libro de Kennedy y Eberhart[4]​ describe numerosos aspectos teóricos de la PSO y la inteligencia de enjambre. Un amplio estudio de las aplicaciones de PSO se puede encontrar en Poli.[5][6]

PSO permite optimizar un problema a partir de una población de soluciones candidatas, denotadas como "partículas", moviendo éstas por todo el espacio de búsqueda según reglas matemáticas que tienen en cuenta la posición y la velocidad de las partículas. El movimiento de cada partícula se ve influido por su mejor posición local hallada hasta el momento, así como por las mejores posiciones globales encontradas por otras partículas a medida que recorren el espacio de búsqueda. El fundamento teórico de esto es hacer que la nube de partículas converja rápidamente hacia las mejores soluciones.

PSO es una metaheurística, ya que asume pocas o ninguna hipótesis sobre el problema a optimizar y puede aplicarse en grandes espacios de soluciones candidatas. Sin embargo, como toda metaheurística, PSO no garantiza la obtención de una solución óptima en todos los casos.

Analogía con la naturaleza[editar]

Las abejas en busca de alimento tratan de localizar la región del espacio con mayor densidad de flores, ya que es allí donde presumiblemente existe más cantidad de polen. Cada abeja vuela de modo errático por el espacio, recordando en todo momento cuál es la región donde ha visto más flores. A su vez, el enjambre sabe colectivamente cuál es la región del espacio, de entre todas las exploradas, donde se han encontrado más flores. Cada abeja variará individualmente su movimiento con arreglo a estas dos direcciones, volando hacia algún lugar intermedio. Es posible que la abeja durante ese sobrevuelo encuentre una región con más densidad de flores que la conocida hasta entonces (óptimo local), o incluso que la conocida por el enjambre (óptimo global); en este último caso, todo el enjambre orientará la búsqueda hacia esa nueva dirección. Pasado un tiempo, si se descubre otra región con mayor densidad floral, el enjambre reorientará nuevamente la búsqueda hacia allí, y así sucesivamente.

Algoritmo[editar]

Un algoritmo PSO trabaja con una población (llamada nube o enjambre) de soluciones candidatas (llamadas partículas). Dichas partículas se desplazan a lo largo del espacio de búsqueda conforme unas simples reglas matemáticas. El movimiento de cada partícula depende de su mejor posición obtenida, así como de la mejor posición global hallada en todo el espacio de búsqueda. A medida que se descubren nuevas y mejores posiciones, éstas pasan a orientar los movimientos de las partículas. El proceso se repite con el objetivo, no garantizado, de hallar en algún momento una solución lo suficientemente satisfactoria.

Lo descrito anteriormente puede formalizarse del siguiente modo: sea fn → la función de coste que se desea minimizar. La función f toma como argumento una solución candidata, representada como un vector de números reales, y da como salida un número real que indica el valor de la función objetivo para la solución candidata obtenida. Las mejores posiciones se corresponden con los mejores valores de la función objetivo f. El objetivo es hallar una solución a que verifique f(a) ≤ f(b) para todo b en el espacio de búsqueda, lo que implicaría que a es el mínimo global. El proceso inverso, útil en problemas de maximización, puede lograrse considerando una función h = -f.

Sea S el número de partículas en la nube, cada una de las cuales tiene una posición xi ∈ n en el espacio de búsqueda y una velocidad vi ∈ n. Sea pi la mejor posición conocida de una partícula i, y g la mejor posición global conocida. Un algoritmo PSO básico podría describirse como sigue:

  • Para cada partícula :
    • Inicializar la posición de la partícula mediante un vector aleatorio uniformemente distribuido: , donde y son respectivamente el límite inferior y el límite superior del espacio de búsqueda.
    • Inicializar la mejor posición conocida de la partícula a su posición inicial: .
    • Si actualizar la mejor posición global conocida: .
    • Inicializar la velocidad de la partícula: .
  • Mientras no se cumpla el criterio de parada (por.ej. límite máximo de iteraciones, encontrada una solución satisfactoria), repetir:
    • Para cada partícula :
      • Para cada dimensión :
        • Elegir números aleatorios: .
        • Actualizar la velocidad de la partícula: .
      • Actualizar la posición de la partícula: .
      • Si entonces:
        • Actualizar la mejor posición conocida de la partícula: .
        • Si actualizar la mejor posición global: .
  • Devolver como la mejor solución encontrada.

Los parámetros y son definidos por un especialista y regulan el comportamiento y la eficacia del método PSO, como se expone a continuación.

Selección de parámetros[editar]

Gráfica bidimensional que muestra el rendimiento de una variante PSO ante un benchmark de problemas en función de dos parámetros.

En PSO, la elección de los parámetros es un aspecto determinante en el desempeño del algoritmo de optimización. Por ende, seleccionar un conjunto de parámetros que favorezcan un buen rendimiento del algoritmo es y ha sido objeto de abundantes investigaciones.[7][8][9][10][11][12][13][14][15]

De manera intuitiva, puede imaginarse que la función objetivo da lugar a una hipersuperficie de dimensionalidad equivalente al número de parámetros a optimizar (variables de búsqueda). La irregularidad de dicha hipersuperficie dependerá, obviamente, del problema en particular. Asimismo, la calidad de la búsqueda dependerá de cuán exhaustiva sea ésta, en función de los parámetros escogidos. Para obtener soluciones con una hipersuperfie "poco irregular" en general se necesitan pocas partículas e iteraciones; en cambio, para conseguir soluciones de hipersuperficie "más irregular" se requiere una búsqueda más a fondo, que involucre mayor cantidad de partículas e iteraciones. Este comportamiento es análogo al observado en situaciones reales, como por ej. la búsqueda de los mejores pastos llevada a cabo por la ganadería trashumante, donde grandes rebaños han de atravesar terrenos difíciles y abruptos para alcanzar los mejores prados (léase óptimo global), mientras que rebaños más pequeños pueden bastarse con terrenos menos densos en vegetación (óptimo local), usando pocas iteraciones.

En PSO, los parámetros pueden asimismo ajustarse para diversos escenarios de optimización[15][16][17]​ utilizando un optimizador "superpuesto", un concepto conocido como metaoptimización.[18][19][20]

Topologías[editar]

La PSO básica suele incurrir fácilmente en óptimos locales. Esta convergencia prematura puede evitarse ignorando la mejor posición global g conocida, y atendiendo en su lugar a la mejor posición l conocida del sub-enjambre "circundante" a la partícula en movimiento. Este sub-enjambre puede definirse geométricamente –por ej. "las m partículas más cercanas"– o bien de forma social, es decir, como un conjunto de partículas relacionadas, con independencia de la distancia que las separa.

Si suponemos que existe un vínculo de información entre cada partícula y sus adyacentes, el conjunto de estos vínculos constituye un grafo, una red de comunicación, denominada topología. Una topología social muy frecuente es el anillo, en donde cada partícula tiene sólo dos partículas adyacentes, pero hay muchas otras.[21]​ La topología no es necesariamente fija, puede ser adaptativa según el caso (SPSO,[22]​ estrella estocástica,[23]​ TRIBES,[24]​ Cyber Swarm,[25]​ C-PSO[26]​).

Funcionamiento interno[editar]

Hay diversas interpretaciones en cuanto a cómo y por qué un algoritmo de PSO es capaz de optimizar variables.

Una noción comúnmente aceptada por los investigadores es que el "comportamiento de enjambre" varía entre un "comportamiento de exploración" (de búsqueda en una amplia región del espacio de soluciones) y un "comportamiento de explotación" (de búsqueda local que se aproxima rápidamente hacia un óptimo, posiblemente local). Este es el criterio predominante desde los inicios de la PSO,[2][3][7][11]​ y sostiene que el algoritmo de PSO y sus parámetros han de ser cuidadosamente seleccionados para lograr un equilibrio idóneo entre exploración y explotación, a fin de evitar una convergencia prematura hacia óptimos locales, y, al mismo tiempo, asegurar una buena tasa de convergencia al óptimo global. Esta interpretación ha dado pie a numerosas variantes dentro de la PSO, como se expone más adelante.

Otra perspectiva aduce que aún no se ha logrado comprender exactamente cómo afecta el comportamiento del enjambre a la calidad del proceso de optimización, especialmente en problemas de optimización con espacios de búsqueda multidimensionales, discontinuos o variables en el tiempo. Desde este punto de vista, bastaría con encontrar algoritmos y parámetros que en la práctica den como resultado un buen rendimiento, independientemente de qué balance entre exploración y explotación adopte el enjambre. Este planteamiento ha llevado a simplificar los algoritmos de PSO, como se explica en un apartado posterior.

Convergencia[editar]

En el contexto de la PSO, el término "convergencia" suele emplearse con dos significados (a veces considerados erróneamente como sinónimos):

  • Convergencia puede referirse a la mejor posición global g conocida, que se aproxima (converge) al óptimo del problema, independientemente de cómo se comporte el enjambre.
  • Convergencia puede referirse a una concentración del enjambre, donde todas las partículas confluyen hacia un punto del espacio de búsqueda, que puede o no ser el óptimo.

En la literatura especializada pueden encontrarse algunos intentos de analizar matemáticamente la convergencia en PSO.[10][11][12]​ Estos análisis han servido para establecer pautas de selección de los parámetros que determinarían la convergencia, divergencia u oscilación de las partículas del enjambre, lo que a la postre ha propiciado nuevas variantes en la PSO. No obstante, estos análisis han sido objeto de críticas al ser considerados demasiado simplistas,[20]​ toda vez que asumen que el enjambre posee una sola partícula, sin variables aleatorias, y que la mejor posición p conocida de la partícula y la mejor posición global g del enjambre permanecen constantes durante el proceso de optimización. Asimismo, ciertos análisis admiten un número infinito de iteraciones en la optimización, lo cual no es posible en un escenario real. Por tanto, el estudio de las características de convergencia de los diversos algoritmos de PSO y sus parámetros asociados está fuertemente ligado a los resultados empíricos.

Sesgos[editar]

A medida que el algoritmo de PSO avanza, dimensión por dimensión, el punto solución es más fácil de encontrar si se halla en un eje del espacio de búsqueda, en una diagonal o, aún más fácil, si está justo en el centro.[27][28]

Una primera forma de evitar este sesgo, permitiendo hacer comparaciones más ponderadas, es por ejemplo tomar como referencia problemas no sesgados, y luego rotarlos o desplazarlos.[29]​ Otra opción es modificar el propio algoritmo para hacerlo menos sensible al sistema de coordenadas.[30][31]

Variantes[editar]

Incluso un algoritmo básico de PSO puede dar lugar a numerosas variantes. Por ejemplo, hay diferentes formas de inicializar las partículas y sus velocidades, de regular la velocidad, de actualizar p y g una vez que todo el enjambre ha sido actualizado, etc. Algunas de estas opciones y su impacto potencial en el rendimiento han sido discutidos en la literatura especializada.[9]

Como resultado, constantemente surgen nuevas y más sofisticadas variantes de PSO con el fin de mejorar el rendimiento del proceso de optimización. En la investigación llevada a cabo pueden distinguirse ciertas tendencias; una es lograr un método de optimización híbrido que combine PSO con otros mecanismos optimizadores,[32][33]​ por ej. incorporando un método eficaz de aprendizaje.[34]​ Otra vía de investigación trata de contrarrestar la convergencia prematura (es decir, el estancamiento de la búsqueda en un óptimo local), por ej. invirtiendo o perturbando el movimiento de las partículas.[14][35][36]​ Otro de los enfoques propone lidiar con la convergencia prematura mediante el uso de múltiples enjambres (optimización multi-enjambre); esta estrategia multi-enjambre también es aplicable a la optimización multiobjetivo.[37]​ Asimismo, se han producido avances en la adaptación de los parámetros de comportamiento durante la optimización.[17]

Simplificaciones[editar]

Como se apuntó anteriormente, existe una corriente de opinión que considera que la PSO debe simplificarse tanto como sea posible, mientras no afecte al rendimiento, en aplicación de la navaja de Occam. La simplificación de la PSO fue propuesta originalmente por Kennedy,[3]​ y desde entonces ha sido ampliamente estudiada.[13][19][20][38]​ Con su puesta en práctica se han observado mejoras en el rendimiento, mayor facilidad para ajustar los parámetros y un comportamiento más consistente ante distintos problemas de optimización.

Otro argumento a favor de la simplificación es que sólo puede probarse empíricamente la eficacia de una metaheurística haciendo ensayos sobre un número finito de problemas de optimización. Esto significa que una metaheurística como PSO no puede validarse, lo que aumenta el riesgo de cometer errores en su descripción e implementación. Una buena muestra de ello[39]​ fue una variante prometedora de un algoritmo genético (otra popular metaheurística), que más tarde se reveló defectuosa al presentar una búsqueda de optimización fuertemente sesgada; el sesgo se debía a un error de programación, que ya ha sido corregido.[40]

Si se desea inicializar la velocidad asociada a las partículas se requieren entradas adicionales. Una variante simple es la "optimización con enjambre de partículas aceleradas" (APSO),[41]​ que permite acelerar la convergencia en muchas aplicaciones. Un sencillo código de ejemplo de APSO está disponible on-line.[42]

Optimización multiobjetivo[editar]

La PSO también se ha aplicado a problemas multiobjetivo,[43][44]​ en los que la evaluación de la función objetivo tiene en cuenta la "dominancia de Pareto" al mover las partículas, de manera que las soluciones no-dominadas son aproximadas al frente de Pareto.

PSO binaria, discreta y combinatoria[editar]

Como las ecuaciones usadas en PSO operan con números reales, un método común a la hora de resolver problemas discretos es mapear el espacio de búsqueda a un dominio continuo, para aplicar PSO clásica, y luego desmapear el resultado. El proceso de mapeo puede consistir en una conversión muy simple (por ej. redondeo de valores) o, por el contrario, bastante compleja.[45]

Sin embargo, las ecuaciones de movimiento hacen uso de operadores que controlan cuatro acciones:

  • calcular la diferencia entre dos posiciones (el resultado define un desplazamiento)
  • multiplicar una velocidad por un coeficiente numérico
  • sumar dos velocidades
  • aplicar una velocidad a una posición

Generalmente, la posición y la velocidad están representadas por n números reales, y los operadores básicos son -, *, +. Pero tales entidades matemáticas pueden definirse de una manera completamente diferente, a fin de hacer frente a problemas binarios (o discretos, en un sentido más amplio), e incluso combinatorios.[46][47][48]​ .[49]​ Una estrategia es redefinir los operadores como basados en conjuntos.[50]

Véase también[editar]

Referencias[editar]

  1. Kennedy, J.; Eberhart, R. (1995). «Particle Swarm Optimization» IV. pp. 1942-1948. doi:10.1109/ICNN.1995.488968. Archivado desde el original el 19 de julio de 2011. 
  2. a b Shi, Y.; Eberhart, R. (1998). «A modified particle swarm optimizer». Proceedings of IEEE International Conference on Evolutionary Computation. pp. 69-73. 
  3. a b c Kennedy, J. (1997). «The particle swarm: social adaptation of knowledge». Proceedings of IEEE International Conference on Evolutionary Computation. pp. 303-308. 
  4. Kennedy, J.; Eberhart, R.C. (2001). Morgan Kaufmann, ed. Swarm Intelligence. ISBN 1-55860-595-9. 
  5. Poli, R. (2007). «An analysis of publications on particle swarm optimisation applications». En Department of Computer Science, University of Essex, UK, ed. Technical Report CSM-469. Archivado desde el original el 16 de julio de 2011. Consultado el 29 de agosto de 2013. 
  6. Poli, R. (2008). «Analysis of the publications on the applications of particle swarm optimisation». Journal of Artificial Evolution and Applications 2008: 1-10. doi:10.1155/2008/685175. 
  7. a b Shi, Y.; Eberhart, R.C. (1998). «Parameter selection in particle swarm optimization». Proceedings of Evolutionary Programming VII (EP98). pp. 591-600. 
  8. Eberhart, R.C.; Shi, Y. (2000). «Comparing inertia weights and constriction factors in particle swarm optimization». Proceedings of the Congress on Evolutionary Computation 1. pp. 84-88. 
  9. a b Carlisle, A.; Dozier, G. (2001). «An Off-The-Shelf PSO». Proceedings of the Particle Swarm Optimization Workshop. pp. 1-6. 
  10. a b van den Bergh, F. (2001). University of Pretoria, Faculty of Natural and Agricultural Science, ed. An Analysis of Particle Swarm Optimizers (PhD thesis). 
  11. a b c Clerc, M.; Kennedy, J. (2002). «The particle swarm - explosion, stability, and convergence in a multidimensional complex space». IEEE Transactions on Evolutionary Computation 6 (1): 58-73. doi:10.1109/4235.985692. 
  12. a b Trelea, I.C. (2003). «The Particle Swarm Optimization Algorithm: convergence analysis and parameter selection». Information Processing Letters 85 (6): 317-325. doi:10.1016/S0020-0190(02)00447-7. 
  13. a b Bratton, D.; Blackwell, T. (2008). «A Simplified Recombinant PSO». Journal of Artificial Evolution and Applications. 
  14. a b Evers, G. (2009). The University of Texas - Pan American, Department of Electrical Engineering, ed. An Automatic Regrouping Mechanism to Deal with Stagnation in Particle Swarm Optimization (Master's thesis). Archivado desde el original el 18 de mayo de 2011. Consultado el 29 de agosto de 2013. 
  15. a b Rocca, P.; Benedetti, M.; Donelli, M.; Franceschini, D.; Massa, A. (2009). «Evolutionary optimization as applied to inverse scattering problems». Inverse Problems 25: 1-41. doi:10.1088/0266-5611/25/12/123003. 
  16. Pedersen, M.E.H. (2010). «Good parameters for particle swarm optimization». En Hvass Laboratories, ed. Technical Report HL1001. Archivado desde el original el 3 de septiembre de 2013. Consultado el 29 de agosto de 2013. 
  17. a b Zhan, Z-H.; Zhang, J.; Li, Y; Chung, H.S-H. (2009). «Adaptive Particle Swarm Optimization». IEEE Transactions on Systems, Man, and Cybernetics 39 (6): 1362-1381. doi:10.1109/TSMCB.2009.2015956. Archivado desde el original el 7 de mayo de 2016. Consultado el 29 de agosto de 2013. 
  18. Meissner, M.; Schmuker, M.; Schneider, G. (2006). «Optimized Particle Swarm Optimization (OPSO) and its application to artificial neural network training». BMC Bioinformatics 7: 125. PMC 1464136. PMID 16529661. doi:10.1186/1471-2105-7-125. 
  19. a b Pedersen, M.E.H. (2010). University of Southampton, School of Engineering Sciences, Computational Engineering and Design Group, ed. Tuning & Simplifying Heuristical Optimization (PhD thesis). Archivado desde el original el 26 de julio de 2011. Consultado el 29 de agosto de 2013. 
  20. a b c Pedersen, M.E.H.; Chipperfield, A.J. (2010). «Simplifying particle swarm optimization». Applied Soft Computing 10 (2): 618-628. doi:10.1016/j.asoc.2009.08.029. Archivado desde el original el 24 de enero de 2014. Consultado el 29 de agosto de 2013. 
  21. Mendes, R. (2004). Population Topologies and Their Influence in Particle Swarm Performance (PhD thesis). Universidade do Minho.
  22. SPSO, Particle Swarm Central
  23. Miranda, V., Keko, H. and Duque, Á. J. (2008). Stochastic Star Communication Topology in Evolutionary Particle Swarms (EPSO). International Journal of Computational Intelligence Research (IJCIR), Volume 4, Number 2, pp. 105-116
  24. Clerc, M. (2006). Particle Swarm Optimization. ISTE (International Scientific and Technical Encyclopedia), 2006
  25. Yin, P., Glover, F., Laguna, M., & Zhu, J. (2011). A Complementary Cyber Swarm Algorithm. International Journal of Swarm Intelligence Research (IJSIR), 2(2), 22-41
  26. Elshamy, W.; Rashad, H.; Bahgat, A. (2007). «Clubs-based Particle Swarm Optimization». Honolulu, HI. pp. 289-296. Archivado desde el original el 23 de octubre de 2013. 
  27. Monson, C. K. & Seppi, K. D. (2005). Exposing Origin-Seeking Bias in PSO GECCO'05, pp. 241-248
  28. Spears, W. M., Green, D. T. & Spears, D. F. (2010). Biases in Particle Swarm Optimization. International Journal of Swarm Intelligence Research, Vol. 1(2), pp. 34-57
  29. Suganthan, P. N., Hansen, N., Liang, J. J., Deb, K.; Chen, Y. P., Auger, A. & Tiwari, S. (2005). Problem definitions and evaluation criteria for the CEC 2005 Special Session on Real Parameter Optimization. Nanyang Technological University
  30. Wilke, D. N., Kok, S. & Groenwold, A. A. (2007). Comparison of linear and classical velocity update rules in particle swarm optimization: notes on scale and frame invariance. International Journal for Numerical Methods in Engineering, John Wiley & Sons, Ltd., 70, pp. 985-1008
  31. SPSO 2011, Particle Swarm Central
  32. Lovbjerg, M.; Krink, T. (2002). «The LifeCycle Model: combining particle swarm optimisation, genetic algorithms and hillclimbers». Proceedings of Parallel Problem Solving from Nature VII (PPSN). pp. 621-630. 
  33. Niknam, T.; Amiri, B. (2010). «An efficient hybrid approach based on PSO, ACO and k-means for cluster analysis». Applied Soft Computing 10 (1): 183-197. doi:10.1016/j.asoc.2009.07.001. 
  34. Zhan, Z-H.; Zhang, J.; Li, Y; Shi, Y-H. (2011). «Orthogonal Learning Particle Swarm Optimization». IEEE Transactions on Evolutionary Computation 15 (6): 832-847. doi:10.1109/TEVC.2010.2052054. 
  35. Lovbjerg, M.; Krink, T. (2002). «Extending Particle Swarm Optimisers with Self-Organized Criticality». Proceedings of the Fourth Congress on Evolutionary Computation (CEC) 2. pp. 1588-1593. 
  36. Xinchao, Z. (2010). «A perturbed particle swarm algorithm for numerical optimization». Applied Soft Computing 10 (1): 119-124. doi:10.1016/j.asoc.2009.06.010. 
  37. Nobile, M.; Besozzi, D.; Cazzaniga, P.; Mauri, G.; Pescini, D. (2012). «A GPU-Based Multi-Swarm PSO Method for Parameter Estimation in Stochastic Biological Systems Exploiting Discrete-Time Target Series». Evolutionary Computation, Machine Learning and Data Mining in Bioinformatics. Lecture Notes in Computer Science. 7264. pp. 74-85. 
  38. Yang, X.S. (2008). Luniver Press, ed. Nature-Inspired Metaheuristic Algorithms. ISBN 978-1-905986-10-1. 
  39. Tu, Z.; Lu, Y. (2004). «A robust stochastic genetic algorithm (StGA) for global numerical optimization». IEEE Transactions on Evolutionary Computation 8 (5): 456-470. doi:10.1109/TEVC.2004.831258. 
  40. Tu, Z.; Lu, Y. (2008). «Corrections to "A Robust Stochastic Genetic Algorithm (StGA) for Global Numerical Optimization». IEEE Transactions on Evolutionary Computation 12 (6): 781-781. doi:10.1109/TEVC.2008.926734. 
  41. X. S. Yang, S. Deb and S. Fong, Accelerated particle swarm optimization and support vector machine for business optimization and applications, NDT 2011, Springer CCIS 136, pp. 53-66 (2011).
  42. Xin-She Yang. «Accelerated Particle Swarm Optimization». 
  43. Parsopoulos, K.; Vrahatis, M. (2002). «Particle swarm optimization method in multiobjective problems». Proceedings of the ACM Symposium on Applied Computing (SAC). pp. 603-607. 
  44. Coello Coello, C.; Salazar Lechuga, M. (2002). «MOPSO: A Proposal for Multiple Objective Particle Swarm Optimization». Congress on Evolutionary Computation (CEC'2002). pp. 1051-1056. 
  45. Roy, R., Dehuri, S., & Cho, S. B. (2012). A Novel Particle Swarm Optimization Algorithm for Multi-Objective Combinatorial Optimization Problem. 'International Journal of Applied Metaheuristic Computing (IJAMC)', 2(4), 41-57
  46. Kennedy, J. & Eberhart, R. C. (1997). A discrete binary version of the particle swarm algorithm, Conference on Systems, Man, and Cybernetics, Piscataway, NJ: IEEE Service Center, pp. 4104-4109
  47. Clerc, M. (2004). Discrete Particle Swarm Optimization, illustrated by the Traveling Salesman Problem, New Optimization Techniques in Engineering, Springer, pp. 219-239
  48. Clerc, M. (2005). Binary Particle Swarm Optimisers: toolbox, derivations, and mathematical insights, Open Archive HAL
  49. Jarboui, B., Damak, N., Siarry, P., and Rebai, A.R. (2008). A combinatorial particle swarm optimization for solving multi-mode resource-constrained project scheduling problems. In Proceedings of Applied Mathematics and Computation, pp. 299-308.
  50. Chen, Wei-neng; Zhang, Jun (2010). «A novel set-based particle swarm optimization method for discrete optimization problem». IEEE Transactions on Evolutionary Computation 14 (2): 278-300.