Está en la página 1de 54

Programación Lineal

Entera
Ricardo Sepúlveda C.
Departamento de Ingeniería de Sistemas
Universidad de La Frontera
Fuente: Clases expositivas Jaime Bustos G. jbustos@ufro.cl
apuntes Ezequiel López Rubio, U Málaga
Texto guía Taha
Programas usando variables enteras
⚫ Todas o algunas de las variables del modelo
están restringidas a tomar sólo valores enteros
⚫ Programa puro
⚫ Programa mixto

⚫ Abre nuevas posibilidades de modelación de


situaciones prácticas importantes
⚫ Decisiones de asignación discretas

⚫ Impone importantes desafíos algorítmicos


⚫ PL está basada en álgebra lineal de espacios convexos continuos
Ejemplos
• Cantidad de infraestructura a instalar
• Cantidad de RRHH a utilizar
• Cantidad de equipos a adquirir
• Decisiones de selección de una (o más)
alternativas
• Funciones lineales por tramos
• Combinación no convexa de espacios
convexos
• Secuenciamiento
• etc
Decisiones binarias (Si-No)
con presupuesto limitado

Se busca maximizar los ingresos totales


▪ Solución óptima entera:
▪ x1 = x2 = x3 = x4 = 1; x5 = 0; z = 95
▪ Seleccionar todos excepto el 5

▪ Solución del problema lineal “relajado”


▪ x1 = 0.5789; x2 = x3 = x4 = 1; x5 = 0.7368; z = 108.68

▪ Solución por Redondeo


▪ x1 = x2 = x3 = x4 = x5 = 1 INFACTIBLE !!!!!

▪ Solución por Truncamiento


▪ x1 = 0; x2 = x3 = x4 = 1; x5 = 0; z = 75 SUBÓPTIMA !!!!
Extensiones
• Suponga que se debe seleccionar el proyecto 5 si se
selecciona alguno de los proyectos 1 o 3
• X5 > X1
• X5 > X3
• Los proyectos 2 y 4 no pueden seleccionarse a la vez
• X2 + X4 < 1
• Debe seleccionarse al menos 2 proyectos de entre el 1,
3y5
• X1 + X3 + X5 > 2
Ejercicio:

Se busca maximizar el valor de la carga transportada


Solución
Sea
• i: Tonelada o Yd3 utilizada
• aij: (Ton / Articulo) j o (Yd3 / Articulo) j
• Cj: Precio de Venta en (100 x $/Articulo)j
• bi: Capacidad en Toneladas o Yd3
• Xj: Cantidad de Artículos i a Despachar
• Z: Utilidad en 100$ a generar por el
despacho de Artículos
El problema de PPL queda en
?????
Maximizar 4X1+7X2+6X3+5X4+4X5
Sujeto a
5X1+8X2+3X3+2X4+7X5 ≤ 112
1X1+8X2+6X3+5X4+4X5 ≤ 109
Xj ϵ Z0+
Problemas con costo fijo

▪ Existe un costo fijo asociado a usar un recurso


▪ Además existe un costo variable dependiente del nivel de
actividad
Problemas con costo fijo
Ejemplo:
El modelo
▪ Yi = 1 si se decide usar la máquina i; 0 en otro caso (variable
binaria)
▪ Xi = cantidad de piezas a fabricar en la máquina i (Variable entera)
▪ Min z = 300 Y1 + 100 Y2 + 200 Y3 + 2 X1 + 10 X2 + 5 X3
▪ Sujeto a
• X1 <= 600 Y1 (restricciones de Balinski)

• X2 <= 800 Y2

• X3 <= 1200 Y3

• X1 >= 500 Y1

• X2 >= 500 Y2

•X3 >= 500 Y3

• X1 + X2 + X3 >= 2000

Y1, Y2, Y3 binarias; X1, X2, X3 enteras


Problema de cobertura de
conjuntos
▪ Existen “conjuntos” que contienen diferentes
elementos
▪ Se desea seleccionar el número de conjuntos
tal que su unión contenga a todos los
elementos existentes
▪ Una matriz binaria permite especificar que
elementos contiene cada conjunto
Restricciones alternativas
(“uno u otro”, “o bien”)

▪ Existen restricciones alternativas excluyentes (no se


pueden cumplir a la vez), sin embargo una de ellas
debe cumplirse

▪ Espacio de restricciones “no convexo”


Ejemplo

pj: tiempo de dj: Fecha de Vencimiento


procesamiento del Trabajo
❑ Dos tipos de restricciones
❑ De no interferencia: evitar que la ejecución de los
trabajos se sobrepongan
❑ Plazo de entrega: cuantificar retraso para penalizar
Restricción de no interferencia
▪ Sea xj = fecha de inicio del trabajo j (en días desde
cero)
▪ Sea pj=duración del trabajo j
▪ Dos trabajos i y j no serán procesados simultáneamente
si:
▪ Xi >= Xj + pj (j va antes que i) o bien
▪ Xj >= Xi + pi (i va antes que j)

▪ Pero estas condiciones no pueden cumplirse


simultáneamente
▪ Sea Yij = 1 si i es anterior a j, 0 en otro caso
▪ Sea M >>0
Es posible agregar una “holgura condicional” de
modo que ambas condiciones se cumplan
simultáneamente, como:

▪ M Yij + (Xi- Xj ) >= pj


▪ M (1-Yij ) + (Xj- Xi) >= pi
Restricción de plazo de entrega:
▪ sea sj una variable no restringida
▪ Xj + pj + sj = dj

▪ Usando la representación habitual para variables no


restringidas, como sj = sj+ - sj-, con sj+ y sj- >0, la
restricción se vuelve:
▪ Xj + sj+ - sj- = dj - pj

▪ Donde sj- representa el retraso en la entrega


Finalmente, el modelo

M = 1000 es suficiente (mayor que tiempos de proceso)


El problema del vendedor viajero

▪ Una persona debe visitar n ciudades una


sola vez (en cualquier orden) recorriendo
la menor distancia total en el circuito
▪ Sea dij la distancia entre las ciudades i y j
▪ Sea Xij = 1 si luego de la ciudad i se viaja
a la ciudad j; 0 en otro caso
El problema del vendedor viajero

• Un modelo TSP se define mediante el número de ciudades n y la


matriz de distancias | dij|.
• La definición de un recorrido prohíbe conectar una ciudad a sí misma
al asignar una penalización muy alta a los elementos diagonales de la
matriz de distancias.
• Un modelo TSP es simétrico si dij = dji para todas las i y j. De lo
contrario, el modelo TSP es asimétrico.
En forma específica, en el caso con n ciudades, se define
▪ Restricciones para evitar subtours
▪ Asociar una variable continua ui a cada ciudad
i=2, 3, … n representando el orden de
visita
▪ Agregar las restricciones
▪ ui – uj + n xij < n – 1 con i,j=2, 3, … n; i
<>j
Enfoques de solución de PLE
Aprovechar el éxito de algoritmos de PL (simplex),
“redireccionando” la búsqueda hacia soluciones
enteras
1. Relajar el espacio de soluciones considerando
variables continuas
2. Resolver el PL resultante
3. Agregar restricciones especiales que modifiquen el
espacio factible lineal orientando hacia un punto
extremo (vértice) que cumpla los requisitos enteros
(y sin perder posibles óptimos enteros)
Dos enfoques generales
⚫ Ramificación y Acotamiento (Branch-and-Bound)
⚫ Desarrollado en 1960 por A. Land y G. Doig
⚫ Modifica el espacio factible “desde adentro” creando
“pares” de nuevos problemas paralelos (árbol)
⚫ Opera en problemas enteros puros y mixtos

⚫ Planos de Corte
⚫ Modifica el espacio factible “desde afuera” creando un
nuevo problema cada vez
⚫ Diferentes cortes permiten manejar problemas puros
(Gomory) o mixtos
Algoritmo de Ramificación y
Acotamiento (resumen)
• Resuelva el PL de un nodo del árbol
• Determine si es un “nodo terminal” o no
• Si es nodo terminal, seleccione otro nodo y repita
• Si no es terminal, ramifique en dos nodos hijos
agregando una restricción especial en cada caso
(resultando en dos nuevos PL)
• Repita hasta que todos los nodos del árbol sean nodos
terminales
Un nodo es terminal en los siguientes casos:
1. Produce una solución (entera o no) peor que
la mejor solución entera encontrada hasta
ahora (cota)
2. Produce una solución entera. Si es mejor que
la cota se convierte en nueva cota
3. No produce una solución factible
Detalle de algoritmo de R & A
Detalle de algoritmo de R & A

En caso de un PLE mixto, sólo se usan las variables enteras


para ramificar
Ejemplo: R&A
Iteraciones para PL
Tabla inicial
Base x1 x2 s2 s3 b
-5 -4 0 0 0
s2 1 1 1 0 5
s3 10 6 0 1 45

Base x1 x2 s2 s3 b
0 -1 0 1/2 22 1/2
s2 0 2/5 1 -1/10 1/2
x1 1 3/5 0 1/10 4 1/2
Base x1 x2 s2 s3 b
0 0 2 1/2 1/4 23 3/4
x2 0 1 2 1/2 -1/4 1 1/4
x1 1 0 -1 1/2 1/4 3 3/4

▪ Solución óptima lineal


▪ X1 = 3.75; x2 = 1.25; z = 23.75

▪ No satisface requisitos enteros


▪ No es un nodo terminal: se debe “ramificar”
Ramificación
▪ Seleccione una variable entera que tenga un
valor óptimo continuo en PL0 (ej. x1 = 3.75)
▪ Elimine todas las posibles soluciones en la franja
3 < x1 < 4, donde no hay soluciones enteras
▪ Reemplace el problema original por dos nuevos
problemas equivalentes
▪ PL1 : PL0 + {x1 < 3 }
▪ PL2 : PL0 + {x1 > 4 }
❑ PL1:

❑ PL2
:
Tabla “extendida” para PL1
Base x1 x2 s2 s3 s4 b

0 0 2 1/2 1/4 0 23 3/4


x2 0 1 2 1/2 -1/4 0 1 1/4
x1 1 0 -1 1/2 1/4 0 3 3/4
s4 1 0 0 0 1 3

Base x1 x2 s2 s3 s4 b

0 0 2 1/2 1/4 0 23 3/4


x2 0 1 2 1/2 -1/4 0 1 1/4
x1 1 0 -1 1/2 1/4 0 3 3/4
s4 0 0 1 1/2 -1/4 1 -3/4

Dual simplex
▪ Min { ci / -aij, con aij < 0}

Base x1 x2 s2 s3 s4 b

0 0 2 1/2 1/4 0 23 3/4


x2 0 1 2 1/2 -1/4 0 1 1/4
x1 1 0 -1 1/2 1/4 0 3 3/4
s4 0 0 1 1/2 -1/4 1 -3/4
Base x1 x2 s2 s3 s4 b

0 0 4 0 1 23
x2 0 1 1 0 -1 2
x1 1 0 0 0 1 3
s3 0 0 -6 1 -4 3

▪ Solución entera en PL1 !!!!!


▪ X1 = 3; x2 = 2; z = 23
▪ Nueva cota inferior: 23
▪ Resolución de PL2
▪ Se debe extender la tabla óptima agregando la
restricción x1 > 4
▪ Recuperar la base (columna de x1)
▪ Aplicar dual-simplex
▪ Pivotear si es necesario para obtener nueva
solución óptima o determinar que el nodo es
infactible
▪ Solución encontrada:
▪ X1 = 4; x2 = 0.83; z = 23.33
▪ En este caso particular PL2 es nodo terminal
▪ Todos los coeficientes de z son enteros
▪ Cualquier solución entera bajo PL2 será < 23 (la cota
inferior
▪ Entonces: Solución óptima está en PL1 !!!
▪ Es posible escoger X2 como primera
variable de ramificación?
▪ Es posible iniciar la inspección por PL2 en
lugar de PL1?

▪ Debilidades del método de R&A


Construya el árbol de R&A para el siguiente problema.
Por comodidad escoja a X1 como la variable de
ramificación en el nodo PL0
Algoritmo de planos de corte
▪ Comienza con la solución de PL0
▪ Agrega restricciones especiales (cortes) para
ir reduciendo (desde afuera hacia adentro) el
espacio factible y agregando vértices enteros
▪ Los cortes se derivan de la tabla simplex
óptima
▪ Opera en modo secuencial
Ejemplo

▪ Cortes
▪ No eliminan soluciones enteras factibles
▪ Pasan por al menos un punto entero
▪ Se agregan secuencialmente
Corte Fraccional
▪ Todas las variables son enteras
▪ Tabla simplex óptima (PL0)
▪ Equivalentemente

▪ Recodificando coeficientes como “e + f”


▪ “e” es un número entero (positivo o negativo)
▪ “f” es un valor fraccionario positivo menor que 1
▪ Ej: 5/2 = 2 + 0.5
▪ Ej. -7/3 = -3 + 2/3
Factorizando la ecuación de z:

Si se quiere una solución entera, se debe cumplir:

Que constituye el corte buscado (corte fraccionario)


Similarmente, los cortes asociados a la fila de x1 y x2
son:

Se debe seleccionar un solo corte y agregarlo a la tabla


óptima del problema
Ejercicio: resuelva el problema usando el método de
corte fraccionario

También podría gustarte