Programación Lineal Entera Los modelos de programación entera

Anuncio
Programación Lineal Entera
Los modelos de programación entera son una extensión de los modelos
lineales en los que algunas variables toman valores enteros.
Con frecuencia las variables enteras sólo toman valores en 0-1, ya que
este tipo de variables permiten representar condiciones lógicas.
Este tipo de modelos permite representar sistemas mucho más complejos.
A cambio, la resolución de los mismos se complica excesivamente. No se
puede utilizar la suavidad de las funciones para inferir el comportamiento
de las mismas cerca del óptimo.
Problemas con unas solas decenas de variables pueden ser casi imposibles
de resolver.
1
Programación Entera: contenidos
1. Introducción
2. Algunos modelos básicos y modelización con variables binarias
a) Problema de la mochila
b) Problema de asignación y de asignación generalizada
c) Problema del cubrimiento
d) Relaciones lógicas
3. Resolución del problema.
a) Relajaciones lineales y relación fundamental.
b) Calidad de una solución entera: brecha de suboptimalidad.
c) Ramificación y acotación (Branch and Bound).
2
Programación Entera: ejemplos
mı́n ctx
Ax ≤ b
x≥0
xi entera para i ∈ I ⊆ {1, . . . , n}
X Si I = {1, . . . , n} ⇒ Programación Lineal Entera Pura.
X Si I 6= {1, . . . , n} ⇒ Programación Lineal Entera Mixta.
X Si xi ∈ {0, 1}, ∀ i ∈ I ⇒ Programación Binaria o 0–1.
3
Problema de la Mochila: ejemplo
Un ingeniero informático autónomo quiere optar a realizar un proyecto
informático de entre 5 que salen a concurso.
Sólo tiene presupuesto para pagar las tasas de solicitud en 3 proyectos.
¿A qué 3 proyectos optar?
Beneficio esperado (en miles de euros) que puede obtener a los 3 años
con cada uno de los proyectos.
Estimación de la probabilidad de que no le concedan cada uno de los
proyectos
Proyecto
Beneficio (miles euros)
Probabilidad de rechazo
1
90
0.4
2
150
0.7
3
80
0.4
4
100
0.5
5
120
0.6
Problema: qué proyectos deberı́a solicitar para obtener un beneficio mayor
y asegurarse de que la suma de las probabilidades de rechazo no sea
superior a 1.5
4
Problema de la Mochila: ejemplo (cont.)
Variables de decisión:
xi =

1,
0,
si se solicita el proyecto i,
si no se soliciota el proyecto i.
i = 1, 2, 3, 4, 5
Restricciones:
• Lı́mite presupuestario:
x1 + x2 + x3 + x4 + x5 ≤ 3
• Suma de las probabilidades de rechazo no exceda 1.5
0,4x1 + 0,7x2 + 0,4x3 + 0,5x4 + 0,6x5 ≤ 1,5
• Condición de variables binarias:
xi ∈ {0, 1}, i = 1, 2, 3, 4, 5
5
Problema de la Mochila: ejemplo (cont.)
Objetivo: maximizar el beneficio esperado
90x1 + 150x2 + 80x3 + 100x4 + 120x5
¿Cómo cambiarı́as el modelo anterior si se hubiera pedido que la
probabilidad de no obtener ningún proyecto fuese, a lo sumo, del 10 %?
Si seleccionamos, por ejemplo, los proyectos 1, 2 y 3:
P {no obtener ningún proyecto} = P {rechazan P1 y P2 y P3 } = (0,4)(0,7)(0,4) =⇒
P {no obtener ningún proyecto} ≤ 0,1 ⇐⇒ (0,4)(0,7)(0,4) ≤ 0,1 ⇐⇒
log((0,4)(0,7)(0,4)) ≤ log(0,1) ⇐⇒ log(0,4) + log(0,7) + log(0,4) ≤ log(0,1)
− log(0,4)x1 − log(0,7)x2 − log(0,4)x3 − log(0,5)x4 − log(0,6)x5 ≥ 1
6
Problema de la Mochila
Se dispone de n objetos para llenar una mochila.
El objeto j tiene un peso pj y tiene una utilidad (valor) cj .
La mochila admite un peso máximo de b.
El problema consiste en decidir qué objetos se introducen en la mochila
de forma que se maximice la utilidad de los objetos seleccionados.
Variables:
xj =

1
0

si el objeto j es seleccionado,
en otro caso.
∀j = 1, . . . , n
7
Problema de la Mochila
Restricciones:
• Lı́mite de peso de la mochila:
n
X
pj xj ≤ b
j=1
• Condición de variables binarias: xj ∈ {0, 1}
Función objetivo: máx
n
X
∀j = 1, . . . , n
cj xj
j=1
Se pueden considerar variantes en las que se incluya también el volumen,
etc.
O la posibilidad de que haya más de una unidad de cada objeto. Entonces, las variables serı́an xj igual al número de unidades del objeto j
seleccionadas.
8
Problema de asignación
El modelo de asignación permite asignar eficientemente un conjunto de
personas a un conjunto de trabajos, máquinas a tareas, coches de policı́a
a sectores de una ciudad, vendedores a zonas, etc.
El objetivo es minimizar los costes, tiempos de desplazamiento, o maximizar la efectividad.
Es un modelo muy frecuente como submodelo en otros más complejos.
9
Problema de asignación. Ejemplo
Juan es el jefe de un bufete de jóvenes abogados y está interesado en la
utilización más efectiva de sus recursos de personal buscando la forma de
hacer las mejores asignaciones de abogado-cliente.
El 1 de Marzo le llegan 4 nuevos clientes.
Revisando a su personal encuentra que 4 abogados: Ana, Bruno, Carmen
y Domingo.
Todos pueden ser asignados a los casos.
Cada uno de ellos sólo se puede hacer cargo de un caso.
10
Problema de asignación. Ejemplo (cont.)
Para decidir la mejor asignación Juan tiene en cuenta una tasa de efectividad (de 1 a 9) construida sobre actuaciones anteriores de dichos abogados, ya que no todos son igual de buenos (especialistas) en todo tipo
de procesos:
Abogado
ana (1)
bruno (2)
carmen (3)
domingo (4)
tasa de efectividad según caso de cliente
divorcio (1)
fusión
desfalco (3) herencias (4)
empresarial (2)
6
2
8
5
9
3
5
8
4
8
3
4
6
7
6
4
11
Problema de asignación. Ejemplo (cont.)
Para determinar la asignación más efectiva Juan debe resolver el siguiente
problema de asignación
máx 6x11 + 2x12 + 8x13 + 5x14 + 9x21 + 3x22 + 5x33 + 8x44+
4x31 + 8x32 + 3x33 + 4x34 + 6x41 + 7x42 + 6x43 + 4x44
s.a.
4
X
i=1
4
X
xij = 1,
∀ j = 1, . . . , 4,
xij = 1,
∀ i = 1, . . . , 4,
j=1
xij ∈ {0, 1},
∀ i = 1, . . . , 4, ∀j = 1, . . . , 4.
donde las variables xij , i = 1, . . . , 4, j = 1, . . . , 4, se definen como
xij =

1,
0,
si el abogado i lleva el caso del cliente j,
en otro caso.
12
Problema de Asignación Generalizada. Ejemplo
Es una generalización del modelo anterior. Cada abogado puede hacerse
cargo de más de un cliente simultáneamente, siempre y cuando no supere
su capacidad
Un sistema de procesamiento compartido tiene 3 ordenadores diferentes
(Oj , j = 1, 2, 3) y tiene que procesar 6 tareas (Ti i = 1, . . . , 6)
Todas las tareas se pueden realizar en cualquier ordenador, pero no pueden
fraccionarse (se deben completar en el ordenador en que se inician)
Los tiempos de procesamiento de cada tarea i en cada ordenador j, tij ,
varı́a según el ordenador
El tiempo disponible de cada ordenador para ejecutar las tareas está limitado
13
Problema de Asignación Generalizada. Ejemplo (cont.)
Tarea
T1
T2
T3
T4
T5
T6
T. disp. (Cj )
Ordenador
O1 O2 O3
18 16 12
14 21 19
23 27 33
16 24 23
17 24 24
25 28 30
47 41 46
¿A qué ordenador debemos mandar cada tarea si queremos minimizar el
tiempo total de procesamiento?
Variables
xij =

1,
0,
si la tarea i se asigna al ordenador j,
,
en otro caso.
i = 1, . . . , 6, j = 1, 2, 3.
14
Problema de Asignación Generalizada. Ejemplo (cont.)
Función objetivo
T = 18x11 + 16x12 + 12x13 + 14x21 + 21x22 + 19x23+
+ 23x31 + 27x32 + 33x33 + 16x41 + 24x42 + 23x43+
+ 17x51 + 24x52 + 24x53 + 25x61 + 28x62 + 30x63
Restricciones
X Cada tarea se procesa en un sólo ordenador:
3
X
xij = 1,
i = 1, . . . , 6.
j=1
X Limitación de tiempo disponible en cada ordenador:
18x11 + 14x21 + 23x31 + 16x41 + 17x51 + 25x61 ≤ 47
16x12 + 21x22 + 27x32 + 24x42 + 24x52 + 28x62 ≤ 41
12x13 + 19x23 + 33x33 + 23x43 + 24x53 + 30x63 ≤ 46
15
Problema de Asignación Generalizada. Ejemplo (cont.)
T = mı́n
6 X
3
X
tij xij
i=1 j=1
3
X
xij = 1,
6
X
tij xij ≤ Cj ,
i = 1, . . . , 6
j=1
j = 1, 2, 3
i=1
xij ∈ {0, 1}
¿Cómo cambiarı́as el modelo para que el tiempo de procesamiento total
fuese el tiempo que tardan en completarse todas las tareas que se procesan
en paralelo en los 3 ordenadores?
16
Problema de Asignación Generalizada. Ejemplo (cont.)
Función objetivo
n
T = máx 18x11 + 14x21 + 23x31 + 16x41 + 17x51 + 25x61,
16x12 + 21x22 + 27x32 + 24x42 + 24x52 + 28x62o
,
12x13 + 19x23 + 33x33 + 23x43 + 24x53 + 30x63
T = mı́n máx

6
X
6
X
6
X


ti1xi1,
ti2xi2,
ti3xi3 ,


i=1
i=1
i=1
3
X
xij = 1,
6
X
tij xij ≤ Cj ,
i = 1, . . . , 6
j=1
j = 1, 2, 3
i=1
xij ∈ {0, 1}
17
Problema de Asignación Generalizada. Ejemplo (cont.)
T = mı́n z
6
X
ti1xi1 ≤ z
6
X
ti2xi2 ≤ z
6
X
ti3xi3 ≤ z
3
X
xij = 1,
6
X
tij xij ≤ Cj ,
i=1
i=1
i=1
i = 1, . . . , 6
j=1
j = 1, 2, 3
i=1
xij ∈ {0, 1}
18
Problema de Cubrimiento. Ejemplo
Un técnico de sistemas del laboratorio de cálculo de la Escuela Politécnica
Superior quiere acceder a cinco archivos distintos. Hay copia de estos
archivos en distintas cintas de backup:
f1
f2
f3
f4
f5
C1,
C1,
C2,
C3,
C1,
CINTAS
C2, C5, C6, C8, C9, C10
C3
C5, C7, C10
C6, C8
C2, C4, C6, C7, C9, C10
Los tamaños de las cintas de backup C1, . . . ,C10 son:
(30, 50, 10, 20, 10, 40, 30, 10, 20, 20)
Para poder recuperar los archivos, primero hay que hacer un volcado de
las cintas al disco duro. Éste tiene que ser de la cinta completa, no puede
copiarse sólo una parte.
¿Cómo determinar el conjunto de cintas a volcar de forma que se ocupe el
menor espacio de disco posible y se puedan recuperar todos los archivos?
19
Problema de Cubrimiento. Ejemplo (cont.)
Variables
xi =

1
0
si volcamos la cinta i al disco duro,
si no la volcamos.
∀i = 1, . . . , 10.
Restricciones
El archivo 1 tiene que ser accesible ⇒ al menos 1 de las cintas de
backup que tiene copia del archivo 1 se debe volcar:
x1 + x2 + x5 + x6 + x8 + x9 + x10 ≥ 1
El resto de archivos debe ser también accesible:
x1 + x3 > 1
x2 + x5 + x7 + x10 > 1
x3 + x6 + x8 > 1
x1 + x2 + x4 + x6 + x7 + x9 + x10 > 1
Condición de variables binarias: xij ∈ {0, 1}, ∀i = 1, . . . , n.
20
Problema de Cubrimiento. Ejemplo (cont.)
Función objetivo: Espacio disco ocupado
30x1 + 50x2 + 10x3 + 20x4 + 10x5 + 40x6 + 30x7 + 10x8 + 20x9 + 20x10
mı́n 30x1 + 50x2 + 10x3 + 20x4 + 10x5 + 40x6 + 30x7 + 10x8 + 20x9 + 20x10
x1 + x2 + x5 + x6 + x8 + x9 + x10 > 1
x1 + x3 > 1
x2 + x5 + x7 + x10 > 1
x3 + x6 + x8 > 1
x1 + x2 + x4 + x6 + x7 + x9 + x10 > 1
xi ∈ {0, 1}; i = 1, . . . , 10
21
Implicaciones entre variables binarias
¿Cómo le añadirı́as al modelo las siguientes condiciones?
X Si se vuelca la cinta 4, debe volcarse la 6:
x4 ≤ x6
X Si no se vuelca la cinta 3, debe volcarse la 1:
x3 + x1 ≥ 1
(⇔ 1 − x3 ≤ x1)
X Si se vuelca la cinta 2, no se puede volcar la cinta 6:
x2 + x6 ≤ 1
(⇔ x6 ≤ 1 − x2)
X No se pueden volcar a la vez las cintas 1, 9 y 10:
x1 + x9 + x10 ≤ 2
22
Implicaciones entre variables binarias (cont.)
X Si se vuelca la cinta 2 o la 5, no pueden volcarse ni la 6, ni la 9. Existen
varias alternativas:
Si se vuelca la cinta 2, no se puede volcar la cinta 6, y si se vuelca
la cinta 5 tampoco:
x2 + x6 6 1
x5 + x6 6 1
Lo mismo para la cintas 9:
x2 + x9 6 1
x5 + x9 6 1
Otra posibilidad es modelar esta condición como:
x6 + x9 6 2 − 2x2
x6 + x9 6 2 − 2x5
23
Implicaciones entre variables binarias
En general, cuando un valor concreto de una variable binaria condiciona
el valor que han de tomar otras variables binarias.
X La condición (y = 0 ⇒ x = 0), es equivalente a x ≤ y.
Si no se vuelca la cinta y, entonces tampoco se puede volcar la cinta
x.
X La condición (y = 0 ⇒ x = 1), es equivalente a x ≥ 1 − y.
Si no se vuelca la cinta y, entonces se debe volcar la cinta x.
X La condición (y = 1 ⇒ x = 0), es equivalente a x ≤ 1 − y.
Si se vuelca la cinta y, entonces no se puede volcar la cinta x.
X La condición (y = 1 ⇒ x = 1), es equivalente a x ≥ y.
Si se vuelca la cinta y, entonces también hay que volcar la cinta x.
24
Resolución del problema
25
La resolución se complica: el redondeo
La primera tentación a la hora de abordar la resolución de un problema
de programación entera es redondear la solución obtenida al relajar la
condición de integralidad.
Esta no es una buena estrategia ya que:
1. No siempre proporciona la solución óptima.
2. No garantiza la obtención de soluciones factibles.
3. La selección del redondeo adecuado es un problema exponencial.
26
El redondeo: ejemplo
Consideremos el siguiente problema de programación lineal entera
z = mı́nx1 − 11x2
− x1 + 10x2 ≤ 40
10x1 + 10x2 ≤ 205
x1, x2 ≥ 0 y enteras
Solución óptima sin considerar las condiciones de integralidad:
x1 = 15 y x2 = 5,5
27
El redondeo: ejemplo
La región factible del modelo es:
(15, 11
)
2
(15, 6)
r
r
r
r
(10, 5)
(15, 5)
Posibles redondeos:
x1 = 15 y x2 = 6: no verifica la primera restricción.
x1 = 15 y x2 = 5: es factible y z = −40.
La solución x1 = 10 y x2 = 5 es factible y z = −45
28
Resolución de un problema entero
Idea:
Un problema lineal continuo es “muy sencillo” de resolver ⇒ ¿por qué no
desarrollar métodos de resolución que empleen la programación lineal
continua como una herramienta para resolver el problema entero?
¿cómo desarrollar estos métodos?
a partir de las propiedades de la solución de un problema continuo y
de las del método de resolución del mismo,
y a partir de las caracterı́sticas de un problema entero (cómo se modele
el problema será muy importante)
29
Resolución del problema
Los métodos más usados parten de la relajación del problema
Idea: sustituir el problema entero original por un problema más sencillo,
que pueda ser resuelto más fácilmente y, por tanto, que pueda ser utilizado
para obtener cotas.
La más usada es la relajación lineal que consiste en eliminar la condición
de que las variables tomen valores enteros. Pero, no es la única
r
r
r
r
r
r
r
r
r
r
r
30
Descargar