Cuando hablamos de optimización en el ámbito de las ciencias de la computación hacemos referencia al mismo concepto coloquial asociado a esa palabra, la concreción de un objetivo utilizando la menor cantidad de recursos disponibles, o en una visión similar, la obtención del mejor objetivo posible utilizando todos los recursos con lo que se cuenta.
Los métodos para encontrar la mejor solución (óptima) varían de acuerdo a la complejidad del problema enfrentado. Para problemas triviales, el cerebro humano posee la capacidad de resolverlos (encontrar la mejor solución) directamente, pero a medida que aumenta la complejidad del problema, se hace necesario contar con herramientas adicionales.
En esta dirección, existe una amplia variedad de técnicas para resolver problemas complejos. Dentro de estas técnicas, podemos mencionar las técnicas exactas. Este tipo de algoritmos son capaces de encontrar las soluciones óptimas a un problema dado en una cantidad finita de tiempo. Como contrapartida, requiere que el problema a resolver cumpla con condiciones bastante restrictivas.
Existen además un conjunto muy amplio de técnica aproximadas, conocidas como metaheurísticas. Estas técnicas se caracterizan por integrar de diversas maneras procedimientos de mejora local y estrategias de alto nivel para crear un proceso capaz de escapar de óptimos locales y realizar una búsqueda robusta en el espacio de búsqueda del problema. En su evolución, estos métodos han incorporado diferentes estrategias para evitar la convergencia a óptimos locales, especialmente en espacios de búsqueda complejos. Este tipo de procedimientos tienen como principal característica que son aplicables a cualquier tipo de problemas, sin requerir ninguna condición particular a cumplir por los mismos. Estas técnicas no garantizan en ningún caso la obtención de los valores óptimos de los problemas en cuestión, pero se ha demostrado que son capaces de alcanzar muy buenos valores de soluciones en períodos de tiempo cortos. Además, es posible aplicarlas a problemas de diferentes tipos sin mayores modificaciones, mostrando su robustez y su amplio espectro de uso.
La mayoría de estas técnicas están inspiradas en procesos biológicos y/o físicos, y tratan de simular el comportamiento propio de estos procesos que favorecen la búsqueda y detección de soluciones mejores en forma iterativa. La más difundida de estas técnicas son los algoritmos genéticos, basados en el mecanismo de evolución natural de las especies.
Existen diferentes tipos de problemas, y multitud de taxonomías para clasificar los mismos. En el alcance de este trabajo nos interesa diferenciar los problemas en cuanto a la cantidad de objetivos a optimizar. Con esta consideración en mente, surge una primera clasificación evidente, los problemas mono-objetivo, donde existe solo una función objetivo a optimizar, y los problemas multi-objetivo donde existe más de una función objetivo. En el presente trabajo se estudia la utilización de metaheurísticas evolutivas para la resolución de problemas complejos, con uno y con más de un objetivo. Se efectúa un análisis del estado de situación en la materia, y se proponen nuevas variantes de algoritmos existentes, validando que las mismas mejoran resultados reportados en la literatura.
En una primera instancia, se propone una mejora a la versión canónica y mono-objetivo del algoritmo PSO, luego de un estudio detallado del patrón de movimientos de las partículas en el espacio de soluciones.
Estas mejoras se proponen en las versiones de PSO para espacios continuos y para espacios binarios. Asimismo, se analiza la implementación de una versión paralela de esta técnica evolutiva.
Como segunda contribución, se plantea una nueva versión de un algoritmo PSO multiobjetivo (MOPSO Multi Objective Particle Swarm Optimization) incorporando la posibilidad de variar dinámicamente el tamaño de la población, lo que constituye una contribución innovadora en problemas con mas de una función objetivo.
Por último, se utilizan las técnicas representativas del estado del arte en optimización multi-objetivo aplicando estos métodos a la problemática de una empresa de emergencias médicas y atención de consultas domiciliarias. Se logró poner en marcha un proceso de asignación de móviles a prestaciones médicas basado en metaheurísticas, logrando optimizar el proceso de asignación de móviles médicos a prestaciones médicas en la principal compañía de esta industria a nivel nacional.