0% encontró este documento útil (0 votos)
69 vistas204 páginas

Algoritmos Básicos para Programación Entera

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
69 vistas204 páginas

Algoritmos Básicos para Programación Entera

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Algoritmos Básicos para PE Summary

Algoritmos Exactos para PLE

1 Algoritmos Básicos para PE


Introducción
Algoritmo de Branch and Bound
Algoritmo de Cutting Plane
Algoritmo de Branch and Cut
Algoritmo de Planos de Corte para TSP
Algoritmos Básicos para PE Summary

Outline

1 Algoritmos Básicos para PE


Introducción
Algoritmo de Branch and Bound
Algoritmo de Cutting Plane
Algoritmo de Branch and Cut
Algoritmo de Planos de Corte para TSP
Algoritmos Básicos para PE Summary

Introducción a P.E.
Motivación : P.E. no es lo mismo que P.L.

Hasta ahora hemos aprendido a resolver problema de Programación


Lineal, en que las variables era continuas en cierto intervalo.

Para este tipo de problemas el Método del Símplex resulta uno de


los métodos más eficientes de resolución.

Sin embargo, sabemos que existen muchos problemas en que las


variables no son continuas, sino que sólo pueden tomar valores
enteros.
Algoritmos Básicos para PE Summary

Introducción a P.E.
Motivación : P.E. no es lo mismo que P.L.

Hasta ahora hemos aprendido a resolver problema de Programación


Lineal, en que las variables era continuas en cierto intervalo.

Para este tipo de problemas el Método del Símplex resulta uno de


los métodos más eficientes de resolución.

Sin embargo, sabemos que existen muchos problemas en que las


variables no son continuas, sino que sólo pueden tomar valores
enteros.
Algoritmos Básicos para PE Summary

Introducción a P.E.
Motivación : P.E. no es lo mismo que P.L.

Hasta ahora hemos aprendido a resolver problema de Programación


Lineal, en que las variables era continuas en cierto intervalo.

Para este tipo de problemas el Método del Símplex resulta uno de


los métodos más eficientes de resolución.

Sin embargo, sabemos que existen muchos problemas en que las


variables no son continuas, sino que sólo pueden tomar valores
enteros.
Algoritmos Básicos para PE Summary

Introducción a P.E.
Motivación : P.E. no es lo mismo que P.L.

Por ejemplo, las variables binarias presentes en muchos problemas


hacen que el problema modelado sea un problema de P.E.

Por otro lado, si estamos tratando de encontrar un planificación de


la producción de aviones de una empresa aeronáutica, es claro que
el número aviones (una de las posible variables de decisión) sólo
admite valores enteros.

En conclusión, los problema de P.E. son tan o más importantes que


los problema de P.L., pero lamentablemente no puede ser resueltos
en forma directa a través de los métodos válidos para P.L. (como
por ejemplo Símplex).
Algoritmos Básicos para PE Summary

Introducción a P.E.
Motivación : P.E. no es lo mismo que P.L.

Por ejemplo, las variables binarias presentes en muchos problemas


hacen que el problema modelado sea un problema de P.E.

Por otro lado, si estamos tratando de encontrar un planificación de


la producción de aviones de una empresa aeronáutica, es claro que
el número aviones (una de las posible variables de decisión) sólo
admite valores enteros.

En conclusión, los problema de P.E. son tan o más importantes que


los problema de P.L., pero lamentablemente no puede ser resueltos
en forma directa a través de los métodos válidos para P.L. (como
por ejemplo Símplex).
Algoritmos Básicos para PE Summary

Introducción a P.E.
Motivación : P.E. no es lo mismo que P.L.

Por ejemplo, las variables binarias presentes en muchos problemas


hacen que el problema modelado sea un problema de P.E.

Por otro lado, si estamos tratando de encontrar un planificación de


la producción de aviones de una empresa aeronáutica, es claro que
el número aviones (una de las posible variables de decisión) sólo
admite valores enteros.

En conclusión, los problema de P.E. son tan o más importantes que


los problema de P.L., pero lamentablemente no puede ser resueltos
en forma directa a través de los métodos válidos para P.L. (como
por ejemplo Símplex).
Algoritmos Básicos para PE Summary

Introducción a P.E.
Motivación : P.E. no es lo mismo que P.L.

Problema de PL Problema de P.E.


n n
max z = ∑ cj x j max z = ∑ cj x j
j=1 j=1
s.t. s.t.
n n
∑ aij xj ≤ bi , i = 1, ..., m ∑ aij xj ≤ bi , i = 1, ..., m
j=1 j=1
xj ≥ 0, j = 1, ..., n xj enteros positivos, j = 1, ..., n
Algoritmos Básicos para PE Summary

Introducción a P.E.
Motivación : P.E. no es lo mismo que P.L.

Problema de PL Problema de P.E.


n n
max z = ∑ cj x j max z = ∑ cj x j
j=1 j=1
s.t. s.t.
n n
∑ aij xj ≤ bi , i = 1, ..., m ∑ aij xj ≤ bi , i = 1, ..., m
j=1 j=1
xj ≥ 0, j = 1, ..., n xj enteros positivos, j = 1, ..., n
Algoritmos Básicos para PE Summary

Introducción a P.E.
Motivación : P.E. no es lo mismo que P.L.

Problema de PL Problema de P.E.


Algoritmos Básicos para PE Summary

Introducción a P.E.
Motivación : P.E. no es lo mismo que P.L. (pero están relacionados)

Existe un problema de programación lineal asociado, denominado


relajación lineal (RL), que corresponde al problema lineal entero sin la
restricción de integralidad.

Dado que (RL) es menos restringido que (PE), se tiene que:


Si (PE) es un problema de maximización, el valor óptimo de (RL)
será mayor o igual que el valor óptimo de (PL).

Si (PE) es un problema de minimización, el valor óptimo de (RL)


será menor o igual que el valor óptimo de (PL).
Algoritmos Básicos para PE Summary

Introducción a P.E.
Motivación : P.E. no es lo mismo que P.L. (pero están relacionados)

Existe un problema de programación lineal asociado, denominado


relajación lineal (RL), que corresponde al problema lineal entero sin la
restricción de integralidad.

Dado que (RL) es menos restringido que (PE), se tiene que:


Si (PE) es un problema de maximización, el valor óptimo de (RL)
será mayor o igual que el valor óptimo de (PL).

Si (PE) es un problema de minimización, el valor óptimo de (RL)


será menor o igual que el valor óptimo de (PL).
Algoritmos Básicos para PE Summary

Introducción a P.E.
Motivación : P.E. no es lo mismo que P.L. (pero están relacionados)

Existe un problema de programación lineal asociado, denominado


relajación lineal (RL), que corresponde al problema lineal entero sin la
restricción de integralidad.

Dado que (RL) es menos restringido que (PE), se tiene que:


Si (PE) es un problema de maximización, el valor óptimo de (RL)
será mayor o igual que el valor óptimo de (PL).

Si (PE) es un problema de minimización, el valor óptimo de (RL)


será menor o igual que el valor óptimo de (PL).
Algoritmos Básicos para PE Summary

Introducción a P.E.
Motivación : P.E. no es lo mismo que P.L. (pero están relacionados)

Existe un problema de programación lineal asociado, denominado


relajación lineal (RL), que corresponde al problema lineal entero sin la
restricción de integralidad.

Dado que (RL) es menos restringido que (PE), se tiene que:


Si (PE) es un problema de maximización, el valor óptimo de (RL)
será mayor o igual que el valor óptimo de (PL).

Si (PE) es un problema de minimización, el valor óptimo de (RL)


será menor o igual que el valor óptimo de (PL).
Algoritmos Básicos para PE Summary

Introducción a P.E.
Motivación : P.E. no es lo mismo que P.L. (pero están relacionados)

Si (RL) es no factible, (PE) también será no factible.

Si (RL) tiene una solución óptima compuesta por variables


enteras, entonces esta solución será factible y óptima para
(PE).
Puesto que es relativamente simple resolver problemas de RL, es
útil utilizar estas relaciones en los métodos de resolución de PE. En
efecto, los métodos que estudiaremos se basan en estas relaciones.
Algoritmos Básicos para PE Summary

Introducción a P.E.
Motivación : P.E. no es lo mismo que P.L. (pero están relacionados)

Si (RL) es no factible, (PE) también será no factible.

Si (RL) tiene una solución óptima compuesta por variables


enteras, entonces esta solución será factible y óptima para
(PE).
Puesto que es relativamente simple resolver problemas de RL, es
útil utilizar estas relaciones en los métodos de resolución de PE. En
efecto, los métodos que estudiaremos se basan en estas relaciones.
Algoritmos Básicos para PE Summary

Introducción a P.E.
Motivación : P.E. no es lo mismo que P.L. (pero están relacionados)

Si (RL) es no factible, (PE) también será no factible.

Si (RL) tiene una solución óptima compuesta por variables


enteras, entonces esta solución será factible y óptima para
(PE).
Puesto que es relativamente simple resolver problemas de RL, es
útil utilizar estas relaciones en los métodos de resolución de PE. En
efecto, los métodos que estudiaremos se basan en estas relaciones.
Algoritmos Básicos para PE Summary

Introducción a P.E.
Cómo resolver un problema de P.E.?

En Programación Entera, no existen algoritmos con propósito


general y computacionalmente eficaces.

Incluso, la teoría sugiere que nunca podrán ser desarrollados


algoritmos computacionalmente eficaces que sirvan para un
propósito general.
Algoritmos Básicos para PE Summary

Introducción a P.E.
Cómo resolver un problema de P.E.?

En Programación Entera, no existen algoritmos con propósito


general y computacionalmente eficaces.

Incluso, la teoría sugiere que nunca podrán ser desarrollados


algoritmos computacionalmente eficaces que sirvan para un
propósito general.
Algoritmos Básicos para PE Summary

Introducción a P.E.
Cómo resolver un problema de P.E.?

Métodos con propósito general: resuelven cualquier modelo


de PE, pero son computacionalmente ineficaces (sólo resuelven
problemas relativamente pequeños). Dos ejemplos importantes
son Branch and Bound y Cutting Planes.

Métodos con propósito específico: son desarrollados para


resolver un tipo particular de problemas de PE, pero son
computacionalmente más efectivos.
Algoritmos Básicos para PE Summary

Introducción a P.E.
Cómo resolver un problema de P.E.?

Métodos con propósito general: resuelven cualquier modelo


de PE, pero son computacionalmente ineficaces (sólo resuelven
problemas relativamente pequeños). Dos ejemplos importantes
son Branch and Bound y Cutting Planes.

Métodos con propósito específico: son desarrollados para


resolver un tipo particular de problemas de PE, pero son
computacionalmente más efectivos.
Algoritmos Básicos para PE Summary

Introducción a P.E.
Cómo resolver un problema de P.E.?

Métodos exactos: son algoritmos que, a través de


comprobación matemática, se garantiza que obtienen una
solución óptima para el problema.

Métodos heurísticos: es un algoritmo que permite obtener


una solución factible para un problema de programación
matemática, esperando que su valor en la función objetivo esté
cercano al óptimo.
Algoritmos Básicos para PE Summary

Introducción a P.E.
Cómo resolver un problema de P.E.?

Métodos exactos: son algoritmos que, a través de


comprobación matemática, se garantiza que obtienen una
solución óptima para el problema.

Métodos heurísticos: es un algoritmo que permite obtener


una solución factible para un problema de programación
matemática, esperando que su valor en la función objetivo esté
cercano al óptimo.
Algoritmos Básicos para PE Summary

Outline

1 Algoritmos Básicos para PE


Introducción
Algoritmo de Branch and Bound
Algoritmo de Cutting Plane
Algoritmo de Branch and Cut
Algoritmo de Planos de Corte para TSP
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Conceptos Básicos

Se basa en la idea de desarrollar una “enumeración


inteligente” de los puntos candidatos a solución óptima
entera de un problema.

Es una instancia de “Divide y Conquista”.


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Conceptos Básicos

Se basa en la idea de desarrollar una “enumeración


inteligente” de los puntos candidatos a solución óptima
entera de un problema.

Es una instancia de “Divide y Conquista”.


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Conceptos Básicos: quién es el Sr. Branch y quién es el Sr. Bound?

El término Branch (o ramificación) se refiere al hecho de que


este método realiza particiones en el espacio de soluciones
(generamos “ramas”).

El término Bound (o acotamiento) resalta que la prueba de


optimalidad de la solución va eliminando las particiones
utilizando los resultados calculados a lo largo de la
enumeración (podamos “ramas”).
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Conceptos Básicos: quién es el Sr. Branch y quién es el Sr. Bound?

El término Branch (o ramificación) se refiere al hecho de que


este método realiza particiones en el espacio de soluciones
(generamos “ramas”).

El término Bound (o acotamiento) resalta que la prueba de


optimalidad de la solución va eliminando las particiones
utilizando los resultados calculados a lo largo de la
enumeración (podamos “ramas”).
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Conceptos Básicos: cómo generar ramas?

Consideremos un problema de PE, tal que el valor óptimo de unas de las


variables del problema relajado es xj∗ (no entera).

Generamos dos ramas:


Una añadiendo la restricción xj ≤ xj∗ .

Y otra añadiendo la restricción xj ≥ xj∗ + 1.

Por ejemplo, si xj∗ = 1.27, entonces se generan dos ramas:


Una añadiendo la restricción xj ≤ 1.

Y otra añadiendo la restricción xj ≥ 2.


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Conceptos Básicos: cómo generar ramas?

Consideremos un problema de PE, tal que el valor óptimo de unas de las


variables del problema relajado es xj∗ (no entera).

Generamos dos ramas:


Una añadiendo la restricción xj ≤ xj∗ .

Y otra añadiendo la restricción xj ≥ xj∗ + 1.

Por ejemplo, si xj∗ = 1.27, entonces se generan dos ramas:


Una añadiendo la restricción xj ≤ 1.

Y otra añadiendo la restricción xj ≥ 2.


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Conceptos Básicos: cómo generar ramas?

Consideremos un problema de PE, tal que el valor óptimo de unas de las


variables del problema relajado es xj∗ (no entera).

Generamos dos ramas:


Una añadiendo la restricción xj ≤ xj∗ .

Y otra añadiendo la restricción xj ≥ xj∗ + 1.

Por ejemplo, si xj∗ = 1.27, entonces se generan dos ramas:


Una añadiendo la restricción xj ≤ 1.

Y otra añadiendo la restricción xj ≥ 2.


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Conceptos Básicos: cómo generar ramas?

Consideremos un problema de PE, tal que el valor óptimo de unas de las


variables del problema relajado es xj∗ (no entera).

Generamos dos ramas:


Una añadiendo la restricción xj ≤ xj∗ .

Y otra añadiendo la restricción xj ≥ xj∗ + 1.

Por ejemplo, si xj∗ = 1.27, entonces se generan dos ramas:


Una añadiendo la restricción xj ≤ 1.

Y otra añadiendo la restricción xj ≥ 2.


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Conceptos Básicos: cómo generar ramas?

Consideremos un problema de PE, tal que el valor óptimo de unas de las


variables del problema relajado es xj∗ (no entera).

Generamos dos ramas:


Una añadiendo la restricción xj ≤ xj∗ .

Y otra añadiendo la restricción xj ≥ xj∗ + 1.

Por ejemplo, si xj∗ = 1.27, entonces se generan dos ramas:


Una añadiendo la restricción xj ≤ 1.

Y otra añadiendo la restricción xj ≥ 2.


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Conceptos Básicos: cómo generar ramas?

Consideremos un problema de PE, tal que el valor óptimo de unas de las


variables del problema relajado es xj∗ (no entera).

Generamos dos ramas:


Una añadiendo la restricción xj ≤ xj∗ .

Y otra añadiendo la restricción xj ≥ xj∗ + 1.

Por ejemplo, si xj∗ = 1.27, entonces se generan dos ramas:


Una añadiendo la restricción xj ≤ 1.

Y otra añadiendo la restricción xj ≥ 2.


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Conceptos Básicos: cómo generar ramas?

Consideremos un problema de PE, tal que el valor óptimo de unas de las


variables del problema relajado es xj∗ (no entera).

Generamos dos ramas:


Una añadiendo la restricción xj ≤ xj∗ .

Y otra añadiendo la restricción xj ≥ xj∗ + 1.

Por ejemplo, si xj∗ = 1.27, entonces se generan dos ramas:


Una añadiendo la restricción xj ≤ 1.

Y otra añadiendo la restricción xj ≥ 2.


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Conceptos Básicos: cómo generar ramas?

Esquemáticamente:
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Conceptos Básicos: cómo generar ramas?

En cada subproblema se definen nuevas ramas y asi


sucesivamente.

Cuando un subproblema entrega una solución entera, esa


solución se llama solución de apoyo y entrega una “cota
inferior” o “límite inferior” al problema.

Cuando un subproblema entrega una solución contínua, esa


solución entrega una “cota superior” o “límite superior” al
problema.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Conceptos Básicos: cómo generar ramas?

En cada subproblema se definen nuevas ramas y asi


sucesivamente.

Cuando un subproblema entrega una solución entera, esa


solución se llama solución de apoyo y entrega una “cota
inferior” o “límite inferior” al problema.

Cuando un subproblema entrega una solución contínua, esa


solución entrega una “cota superior” o “límite superior” al
problema.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Conceptos Básicos: cómo generar ramas?

En cada subproblema se definen nuevas ramas y asi


sucesivamente.

Cuando un subproblema entrega una solución entera, esa


solución se llama solución de apoyo y entrega una “cota
inferior” o “límite inferior” al problema.

Cuando un subproblema entrega una solución contínua, esa


solución entrega una “cota superior” o “límite superior” al
problema.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Definición de RLPE = P0

Consideremos el siguiente problema de PE:

max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x1 , x2 enteros}

Entonces el problema de RL de PE (P0 ) es:

P0 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x1 , x2 ≥ 0}


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Definición de RLPE = P0

Consideremos el siguiente problema de PE:

max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x1 , x2 enteros}

Entonces el problema de RL de PE (P0 ) es:

P0 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x1 , x2 ≥ 0}


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Definición de RLPE = P0

Consideremos el siguiente problema de PE:

max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x1 , x2 enteros}

Entonces el problema de RL de PE (P0 ) es:

P0 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x1 , x2 ≥ 0}


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Definición de RLPE = P0

Consideremos el siguiente problema de PE:

max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x1 , x2 enteros}

Entonces el problema de RL de PE (P0 ) es:

P0 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x1 , x2 ≥ 0}


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Definición de las primeras ramas P1 y P2

Al resolver P0 tenemos que z0∗ = 41 14 , x1 = 9


4 = 2.25, x2 = 15
4 = 3.75.

Para generar los nuevos subproblemas (P1 y P2 ) tomaremos la variable


x2 , una rama incluye la restricción x2 ≤ k3.75k ≤ 3 y la otra rama incluye
la restricción x2 ≥ k3.75k + 1 ≥ 4.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Definición de las primeras ramas P1 y P2

Al resolver P0 tenemos que z0∗ = 41 14 , x1 = 9


4 = 2.25, x2 = 15
4 = 3.75.

Para generar los nuevos subproblemas (P1 y P2 ) tomaremos la variable


x2 , una rama incluye la restricción x2 ≤ k3.75k ≤ 3 y la otra rama incluye
la restricción x2 ≥ k3.75k + 1 ≥ 4.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Definición de las primeras ramas P1 y P2

Esquemáticamente:
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Resolución de las primeras ramas P1 y P2

El problema P1 se define por:

P1 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≤ 3, x1 , x2 ≥ 0}

y su solución es z1∗ = 39, x1 = 3, x2 = 3. Debido a que esta es


una solución entera, pasa a ser una solución de apoyo.

El problema P2 se define por:

P2 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≥ 4, x1 , x2 ≥ 0}

y su solución esz2∗ = 41, x1 = 59 , x2 = 4. Debido a que esta


solución no es entera, generamos nuevas ramas.

∗ ∈ [39, 41].
Sabemos que el valor óptimo cumple con zPE
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Resolución de las primeras ramas P1 y P2

El problema P1 se define por:

P1 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≤ 3, x1 , x2 ≥ 0}

y su solución es z1∗ = 39, x1 = 3, x2 = 3. Debido a que esta es


una solución entera, pasa a ser una solución de apoyo.

El problema P2 se define por:

P2 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≥ 4, x1 , x2 ≥ 0}

y su solución esz2∗ = 41, x1 = 59 , x2 = 4. Debido a que esta


solución no es entera, generamos nuevas ramas.

∗ ∈ [39, 41].
Sabemos que el valor óptimo cumple con zPE
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Resolución de las primeras ramas P1 y P2

El problema P1 se define por:

P1 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≤ 3, x1 , x2 ≥ 0}

y su solución es z1∗ = 39, x1 = 3, x2 = 3. Debido a que esta es


una solución entera, pasa a ser una solución de apoyo.

El problema P2 se define por:

P2 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≥ 4, x1 , x2 ≥ 0}

y su solución esz2∗ = 41, x1 = 59 , x2 = 4. Debido a que esta


solución no es entera, generamos nuevas ramas.

∗ ∈ [39, 41].
Sabemos que el valor óptimo cumple con zPE
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Resolución de las primeras ramas P1 y P2

Esquemáticamente:
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Definición de las ramas P3 y P4

Al resolver P2 tenemos que z2∗ = 41, x1 = 9


5 = 1.80, x2 = 4.

Para generar los nuevos subproblemas (P3 y P4 ) tomaremos la variable


x1 , una rama incluye la restricción x1 ≤ k1.80k ≤ 1 y la otra rama incluye
la restricción x1 ≥ k1.80k + 1 ≥ 2.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Definición de las ramas P3 y P4

Al resolver P2 tenemos que z2∗ = 41, x1 = 9


5 = 1.80, x2 = 4.

Para generar los nuevos subproblemas (P3 y P4 ) tomaremos la variable


x1 , una rama incluye la restricción x1 ≤ k1.80k ≤ 1 y la otra rama incluye
la restricción x1 ≥ k1.80k + 1 ≥ 2.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Definición de las ramas P3 y P4

Esquemáticamente:
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Resolución de las ramas P3 y P4

El problema P3 se define por:

P3 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≥ 4, x1 ≤ 1, x1 , x2 ≥ 0}

y su solución esz3∗ = 40 95 , x1 = 1, x2 = 40
9 ≈ 4.44. Debido a que
esta solución no es entera, generamos nuevas ramas.

El problema P4 se define por:

P4 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≥ 4, x1 ≥ 2, x1 , x2 ≥ 0}

y no tiene solución factible.


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Resolución de las ramas P3 y P4

El problema P3 se define por:

P3 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≥ 4, x1 ≤ 1, x1 , x2 ≥ 0}

y su solución esz3∗ = 40 95 , x1 = 1, x2 = 40
9 ≈ 4.44. Debido a que
esta solución no es entera, generamos nuevas ramas.

El problema P4 se define por:

P4 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≥ 4, x1 ≥ 2, x1 , x2 ≥ 0}

y no tiene solución factible.


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Resolución de las ramas P3 y P4

Esquemáticamente:
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Definición de las ramas P5 y P6

Al resolver P3 tenemos que z2∗ = 40 59 , x1 = 1, x2 = 40


9 .

Para generar los nuevos subproblemas (P5 y P6 ) tomaremos la variable


x2 , una rama incluye la restricción x2 ≤ 40
9 ≤ 4 y la otra rama incluye
la restricción x2 ≥ 40
9 + 1 ≥ 5.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Definición de las ramas P5 y P6

Al resolver P3 tenemos que z2∗ = 40 59 , x1 = 1, x2 = 40


9 .

Para generar los nuevos subproblemas (P5 y P6 ) tomaremos la variable


x2 , una rama incluye la restricción x2 ≤ 40
9 ≤ 4 y la otra rama incluye
la restricción x2 ≥ 40
9 + 1 ≥ 5.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Definición de las ramas P5 y P6

Esquemáticamente:
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Resolución de las ramas P5 y P6

El problema P5 se define por:

P5 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≥ 4, x1 ≤ 1, x2 ≤ 4, x1 , x2 ≥ 0}

y su solución es z5∗ = 37, x1 = 1, x2 = 4. Esta es una solución


entera pero no es mejor que z1∗ = 39, por lo que no pasa a ser
una solución de apoyo.
El problema P6 se define por:
P6 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≥ 4, x1 ≤ 1, x2 ≤ 4, x2 ≥ 5, x1 , x2 ≥ 0}

y su solución es z6∗ = 40, x1 = 0, x2 = 5. Debido a que esta es


una solución entera y mejor que z1∗ = 39, pasa a ser la nueva
solución de apoyo.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Resolución de las ramas P5 y P6

Esquemáticamente:
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Definición de nuevas ramas

Debido a que hemos obtenido una solución de apoyo y no


podemos seguir generando ramas, entonces esta solución de
apoyo es la solución óptima.
Es decir, la solución óptima al problema original de P.E. es
z ∗ = 40, x1∗ = 0 y x2∗ = 5.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (1) : Solución Final
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Criterios para cerrar un nodo

Si la solución del sub-problema tiene variables enteras.

Si el problema no tiene solución (problema no factible).

Si el valor óptimo es menor (mayor) que el z∗apoyo encontrado


hasta esa iteración en un problema de maximización
(minimización).
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Criterios para cerrar un nodo

Si la solución del sub-problema tiene variables enteras.

Si el problema no tiene solución (problema no factible).

Si el valor óptimo es menor (mayor) que el z∗apoyo encontrado


hasta esa iteración en un problema de maximización
(minimización).
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Criterios para cerrar un nodo

Si la solución del sub-problema tiene variables enteras.

Si el problema no tiene solución (problema no factible).

Si el valor óptimo es menor (mayor) que el z∗apoyo encontrado


hasta esa iteración en un problema de maximización
(minimización).
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición del problema de PE Binaria RLPE = P0

Consideremos el siguiente problema de PE (Binaria):

max z = 9x1 + 5x2 + 6x3 + 4x4


subject to
6x1 + 3x2 + 5x3 + 2x4 ≤ 10
x3 + x4 ≤ 1
−x1 + x3 ≤ 0
−x2 + x4 ≤ 0
xi ∈ {0, 1} ∀i
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición del problema de PE Binaria RLPE = P0

Consideremos el siguiente problema de PE (Binaria):

max z = 9x1 + 5x2 + 6x3 + 4x4


subject to
6x1 + 3x2 + 5x3 + 2x4 ≤ 10
x3 + x4 ≤ 1
−x1 + x3 ≤ 0
−x2 + x4 ≤ 0
xi ∈ {0, 1} ∀i
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición del problema de RLPE = P0

La relajación lineal del problema anterior está dado por:

max z = 9x1 + 5x2 + 6x3 + 4x4


subject to
6x1 + 3x2 + 5x3 + 2x4 ≤ 10
x3 + x4 ≤ 1
−x1 + x3 ≤ 0
−x2 + x4 ≤ 0
xi ∈ [0, 1] ∀i
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición del problema de RLPE = P0

La relajación lineal del problema anterior está dado por:

max z = 9x1 + 5x2 + 6x3 + 4x4


subject to
6x1 + 3x2 + 5x3 + 2x4 ≤ 10
x3 + x4 ≤ 1
−x1 + x3 ≤ 0
−x2 + x4 ≤ 0
xi ∈ [0, 1] ∀i
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de los problemas P1 y P2

Al resolver P0 tenemos que z0∗ = 16.5, x1 = 56 , x2 = 1, x3 = 0 y


x4 = 1.

Para generar las ramas P1 y P2 tomemos la variable x1 ; una


rama incluirá la restricción x1 ≤ 0 y la otra x1 ≥ 1.

Sin embargo, puesto que 0 ≤ x1 ≤ 1 entonces lo que en


realidad se define que en P1 , x1 = 0; y en P2 , x1 = 1.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de los problemas P1 y P2

Al resolver P0 tenemos que z0∗ = 16.5, x1 = 56 , x2 = 1, x3 = 0 y


x4 = 1.

Para generar las ramas P1 y P2 tomemos la variable x1 ; una


rama incluirá la restricción x1 ≤ 0 y la otra x1 ≥ 1.

Sin embargo, puesto que 0 ≤ x1 ≤ 1 entonces lo que en


realidad se define que en P1 , x1 = 0; y en P2 , x1 = 1.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de los problemas P1 y P2

Al resolver P0 tenemos que z0∗ = 16.5, x1 = 56 , x2 = 1, x3 = 0 y


x4 = 1.

Para generar las ramas P1 y P2 tomemos la variable x1 ; una


rama incluirá la restricción x1 ≤ 0 y la otra x1 ≥ 1.

Sin embargo, puesto que 0 ≤ x1 ≤ 1 entonces lo que en


realidad se define que en P1 , x1 = 0; y en P2 , x1 = 1.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de los problemas P1 y P2

Esquemáticamente:
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Resolución de las primeras ramas P1 y P2

El problema P1 se define por:

P1 : {P0 : x1 = 0}

y su solución es z1∗ = 9, x1 = 0, x2 = 1, x3 = 0 y x4 = 1. Debido a


que esta es una solución entera, pasa a ser una solución de
apoyo.

El problema P2 se define por:

P2 : {P0 : x1 = 1}

y su solución esz2∗ = 16.2, x1 = 0, x2 = 45 , x3 = 0 y x4 = 45 . Debido


a que esta solución no es entera, generamos nuevas ramas.

∗ ∈ [9, 16.2].
Sabemos que el valor óptimo cumple con zPE
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Resolución de las primeras ramas P1 y P2

El problema P1 se define por:

P1 : {P0 : x1 = 0}

y su solución es z1∗ = 9, x1 = 0, x2 = 1, x3 = 0 y x4 = 1. Debido a


que esta es una solución entera, pasa a ser una solución de
apoyo.

El problema P2 se define por:

P2 : {P0 : x1 = 1}

y su solución esz2∗ = 16.2, x1 = 0, x2 = 45 , x3 = 0 y x4 = 45 . Debido


a que esta solución no es entera, generamos nuevas ramas.

∗ ∈ [9, 16.2].
Sabemos que el valor óptimo cumple con zPE
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Resolución de las primeras ramas P1 y P2

El problema P1 se define por:

P1 : {P0 : x1 = 0}

y su solución es z1∗ = 9, x1 = 0, x2 = 1, x3 = 0 y x4 = 1. Debido a


que esta es una solución entera, pasa a ser una solución de
apoyo.

El problema P2 se define por:

P2 : {P0 : x1 = 1}

y su solución esz2∗ = 16.2, x1 = 0, x2 = 45 , x3 = 0 y x4 = 45 . Debido


a que esta solución no es entera, generamos nuevas ramas.

∗ ∈ [9, 16.2].
Sabemos que el valor óptimo cumple con zPE
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Resolución de las primeras ramas P1 y P2

Esquemáticamente:
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de las ramas P3 y P4

Al resolver P2 tenemos que z2∗ = 16.2, z2∗ = 16.2, x1 = 0, x2 = 4


5 = 0.8,
x3 = 0 y x4 = 54 = 0.8.

Para generar los nuevos subproblemas (P3 y P4 ) tomaremos la variable


x2 , una rama incluye la restricción x2 ≤ k0.8k ≤ 0 y la otra rama incluye
la restricción x2 ≥ k0.8k + 1 ≥ 1.

Sin embargo, puesto que 0 ≤ x2 ≤ 1 entonces lo que en realidad se define


que en P3 , x2 = 0; y en P4 , x2 = 1.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de las ramas P3 y P4

Al resolver P2 tenemos que z2∗ = 16.2, z2∗ = 16.2, x1 = 0, x2 = 4


5 = 0.8,
x3 = 0 y x4 = 54 = 0.8.

Para generar los nuevos subproblemas (P3 y P4 ) tomaremos la variable


x2 , una rama incluye la restricción x2 ≤ k0.8k ≤ 0 y la otra rama incluye
la restricción x2 ≥ k0.8k + 1 ≥ 1.

Sin embargo, puesto que 0 ≤ x2 ≤ 1 entonces lo que en realidad se define


que en P3 , x2 = 0; y en P4 , x2 = 1.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de las ramas P3 y P4

Al resolver P2 tenemos que z2∗ = 16.2, z2∗ = 16.2, x1 = 0, x2 = 4


5 = 0.8,
x3 = 0 y x4 = 54 = 0.8.

Para generar los nuevos subproblemas (P3 y P4 ) tomaremos la variable


x2 , una rama incluye la restricción x2 ≤ k0.8k ≤ 0 y la otra rama incluye
la restricción x2 ≥ k0.8k + 1 ≥ 1.

Sin embargo, puesto que 0 ≤ x2 ≤ 1 entonces lo que en realidad se define


que en P3 , x2 = 0; y en P4 , x2 = 1.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de las ramas P3 y P4

Esquemáticamente:
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Resolución de las ramas P3 y P4

El problema P3 se define por:

P3 : {P2 : x2 = 0}

y su solución esz3∗ = 13 54
= 13.8, x1 = 1, x2 = 0, x3 = 45 y x4 = 0. Debido
a que esta es una solución no entera, podemos generar ramas.

El problema P4 se define por:

P4 : {P2 : x2 = 1}

y su solución es z2∗ = 16, x1 = 1, x2 = 1, x3 = 0 y x4 = 0.5. Debido a que


esta solución no es entera pero , generamos nuevas ramas. Como z4 es
mayor que z3 entonces ramificaremos desde este problema.

∗ ∈ [9, 16].
Sabemos que el valor óptimo cumple con zPE
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Resolución de las ramas P3 y P4

El problema P3 se define por:

P3 : {P2 : x2 = 0}

y su solución esz3∗ = 13 54
= 13.8, x1 = 1, x2 = 0, x3 = 45 y x4 = 0. Debido
a que esta es una solución no entera, podemos generar ramas.

El problema P4 se define por:

P4 : {P2 : x2 = 1}

y su solución es z2∗ = 16, x1 = 1, x2 = 1, x3 = 0 y x4 = 0.5. Debido a que


esta solución no es entera pero , generamos nuevas ramas. Como z4 es
mayor que z3 entonces ramificaremos desde este problema.

∗ ∈ [9, 16].
Sabemos que el valor óptimo cumple con zPE
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Resolución de las ramas P3 y P4

El problema P3 se define por:

P3 : {P2 : x2 = 0}

y su solución esz3∗ = 13 54
= 13.8, x1 = 1, x2 = 0, x3 = 45 y x4 = 0. Debido
a que esta es una solución no entera, podemos generar ramas.

El problema P4 se define por:

P4 : {P2 : x2 = 1}

y su solución es z2∗ = 16, x1 = 1, x2 = 1, x3 = 0 y x4 = 0.5. Debido a que


esta solución no es entera pero , generamos nuevas ramas. Como z4 es
mayor que z3 entonces ramificaremos desde este problema.

∗ ∈ [9, 16].
Sabemos que el valor óptimo cumple con zPE
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Resolución de las ramas P3 y P4

Esquemáticamente:
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de las ramas P5 y P6

Al resolver P4 tenemos que z4∗ = 16, x1 = 1, x2 = 1, x3 = 0 y x4 = 12 .

Para generar los nuevos subproblemas (P5 y P6 ) tomaremos la variable


x4 , una rama incluye la restricción x2 ≤ k0.5k ≤ 0 y la otra rama incluye
la restricción x2 ≥ k0.5k + 1 ≥ 1.

Sin embargo, puesto que 0 ≤ x4 ≤ 1 entonces lo que en realidad se define


que en P5 , x4 = 0; y en P6 , x4 = 1.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de las ramas P5 y P6

Al resolver P4 tenemos que z4∗ = 16, x1 = 1, x2 = 1, x3 = 0 y x4 = 12 .

Para generar los nuevos subproblemas (P5 y P6 ) tomaremos la variable


x4 , una rama incluye la restricción x2 ≤ k0.5k ≤ 0 y la otra rama incluye
la restricción x2 ≥ k0.5k + 1 ≥ 1.

Sin embargo, puesto que 0 ≤ x4 ≤ 1 entonces lo que en realidad se define


que en P5 , x4 = 0; y en P6 , x4 = 1.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de las ramas P5 y P6

Al resolver P4 tenemos que z4∗ = 16, x1 = 1, x2 = 1, x3 = 0 y x4 = 12 .

Para generar los nuevos subproblemas (P5 y P6 ) tomaremos la variable


x4 , una rama incluye la restricción x2 ≤ k0.5k ≤ 0 y la otra rama incluye
la restricción x2 ≥ k0.5k + 1 ≥ 1.

Sin embargo, puesto que 0 ≤ x4 ≤ 1 entonces lo que en realidad se define


que en P5 , x4 = 0; y en P6 , x4 = 1.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de las ramas P5 y P6

Esquemáticamente
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Resolución de las ramas P5 y P6

El problema P5 se define por:

P5 : {P4 : x4 = 0}

y su solución es z5∗ = 15 51 = 13.8, x1 = 1, x2 = 0, x3 = 15 y x4 = 0. Debido


a que esta es una solución no entera, podemos generar ramas.

El problema P6 se define por:

P6 : {P4 : x4 = 1}

y es No Factible, por lo que se cierra ese nodo de búsqueda.

∗ ∈ 9, 15 1 .
 
Sabemos que el valor óptimo cumple con zPE 5
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Resolución de las ramas P5 y P6

El problema P5 se define por:

P5 : {P4 : x4 = 0}

y su solución es z5∗ = 15 51 = 13.8, x1 = 1, x2 = 0, x3 = 15 y x4 = 0. Debido


a que esta es una solución no entera, podemos generar ramas.

El problema P6 se define por:

P6 : {P4 : x4 = 1}

y es No Factible, por lo que se cierra ese nodo de búsqueda.

∗ ∈ 9, 15 1 .
 
Sabemos que el valor óptimo cumple con zPE 5
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Resolución de las ramas P5 y P6

El problema P5 se define por:

P5 : {P4 : x4 = 0}

y su solución es z5∗ = 15 51 = 13.8, x1 = 1, x2 = 0, x3 = 15 y x4 = 0. Debido


a que esta es una solución no entera, podemos generar ramas.

El problema P6 se define por:

P6 : {P4 : x4 = 1}

y es No Factible, por lo que se cierra ese nodo de búsqueda.

∗ ∈ 9, 15 1 .
 
Sabemos que el valor óptimo cumple con zPE 5
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Resolución de las ramas P5 y P6

Esquemáticamente:
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de las ramas P5 y P6

1
Al resolver P5 tenemos que z5∗ = 15 15 , x1 = 1, x2 = 1, x3 = 5 y x4 = 0.

Para generar los nuevos subproblemas (P7 y P8 ) tomaremos la variable


x3 , una rama incluye la restricción x3 ≤ 51 ≤ 0 y la otra rama incluye la
restricción x3 ≥ 15 + 1 ≥ 1.

Sin embargo, puesto que 0 ≤ x3 ≤ 1 entonces lo que en realidad se define


que en P7 , x3 = 0; y en P8 , x3 = 1.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de las ramas P5 y P6

1
Al resolver P5 tenemos que z5∗ = 15 15 , x1 = 1, x2 = 1, x3 = 5 y x4 = 0.

Para generar los nuevos subproblemas (P7 y P8 ) tomaremos la variable


x3 , una rama incluye la restricción x3 ≤ 51 ≤ 0 y la otra rama incluye la
restricción x3 ≥ 15 + 1 ≥ 1.

Sin embargo, puesto que 0 ≤ x3 ≤ 1 entonces lo que en realidad se define


que en P7 , x3 = 0; y en P8 , x3 = 1.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de las ramas P5 y P6

1
Al resolver P5 tenemos que z5∗ = 15 15 , x1 = 1, x2 = 1, x3 = 5 y x4 = 0.

Para generar los nuevos subproblemas (P7 y P8 ) tomaremos la variable


x3 , una rama incluye la restricción x3 ≤ 51 ≤ 0 y la otra rama incluye la
restricción x3 ≥ 15 + 1 ≥ 1.

Sin embargo, puesto que 0 ≤ x3 ≤ 1 entonces lo que en realidad se define


que en P7 , x3 = 0; y en P8 , x3 = 1.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de las ramas P7 y P8

Esquemáticamente
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Resolución de las ramas P7 y P8

El problema P7 se define por:

P7 : {P5 : x3 = 0}

y su solución es z7∗ = 14, x1 = 1, x2 = 1, x3 = 0 y x4 = 0. Debido a que


esta es una solución entera y z7∗ = 14 ≥ zapoyo , entonces esta pasa a ser
nuestra solución de apoyo.

El problema P8 se define por:

P8 : {P5 : x3 = 1}

y es No Factible, por lo que se cierra ese nodo de búsqueda.

∗ ∈ [9, 14].
Sabemos que el valor óptimo cumple con zPE
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Resolución de las ramas P7 y P8

El problema P7 se define por:

P7 : {P5 : x3 = 0}

y su solución es z7∗ = 14, x1 = 1, x2 = 1, x3 = 0 y x4 = 0. Debido a que


esta es una solución entera y z7∗ = 14 ≥ zapoyo , entonces esta pasa a ser
nuestra solución de apoyo.

El problema P8 se define por:

P8 : {P5 : x3 = 1}

y es No Factible, por lo que se cierra ese nodo de búsqueda.

∗ ∈ [9, 14].
Sabemos que el valor óptimo cumple con zPE
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Resolución de las ramas P7 y P8

El problema P7 se define por:

P7 : {P5 : x3 = 0}

y su solución es z7∗ = 14, x1 = 1, x2 = 1, x3 = 0 y x4 = 0. Debido a que


esta es una solución entera y z7∗ = 14 ≥ zapoyo , entonces esta pasa a ser
nuestra solución de apoyo.

El problema P8 se define por:

P8 : {P5 : x3 = 1}

y es No Factible, por lo que se cierra ese nodo de búsqueda.

∗ ∈ [9, 14].
Sabemos que el valor óptimo cumple con zPE
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Resolución de las ramas P7 y P8

Esquemáticamente
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Definición de más ramas

Sólo se podrian generar ramas a partir de P3 , sin embargo


z3 ≤ zapoyo y dado que se trata de un problema de
maximización, es posible que encontremos una mejor solución
a partir de este nodo.
Por lo tanto, hemos resuelto el problema tal que la solución
óptima está dada por la solución del nodo P7 .
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Bound


Ejemplo (2) : Solución Óptima

Esquemáticamente
Algoritmos Básicos para PE Summary

Outline

1 Algoritmos Básicos para PE


Introducción
Algoritmo de Branch and Bound
Algoritmo de Cutting Plane
Algoritmo de Branch and Cut
Algoritmo de Planos de Corte para TSP
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Conceptos Básicos

Los algoritmos de planos de corte son una alternativa al


algoritmo Branch & Bound para resolver problemas enteros.

Gomory propuso el primer algoritmo de plano de corte finito en


1958.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Conceptos Básicos

Los algoritmos de planos de corte son una alternativa al


algoritmo Branch & Bound para resolver problemas enteros.

Gomory propuso el primer algoritmo de plano de corte finito en


1958.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Conceptos Básicos

La idea fundamental de este algoritmo consiste en ir agregando


restricciones a un problema lineal hasta que la solución óptima
encontrada sea entera.

Se debe tener cuidado con las restricciones a ser adicionadas, ya que no se


quiere modificar el problema entero original con las nuevas restricciones.

Por lo tanto, se adicionan nuevas restricciones denominadas cortes.


Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Conceptos Básicos

La idea fundamental de este algoritmo consiste en ir agregando


restricciones a un problema lineal hasta que la solución óptima
encontrada sea entera.

Se debe tener cuidado con las restricciones a ser adicionadas, ya que no se


quiere modificar el problema entero original con las nuevas restricciones.

Por lo tanto, se adicionan nuevas restricciones denominadas cortes.


Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Conceptos Básicos

La idea fundamental de este algoritmo consiste en ir agregando


restricciones a un problema lineal hasta que la solución óptima
encontrada sea entera.

Se debe tener cuidado con las restricciones a ser adicionadas, ya que no se


quiere modificar el problema entero original con las nuevas restricciones.

Por lo tanto, se adicionan nuevas restricciones denominadas cortes.


Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Características de los Cortes

Un corte debe satisfacer las siguientes condiciones:


Ninguna solución entera debe ser excluida, por lo tanto, cada solución
entera debe ser factible para el corte introducido.

Cada corte reduce la región de soluciones factibles, haciendo que la


solución fraccionaria obtenida en la última iteración no sea factible.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Características de los Cortes

Un corte debe satisfacer las siguientes condiciones:


Ninguna solución entera debe ser excluida, por lo tanto, cada solución
entera debe ser factible para el corte introducido.

Cada corte reduce la región de soluciones factibles, haciendo que la


solución fraccionaria obtenida en la última iteración no sea factible.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Características de los Cortes

Un corte debe satisfacer las siguientes condiciones:


Ninguna solución entera debe ser excluida, por lo tanto, cada solución
entera debe ser factible para el corte introducido.

Cada corte reduce la región de soluciones factibles, haciendo que la


solución fraccionaria obtenida en la última iteración no sea factible.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Características de los Cortes : Ejemplo
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Características de los Cortes : Ejemplo
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Características de los Cortes : Ejemplo
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Características de los Cortes : Ejemplo
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Descripción General del Algoritmo

Resolver la relajación lineal del problema entero.

Si la solución óptima (x*) es entera, entonces x* es una


solución óptima para el problema entero.

En caso contrario, agregar una restricción lineal (corte) que


sea satisfecha por todas las soluciones enteras del problema
original pero no por x*. Volver al paso 2.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Descripción General del Algoritmo

Resolver la relajación lineal del problema entero.

Si la solución óptima (x*) es entera, entonces x* es una


solución óptima para el problema entero.

En caso contrario, agregar una restricción lineal (corte) que


sea satisfecha por todas las soluciones enteras del problema
original pero no por x*. Volver al paso 2.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Descripción General del Algoritmo

Resolver la relajación lineal del problema entero.

Si la solución óptima (x*) es entera, entonces x* es una


solución óptima para el problema entero.

En caso contrario, agregar una restricción lineal (corte) que


sea satisfecha por todas las soluciones enteras del problema
original pero no por x*. Volver al paso 2.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Problema de PE a resolver

Resolveremos el siguiente problema

PE: max z = 7x1 + 9x2


subject to
−x1 + 3x2 ≤ 6
7x1 + x2 ≤ 35
x1 , x2 enteros positivos
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Problema de PE a resolver

Resolveremos el siguiente problema

PE: max z = 7x1 + 9x2


subject to
−x1 + 3x2 ≤ 6
7x1 + x2 ≤ 35
x1 , x2 enteros positivos
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : El Problema de RL

El problema de RL está dado por

PE: max z = 7x1 + 9x2


subject to
−x1 + 3x2 ≤ 6
7x1 + x2 ≤ 35
x1 , x2 ≥ 0
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : El Problema de RL

El problema de RL está dado por

PE: max z = 7x1 + 9x2


subject to
−x1 + 3x2 ≤ 6
7x1 + x2 ≤ 35
x1 , x2 ≥ 0
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : El Problema de RL

El tableau óptimo de RL (T0) está dado por:

VB x1 x2 s1 s2 b
z 0 0 28/11 15/11 63
x2 0 1 7/22 1/22 7/2
x1 1 0 −1/22 3/22 9/2

Generaremos un plano de corte agregando una restricción que


asociada a x2 (cuyo valor es no entero).
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : El Problema de RL

El tableau óptimo de RL (T0) está dado por:

VB x1 x2 s1 s2 b
z 0 0 28/11 15/11 63
x2 0 1 7/22 1/22 7/2
x1 1 0 −1/22 3/22 9/2

Generaremos un plano de corte agregando una restricción que


asociada a x2 (cuyo valor es no entero).
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : El Problema de RL

El tableau óptimo de RL (T0) está dado por:

VB x1 x2 s1 s2 b
z 0 0 28/11 15/11 63
x2 0 1 7/22 1/22 7/2
x1 1 0 −1/22 3/22 9/2

Generaremos un plano de corte agregando una restricción que


asociada a x2 (cuyo valor es no entero).
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Primer Corte

Un corte se agrega escribiendo el coeficiente de cada variable


(coeficientes del tableau) de la forma kck + f , donde 0 ≤ f ≤ 1.

El corte asociado a x2 está dado por:


7 1 7
x 2 + s1 + s2 =
  22
 22 2
7 1 1
x2 + 0 + s1 + 0 + s2 = 3+
22 22 2
7 1 1
x2 − 3 = − s1 − s2 +
22 22 2
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Primer Corte

Un corte se agrega escribiendo el coeficiente de cada variable


(coeficientes del tableau) de la forma kck + f , donde 0 ≤ f ≤ 1.

El corte asociado a x2 está dado por:


7 1 7
x 2 + s1 + s2 =
  22
 22 2
7 1 1
x2 + 0 + s1 + 0 + s2 = 3+
22 22 2
7 1 1
x2 − 3 = − s1 − s2 +
22 22 2
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Primer Corte

La solución fraccionaria obtenida en la última iteración no debe ser


factible.

Por lo tanto, se introduce la restricción:


7 1 1
− s1 − s2 + ≤ 0
22 22 2

Transformando esta restricción en igualdad, se tiene:


7 1 1
− s1 − s2 + s3 = −
22 22 2
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Primer Corte

La solución fraccionaria obtenida en la última iteración no debe ser


factible.

Por lo tanto, se introduce la restricción:


7 1 1
− s1 − s2 + ≤ 0
22 22 2

Transformando esta restricción en igualdad, se tiene:


7 1 1
− s1 − s2 + s3 = −
22 22 2
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Primer Corte

La solución fraccionaria obtenida en la última iteración no debe ser


factible.

Por lo tanto, se introduce la restricción:


7 1 1
− s1 − s2 + ≤ 0
22 22 2

Transformando esta restricción en igualdad, se tiene:


7 1 1
− s1 − s2 + s3 = −
22 22 2
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Primer Corte

El nuevo tableau (T1) queda:

VB x1 x2 s1 s2 s3 b
z 0 0 28/11 15/11 0 63
x2 0 1 7/22 1/22 0 7/2
x1 1 0 −1/22 3/22 0 9/2
s3 0 0 −7/22 −1/22 1 −1/2

Resolveremos ahora el problema en T1.


Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Primer Corte

El nuevo tableau (T1) queda:

VB x1 x2 s1 s2 s3 b
z 0 0 28/11 15/11 0 63
x2 0 1 7/22 1/22 0 7/2
x1 1 0 −1/22 3/22 0 9/2
s3 0 0 −7/22 −1/22 1 −1/2

Resolveremos ahora el problema en T1.


Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Primer Corte

El nuevo tableau (T1) queda:

VB x1 x2 s1 s2 s3 b
z 0 0 28/11 15/11 0 63
x2 0 1 7/22 1/22 0 7/2
x1 1 0 −1/22 3/22 0 9/2
s3 0 0 −7/22 −1/22 1 −1/2

Resolveremos ahora el problema en T1.


Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Primer Corte

Puesto que el Tableau actual define una solución que no es


factible (s3 es negativo), es necesario aplicar un procedimiento
llamado “dual-símplex” para buscar una nueva solución.

Buscamos la variable que sale observando las filas, y la variable


que entra observando las columnas.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Primer Corte

Puesto que el Tableau actual define una solución que no es


factible (s3 es negativo), es necesario aplicar un procedimiento
llamado “dual-símplex” para buscar una nueva solución.

Buscamos la variable que sale observando las filas, y la variable


que entra observando las columnas.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Primer Corte

Entonces elegimos:

−56/7 −30
VB x1 x2 s1 s2 s3 b
z 0 0 28/11 15/11 0 63
x2 0 1 7/22 1/22 0 7/2
x1 1 0 −1/22 3/22 0 9/2
s3 0 0 −7/22 −1/22 1 −1/2

Es decir, saldrá s3 y entrará s1 .


Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Primer Corte

Entonces elegimos:

−56/7 −30
VB x1 x2 s1 s2 s3 b
z 0 0 28/11 15/11 0 63
x2 0 1 7/22 1/22 0 7/2
x1 1 0 −1/22 3/22 0 9/2
s3 0 0 −7/22 −1/22 1 −1/2

Es decir, saldrá s3 y entrará s1 .


Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Primer Corte

Entonces elegimos:

−56/7 −30
VB x1 x2 s1 s2 s3 b
z 0 0 28/11 15/11 0 63
x2 0 1 7/22 1/22 0 7/2
x1 1 0 −1/22 3/22 0 9/2
s3 0 0 −7/22 −1/22 1 −1/2

Es decir, saldrá s3 y entrará s1 .


Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Primer Corte

Luego de las correspondientes operaciones fila, obtenemos:

VB x1 x2 s1 s2 s3 b
z 0 0 0 1 8 59
x2 0 1 0 0 1 3
x1 1 0 0 1/7 −1/7 32/7
s1 0 0 1 1/7 −22/7 11/7

Tenemos que generar un plano de corte considerando x1 , puesto


que no es entera.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Primer Corte

Luego de las correspondientes operaciones fila, obtenemos:

VB x1 x2 s1 s2 s3 b
z 0 0 0 1 8 59
x2 0 1 0 0 1 3
x1 1 0 0 1/7 −1/7 32/7
s1 0 0 1 1/7 −22/7 11/7

Tenemos que generar un plano de corte considerando x1 , puesto


que no es entera.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Primer Corte

Luego de las correspondientes operaciones fila, obtenemos:

VB x1 x2 s1 s2 s3 b
z 0 0 0 1 8 59
x2 0 1 0 0 1 3
x1 1 0 0 1/7 −1/7 32/7
s1 0 0 1 1/7 −22/7 11/7

Tenemos que generar un plano de corte considerando x1 , puesto


que no es entera.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Segundo Corte

Consideramos ahora la fila correspondiente a x1 .

Esta fila se puede escribir como:


1 1 32
x1 + s2 − s3 =
   7 7 7
1 6 4
x1 + 0 + s2 + −1 + s3 = 4 +
7 7 7
1 6 4
x1 − s3 − 4 = − s2 − s3 +
7 7 7
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Segundo Corte

Consideramos ahora la fila correspondiente a x1 .

Esta fila se puede escribir como:


1 1 32
x1 + s2 − s3 =
   7 7 7
1 6 4
x1 + 0 + s2 + −1 + s3 = 4 +
7 7 7
1 6 4
x1 − s3 − 4 = − s2 − s3 +
7 7 7
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Segundo Corte

La solución fraccionaria obtenida en la última iteración no


debe ser factible.

Por lo tanto, se introduce la restricción:


1 6 4
− s2 − s3 + ≤ 0
7 7 7

Transformando esta restricción en igualdad, se tiene:


1 6 4
− s2 − s3 + s4 = −
7 7 7
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Segundo Corte

La solución fraccionaria obtenida en la última iteración no


debe ser factible.

Por lo tanto, se introduce la restricción:


1 6 4
− s2 − s3 + ≤ 0
7 7 7

Transformando esta restricción en igualdad, se tiene:


1 6 4
− s2 − s3 + s4 = −
7 7 7
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Segundo Corte

La solución fraccionaria obtenida en la última iteración no


debe ser factible.

Por lo tanto, se introduce la restricción:


1 6 4
− s2 − s3 + ≤ 0
7 7 7

Transformando esta restricción en igualdad, se tiene:


1 6 4
− s2 − s3 + s4 = −
7 7 7
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Segundo Corte

Debemos incluir esta restricción en el tableau, obteniéndo:

VB x1 x2 s1 s2 s3 s4 b
z 0 0 0 1 8 0 59
x2 0 1 0 0 1 0 3
x1 1 0 0 1/7 −1/7 0 32/7
s1 0 0 1 1/7 −22/7 0 11/7
s4 0 0 0 −1/7 −6/7 1 −4/7

Debemos hacer nuevamente operaciones filas con tal de encontrar


una solución factible.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Segundo Corte

Debemos incluir esta restricción en el tableau, obteniéndo:

VB x1 x2 s1 s2 s3 s4 b
z 0 0 0 1 8 0 59
x2 0 1 0 0 1 0 3
x1 1 0 0 1/7 −1/7 0 32/7
s1 0 0 1 1/7 −22/7 0 11/7
s4 0 0 0 −1/7 −6/7 1 −4/7

Debemos hacer nuevamente operaciones filas con tal de encontrar


una solución factible.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Segundo Corte

Debemos incluir esta restricción en el tableau, obteniéndo:

VB x1 x2 s1 s2 s3 s4 b
z 0 0 0 1 8 0 59
x2 0 1 0 0 1 0 3
x1 1 0 0 1/7 −1/7 0 32/7
s1 0 0 1 1/7 −22/7 0 11/7
s4 0 0 0 −1/7 −6/7 1 −4/7

Debemos hacer nuevamente operaciones filas con tal de encontrar


una solución factible.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Segundo Corte

La variable que entra y la variable que sale se muestran a


continuación:

−7 −56/7
VB x1 x2 s1 s2 s3 s4 b
z 0 0 0 1 8 0 59
x2 0 1 0 0 1 0 3
x1 1 0 0 1/7 −1/7 0 32/7
s1 0 0 1 1/7 −22/7 0 11/7
s4 0 0 0 −1/7 −6/7 1 −4/7

Entonces, saldrá s4 y entrará s2 .


Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Segundo Corte

La variable que entra y la variable que sale se muestran a


continuación:

−7 −56/7
VB x1 x2 s1 s2 s3 s4 b
z 0 0 0 1 8 0 59
x2 0 1 0 0 1 0 3
x1 1 0 0 1/7 −1/7 0 32/7
s1 0 0 1 1/7 −22/7 0 11/7
s4 0 0 0 −1/7 −6/7 1 −4/7

Entonces, saldrá s4 y entrará s2 .


Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Segundo Corte

La variable que entra y la variable que sale se muestran a


continuación:

−7 −56/7
VB x1 x2 s1 s2 s3 s4 b
z 0 0 0 1 8 0 59
x2 0 1 0 0 1 0 3
x1 1 0 0 1/7 −1/7 0 32/7
s1 0 0 1 1/7 −22/7 0 11/7
s4 0 0 0 −1/7 −6/7 1 −4/7

Entonces, saldrá s4 y entrará s2 .


Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Segundo Corte

Realizando las correspondiente operaciones fila, obtenemos el


siguiente Tableau (T2):

VB x1 x2 s1 s2 s3 s4 b
z 0 0 0 0 2 7 55
x2 0 1 0 0 1 0 3
x1 1 0 0 0 −1 1 4
s1 0 0 1 0 −4 1 1
s2 0 0 0 1 6 −7 4

En este tableau hemos encontrado una solución entera, por lo que


no es necesario generar un nuevo corte. Esta es la solución óptima
al problema de PE.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Segundo Corte

Realizando las correspondiente operaciones fila, obtenemos el


siguiente Tableau (T2):

VB x1 x2 s1 s2 s3 s4 b
z 0 0 0 0 2 7 55
x2 0 1 0 0 1 0 3
x1 1 0 0 0 −1 1 4
s1 0 0 1 0 −4 1 1
s2 0 0 0 1 6 −7 4

En este tableau hemos encontrado una solución entera, por lo que


no es necesario generar un nuevo corte. Esta es la solución óptima
al problema de PE.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Generación del Segundo Corte

Realizando las correspondiente operaciones fila, obtenemos el


siguiente Tableau (T2):

VB x1 x2 s1 s2 s3 s4 b
z 0 0 0 0 2 7 55
x2 0 1 0 0 1 0 3
x1 1 0 0 0 −1 1 4
s1 0 0 1 0 −4 1 1
s2 0 0 0 1 6 −7 4

En este tableau hemos encontrado una solución entera, por lo que


no es necesario generar un nuevo corte. Esta es la solución óptima
al problema de PE.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Ejemplo (1) : Solución Óptima al Problema de PE

La solución al problema de PE es z ∗ = 55, x1∗ = 4 y x2∗ = 3


Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Problemas con el Algoritmo

Cada corte generalmente elimina una parte muy pequeña


de la región factible.

Aunque es un algoritmo finito, ningún algoritmo de plano


de corte converge en tiempo polinomial.

Mientras más se conozca sobre la estructura del


problema, se podrán generar mejores planos de corte.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Problemas con el Algoritmo

Cada corte generalmente elimina una parte muy pequeña


de la región factible.

Aunque es un algoritmo finito, ningún algoritmo de plano


de corte converge en tiempo polinomial.

Mientras más se conozca sobre la estructura del


problema, se podrán generar mejores planos de corte.
Algoritmos Básicos para PE Summary

Algoritmo de Cutting Plane


Problemas con el Algoritmo

Cada corte generalmente elimina una parte muy pequeña


de la región factible.

Aunque es un algoritmo finito, ningún algoritmo de plano


de corte converge en tiempo polinomial.

Mientras más se conozca sobre la estructura del


problema, se podrán generar mejores planos de corte.
Algoritmos Básicos para PE Summary

Outline

1 Algoritmos Básicos para PE


Introducción
Algoritmo de Branch and Bound
Algoritmo de Cutting Plane
Algoritmo de Branch and Cut
Algoritmo de Planos de Corte para TSP
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


La idea es Branch and Bound + Cutting Planes = Branchand Cut

Tanto Branch and Bound como Cutting Planes son algoritmos


exactos que podrían tener un pobre desempeño.

¿Será posible encontrar un algoritmo de mejor desempeño


mezclando ambos elementos?

Es decir, ¿existe algún algoritmo que mezcle Branch and Bound y


Cutting Planes pero que sea mejor, al menos en la práctica?

La respuesta es sí:Branch and Cut (Ramificación y corte).


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


La idea es Branch and Bound + Cutting Planes = Branchand Cut

Tanto Branch and Bound como Cutting Planes son algoritmos


exactos que podrían tener un pobre desempeño.

¿Será posible encontrar un algoritmo de mejor desempeño


mezclando ambos elementos?

Es decir, ¿existe algún algoritmo que mezcle Branch and Bound y


Cutting Planes pero que sea mejor, al menos en la práctica?

La respuesta es sí:Branch and Cut (Ramificación y corte).


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


La idea es Branch and Bound + Cutting Planes = Branchand Cut

Tanto Branch and Bound como Cutting Planes son algoritmos


exactos que podrían tener un pobre desempeño.

¿Será posible encontrar un algoritmo de mejor desempeño


mezclando ambos elementos?

Es decir, ¿existe algún algoritmo que mezcle Branch and Bound y


Cutting Planes pero que sea mejor, al menos en la práctica?

La respuesta es sí:Branch and Cut (Ramificación y corte).


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


La idea es Branch and Bound + Cutting Planes = Branchand Cut

Tanto Branch and Bound como Cutting Planes son algoritmos


exactos que podrían tener un pobre desempeño.

¿Será posible encontrar un algoritmo de mejor desempeño


mezclando ambos elementos?

Es decir, ¿existe algún algoritmo que mezcle Branch and Bound y


Cutting Planes pero que sea mejor, al menos en la práctica?

La respuesta es sí:Branch and Cut (Ramificación y corte).


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


La idea es Branch and Bound + Cutting Planes = Branchand Cut
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1)

Consideremos el siguiente problema de PE:

max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x1 , x2 enteros}

Entonces el problema de RL de PE (P0 ) es:

P0 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x1 , x2 ≥ 0}


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1)

Consideremos el siguiente problema de PE:

max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x1 , x2 enteros}

Entonces el problema de RL de PE (P0 ) es:

P0 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x1 , x2 ≥ 0}


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1)

Consideremos el siguiente problema de PE:

max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x1 , x2 enteros}

Entonces el problema de RL de PE (P0 ) es:

P0 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x1 , x2 ≥ 0}


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1)

Consideremos el siguiente problema de PE:

max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x1 , x2 enteros}

Entonces el problema de RL de PE (P0 ) es:

P0 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x1 , x2 ≥ 0}


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1)

Al resolver P0 tenemos que z0∗ = 41 14 , x1 = 9


4 = 2.25, x2 = 15
4 = 3.75.

Para generar los nuevos subproblemas (P1 y P2 ) tomaremos la variable


x2 , una rama incluye la restricción x2 ≤ k3.75k ≤ 3 y la otra rama incluye
la restricción x2 ≥ k3.75k + 1 ≥ 4.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1)

Al resolver P0 tenemos que z0∗ = 41 14 , x1 = 9


4 = 2.25, x2 = 15
4 = 3.75.

Para generar los nuevos subproblemas (P1 y P2 ) tomaremos la variable


x2 , una rama incluye la restricción x2 ≤ k3.75k ≤ 3 y la otra rama incluye
la restricción x2 ≥ k3.75k + 1 ≥ 4.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1) Definición de P1 y P2

Esquemáticamente:
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1) Resolución de P1 y P2

Ahora, comenzamos a diferenciarnos del algoritmo de Branch and Bound,


pues los problemas P1 y P2 serán resueltos para luego agregar un plano
de corte.

El problema P1 se define por:

P1 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≤ 3, x1 , x2 ≥ 0}

y su solución es z1∗ = 39, x1 = 3, x2 = 3. Debido a que esta es una


solución entera, pasa a ser una solución de apoyo.

El problema P2 se define por:

P2 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≥ 4, x1 , x2 ≥ 0}

y su solución esz2∗ = 41, x1 = 59 , x2 = 4. Debido a que esta solución no


es entera, agregaremos un plano de corte.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1) Resolución de P1 y P2

Ahora, comenzamos a diferenciarnos del algoritmo de Branch and Bound,


pues los problemas P1 y P2 serán resueltos para luego agregar un plano
de corte.

El problema P1 se define por:

P1 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≤ 3, x1 , x2 ≥ 0}

y su solución es z1∗ = 39, x1 = 3, x2 = 3. Debido a que esta es una


solución entera, pasa a ser una solución de apoyo.

El problema P2 se define por:

P2 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≥ 4, x1 , x2 ≥ 0}

y su solución esz2∗ = 41, x1 = 59 , x2 = 4. Debido a que esta solución no


es entera, agregaremos un plano de corte.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1) Resolución de P1 y P2

Ahora, comenzamos a diferenciarnos del algoritmo de Branch and Bound,


pues los problemas P1 y P2 serán resueltos para luego agregar un plano
de corte.

El problema P1 se define por:

P1 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≤ 3, x1 , x2 ≥ 0}

y su solución es z1∗ = 39, x1 = 3, x2 = 3. Debido a que esta es una


solución entera, pasa a ser una solución de apoyo.

El problema P2 se define por:

P2 : max z = {5x1 + 8x2 : x1 + x2 ≤ 6, 5x1 + 9x2 ≤ 45, x2 ≥ 4, x1 , x2 ≥ 0}

y su solución esz2∗ = 41, x1 = 59 , x2 = 4. Debido a que esta solución no


es entera, agregaremos un plano de corte.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1) Resolución de P1 y P2

Esquemáticamente:
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1) Agregar un corte en P2

Al resolver P2 se llega al siguiente Tableu:

s džϭ džϮ Ɛϭ ƐϮ Ɛϯ ď
nj Ϭ Ϭ Ϭ ϭ ϭ ϰϭ
džϭ ϭ Ϭ Ϭ ϭͬϱ ϵͬϱ ϵͬϱ
Ɛϭ Ϭ Ϭ ϭ Ͳϭͬϱ Ͳϰͬϱ ϭͬϱ
džϮ Ϭ ϭ Ϭ Ϭ Ͳϭ ϰ

Es claro que debemos generar un corte para la variable x1 .


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1) Agregar un corte en P2

Al resolver P2 se llega al siguiente Tableu:

s džϭ džϮ Ɛϭ ƐϮ Ɛϯ ď
nj Ϭ Ϭ Ϭ ϭ ϭ ϰϭ
džϭ ϭ Ϭ Ϭ ϭͬϱ ϵͬϱ ϵͬϱ
Ɛϭ Ϭ Ϭ ϭ Ͳϭͬϱ Ͳϰͬϱ ϭͬϱ
džϮ Ϭ ϭ Ϭ Ϭ Ͳϭ ϰ

Es claro que debemos generar un corte para la variable x1 .


Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1) Agregar un corte en P2

La fila de x1 se puede escribir como:


1 9 9
x1 + s2 + s3 =
  5 5 5
1 4 4
x1 + 0 + s2 + 1 + s3 = 1 +
5 5 5
1 4 4
x1 + s3 − 1 = − s2 − s3 +
5 5 5

Por lo que se agrega la siguiente restricción (corte)

1 4 4
− s2 − s3 + s4 = −
5 5 5
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1) Agregar un corte en P2

La fila de x1 se puede escribir como:


1 9 9
x1 + s2 + s3 =
  5 5 5
1 4 4
x1 + 0 + s2 + 1 + s3 = 1 +
5 5 5
1 4 4
x1 + s3 − 1 = − s2 − s3 +
5 5 5

Por lo que se agrega la siguiente restricción (corte)

1 4 4
− s2 − s3 + s4 = −
5 5 5
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1) Agregar un corte en P2

El nuevo tableu es

s džϭ džϮ Ɛϭ ƐϮ Ɛϯ Ɛϰ ď
nj Ϭ Ϭ Ϭ ϭ ϭ Ϭ ϰϭ
džϭ ϭ Ϭ Ϭ ϭͬϱ ϵͬϱ Ϭ ϵͬϱ
Ɛϭ Ϭ Ϭ ϭ Ͳϭͬϱ Ͳϰͬϱ Ϭ ϭͬϱ
džϮ Ϭ ϭ Ϭ Ϭ Ͳϭ Ϭ ϰ
Ɛϰ Ϭ Ϭ Ϭ Ͳϭͬϱ Ͳϰͬϱ ϭ Ͳϰͬϱ
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1) Agregar un corte en P2

Las variables a entrar y salir se muestran a continuación

Ͳϱ Ͳϱͬϰ
s džϭ džϮ Ɛϭ ƐϮ Ɛϯ Ɛϰ ď
nj Ϭ Ϭ Ϭ ϭ ϭ Ϭ ϰϭ
džϭ ϭ Ϭ Ϭ ϭͬϱ ϵͬϱ Ϭ ϵͬϱ
Ɛϭ Ϭ Ϭ ϭ Ͳϭͬϱ Ͳϰͬϱ Ϭ ϭͬϱ
džϮ Ϭ ϭ Ϭ Ϭ Ͳϭ Ϭ ϰ
Ɛϰ Ϭ Ϭ Ϭ Ͳϭͬϱ Ͳϰͬϱ ϭ Ͳϰͬϱ
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1) Agregar un corte en P2

Al aplicar las operaciones fila, el tableau es:

s džϭ džϮ Ɛϭ ƐϮ Ɛϯ Ɛϰ ď
nj Ϭ Ϭ Ϭ ϯͬϰ Ϭ ϱͬϰ ϰϬ
džϭ ϭ Ϭ Ϭ Ͳϭͬϰ Ϭ ϵͬϰ Ϭ
Ɛϭ Ϭ Ϭ ϭ Ϭ Ϭ Ͳϭ ϭ
džϮ Ϭ ϭ Ϭ ϭͬϰ Ϭ Ͳϱͬϰ ϱ
Ɛϯ Ϭ Ϭ Ϭ ϭͬϰ ϭ Ͳϱͬϰ ϭ
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1) Agregar un corte en P2

Agregado el nuevo corte, el esquema del algoritmo es el siguiente:

P0: z 0*=41 1/4,


x1=2.25, x 2=3.75

x2≤3 x2≥4

P 0: z 1*=39, x 1=3, P 2: z 2*=41,


x 2=3 x 1=9/5, x 2=4

Agregamos corte para x 1

P2: z2*=40,
x 1=0, x 2=5
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1) Agregar un corte en P2

Es claro que ya no podemos seguir generando ramas, pues no


hay nodos con variables fracionarias.

La nueva solución del problema P2 mejora el valor de z1∗ , por


lo tanto es la solución de P2 obtenida luego de agregar el corte
la solución óptima del problema.
Algoritmos Básicos para PE Summary

Algoritmo de Branch and Cut


Branchand Cut (Ejemplo 1) Agregar un corte en P2

Es claro que ya no podemos seguir generando ramas, pues no


hay nodos con variables fracionarias.

La nueva solución del problema P2 mejora el valor de z1∗ , por


lo tanto es la solución de P2 obtenida luego de agregar el corte
la solución óptima del problema.
Algoritmos Básicos para PE Summary

Outline

1 Algoritmos Básicos para PE


Introducción
Algoritmo de Branch and Bound
Algoritmo de Cutting Plane
Algoritmo de Branch and Cut
Algoritmo de Planos de Corte para TSP
Algoritmos Básicos para PE Summary

Diferentes tipos de “cortes”


Extensiones del algoritmo de Branch and Cut

Tanto el algoritmo de Cutting Planes como el Algoritmo de


Branch and Cut que hemos mostrado, ambos consideran
planos de corte denominados “cortes de Gomory”.

Los cortes de Gomory son un tipo de corte que puede aplicarse


a cualquier problema de Programación Lineal Entera.

Sin embargo, es posible que dado un problema particular se


puedan generar “cortes” o restricciones que permiten resolver
en forma más eficiente ese problema en particular.
Algoritmos Básicos para PE Summary

Diferentes tipos de “cortes”


Extensiones del algoritmo de Branch and Cut

Tanto el algoritmo de Cutting Planes como el Algoritmo de


Branch and Cut que hemos mostrado, ambos consideran
planos de corte denominados “cortes de Gomory”.

Los cortes de Gomory son un tipo de corte que puede aplicarse


a cualquier problema de Programación Lineal Entera.

Sin embargo, es posible que dado un problema particular se


puedan generar “cortes” o restricciones que permiten resolver
en forma más eficiente ese problema en particular.
Algoritmos Básicos para PE Summary

Diferentes tipos de “cortes”


Extensiones del algoritmo de Branch and Cut

Tanto el algoritmo de Cutting Planes como el Algoritmo de


Branch and Cut que hemos mostrado, ambos consideran
planos de corte denominados “cortes de Gomory”.

Los cortes de Gomory son un tipo de corte que puede aplicarse


a cualquier problema de Programación Lineal Entera.

Sin embargo, es posible que dado un problema particular se


puedan generar “cortes” o restricciones que permiten resolver
en forma más eficiente ese problema en particular.
Algoritmos Básicos para PE Summary

Diferentes tipos de “cortes”


Extensiones del algoritmo de Branch and Cut

Por ejemplo, el Problema del Vendedor Viajero, TSP, podría ser


resuelto considerando tres estrategias de generación de corte:
Algoritmo basado en Gomory Cuts estándar.

Algoritmo basado en agregación de “restricción de eliminación


de subtour más violada”.

Algoritmo basado en agregación de “restricción asociada al


subtour de mayor tamaño”.
Algoritmos Básicos para PE Summary

Diferentes tipos de “cortes”


Extensiones del algoritmo de Branch and Cut

Por ejemplo, el Problema del Vendedor Viajero, TSP, podría ser


resuelto considerando tres estrategias de generación de corte:
Algoritmo basado en Gomory Cuts estándar.

Algoritmo basado en agregación de “restricción de eliminación


de subtour más violada”.

Algoritmo basado en agregación de “restricción asociada al


subtour de mayor tamaño”.
Algoritmos Básicos para PE Summary

Diferentes tipos de “cortes”


Extensiones del algoritmo de Branch and Cut

Por ejemplo, el Problema del Vendedor Viajero, TSP, podría ser


resuelto considerando tres estrategias de generación de corte:
Algoritmo basado en Gomory Cuts estándar.

Algoritmo basado en agregación de “restricción de eliminación


de subtour más violada”.

Algoritmo basado en agregación de “restricción asociada al


subtour de mayor tamaño”.
Algoritmos Básicos para PE Summary

Diferentes tipos de “cortes”


Extensiones del algoritmo de Branch and Cut

Por ejemplo, el Problema del Vendedor Viajero, TSP, podría ser


resuelto considerando tres estrategias de generación de corte:
Algoritmo basado en Gomory Cuts estándar.

Algoritmo basado en agregación de “restricción de eliminación


de subtour más violada”.

Algoritmo basado en agregación de “restricción asociada al


subtour de mayor tamaño”.
Algoritmos Básicos para PE Summary

Estrategias de Planos de Corte para el TSP


Extensiones del algoritmo de Branch and Cut

Consideremos la siguiente formulación para el TSP

min ∑ ∑ cij xij (1)


i∈V j∈V
subject to (2)
∑ xij = 1 ∀j ∈ V (3)
i∈V

∑ xij = 1 ∀i ∈ V (4)
j∈V

∑ ∑ xij ≥ ∑ yi − ys s ∈ S, S ⊆ V (5)
i∈S j∈S i∈S
xij ∈ {0, 1} ∀i ∈ V , j ∈ V (6)
yi ∈ {0, 1} ∀i ∈ V (7)
(8)
Algoritmos Básicos para PE Summary

Estrategias de Planos de Corte para el TSP


Extensiones del algoritmo de Branch and Cut

En esta formulación existe un número exponencial de


restricciones del tipo (5).

Las estrategias eficientes de resolución consideran la


agregación sucesiva de restricciones de tipo (5), hay varios
criterios posibles, pero particularmente:
Agregar una restricción asociada al conjunto S que produzca el
máximo valor de ∑i ∈S ∑j ∈S xij − ∑i ∈S yi + ys .

O aquel que tenga el mayor número de elementos.


Algoritmos Básicos para PE Summary

Estrategias de Planos de Corte para el TSP


Extensiones del algoritmo de Branch and Cut

En esta formulación existe un número exponencial de


restricciones del tipo (5).

Las estrategias eficientes de resolución consideran la


agregación sucesiva de restricciones de tipo (5), hay varios
criterios posibles, pero particularmente:
Agregar una restricción asociada al conjunto S que produzca el
máximo valor de ∑i ∈S ∑j ∈S xij − ∑i ∈S yi + ys .

O aquel que tenga el mayor número de elementos.


Algoritmos Básicos para PE Summary

Estrategias de Planos de Corte para el TSP


Extensiones del algoritmo de Branch and Cut

En esta formulación existe un número exponencial de


restricciones del tipo (5).

Las estrategias eficientes de resolución consideran la


agregación sucesiva de restricciones de tipo (5), hay varios
criterios posibles, pero particularmente:
Agregar una restricción asociada al conjunto S que produzca el
máximo valor de ∑i ∈S ∑j ∈S xij − ∑i ∈S yi + ys .

O aquel que tenga el mayor número de elementos.


Algoritmos Básicos para PE Summary

Estrategias de Planos de Corte para el TSP


Extensiones del algoritmo de Branch and Cut

En esta formulación existe un número exponencial de


restricciones del tipo (5).

Las estrategias eficientes de resolución consideran la


agregación sucesiva de restricciones de tipo (5), hay varios
criterios posibles, pero particularmente:
Agregar una restricción asociada al conjunto S que produzca el
máximo valor de ∑i ∈S ∑j ∈S xij − ∑i ∈S yi + ys .

O aquel que tenga el mayor número de elementos.


Algoritmos Básicos para PE Summary

Summary

The first main message of your talk in one or two lines.


The second main message of your talk in one or two lines.
Perhaps a third message, but not more than that.

Outlook
What we have not done yet.
Even more stuff.
Appendix

For Further Reading I

A. Author.
Handbook of Everything.
Some Press, 1990.
S. Someone.
On this and that.
Journal on This and That. 2(1):50–100, 2000.

También podría gustarte