9. Programación lineal entera.
n Introducción
n Método de ramificación y poda
Programación lineal entera
n Un problema de programación entera es aquel en el que alguna o todas sus variables deben tomar valores enteros.
n Son más costosos de resolver que los problemas sin esta restricción
n Un modelo entero es igual que el modelo lineal correspondiente (relajación) pero con la restricción adicional de que las variables deben ser enteras
n La región factible del modelo entero está contenida dentro de la del modelo relajado.
n El valor óptimo de la relajación es una cota superior (prob. Max) del valor óptimo del modelo entero
Programación lineal entera
n ¿Vale como solución los valores redondeados o truncados del problema relajado?
n Posible solución: enumerar explícitamente todas las soluciones enteras de la región factible
n Algoritmo más utilizado: ramificación y acotación
Algoritmo de ramificación y acotación
n Enumera de forma implícita todas las soluciones de un modelo lineal entero y solucionando subproblemas se van eliminando conjuntos de soluciones posibles.
n Primero se soluciona el problema relajado y se obtiene una solución: x1,x2,...,xn.
n Si xitoma un valor no entero entre k y k+1 se consideran dos subproblemas añadiendo al problema original las restricciones
Algoritmo de ramificación y acotación
n Un subproblema puede llegar a no tener sucesores por tres motivos:
n El problema no es factible
n El problema tiene una solución entera
n Si su valor de la función objetivo es mejor que el de cualquier otra solución entera ya obtenida se convierte en solución candidata
n Si su valor de la función objetivo es mejor que el de la solución candidata actual se descarta
n El problema tiene una solución no entera pero con un valor de la función objetivo peor que el de la solución candidata actual: se descarta.
n El algoritmo termina cuando se han resuelto o descartado todos los subproblemas posibles
Algoritmo de ramificación y acotación
n Este algoritmo se puede utilizar en problemas de programación entera mixta (solo algunas variables enteras)
n En problemas grandes puede ser muy eficiente gracias a la cota que permite eliminar un conjunto grande de soluciones factibles
Algoritmo de ramificación y acotación
n Para implementar el algoritmo en un ordenador hay que decidir:
n Qué variable se utiliza para ramificar
n Estrategia: utilizar la variable con mayor importancia económica para el problema
n Qué subproblema se resuelve antes
n Primero el mejor: se ramifica en un nodo, se resuelven todos sus subproblemas y se ramifica por el que tiene un mejor valor objetivo
n Primero en amplitud: se resuelve siempre el subproblema generado más recientemente
Métodos heurísticos
n En ocasiones puede ser interesante terminar el algoritmo con una solución satisfactoria: próxima al valor objetivo óptimo del problema relajado (métodos heurísticos)
n Ejemplo: problema del viajante
n Método del vecino más cercano: se empieza en cualquier ciudad y se visita la ciudad más cercana hasta completar un circuito. NO
Problemas de optimización combinatoria
n Cualquier problema de optimización con un número finito de soluciones factibles
n El algoritmo de ramificación y acotación suele ser el más eficaz para este tipo de problemas
n Ejemplos:
n Decidir sobre el orden en el que se realizan un número finito de trabajos
n Problema del viajero
n Problema de las ocho reinas