Sei sulla pagina 1di 34

Programación Lineal

Entera Estricta

Programación lineal entera estricta


• En muchos PPLs, la sol. debe expresarse en forma entera (unidades de producto a
fabricar, cantidad de máquinas, etc.).

• El “redondeo” de los valores de la sol. continua de un PPL a enteros puede dar:

– sol. sub-óptima aceptable si los valores de las variables en la sol. continua son
“grandes”, aunque puede producir infactibilidad si hay restricciones de =. Los
errores relativos son despreciables.

– sol. alejada de la óptima si los valores de solución continua son “pequeños”.


Ejemplo:
Max z = x1 + 2 ⋅ x2
s.a
⎧2 ⋅ x1 + 5 ⋅ x2 ≤ 20
⎪9 ⋅ x1 + 5 ⋅ x2 ≤ 45


⎪x1, x2 ≥ 0
⎪⎩x1, x2 enteras

* Si x1 y x2 fueran continuas, sol. óptima sería [x1=3,571, x2=2,571] con z=8,71.

* Si se “redondea” a [x1=4, x2=3]: sol. entera infactible.

a [x1=3, x2=2]: sol. entera factible, z = 7.


Programación lineal entera
• Si a un PPL se le agrega la condición que las variables deben ser enteras se
denomina problema de programación lineal entera (PLE), cuya forma general es:
n
Max (o Min) z = ∑ c j ⋅ x j
j=1

s.a
⎧n ⎧≤ ⎫
⎪ ⎪ ⎪
⎪∑ a ij ⋅ x j ⎨= ⎬ b j , i = 1,2,...m
⎪⎪ j=1 ⎪≥ ⎪
⎩ ⎭
Ω ⎨
x
⎪ j ≥ 0
⎪x enteras
⎪ j
⎩⎪ j = 1,2,...n Puntos factibles

En esta clase adoptamos la siguiente convención:

• Un problema como el formulado se denomina problema de programación


lineal entero estricto -PPLEE- o lineal entero puro.

• Un problema de PL que contenga tanto variables continuas como enteras


es un PP lineal entero-mixto -PPLEM- (o entero mezclado)

• Un PPL que tiene var. continuas y todas las enteras son binarias (0/1), el
problema se denomina PP lineal entero-mixto 0/1 -PPLEM 0/1- o lineal
binario-mixto (mixto o mzeclado).

En ingeniería, los problemas de esta naturaleza más frecuentes son los


problemas de PL entero-mixtos (PPLEMs).
Programación Lineal Entera Estricta

• La región factible RF es no convexa. Por tanto, la teoría de Programación Lineal no


es directamente aplicable al problema formulado.

• Cuando en un PPLEE se ignora la condición que las variables sean enteras, se dice
que la RF se ha relajado. El PL resultante se llama PL relajado (PLR).

• Muchos algoritmos para resolver PPLEEs se basan directa o indirectamente en la


solución de una sucesión de PPL relajados (PPLRs).

• El PPLR es una versión de un PPLE (PPLEE o PPLEM) con menos restricciones (o


más relajada). Significa que la RF de cualquier PPLE (PPLEE o PPLEM) debe
estar contenida en la RF del PLR correspondiente.

• Para cualquier PPLE (PPLEE o PPLEM) de maximización (minimización) de z, se


infiere que:

Valor óptimo de z para PPLR >= (<=) Valor óptimo de z para PPLE.

Ejemplo de PPLEE. Propiedades

Región factible PPLR


3,5

Max z = 21⋅ x1 + 11 ⋅ x2 3,0


o Región factible PPLEE

s.a 2,5

7 x1 + 4 x2 ≤ 13
2,0
x2

1,5
7 x1 + 4 x2 <= 13
x1, x2 ≥ 0 1,0

x1, x2 enteros 0,5

0,0
0,0 0,5 1,0 1,5 2,0
x1

RF de PPLEE: Conjunto S = {(0,0), (0,1), (0,2), (0,3), (1,0), (1,1)}

Solución óptima: z = 33 para (0,3).

Si RF de PPLR de PPLEE está acotada, RF de PPLEE tiene número finito de puntos.

PPLEE puede resolverse por enumeración de valores de z para cada punto factible, e identificar
el mayor.
No es posible resolver por enumeración problemas de gran tamaño por el tiempo de cómputo.
• Resolver el PPLEE resolviendo primero el PPLR. Luego, redondear al entero más
próximo cada variable que deber ser necesariamente un entero y que asume un
valor fraccionario en la SO del PPLR.

• La SO del PPLR es (x1, x2) =(13/7, 0).


• Se redondea a (x1, x2)=(2, 0). No es solución factible.
• Se redondea a: (x1, x2) = (1, 0) con z = 21. No llega a SO: z = 33 para (0, 3).

• El Simplex para PPL encuentra la solución partiendo desde una sol. factible básica
(SBF) hasta llegar a otra mejor, examinando sólo una fracción de todas las SBFs.

• Se desea un método similar para PPLEE: Proceder desde una solución factible con
enteros a una solución factible con enteros mejor. Tal método no existe aún.

• Aún cuando la RF de PPLEE es un subconjunto de RF de PLR del mismo, el


PPLEE es generalmente mucho más difícil de resolver que el PLR.

• Si la SO de un PLR de un PPLEE son valores enteros, es también la SO del


PPLEE (porque RF del PPLEE es un subconjunto de RF de su PLR).

Método de ramificación y acotamiento para PPLEEs


(Branch and Bound - B&B)

• Descripción del método a través de un ejemplo.


Una empresa fabrica mesas y sillas según el siguiente detalle:

Producto Mano de obra Material - madera Utilidad


(horas/unidad) (pies/unidad) ($/unidad)
Mesa 1 9 8
Silla 1 5 5
Disponibilidad 6 45

– Maximizar beneficios.
* Formulación del PPLEE
Sea
x1 = número de mesas fabricadas
x2 = número de sillas fabricadas

⎧Max z = 8 ⋅ x1 + 5 ⋅ x2
⎪s.a.

⎪⎪1 ⋅ x1 + 1 ⋅ x2 ≤ 6 (restricción mano de obra) 9 x1 + 5 x2 <= 45

⎪9 ⋅ x1 + 5 ⋅ x2 ≤ 45 (restricción de madera)
6

⎪x1, x2 ≥ 0
⎪ 5
⎪⎩x1, x2 enteros
4
* Resolución del PPLEE

x2
3
Paso 1.- Resolver el PLR del PPLEE.
2

⎧Max z = 8 ⋅ x1 + 5 ⋅ x2
⎪s.a. x1 + x2 <= 6
1
⎪⎪
⎨1⋅ x1 + 1 ⋅ x2 ≤ 6 (restricción mano de obra)
0
⎪9 ⋅ x1 + 5 ⋅ x2 ≤ 45 (restricción de madera) 0 1 2 3 4 5 6

⎩⎪x1, x2 ≥ 0 x1

• Si todas las variables de decisión de PPLR toman valores enteros en la SO,


entonces es SO de PPLEE. A éste se llama subproblema 1 (SP1) del PLR.

• En este caso, la SO del PLR (SP1) es:


– zSP1 = 41.25; (x1, x2)SP1 = (3.75, 2.25)
– (x1, x2)SP1 valores fraccionarios → NO es solución PPLEE

9 x1 + 5 x2 <= 45
6

4
x2

3
SO del PLR - subproblema 1
(3.75, 2.25)
2

x1 + x2 <= 6
1

0
0 1 2 3 4 5 6
x1
• Se vio que:
zóptimo del PPLEE <= zóptimo del PPLR

Por lo tanto:
zóptimo del PPLR es un límite o cota superior del beneficio

Paso 2.-
Dividir la RF del PPLR para investigar más sobre la ubicación de la SO del PPLEE.

Elegir arbitrariamente una variable fraccionaria de la SO del PPLR. Elegimos x1=3.75.

Todos los puntos de la RF de PPLEE deben cumplir que:

x1 <= 3 o x1 => 4

Se dice que se “ramifica” sobre la variable x1, y se originan dos subproblemas adicionales:

Subproblema 2 (SP2): SP1 + restricción x1 => 4

Subproblema 3 (SP3): SP1 + restricción x1 <= 3

9 x1 + 5 x2 <= 45
G
6

4
x2

F
3

SP3
Subproblema 3
(3.75, 2.25)
2
SP2 C
x1=4 x1 + x2 <= 6
1
x1=3 SP2

0
0D 1 2 E3 4B 5A 6
x1

No hay puntos con x1 = 3.75 en SP2 ni en SP3. Luego, la SO del PPLR anterior (SP1)
no puede obtenerse nuevamente cuando se resuelve SP2 o SP3.

Todos los puntos de la RF del PPLEE están incluidos en RF del SP2 o del SP3.

Las RFs de SP2 y SP3 no tienen puntos comunes.

Puesto que SP2 y SP3 se originan por sumar restricciones que contienen x1, se dice
que SP2 y SP3 se crean por ramificación sobre x1.
• Paso 3.- Seleccionar entre SP2 y SP3. Se elige arbitrariamente SP2.
Resolverlo como PLR.

• La SO del SP2 es:


zSP2 = 41; (x1, x2)SP2 = (4, 1.8) [Punto C].

x2SP2 valor fraccionario → NO es solución PPLEE

Árbol de subproblemas originados

SP1
z = 41.25
t=1
x1 = 3.75
x2 = 2.25
x1≥4 x1≤3

SP2 SP3
z = 41
t=2
x1 = 4
x2 = 1.8

La representación de todos los SPs originados se llama árbol.


Cada SP se llama nodo del árbol.
Cada línea que une 2 nodos del árbol se llama arco.
Las restricciones relacionadas con c/nodo son las restricciones del PLR más las
restricciones que tienen que ver con los arcos que van desde el SP1 hasta el nodo.
La letra t indica el orden cronológico de resolución del SP.
Retomando…

Dado que SO de SP2 tiene número fraccionario → tal sol. NO es solución del PPLEE.

Paso 4.

Se escoge el SP2 y se crean 2 nuevos subproblemas a partir de él.

Se elige una variable de valor fraccionario de la SO del SP2 y se ramifica sobre esa
variable. En este caso, la variable fraccionaria (única) es x2 = 1.8.

Se divide la RF del SP2 considerando:


x2 ≥ 2 y x2 ≤1
Se originan:

Subproblema 4 (SP4) = SP1 + restric. x1 ≥ 4 + restric. x2 ≥ 2 = SP2 + restric. x2 ≥ 2

Subproblema 5 (SP5) = SP1 + restric. x1 ≥ 4 + restric. x2 ≤1 = SP2 + restric. x2 ≤1

SP3, SP4 y SP5 son subproblemas no resueltos.

Paso 5.

Se elige un SP para resolver.

Aplicar regla LIFO “last-in-first-out” (último en entrar, primero en salir). Por lo


tanto, resolver SP4 o SP5.

Se elige arbitrariamente resolver SP4.


9 x1 + 5 x2 <= 45
G
6

4
x2

F
3

SP3
Subproblema 3
(3.75, 2.25)
2
SP2 C
x1=4 x1 + x2 <= 6
1
x1=3 SP2

0
0D 1 2 E3 4B 5A 6
x1
6

- RFSP5 = ABHI
x2

x2=2 - No hay RF para SP4.


2
C
(x2 = 2 no cruza ABC)
x1=3
H I x2=1
1
x1=4 SP5
B A
0
3D 4 5 6
x1

SP4 es infactible. SP4 no puede dar la SO


al PPLEE. En el árbol, se marca con una x.

Ninguna ramificación que parta del SP4 SP1


dará información útil. Se dice que el SP4 (o
z = 41.25
nodo 4) está terminado. t=1
x1 = 3.75
x2 = 2.25
x1≥4 x1≤3

SP2 SP3
z = 41
t=2
x1 = 4
x2 = 1.8
x2≤1
x2≥2

SP4 SP5
t=3 X
No factible

SP3 y SP5 son los subproblemas que quedan por resolver.


• Paso 6.

• Aplicando la regla LIFO, se resuelve SP5.

• La SO del SP5 es:


zSP5 = 40.55; (x1, x2 )SP5 = (4.44, 1) [Punto I]

No aporta información útil en forma inmediata.

• El valor de x1 es fraccionario. Por tanto, se divide RF de SP5 ramificando sobre x1.

Se originan:

Subproblema 6 (SP6) = SP5 + restric. x1 ≥ 5.

Subproblema 7 (SP7) = SP5 + restric. x1 ≤ 4.

• SP6 y SP7 juntos comprenden todos los puntos enteros incluidos en RF del SP5.

• Ningún punto con x1= 4.44 puede estar en la RF de SP6 ni SP7. Por lo tanto, la SO
del SP5 no se repite al resolver SP6 y SP7.

4
x2

x2=2
2
x1=3 C
H I x2=1
1
x1=4 SP5 2
B A
0
3D 4 5 6
C

x1

x2=1
x2

1
H I

ABHI = RF del SP5


x1=4 x1=5 A = RF del SP6
SP5
SP7 BH = RF del SP7

B A SP6
0
4 5 6
x1
SP1
z = 41.25
t=1
x1 = 3.75
x2 = 2.25
x1≥4 x1≤3

SP2 SP3
z = 41
t=2
x1 = 4
x2 = 1.8
x2≤1
x2≥2

t=3 SP4 SP5


X
No factible z=40.55
t=4
x1= 4.44
x2 =1
x1≥5 x1≤4

SP6 SP7

Ahora SP3, SP6 y SP7 quedan por resolver.

Paso 7.

• Aplicando la regla LIFO, resolver SP6 o SP7. Se elige arbitrariamente resolver SP7.

• La SO del SP7 es:


zSP7 = 37; (x1, x2 )SP7 = (4, 1) [Punto H]

• x1 y x2 son valores enteros → Solución factible para PPLEE original.

• SP7 no puede obtener una SF con enteros con z > 37. Por tanto, una ramificación en
el SP7 no genera información “útil”. SP7 ha terminado.

• Una solución de un SP con valores enteros, se denomina solución probable.

• Dado que se tiene una SF para PPLEE original, se asegura que el valor óptimo para
PPLEE es ≥ 37. Tal valor de z de la solución probable es una cota inferior (lower
bound LB) del valor óptimo de z para el PPLEE original. La cota superior se había
obtenido resolviendo el primer PLR (SP1).

• Hasta este punto, el árbol que se obtiene es el siguiente:


SP1
z = 41.25
t=1 x1 = 3.75
x2 = 2.25
x1≥4 x1≤3

SP2 SP3
z = 41
t=2 x1 = 4
x2 = 1.8
x2≤1
x2≥2

SP4 SP5
t=3 X z = 40.55
No factible
t=4 x1= 4.44
x2=1
x1≥5 x1≤4

SP6 SP7
z = 37
t=5 x1 = 4
x2 = 1
Sol. probable

SP3 y SP6 son los SPs que quedan por resolver.

Paso 8.

• Aplicando la regla LIFO, resolver SP6.

• La SO del SP6 es:


zSP6 = 40; (x1, x2 )SP6 = (5, 0) [Punto A (único punto de RF de SP6)]

• x1 y x2 son valores enteros → Solución probable.

• zSP6 = 40 > zSP7 = 37. SP7 no puede dar SO del PPLEE. Marcar con x en el árbol.

• Actualizar la cota inferior LB a 40.

• El árbol que se obtiene es el siguiente:


SP1
z = 41.25
t=1 x1 = 3.75
x2 = 2.25
x1≥4 x1≤3

SP2 SP3
z = 41
t=2 x1 = 4
x2 = 1.8
x2≤1
x2≥2

SP4 SP5
t=3 X z = 40.55
No factible
t=4 x1= 4.44
x2=1
x1≥5 x1≤4

SP6 SP7
z = 40 z = 37
t=6 x1 = 5 t=5 x1 = 4 x
x2 = 0 x2 = 1
LB = 37 Sol. probable
Sol. probable

SP3 es el único subproblema que queda por resolver.

Paso 9. G
9 x1 + 5 x2 <= 45
6

5
• Resolver SP3.
4
x2

F
3

SP3
Subproblema 3
(3.75, 2.25)
2
SP2 C
x1=4 x1 + x2 <= 6
1
x1=3 SP2

0
0D 1 2 E3 4B 5A 6
x1

• La SO del SP3 es:


– zSP3 = 39; (x1, x2 )SP3 = (3, 3) [Punto F]

• SP3 no genera z superior a la cota inferior actual LB = 40. Por tanto, SP3 no puede
generar SO del PPLEE original. Marcar con x en el árbol.

• El árbol que se obtiene es el siguiente:


SP1
z = 41.25
t=1 x1 = 3.75
x2 = 2.25
x1≥4 x1≤3

SP2 SP3
z = 41 z = 39
t=2 x1 = 4 t=7 x1 = 3 x
x2 = 1.8 x2 = 3
x2≤1 LB = 40
x2≥2

SP4 SP5
t=3 X z = 40.55
No factible
t=4 x1= 4.44
x2=1
x1≥5 x1≤4

SP6 SP7
z = 40 z = 37
t=6 x1 = 5 t=5 x1 = 4 x
x2 = 0 x2 = 1
LB = 37 Sol. probable
Sol. probable

NO hay subproblemas para resolver.

SP1
z = 41.25
t=1 x1 = 3.75
x2 = 2.25
x1≥4 x1≤3

SP2 SP3
z = 41 z = 39
t=2 x1 = 4 t=7 x1 = 3 x
x2 = 1.8 x2 = 3
x2≤1 LB = 40
x2≥2

SP4 SP5
t=3 X z = 40.55
No factible
t=4 x1= 4.44
x2=1
x1≥5 x1≤4

SP6 SP7
z = 40 z = 37
t=6 x1 = 5 t=5 x1 = 4 x
x2 = 0 x2 = 1
LB = 37 Sol. probable
Fabricar: 5 mesas. Sol. probable
Utilidad: $ 40.
Comentarios
• Para un PPLEE cuya RF contiene un gran número de puntos enteros, el
procedimiento es muy eficiente para eliminar puntos no óptimos.

• Eso se aprecia al resolver SP3. Ningún punto de RF de SP3 tiene un valor de z


superior a la cota inferior actual, eliminando (de una sola vez) la mayoría de los
puntos de la RF del PPLEE original mediante la resolución de solamente 1 PLR.

• Respecto al método B&B:


Si no es necesario ramificar un nodo (subproblema), entonces ese nodo está terminado.
Se pueden presentar 3 casos de terminación de nodos:
– 1.- SP es no factible.
– 2.- SP da SO con todas las variables con valores enteros.
– 3.- z óptimo del SP no excede la cota inferior LB actual (si es de maximización).

• Respecto a las “elecciones aparentemente arbitrarias” efectuadas con respecto a:


– ¿Cuál variable de ramificación elegir cuando más de una tiene valor fraccionario?.
– ¿Cuál SP resolver primero de los que resultan de una ramificación?.

Según esas decisiones se obtienen árboles de diferentes tamaños y tiempo de cómputo. En


base a su experiencia con el método, especialistas han elaborado procedimientos para la
toma de decisión.

* ¿Cuál SP resolver primero de los que resultan de una ramificación?.

Dos enfoques generales:

- Regla LIFO (más utilizado). Guía hacia abajo por un lado del árbol y determina con rapidez
una solución probable. Luego, se regresa por el camino hasta la parte superior del otro lado
del árbol. El enfoque LIFO se conoce también como “repliegue o retroceso”.

- Avance a saltos. Cuando se ramifica un nodo, se resuelven todos los SPs que genera la
ramificación. Luego, vuelve a ramificar sobre el nodo con el mejor valor de z. Se suele saltar
de un lado del árbol al otro. Generalmente, se crean más subproblemas y requiere más
espacio de almacenamiento. La idea es que el avance hacia los SPs con buenos valores z,
se llega más rápido al mejor valor de z.
* ¿Cuál variable de ramificación elegir cuando más de una tiene valor fraccionario?.

Elegir la variable que posea la mayor importancia económica.

Códigos de computadora ramifican sobre la variable fraccionaria de número


(índice) más bajo. Por tanto, numerar las variables según su importancia
económica. Asignar a la más importante el número “1”.

Algoritmo del plano de corte


(Cutting-plane algorithm)

• Al igual que método B&B, empieza con la SO del PLR (var. continuas).

• Se agregan restricciones especiales, llamadas “cortes”, que modifican


el espacio de solución (RF).

• Se resuelve. Se obtiene la SO con valores enteros en uno o más pasos.

• Los cortes agregados (nuevas restricciones) no eliminan ninguno de los


puntos enteros factibles originales.

• El número (finito) de cortes es independiente del tamaño del problema.


Un problema con pocas variables y restricciones puede requerir más
cortes que uno más grande.
Algoritmo del plano de corte para PPLEEs

• Descripción del método a través de un ejemplo.


Una empresa fabrica mesas y sillas según el siguiente detalle:

Producto Mano de obra Material - madera Utilidad


(horas/unidad) (pies/unidad) ($/unidad)
Mesa 1 9 8
Silla 1 5 5
Disponibilidad 6 45

– Maximizar beneficios.

* Formulación del PPLEE


Sea
x1 = número de mesas fabricadas
x2 = número de sillas fabricadas

⎧Max z = 8 ⋅ x1 + 5 ⋅ x2
⎪s.a.

⎪⎪1 ⋅ x1 + 1 ⋅ x2 ≤ 6 (restricción mano de obra) 9 x1 + 5 x2 <= 45

⎪9 ⋅ x1 + 5 ⋅ x2 ≤ 45 (restricción de madera)
6

⎪x1, x2 ≥ 0
⎪ 5
⎩⎪x1, x2 enteros
4

* Resolución gráfica del PLR


x2

⎧Max z = 8 ⋅ x1 + 5 ⋅ x2 2

⎪s.a.
x1 + x2 <= 6
⎪⎪ 1
⎨1⋅ x1 + 1 ⋅ x2 ≤ 6 (restricción mano de obra)
⎪9 ⋅ x1 + 5 ⋅ x2 ≤ 45 (restricción de madera) 0
⎪ 0 1 2 3 4 5 6
⎩⎪x1, x2 ≥ 0 x1

SO del PLR: z = 41.25; (x1, x2) = (3.75, 2.25).


Paso 1.
Resolución del PLR del PPLEE por el método SIMPLEX
Introducir las variables de holgura s1 y s2.

⎧Max z = 8 ⋅ x1 + 5 ⋅ x2
⎪s.a.
⎪⎪
⎨1 ⋅ x1 + 1⋅ x2 + s1 = 6 (restricción mano de obra)
⎪9 ⋅ x1 + 5 ⋅ x2 + s2 = 45 (restricción de madera)

⎪⎩x1, x2, s1, s2 ≥ 0

Básica x1 x2 s1 s2 Solución

Z 0 0 1.25 0.75 41.25


x2 0 1 2.25 -0.25 2.25
x1 1 0 -1.25 0.25 3.75

Tablau óptimo para el PLR

Paso 2.
Elegir cualquier restricción del tableau óptimo del PLR, en el cual
una variable básica es fraccionaria.
Se elige arbitrariamente la 2da. restricción:

x1 -1.25 s1 + 0.25 s2 = 3.75

Un número x se puede escribir como suma de una parte entera [x]


y una parte fraccionaria f:
x = [x] + f, con 0<= f < 1
Por ej.: 3.75 = 3 + 0.75; (-1.25) = (-2) + 0.75.

Así: x1 – 2 s1 +0.75 s1 + 0 s2 + 0.25 s2 = 3 + 0.75

Agrupar los términos con coef. enteros en el lado izquierdo, y los


términos con coef. fraccionarios en lado derecho:

x1 – 2 s1 + 0 s2 – 3 = 0.75 - 0.75 s1 - 0.25 s2


Dado que s1 y s2 son no-negativas y todas las fracciones f son
estrictamente positivas, el lado derecho debe satisfacer la
desigualdad:

0.75 - 0.75 s1 - 0.25 s2 ≤ 0.75

Dado que el lado izquierdo es un valor entero por construcción, el


lado derecho debe ser también entero. Por tanto:
0.75 - 0.75 s1 - 0.25 s2 ≤ 0

Esta desigualdad es el corte deseado. Representa una condición


necesaria (pero no suficiente) para obtener una solución entera.

Se puede demostrar que un corte generado por este método tiene


dos propiedades:
1.- Cualquier punto factible para el PLEE satisface el corte.
2.- La solución óptima actual del PLR no satisface el corte.

Respecto a (2.-): Dado que s1=0 y s2=0 en el tableau óptimo del PLR, la
solución allí obtenida viola la restricción del corte ya que 0.75 ≤ 0 para
s1=s2=0.

Obtención de la ecuación del plano de corte


9 x1 + 5 x2 <= 45
Despejar s1 y s2 de las restricciones: 6

s1= 6 - x1 - x2 Plano de corte


5
s2 = 45 - 9 x1 - 5 x2 3 x1 +2 x2 <=15

Reemplazando en
x2

3
0.75 - 0.75 s1 - 0.25 s2 ≤ 0 Sol. PLR original
(3.75, 2.25)
2

Se obtiene: x1 + x2 <= 6
1
3 x1 + 2 x2 <= 15
0
0 1 2 3 4 5 6
Sol. PLEE
x1
(5, 0)

Un corte excluye la solución actual óptima del PLR pero no a las soluciones
factibles para el PPLEE.
Si se agrega este corte (restricción) al tableau óptimo, el punto extremo óptimo que
resulta “mueve” la solución hacia valores enteros.

Paso 3.
Se resuelve el PLR original más el corte. Esto es:

⎧Max z = 8 ⋅ x1 + 5 ⋅ x2
⎪s.a.

⎪⎪1 ⋅ x1 + 1⋅ x2 + s1 = 6 (restricción mano de obra)

⎪9 ⋅ x1 + 5 ⋅ x2 + s2 = 45 (restricción de madera)
⎪3 ⋅ x1 + 2 ⋅ x2 + s3 = 15 (1er plano de corte)

⎪⎩x1, x2, s1, s2, s3 ≥ 0

Si la nueva solución óptima tiene variables con valores fraccionarios, se efectúa otro
corte y continúa el proceso hasta obtener una solución entera.

La solución del problema anterior es a x1 = 5 y x2 = 0 con z = 40. (Sol. entera).

Los problemas PPLRs ampliados con los cortes deben resolverse


por el método simplex dual. (Taha, pág. 174, 8va. Edición).

Notas:
1.- Para generar el corte, algunos autores recomiendan elegir la
restricción del tableau óptimo del PLR cuyo lado derecho tiene la
parte fraccionaria más próxima a ½.

2.- Se requiere para el algoritmo que los coeficientes de las


variables en restricciones y lado derecho de restricciones sean
enteros para asegurar que las variables de holgura y de excedente
sean también enteros.
Ej. escribir x1 + 0.5 x2 <= 3.6 como 10 x1 + 5 x2 <= 36.
Programación Lineal
Entera Mixta

Programación lineal entera mixta


(PLEM)
• Un problema PLEM requiere que algunas variables sean enteros y
permite que otras variables sean enteros o no enteros.

• Formulación de un PPLEM. Ejemplo:

Max z = 2 ⋅ x1 + x2
s.a
⎧5 ⋅ x1 + 2 ⋅ x2 ≤ 8
⎪ x1 + x2 ≤ 3


⎪x1, x2 ≥ 0
⎪⎩x1 enteros
Método de ramificación y acotamiento (B&B)
para PPLEMs

• Se sigue el mismo procedimiento para resolver


problemas de PL Entera Estricta (PPLEEs).

• Se ramifica solamente sobre variables que deben asumir


necesariamente valores enteros.

Aplicación del método B&B para


optimización combinatoria
Aplicación del método B&B para
optimización combinatoria

• Un problema de optimización combinatoria tiene un número finito de


soluciones factibles.

• Sin embargo, tal conjunto de soluciones factibles puede ser muy


“grande”.

• En tal caso, la enumeración en forma explícita de todas las


soluciones factibles puede demandar un elevado tiempo de
computadora.

• Los métodos de ramificación y acotamiento B&B suelen aplicarse


para la enumeración implícita de todas las soluciones posibles.

• Un enfoque de B&B es a menudo el método más eficaz de


resolución para problemas de optimización combinatoria.

Ejemplo. Programación de una máquina con B&B.

• Procesar 4 trabajos en 1 máquina.

• Cada trabajo requiere un tiempo de realización y tiene un plazo de entrega.

• El retraso de un trabajo es el número de días excedidos respecto al plazo de


entrega.

• ¿En qué orden procesar los trabajos para minimizar el retraso total de los 4
trabajos?.

Trabajo Días de Plazo


realización
1 6 Final del día 8
2 4 Final del día 4
3 5 Final del día 12
4 8 Final del día 16
• En este caso,

- el 1er trabajo a ser procesado puede ser cualquiera de


los 4 trabajos;
- el 2do es cualquiera de los 3 restantes, y así
sucesivamente.

• Se tienen 4·3·2·1 = 24 soluciones posibles.


Si fueran 5 trabajos: 5·4·3·2·1 = 1200
Si fueran 10 trabajos: 3.628.800

Trabajo Días de Plazo


Solución 1
realización
6 Final del día 8
2 4 Final del día 4
3 5 Final del día 12
4 8 Final del día 16

• Suponer que se procesan según el orden: T1,T2,T3 y T4 (sucesión 1).


Los retrasos son:

Trabajo Días de realización Retraso del trabajo


1 6 6 – 8 = -2 → 0
2 6 + 4 = 10 10 – 4 = 6
3 6 + 4 + 5 = 15 15 – 12 = 3
4 6 + 4 + 5 + 8 = 23 23 – 16 = 7
Sucesión 1 Retraso total:
0+6+3+7 = 16 días
Trabajo Días de realización Retraso del trabajo
1 6 6 – 8 = -2 → 0
2 6 + 4 = 10 10 – 4 = 6
4 6 + 4 + 8 = 18 18 – 16 = 2
3 6 + 4 + 8 + 5 = 23 23 – 12 = 11
Sucesión 2 Retraso total: 0+6+2+11 = 19

Trabajo Días de realización Retraso del trabajo


1 6 6 – 8 = -2 → 0
3 6 + 5 = 11 11 – 12 = -1 → 0
4 6 + 5 + 8 = 19 19 – 16 = 3
2 6 + 5 + 8 + 4 = 23 23 – 4 = 19
Sucesión 3 Retraso total: 0+0+3+19 = 22

Trabajo Días de realización Retraso del trabajo


2 4 4–4 =0
3 4+5=9 9 – 12 = -3 → 0
4 4 + 5 + 8 = 17 17 – 16 = 1
1 4 + 5 + 8 + 6 = 23 23 – 8 = 15
Sucesión 4 Retraso total: 0+0+1+15 = 16

• Definir

⎧1 si el trabajo i es el j - ésimo trabajo en ser procesado


xij = ⎨
⎩0 si no sucede así

• B&B empieza con la división de todas las soluciones según la tarea que
es procesada al último.
• Toda sucesión de trabajos debe ejecutar un trabajo al último.
• C/ sucesión debe tener: x14 =1 o x24 =1 o x34=1 o x44=1 (restricciones).
• Se generan 4 ramas (una por restricción).
• Cada rama determina un nodo (nodos 1 a 4).
• Se obtiene una cota inferior (LB) sobre el retraso total (D) asociado con
el nodo.
Por ej.:

• Si x44 = 1: T4 es el último.

• T4 se completa al final del día 6+4+5+8 = 23.

• Su plazo de entrega es al final del día 16.

• Por lo tanto, estará D = 23-16 = 7 días retrasado.

• Así, para cualquier programa con x44 = 1: D ≥ 7 (cota inferior)

x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4

D≥ D≥ D≥ D≥7
x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4

D≥ D≥ D ≥ 11 D≥7
(D=23-12)

x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4

D ≥ 15 D ≥ 19 D ≥ 11 D≥7
x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4

D ≥ 15 D ≥ 19 D ≥ 11 D≥7

Aún no hay razón para eliminar algún nodo como parte del orden óptimo de trabajo.

Sólo se conoce la cota inferior D si el trabajo Ti se completa al final del programa.

Ramificar según el enfoque de avance a saltos: sobre el nodo que tiene la menor
cota inferior en D. Ramificar sobre el Nodo 4.

x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4

D ≥ 15 D ≥ 19 D ≥ 11 D≥7

Aún no hay razón para eliminar algún nodo como parte del orden óptimo de trabajo.

Sólo se conoce la cota inferior D si el trabajo Ti se completa al final del programa.

Ramificar según el enfoque de avance a saltos: sobre el nodo que tiene la menor
cota inferior en D. Ramificar sobre el Nodo 4.

Cualquier sucesión asociada con Nodo 4 debe tener x13 =1 o x23 =1 o x33=1.

Se generan 3 ramas (una por restricción) y cada rama determina un nodo.


x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4

D ≥ 15 D ≥ 19 D ≥ 11 D≥7
x13 = 1 x33 = 1
x23 = 1

Nodo 5 Nodo 6 Nodo 7


D≥ D≥ D≥

x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4

D ≥ 15 D ≥ 19 D ≥ 11 D≥7
x13 = 1 x33 = 1
x23 = 1

Nodo 5 Nodo 6 Nodo 7


D≥ D≥ D ≥ 10

Se necesita una cota inferior D para cada nodo nuevo.

Para el nodo 7 → T3 es el 3er trabajo del programa. Se completa después de


6 + 4 + 5 = 15 (sucesión 1).
Su retraso es: 15 – 12 = 3.

Cualquier sucesión asociada con el nodo 7 tendrá LB = D ≥ 3 + 7 = 10.


x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4

D ≥ 15 D ≥ 19 D ≥ 11 D≥7
x13 = 1 x33 = 1
x23 = 1

Nodo 5 Nodo 6 Nodo 7


D≥ D ≥ 18 D ≥ 10

Para el nodo 6 → T2 es el 3er trabajo del programa. Se completa después de


6 + 4 + 5 = 15.
Su retraso es: 15 – 4 = 11.

Cualquier sucesión asociada con el nodo 6 tendrá LB = D ≥ 11 + 7 = 18.

x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4

D ≥ 15 D ≥ 19 D ≥ 11 D≥7
x13 = 1 x33 = 1
x23 = 1

Nodo 5 Nodo 6 Nodo 7


D ≥ 14 D ≥ 18 D ≥ 10
x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4

D ≥ 15 D ≥ 19 D ≥ 11 D≥7
x13 = 1 x33 = 1
x23 = 1

Nodo 5 Nodo 6 Nodo 7


D ≥ 14 D ≥ 18 D ≥ 10

Aún no hay razón para eliminar algún Nodo del 1 al 7.


Según el enfoque de avance a saltos: ramificar sobre el nodo que tiene menor D.
Ramificar sobre el Nodo 7.

x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4

D ≥ 15 D ≥ 19 D ≥ 11 D≥7
x13 = 1 x33 = 1
x23 = 1

Nodo 5 Nodo 6 Nodo 7


D ≥ 14 D ≥ 18 D ≥ 10

Aún no hay razón para eliminar algún nodo del 1 al 7.


Según el enfoque de avance a saltos: ramificar sobre el nodo que tiene menor D.
Ramificar sobre el Nodo 7.

Cualquier sucesión asociada con Nodo 7 debe tener x12 =1 o x22 =1.
Se generan 2 ramas (una por restricción) y cada rama determina un nodo.
x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4


D ≥ 15 D ≥ 19 D ≥ 11 D≥7
x13 = 1 x33 = 1
x23 = 1
Para el Nodo 9 → T2 es el 2do trabajo.
Se completa después de Nodo 5 Nodo 6 Nodo 7
6 + 4 = 10.
Su retraso es: 10 – 4 = 6. D ≥ 14 D ≥ 18 D ≥ 10

Cualquier sucesión asociada con el nodo 9


tendrá LB = D ≥ 10 + 6 + 0 = 16. x12 = 1 x22 = 1

Nodo 9: Solución probable. Nodo 8 Nodo 9

Eliminar Nodos con D > 16. D≥ D ≥ 16

x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4


D ≥ 15 D ≥ 19 D ≥ 11 D≥7
x13 = 1 x33 = 1
x23 = 1
Para el Nodo 8 → T1 es el 2do trabajo.
Se completa después de Nodo 5 Nodo 6 Nodo 7
6 + 4 = 10.
Su retraso es: 10 – 8 = 2. D ≥ 14 D ≥ 18 D ≥ 10

Cualquier sucesión asociada con el nodo 8


tendrá LB = D ≥ 10 + 2 + 0 = 12. x12 = 1 x22 = 1

Nodo 8: Solución probable. Nodo 8 Nodo 9

Eliminar Nodos con D >12. D ≥ 12 D ≥ 16


x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4


D ≥ 15 D ≥ 19 D ≥ 11 D≥7
X X x13 = 1 x33 = 1
x23 = 1

Nodo 5 Nodo 6 Nodo 7


D ≥ 14 D ≥ 18 D ≥ 10
X X

x12 = 1 x22 = 1

Nodo 8 Nodo 9
D ≥ 12 D ≥ 16
X

x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4


D ≥ 15 D ≥ 19 D ≥ 11 D≥7
X X x13 = 1 x33 = 1
x23 = 1

Ramificar sobre el Nodo 3. Nodo 5 Nodo 6 Nodo 7

Cualquier sucesión asociada con Nodo 3 D ≥ 14 D ≥ 18 D ≥ 10


debe tener x13 =1 o x23 =1 o x43 =1. X X

Se generan 3 ramas (una por restricción) y x12 = 1 x22 = 1


cada rama determina un nodo.
Nodo 8 Nodo 9
D ≥ 12 D ≥ 16
X
x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4


D ≥ 15 D ≥ 19 D ≥ 11 D≥7
X X x13 = 1 x33 = 1
x13 = 1 x43 = 1 x23 = 1
x23 = 1
Nodo 10 Nodo 11 Nodo 12 Nodo 5 Nodo 6 Nodo 7
D ≥ 21 D ≥ 25 D ≥ 13 D ≥ 14 D ≥ 18 D ≥ 10
X X X X X

x12 = 1 x22 = 1

Nodo 8 Nodo 9
D ≥ 12 D ≥ 16
X

x14 = 1
x44 = 1
x24 = 1 x34 = 1

Nodo 1 Nodo 2 Nodo 3 Nodo 4


D ≥ 15 D ≥ 19 D ≥ 11 D≥7
X X x13 = 1 x33 = 1
x13 = 1 x43 = 1 x23 = 1
x23 = 1
Nodo 10 Nodo 11 Nodo 12 Nodo 5 Nodo 6 Nodo 7
D ≥ 21 D ≥ 25 D ≥ 13 D ≥ 14 D ≥ 18 D ≥ 10
X X X X X

x12 = 1 x22 = 1

Solución:
Nodo 8 Nodo 9
Secuencia T2,T1,T3,T4.
Retraso mínimo: 12 días D ≥ 12 D ≥ 16
X

Potrebbero piacerti anche