Você está na página 1de 40

Universidad Carlos III de Madrid Ingeniera Informtica

Investigacin Operativa - Curso 2003/2004


Programacin entera
En muchos problemas reales las variables slo
pueden tomar valores enteros
Ejemplos:
decisiones sobre inversiones, compras, arranques, etc.
Cantidades de productos no divisibles, personas, etc.
Problemas con el mtodo Simplex:
soluciones no estn en vrtices
cmo saber si tenemos una solucin?
1
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Problema entero puro:
min c
T
x
s.a Ax = b
x > 0
x
i
entera i
Problema entero mixto:
min c
T
x
s.a Ax = b
x > 0
x
i
entera i e I
2
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Por simplicidad: problema entero puro
Mtodos tambin aplicables al problema mixto
Dificultad principal:
no podemos emplear aproximaciones basadas en la
continuidad de las funciones del problema
no podemos extraer conclusiones para puntos
prximos
3
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
La solucin no tiene que estar en un vrtice,
ni contigua a un vrtice
Solucin relajada
Solucin entera
4
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Mtodos de solucin:
Comparar todas las alternativas (no es eficiente)
Procedimientos eficientes para seleccionar o
descartar alternativas
Basados en la aproximacin del problema mediante
problemas lineales (que sabemos resolver)
5
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Procedimiento ms simple:
ignorar la condicin de que las variables sean enteras, y
redondear la solucin
Inconvenientes:
tiene significado la solucin no entera?
cmo se redondea la solucin?
cmo se obtiene una solucin redondeada factible?
cundo es ptima una solucin redondeada?
6
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Mtodo ms sofisticado:
introducir restricciones adicionales que no
eliminen soluciones enteras (cubierta convexa)
Si las soluciones enteras son vrtices,
podemos aplicar el mtodo Simplex
Inconvenientes:
Cmo se calculan las restricciones necesarias?
Cuntas hacen falta?
7
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Cubierta convexa
8
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Mtodos ms eficientes:
Combinacin de ideas
se aaden restricciones que aproximan la cubierta
convexa (planos de corte), o
se aaden restricciones que eliminan puntos que
no pueden ser solucin (branch and bound)
se resuelven problemas lineales relajados
9
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Mtodo de branch and bound
Se trata de:
dividir la regin factible, y
descartar aquellas partes en las que no puede
encontrarse la solucin
Partes que no pueden descartarse:
se calcula la solucin por el mtodo Simplex, o
se subdividen en nuevas partes aadiendo
restricciones
10
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Procedimiento:
Dado el problema min c
T
x
s.a Ax = b
x > 0
x
i
entera i
se resuelve su versin relajada (P
0
)
Si la solucin de (P
0
) es entera, se termina
Si no lo es, se subdivide el problema en
varios
11
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Divisin del problema
Supongamos que la solucin del problema
relajado es x
k
*
, y que (x
k
*
)
i
no es entera
En la solucin (entera) se cumplir una de las
dos condiciones siguientes:
x
i
s (x
k
*
)
i
, x
i
> (x
k
*
)
i
+ 1
donde x

denota la parte entera de x
12
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Divisin del problema
Se generan los dos problemas siguientes:
P
1
= P
0
{x
i
s (x
k
*
)
i
}, P
2
= P
0
{x
i
> (x
k
*
)
i
+1}
En general, se tiene una lista de problemas
pendientes de resolver
Se toman los problemas de la lista, y se resuelven
hasta que la lista queda vaca
13
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Ejemplo grfico
Solucin P0
Solucin P1 Solucin P2
Solucin P3
P4 no factible
Solucin entera
14
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
P0: NE
P3: E
P4: NF
P2: NE
P1: NE
P5: NE
P9: NF
P8: E
P7: NE
P6: NF
P10: NE
P12: B
P11: E
15
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Qu sucede al resolver subproblemas?
Subproblema no factible:
nada
Subproblema con solucin no entera:
se generan nuevos subproblemas
Subproblema con solucin entera:
se compara con la mejor solucin entera hasta el
momento
16
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Eliminacin de nodos
Mtodo no eficiente si es necesario examinar
todos los subproblemas
Nmero de subproblemas: ~ 2
n

Eliminar subproblemas:
si la funcin objetivo ptima del problema relajado
cumple ciertas condiciones
17
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Eliminacin de subproblemas
Basada en mejor solucin entera
Mejor valor de la funcin objetivo para una
solucin entera (hasta el momento): z
Si para un subproblema se cumple
c
T
x
k
*
> z
descartar el subproblema (y todos los
subproblemas que se generen de l)
Todas sus soluciones enteras son peores que z
18
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Seleccin de subproblema
Anlisis en profundidad del rbol de
subproblemas
Se toma el ltimo subproblema generado
Se obtienen rpidamente soluciones enteras
Alternativa: bsqueda en extensin
Se examinan primero todos los problemas de un
nivel dado
19
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Arbol de subproblemas
P0
P8
P5
P1
P6 P4 P3
P7
P2
P9
P11
P10
P12
- Bsqueda en profundidad:
P0, P1, P3, P4, P2, P5, P7
P9, P10, P11, P12, P8, P6

- Bsqueda en extensin:
P0, P1, P2, P3, P4, P5, P6,
P7, P8, P9, P10, P11, P12
20
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Generacin de nuevos subproblemas:
Qu variable no entera se escoge para
generar los subproblemas?
Aquella que permita obtener la solucin ms
rpidamente
Aquella que d un menor valor de la funcin
objetivo (ms cerca de la solucin)
Como el valor de la funcin objetivo relajada aumenta,
variable con menor aumento
21
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Estimacin de cambios en la f. objetivo:
x
i
x
i

La variable i es bsica y pasa a ser no bsica
Una variable no bsica debe pasar a ser bsica
x
i
+ (B
-1
N )
i
x
N
= (B
-1
b )
i

x
i
+ (B
-1
N )
i
x
N
= (B
-1
b )
i

c
T
(x - x ) > (x
i
- x
i
) min
k
(-c
k
/n
ik
)
Se escoge la variable i con el menor cambio
22
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Resolucin de subproblemas
Dado un subproblema resuelto, aadimos una
restriccin al subproblema
La ltima solucin no cumple la restriccin
Aplicamos el mtodo dual del Simplex:
Ponemos la restriccin en forma estndar
Aadimos la restriccin a la tabla
Aplicamos el mtodo dual
23
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Ejemplo:
max 8x
1
+ 9x
2

s.a 76 x
1
+ 68 x
2
s 767
-38 x
1
+ 32 x
2
s 29
2 x
2
> 3
x > 0 entera
Solucin del problema relajado:
x
1
= 9/2 , x
2
= 25/4
o
3
= -299/2508 , o
4
= -70/2508
24
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Nuevas restricciones:
x
1
s 4 , x
1
> 5
Primer subproblema:
x
1
+ s
4
= 4 , s
4
> 0
Nueva solucin del primer subproblema:
x
1
= 4 , x
2
= 181/32
o
4
= -9/32 , o
4
= -299/16
25
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Mtodos de planos de corte
Alternativa a mtodos branch and bound
Introducir nuevas restricciones
sin dividir el problema
sin eliminar soluciones enteras
Objetivo: solucin del problema relajado = solucin
del problema entero
26
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Planos de corte
Condiciones sobre las nuevas restricciones
(cortes):
No eliminar soluciones enteras
Eliminar la ltima solucin
Forma de las restricciones:
Restricciones lineales generales
27
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Planos de corte de Gomory
Nuevas restricciones se generan a partir de
solucin del problema relajado
Suponemos que todas las variables han de ser
enteras y no negativas
Basados en estudiar la parte entera y la
fraccionaria de las restricciones
28
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Planos de corte de Gomory
Supongamos una solucin relajada no entera
Variable bsica i-sima no entera
Restriccin correspondiente
x
i
+
k
n
ik
x
k
= b
i

Lado derecho no entero (variable no entera)
29
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Planos de corte de Gomory
Justificacin de la expresin del corte
Por ser las x positivas,
x
i
+
k
n
ik
x
k
= b
i
x
i
+
k
n
ik
x
k
= b
i

Por ser las x enteras,
x
i
+
k
n
ik
x
k
= b
i
x
i
+
k
n
ik
x
k
= b
i

30
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Planos de corte de Gomory
Combinando la restriccin inicial con la nueva,

k
(f
n
)
ik
> (f
b
)
i

Nueva restriccin a aadir al problema
La cumplen todas las soluciones enteras
No la cumple la ltima solucin
Resolucin eficiente: mtodo dual del Simplex
31
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Ejemplo de planos de corte
Problema entero anterior. Solucin:
x
1
= 9/2 , x
2
= 25/4
16/2508 -34/2508
N = 19/2508 38/2508
38/2508 76/2508
Nueva restriccin
16/2508 s
1
+ 2474/2508 s
2
> 1/2
16 s
1
+ 2474 s
2
- 2508 s
4
> 1254 , s
4
> 0
32
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Ejemplo
33
Corte 1 , x1
Corte 1 - x2 Corte 2 , x2
min -x
1
- x
2

s.a 4x
1
- 2x
2
- s
1
= 3
4x
1
+ 2x
2
+ s
2
= 9
x , s > 0
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Limitaciones del procedimiento
La ecuacin que define el corte es vlida si
todas las variables son enteras
Los datos del problema (A, b, c ) han de ser
enteros
Las variables de holgura han de introducirse
sobre restricciones con coeficientes enteros
34
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Convergencia
Al resolver un problema relajado
Problema no factible
el problema entero no es factible
Problema no acotado
el problema entero no est acotado (slo para el primer
problema)
Problema ptimo con solucin entera
es la solucin del problema entero
Problema ptimo con solucin no entera
introducir cortes
35
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Convergencia finita
Si se siguen las reglas:
Se introducen cortes tambin sobre la funcin
objetivo
Se selecciona la primera de las variables bsicas
que toman valores no enteros
La funcin objetivo se toma como la primera
variable
36
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Cortes sobre la funcin objetivo
Se introduce una nueva restriccin
x
0
-
i
c
i
x
i
= 0
Variable x
0
siempre bsica. Corte:
1 -c
T
0 1 -c
b
T

A = , b = , B =
0 A b 0 B
1 0 -c
n
T
+ c
b
T
B
-1
N c
b
T
B
-1
b
B

-1
A = , B
-1
b =
0 I B
-1
N B
-1
b
37
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Cortes sobre la funcin objetivo
De los resultados anteriores, el corte

k
(f
-o
)
k
x
k
> f
z

se obtiene de las partes fraccionales de
-c
n
T
+ c
b
T
B
-1
N = -o
n
, c
b
T
B
-1
b = z
Valores de los multiplicadores, cambiados de signo
38
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Problemas enteros mixtos
Si algunas variables no son enteras,

keI
f
ik
x
k
+ f
i 0
/(1-f
i 0
)
keJ
(1-f
ik
)x
k
+
keK
n
ik
x
k

- f
i 0
/(1-f
i 0
)
keL
n
ik
x
k
> f
i 0

I = {i eE : f
ik
< f
i 0
}, J = {i eE : f
ik
> f
i 0
},
K = {i eE : n
k
> 0 }, L = {i eE : n
k
s 0 }
No es posible introducir cortes sobre la
funcin objetivo (convergencia)
39
Universidad Carlos III de Madrid Ingeniera Informtica
Investigacin Operativa - Curso 2003/2004
Programacin entera
Mtodo Simplex dual
M M t to od do o s si im mp pl le ex x M M t to od do o s si im mp pl le ex x d du ua al l
V V r rt ti ic ce e i in ni ic ci ia al l F Fa ac ct ti ib bl le e ( (x x > > 0 0) )
N No o p pt ti im mo o ( (o o
i i
< < 0 0) )
O Op pt ti im mo o ( (o o > > 0 0) )
N No o f fa ac ct ti ib bl le e ( (x x
i i
< < 0 0) )
D Di ir re ec cc ci i n n d de e
m mo ov vi im mi ie en nt to o
p p
n n
= = e e
i i
B B p p
b b
= = - - N N e e
i i
A Ao o
b b
= = e e
i i
, , B B
T T
A A = = - -A Ao o
b b
A Ao o
n n
= = - -N N
T T
A A
L Lo on ng gi it tu ud d d de e
p pa as so o
x x
b b
+ + o o p p
b b
> > 0 0 o o
n n
+ + o o A Ao o
n n
> > 0 0
C Co om mp pr ro ob ba ac ci i n n
m mu ul lt ti ip pl li ic ca ad do or re es s
o o
n n
= = c c
n n
N N
T T
B B
- -T T
c c
b b
> > 0 0 x x
b b
= = B B
1 1
b b > > 0 0
40

Você também pode gostar