Está en la página 1de 19

Módulo 2:

Programación entera y
optimización combinatoria

Mayo 2007
Métodos de corte
Sea el problema de optimización:
(ILP) Min c’x /
Ax=b, x 0, x entero
(A, c y b enteros)

¿Sirve tomar la solución real de (ILP) y


luego redondear la solución al entero más
próximo?
Sea (LP) una relajación de (ILP):
(LP) Min c’x /
Ax=b, x 0
(A, c y b enteros)
Se cumple que: óptimo (ILP)  óptimo (LP)

Ideas básicas en los métodos de corte:


• ir agregando a LP restricciones, de a una por vez,
de forma de excluir el óptimo no entero del
problema relajado
• estas nuevas restricciones no deben excluir ningún
punto entero de la región factible
• Def: plano de corte es una restricción lineal tal
que no excluye ningún punto entero del
conjunto de soluciones factibles

• Algoritmos de corte:
– Gomory (método fraccional dual)
– Método primal de corte
Cortes de Gomory
• Def: parte entera de un número real y, y, es el
entero más grande q / q  y
Ejemplos:
2.7 = 2
-1.3= -2
0 = 0
• Def: parte fraccionaria f= y- y del número y.
Nota: 0  f  1
(1)  fijxj  fi0 - Corte de Gomory

• Teo: Si (1) es agregado al final del


‘tableau’ óptimo del (LP), ninguna
solución entera es eliminada. El nuevo
tableau es básico, primal no factible (si
fi00) y dual factible
Algoritmo fraccional dual:
• Resolver LP, relejación entera de ILP. Sea x*
solución óptima de LP
• sbf=‘si’
• Mientras x* no entera y sbf =‘si’ hacer:
– elegir una fila ‘i’
– agregar un corte de Gomory generado por ‘i’
– aplicar el simplex dual
– si el dual es no acotado, entonces sbf=no
– resolver el nuevo problema. Sea x*=nuevo óptimo
– fin mientras
EJEMPLOS
Finitud del algorimo
• Def: orden lexicográfico: un vector vRn, v 0, es
lexicográfico >0 (o lex-positivo) si su primera
componente no nula es positiva

• Def: lex >: un vector vRn se dice lex > que otro
vector u Rn , v lex> u, si el vector v-u es lex-positivo
0 1 0
0 es lex-positivo y 0 lex > 5
3 -4 -3
-1 5 -1
• La prueba se basa en considerar el algoritmo
simplex dual con una regla de pivoteo que en
caso de empate seleccione la columna de
acuerdo al orden lexicográfico positivo.
• Dado un problema (ILP) se resuelve la
relajación LP por simplex, se puede asegurar
que el cuadro óptimo final tiene todas sus
columnas lex-positivas o se lo puede
transformar en uno de esta forma (se considera
como primer fila la de los costos reducidos).
• Consideremos un problema LP a los que se le
han agregado sucesivamente n cortes al final de
cada cuadro óptimo del simplex.
•Sea y0l la primera columna del cuadro que
corresponde a los términos independientes, cuyo
primer elemento es - el valor objetivo
•La sucesión de valores y0l con l=1..n, es lex-
decreciente y acotada,
•Si y00l =  y00l  +f00l con f00l >0, entonces el próximo
corte a introducir es el correspondiente a la fila 0: -
f00l =-  f0jlxj + s
•Supongamos se elige la columna p para pivotear:
y00l+1 = y00l - y0pl *(f00l /f0pl)
si el l-simo cuadro era óptimo, y0pl  0 p y además
y0pl  f0pl =>
y00l+1  y00l - f00l =  y00l 
• Conclusión: la convergencia se alcanza en
un número finito de pasos.
Evaluación
• Por ser un algoritmo dual, no produce
una solución primal factible hasta
alcanzar el óptimo
• Puede ser problemático decidir cuando
un número es entero o no, ya que los
errores se acumulan
Gomory para MIP
• El algoritmo de Gomory se extiende
directamente ara MIP
• En MIP no es razonable utilizar la fila de
la función objetivo para producir cortes
ya que este puede ser no entero
• Sean P={xRn, Ax  b} y S=P Zn
• Sean
– IP=Max {cx / xS} y
– CIP=Max {cx/ x conv(S)}
• Teo: Dado P={xRn, Ax  b}, y S=P Zn y c Rn se
cumple:
– El valor objetivo de IP esta acotado inferiormente sii
el valor objetivo de CIP esta acotado inferiormente
– Si CIP tiene un valor óptimo acotado ==> tiene
solución´óptima en un extremo de conv(S) y es
solución óptima de IP
– Si x0 es una solución óptima de IP ==>x0 es solución
óptima de CIP
Método primal de corte
• Sean S={xZn, Ax  b}, P={xRn, Ax  b} y
conv(S) la envoltura convexa de P. Nota:
conv(S)P
• Sea x1 una solución entera no óptima de conv(S),
o sea un punto extremo de conv(S)
• Idea básica: usar cortes para habilitar el pivoteo
en un punto extremo adyacente de conv(S) de
forma que si el objetivo era maximizar, el
objetivo crezca
• Problema: cuantos cortes son necesarios para
encontrar un punto extremo de conv(S)?
• Partimos de un cuadro de simplex con una sbf (solución
básica factible) entera
• Sea B=conjunto de índices de variables básicas y NB el
de las no básicas
• xi es entera  i B
• xi + yijxj=yi0,
j NB

• supongamos existe una columna k / y0k <0 (cuadro no


óptimo) y sea r la fila pivote/:
yr0/ yrk =min(yi0/ yik)
i

• si yrk =1 , la próxima solución básica también es entera


• Si yrk  1, agregamos el corte:

xk +  yrj /yrk xj   yr0 /yrk


j NB\k
Se encuentra una solución óptima cuando:
solución entera, primal y dual factible

Algoritmo primal de cortes:


• Comenzar con una solución entera, primal
factible
• La solución es dual factible?- Si : fin
• Corte y pivoteo: agregar un corte de la forma
anterior, pivotear manteniendo las
condiciones de solución entera primal factible
y volver al punto anterior

También podría gustarte