La optimización cognitiva social (SCO) es un algoritmo de optimización metaheurística basado en la población que se desarrolló en 2002. [1] Este algoritmo se basa en la teoría cognitiva social , y el punto clave de la ergodicidad es el proceso de aprendizaje individual de un conjunto de agentes con su propia memoria y su aprendizaje social con los puntos de conocimiento en la biblioteca de intercambio social. Se ha utilizado para resolver problemas de optimización continua , [2] [3] programación entera , [4] y optimización combinatoria . Se ha incorporado a la extensión NLPSolver de Calc en Apache OpenOffice .
Algoritmo
Sea un problema de optimización global, donde es un estado en el espacio del problema . En SCO, cada estado se denomina punto de conocimiento y la función es la función de bondad .
En SCO, hay una población de agentes cognitivos que resuelven problemas en paralelo, con una biblioteca de intercambio social. Cada agente tiene una memoria privada que contiene un punto de conocimiento, y la biblioteca de intercambio social contiene un conjunto de puntos de conocimiento. El algoritmo se ejecuta en T ciclos de aprendizaje iterativos. Al ejecutarse como un proceso de cadena de Markov , el comportamiento del sistema en el ciclo t solo depende del estado del sistema en el ciclo ( t − 1). El flujo del proceso es el siguiente:
- [1. Inicialización]: Inicializa el punto de conocimiento privado en la memoria de cada agente y todos los puntos de conocimiento en la biblioteca de intercambio social , normalmente de forma aleatoria en el espacio del problema .
- [2. Ciclo de aprendizaje]: En cada ciclo :
- [2.1. Aprendizaje observacional] Para cada agente :
- [2.1.1. Selección de modelo]:Encuentre un punto de modelo de alta calidad en , normalmente realizado mediante selección de torneo , que devuelve el mejor punto de conocimiento a partir de puntos seleccionados aleatoriamente.
- [2.1.2. Evaluación de calidad]: Comparar el punto de conocimiento privado y el punto modelo , y devolver el de mayor calidad como punto base , y otro como punto de referencia .
- [2.1.3. Aprendizaje]: Combine y para generar un nuevo punto de conocimiento . Normalmente, debería estar alrededor de , y la distancia con está relacionada con la distancia entre y , y se debe incorporar aquí un mecanismo de manejo de límites para garantizar que .
- [2.1.4. Intercambio de conocimientos]:Comparte un punto de conocimiento, normalmente , en la biblioteca de intercambio social .
- [2.1.5. Actualización individual]: Actualizar el conocimiento privado del agente , normalmente reemplazado por . También se pueden considerar algunos tipos de Monte Carlo.
- [2.2. Mantenimiento de la biblioteca]: La biblioteca de intercambio social utiliza todos los puntos de conocimiento enviados por los agentes para actualizarlos en . Una forma sencilla es la selección de un torneo uno por uno: por cada punto de conocimiento enviado por un agente, se reemplaza el peor entre los puntos seleccionados al azar de .
- [2.1. Aprendizaje observacional] Para cada agente :
- [3. Terminación]: Devuelve el mejor punto de conocimiento encontrado por los agentes.
SCO tiene tres parámetros principales, es decir, la cantidad de agentes , el tamaño de la biblioteca de intercambio social y el ciclo de aprendizaje . Con el proceso de inicialización, la cantidad total de puntos de conocimiento que se generarán es , y no está demasiado relacionada con si es grande.
En comparación con los algoritmos de enjambre tradicionales, por ejemplo, la optimización de enjambre de partículas , SCO puede lograr soluciones de alta calidad ya que es pequeño, incluso como . Sin embargo, más pequeño y podría conducir a una convergencia prematura . Se propusieron algunas variantes [5] para garantizar la convergencia global. También se puede hacer un método de optimización híbrido utilizando SCO combinado con otros optimizadores. Por ejemplo, SCO se hibridó con evolución diferencial para obtener mejores resultados que los algoritmos individuales en un conjunto común de problemas de referencia. [6]
Referencias
- ^ Xie, Xiao-Feng; Zhang, Wen-Jun; Yang, Zhi-Lian (2002). Optimización cognitiva social para problemas de programación no lineal. Conferencia internacional sobre aprendizaje automático y cibernética (ICMLC), Beijing, China: 779-783.
- ^ Xie, Xiao-Feng; Zhang, Wen-Jun (2004). Solución de problemas de diseño de ingeniería mediante optimización cognitiva social. Conferencia sobre computación genética y evolutiva (GECCO), Seattle, WA, EE. UU.: 261-262.
- ^ Xu, Gang-Gang; Han, Luo-Cheng; Yu, Ming-Long; Zhang, Ai-Lan (2011). Optimización de potencia reactiva basada en un algoritmo de optimización cognitiva social mejorado. Conferencia internacional sobre ciencia mecatrónica, ingeniería eléctrica y computación (MEC), Jilin, China: 97-100.
- ^ Fan, Caixia (2010). Solución de programación entera basada en un algoritmo de optimización cognitiva social de máxima entropía. Conferencia internacional sobre tecnología de la información y gestión científica (ICITSM), Tianjing, China: 795-798.
- ^ Sun, Jia-ze; Wang, Shu-yan; Chen, Hao (2014). Un optimizador cognitivo social de convergencia global garantizada. Problemas matemáticos en ingeniería : Art. No. 534162.
- ^ Xie, Xiao-Feng; Liu, J.; Wang, Zun-Jing (2014). "Un sistema de optimización de grupos cooperativos". Computación blanda . 18 (3): 469– 495. arXiv : 1808.01342 . doi :10.1007/s00500-013-1069-8. S2CID 5393223.