En los últimos 40 o 50 años se han propuesto muchos algoritmos que imitan el comportamiento de algunos seres vivos, o de los “mecanismos” de la vida. A menudo, estos algoritmos se dedican a tareas de optimización relacionadas con problemas de optimización de gran tamaño o muy complejos. Probablemente los precursores y más populares (en mi humilde opinión) son los algoritmos genéticos (GA), el recocido simulado (SA) y las estrategias de evolución (ES). A menudo están implícitamente vinculados al área general de Inteligencia Artificial (IA) porque se aplican a problemas que se encuentran en el catálogo de preguntas de IA.
Entre los algoritmos de seguimiento de GA, SA y otros algoritmos “pioneros” inspirados en sistemas biológicos, se encuentran la “optimización de colonias de hormigas” (ACO) y la “optimización de colonias de abejas” (o algoritmo de colonias de abejas) (BCO). Las colonias reales de hormigas y abejas dan inmediatamente la idea de paralelismo o concurrencia, muchos miles de agentes similares que realizan repetidamente las mismas tareas aburridas un millón de veces 🙂, por lo que el paradigma parece encajar en problemas de optimización de alta dimensión con muchos máximos y mínimos.
Sucede que el diseño de la estructura del braguero puede estar relacionado con un problema de optimización convexo, como se explica en https://ocw.mit.edu/courses/sloa…. Dada esta relación, puede realizar diseños con cualquier algoritmo de optimización adecuado, como Bee Colony.
- Cómo escribir un programa en C para implementar un algoritmo de planificación de prioridades, junto con la visualización del diagrama de Gantt
- ¿Por qué la programación dinámica se llama programación dinámica?
- ¿Cuán específicamente la memoria de la clase de almacenamiento cambiará las arquitecturas, los ecosistemas (incluidas las opciones de lenguaje de programación) y los algoritmos para big data?
- ¿Qué es un buen libro sobre las estructuras de datos de Java?
- Cómo traducir mis pensamientos en código
Ant Colony Optimization estudia sistemas artificiales que se inspiran en el comportamiento de las colonias de hormigas reales y que se utilizan para resolver problemas de optimización discretos. Consulte Acerca de ACO para obtener un breve resumen sobre ACO y ACO: Publicaciones para obtener enlaces a algunas publicaciones relevantes. Obviamente también hay algoritmos de optimización de colonias de hormigas – Wikipedia para consultar.
Con respecto a la optimización de colonias de abejas, una muy buena descripción se encuentra en el algoritmo de colonias de abejas artificiales (mejor que Wikipedia en mi humilde opinión …). En BCO, una colonia de abejas recolectoras artificiales (agentes) busca fuentes ricas de alimentos artificiales (buenas soluciones para un problema dado). Para aplicar BCO, el problema de optimización considerado (diseño de estructura de celosía) se convierte primero en el problema de encontrar el mejor vector de parámetros que minimice una función objetivo. Luego, las abejas artificiales descubren al azar una población de vectores de soluciones iniciales y luego las mejoran iterativamente empleando las estrategias: avanzar hacia mejores soluciones por medio de un mecanismo de búsqueda de vecinos mientras abandonan las soluciones pobres.
Dado que el diseño de la estructura de celosía es un problema de optimización convexo, de hecho un problema cuadrático convexo, existen algoritmos eficientes y exactos para obtener el óptimo. Sin embargo, si las estructuras son muy grandes, y las matrices de equilibrio involucradas en la definición del problema son muy grandes, puede ser más eficiente aplicar un algoritmo de optimización aproximado como BCO. O, al menos, probablemente sea más divertido programar y usar BCO que aplicar ciegamente un paquete numérico para resolver problemas convexos 🙂