Programación entera y optimización combinatoria

19
Programación entera y optimización combinatoria Mayo 2007 Módulo 2 :

description

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?. - PowerPoint PPT Presentation

Transcript of Programación entera y optimización combinatoria

Page 1: Programación entera y optimización combinatoria

Programación entera y optimización combinatoria

Mayo 2007

Módulo 2:

Page 2: Programación entera y optimización combinatoria

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?

Page 3: Programación entera y optimización combinatoria

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

Page 4: Programación entera y optimización combinatoria

• 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

Page 5: Programación entera y optimización combinatoria

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

Page 6: Programación entera y optimización combinatoria

(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 fi00) y dual factible

Page 7: Programación entera y optimización combinatoria

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

Page 8: Programación entera y optimización combinatoria

EJEMPLOSEJEMPLOS

Page 9: Programación entera y optimización combinatoria

Finitud del algorimo

• Def: orden lexicográfico: un vector vRn, v 0, es lexicográfico >0 (o lex-positivo) si su primera componente no nula es positiva

• Def: lex >: un vector vRn 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

Page 10: Programación entera y optimización combinatoria

• 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.

Page 11: Programación entera y optimización combinatoria

•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 = y00

l +f00l con f00

l >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 = y00

l - y0pl *(f00

l /f0pl)

si el l-simo cuadro era óptimo, y0pl 0 p y además

y0pl f0p

l =>

y00l+1 y00

l - f00l = y00

l

Page 12: Programación entera y optimización combinatoria

• Conclusión: la convergencia se alcanza en un número finito de pasos.

Page 13: Programación entera y optimización combinatoria

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

Page 14: Programación entera y optimización combinatoria

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

Page 15: Programación entera y optimización combinatoria

• Sean P={xRn, Ax b} y S=P Zn • Sean

– IP=Max {cx / xS} y – CIP=Max {cx/ x conv(S)}

• Teo: Dado P={xRn, 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

Page 16: Programación entera y optimización combinatoria

Método primal de corte• Sean S={xZn, Ax b}, P={xRn, 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)?

Page 17: Programación entera y optimización combinatoria

• 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

Page 18: Programación entera y optimización combinatoria

• Si yrk 1, agregamos el corte:

xk + yrj /yrk xj yr0 /yrk

j NB\k

Page 19: Programación entera y optimización combinatoria

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