“A hybrid VNS/Tabu search Algorithm for apportioning the European Parliament” Villa, Lozano, Racero, Canca, LNCS 3906, 2006.
Problema:
• Como distribuir los escaños (cantidad de parlamentarios) por país en forma proporcional a los habitantes de cada país (en este caso de la Unión Europea).
• La distribución de la población se puede considerar fraccionaria, pero la cantidad de escaños es discreta. Entonces no se puede lograr una proporcionalidad perfecta.
• Hay varias metodologías para resolver esto aproximadamente en diversos ámbitos y países. También se toman en cuenta consideraciones políticas, como por ejemplo que haya un número mínimo de representantes por país.
Modelo de programación lineal entera mixta
Min r (r + + r
- )
Sujeto a
sr smin
Nr sr = S
Nr pr = P
r + - r
- = (sr / S/ pr/ P) -1 r
r + , r
- 0, sr enteroDonde: • N es el nro de países• pr la población del país r• smin mínimo número de escaños por paíss r
+, r – , desviación positiva y negativa respecto de la relación entre escaños
y población.• P población total, S, número total de escaños.
Se corrió el modelo para valores de smin de 0 a 5, y en todos los casos después de 5 horas con el CPLEX 7.0 no se obtuvo el óptimo. Si se encontraron soluciones factibles, mejores que las que se usan en la actualidad en la práctica.
Se propuso una heurística basada en VNS y Tabu Search
• Solución inicial: la situación actual (s01, s0
2, s03,…… s0
N)
• Varias estructuras de vecindarios simples que mantienen la factibilidad, es decir el total de escaños repartidos.
Seudocódigo
InicializaciónRepetir mientras no se cumpla criterio de parada:i) k=1ii) mientras k≠ kmax a) Aplicar Tabú Search dentro de la vecindad k de la
solución actual b) Si la solución obtenida x´ es mejor que la mejor hasta el
momento poner x = x´ y poner k =1. Sino cambiar de vecindario o sea poner k = k+1
Parar
Como lista Tabu se usa que por un cierto número de iteraciones la cantidad de escaños para los países afectados por el cambio no puede cambiarse.
Se obtuvieron soluciones mejores que la actual, y un poco mejores que las de CPLEX pero en este caso fue en pocos
segundos y no en las 5 hrs. que demoró el CPLEX.
Además de todos los ejemplos que vimos hay aplicaciones de metaheurísticas a muchos problemas diferentes…..y todos los días aparecen nuevos problemas. Algunos trabajos que tengo a mano:
• VLSI• Planificación de horarios de enfermeras• Gran variedad de problemas de planificación
industrial• Diseño de códigos• Diseño de portfolios• Otros problemas de Bioinformática
OTRAS METAHEURISTICAS
• Swarm optimization• Artificial Inmune Systems
Comentarios y Conclusiones
Cuándo usar metaheuristicas?.
• Problemas difíciles (NP-hard)• Problemas difíciles de modelar• Problemas reales donde se quiere tener una “buena” solución urgentemente.
Ventajas
• Relativamente fáciles de programar, transportables.• Modificación del problema de los datos,flexibilidad, interacción con el usuario.• Paralelización
• Falta “teoría”• Nomenclatura• PROGRAMACION• Híbridos
Relación con: • Heurísticas tradicionales• Métodos exactos (cotas, branch and cut,generación de
columnas, etc.)
• Qué metaheurística elegir?.
• Cuál es mejor?. Cómo comparar?.
• Cómo saber si los resultados son buenos?.
• Cómo se hace para implementar una metaheurística exitosa?.
• Paralelización.• Software
Top Related