Ejercicios de Programaci´on Entera

Anuncio
Ejercicios de Programación Entera
Investigación Operativa
Ingenierı́a Informática, UC3M
Curso 08/09
1. En una ciudad se intenta disminuir la contaminación reduciendo la circulación interurbana. Un primer
estudio busca determinar el mı́nimo número de autobuses que satisfagan la necesidades de transporte.
Después de recoger la información se observa que este número varı́a según la hora del dı́a, pero se
puede considerar constante en intervalos sucesivos de cuatro horas:
12:00 p.m. –
4:00 p.m. –
8:00 p.m. –
12:00 a.m. –
4:00 a.m. 4 autobuses
4:00 a.m. –
8:00 a.m. 8 autobuses
8:00 a.m. – 12:00 p.m. 10 autobuses
4:00 p.m.
8:00 p.m.
12:00 a.m.
7 autobuses
12 autobuses
4 autobuses
Los turnos de autobuses funcionan durante ocho horas seguidas y pueden comenzar al principio de
cualquiera de los seis periodos descritos anteriormente. Además, si en el turno que comienza a las
8:00 p.m. hay más de 4 autobuses, en el siguiente ha de haber también más de 4. Plantear un problema
de programación lineal entera para determinar el mı́nimo número de autobuses diario que satisface
las necesidades anteriores.
Solución.
Las decisiones que se deben tomar son cuántos autobuses empiezan a trabajar en cada uno de los
turnos. Hay 6 turnos, que empiezan al principio de cada uno de los 6 periodos de 4 horas descritos
anteriormente. Luego, las variables de decisión que tenemos que considerar son
xi = número de autobuses que empiezan a trabajar en el turno i,
i = 1, . . . , 6,
que son variables enteras.
Como los turnos son de 8 horas consecutivas, un autobús que empiece a trabajar en el periodo i, i =
1, . . . , 5, está circulando en el periodo siguiente, i + 1. Los que entran a trabajar en el último periodo,
el 6, están circulando también en el primero de la mañana, el 1. Ası́, para cubrir las necesidades
mı́nimas en cada uno de los periodos se debe verificar:
x6 + x1 ≥ 4
x1 + x2 ≥ 8
x2 + x3 ≥ 10
x3 + x4 ≥ 7
x4 + x5 ≥ 12
x5 + x6 ≥ 4
1
Queremos minimizar el número de autobuses diario, que viene dado por x1 + x2 + x3 + x4 + x5 + x6 .
Por último, tenemos que modelar la condición: si en el turno que comienza a las 8:00 p.m. hay más
de 4 autobuses, en el siguiente ha de haber también más de 4.
Necesitamos una variable binaria δ que nos indique si en el turno que comienza a las 8:00 p.m. hay
más de 4 autobuses (5 o más) o sólo hay 4 (sabemos que, como poco, hay 4). Para ello podemos
considerar la restricción:
x5 + x6 ≤ 4(1 − δ) + 20δ
donde x5 + x6 es el número de autobuses que están circulando en el periodo que empieza a las 8:00
p.m. La cota superior de 20 se obtiene como 12 + 4 + 4. Como mucho, en los 2 últimos turnos
empiezan a trabajar los autobuses necesarios para cubrir esos 2 turnos más el siguiente.
Si x5 + x6 > 4 ⇒ δ = 1. Ahora, es suficiente con imponer que si δ = 1 ⇒ x6 + x1 > 4. Para ello,
se incluye la restricción
x6 + x1 ≥ 4 + δ
y podemos eliminar la condición x6 + x1 ≥ 4
Otra opción, que nos permite no incluir la variable binaria δ es, teniendo en cuenta que 4 ≤ x5 + x6 ≤
20, añadir la restricción:
x5 + x6 − 4 ≤ 16(x6 + x1 − 4)
También podı́amos haber interpretado que la condición sólo hacı́a referencia a los autobuses que
empezaban en ese periodo, entonces tendrı́amos que considerar
x6 ≤ 4(1 − δ) + 8δ
y
x1 ≥ 5δ
En este caso, no podemos eliminar la condición x6 + x1 ≥ 4
El problema quedarı́a finalmente como:
Modelo 2
Modelo 1
Mı́n x1 + x2 + x3 + x4 + x5 + x6
s.a. x6 + x1 ≥ 4
x1 + x2 ≥ 8
x2 + x3 ≥ 10
x3 + x4 ≥ 7
x4 + x5 ≥ 12
x5 + x6 ≥ 4
x6 + x1 ≥ 4
x6 ≤ 4(1 − δ) + 8δ
x1 ≥ 5δ
δ ∈ {0, 1}, xi ∈ ZZ+ , i = 1, . . . , 6
Mı́n x1 + x2 + x3 + x4 + x5 + x6
s.a. x6 + x1 ≥ 4
x1 + x2 ≥ 8
x2 + x3 ≥ 10
x3 + x4 ≥ 7
x4 + x5 ≥ 12
x5 + x6 ≥ 4
x6 + x 1 ≥ 4 + δ
x5 + x6 ≤ 4(1 − δ) + 20δ
δ ∈ {0, 1}, xi ∈ ZZ+ , i = 1, . . . , 6
2. Una empresa fabrica tres productos 1, 2 y 3, que deben procesarse en dos tipos de maquinaria denominadas A y B. En la siguiente tabla se recogen los tiempos de procesamiento (por tonelada procesada)
con cada máquina, los beneficios (por tonelada procesada) en euros, y la disponibilidad de cada tipo
de maquinaria (en horas por semana):
2
Tipo de
Productos
Disponibilidad
maquinaria
1
2
3
(horas)
A
2
5
4
70
B
3
4
6
86
Benef./ton. (euros) 800 700 950
La empresa considera aumentar la disponibilidad de tiempo de procesamiento de la maquinaria. Para
ello, puede llevar a cabo alguna de las posibilidades indicadas a continuación
Tipo de maquinaria
A
Incremento de disp. (horas)
10
15
Coste inversión (miles de euros) 1600 1700
B
8
12
1700 1750
A lo sumo, se puede realizar un tipo de incremento para cada máquina. Gracias a un estudio de
mercado se conocen los lı́mites de demanda de los productos, que son
Demanda (ton.)
Producto mı́nima máxima
1
6
17
2
3
8
3
7
20
Además, la inversión total no puede exceder de 3400000 euros. Se pide:
(a) Formular el problema que se debe plantear la dirección de la empresa para obtener el plan de
procesamiento e inversión de mayor beneficio.
(b) Si la empresa desease aumentar la disponibilidad de un sólo tipo de maquinaria, ¿cómo se modifica el modelo anterior reflejando tal situación?
(c) Si no se quiere añadir disponibilidad de B a menos que se añada de A, ¿cómo se representa esta
nueva condición?
(d) La empresa desea ampliar la disponibilidad con la maquinaria B si, y sólo si, se incrementa
también la A. ¿Cómo debe modificarse la condición considerada en el apartado anterior?
Solución.
Las variables de decisión son:
x1 , x2 y x3 : cantidad de cada producto que se fabrica.
Variables binarias que nos indican si se realiza cada uno de los 4 posibles incrementos o no:
δA1 , δA2 , δB1 y δB2 .

1, si se realiza el incremento de 10 h. en la máquina A,
δA1 =
0, si no se realiza
δA2 , δB1 y δB2 se definen análogamente para los incrementos de 15 h. en la máquina A y 8 y 12
h. en la máquina B, respectivamente.
3
La función objetivo a maximizar: beneficios de venta - coste incremento de capacidad de las máquinas
800x1 + 700x2 + 950x3 − 1600δA1 − 1700δA2 − 1700δB1 − 1750δB2
Las restricciones son:
Disponibilidad de maquinaria:
2x1 + 5x2 + 4x3 ≤ 70 + 10δA1 + 15δA2
3x1 + 4x2 + 6x3 ≤ 86 + 8δB1 + 12δB2
A lo sumo, se puede realizar un tipo de incremento para cada máquina:
δA1 + δA2 ≤ 1
(1)
δB1 + δB2 ≤ 1
(2)
Lı́mites de la demanda de cada producto:
6 ≤ x1 ≤ 17,
3 ≤ x2 ≤ 8,
7 ≤ x3 ≤ 20
La inversión total no puede exceder de 3400000 euros:
1600δA1 + 1700δA2 + 1700δB1 + 1750δB2 ≤ 3400
x1 , x2 , x3 ≥ 0 y δA1 , δA2 , δB1 y δB2 variables binarias.
(b) Si la empresa desease aumentar la disponibilidad de un sólo tipo de maquinaria, ¿cómo se modifica el modelo anterior reflejando tal situación?
Si se siguen manteniendo las restricciones (1) y (2), entonces es suficiente con añadir:
δA1 + δA2 + δB1 + δB2 ≤ 1
Si no se mantienen, es decir, sólo se puede invertir en una máquina pero las ampliaciones se
pueden acumular, entonces hay que añadir 2 nuevas variables binarias que indiquen si se invierte
o no en cada máquina:

1, si se realiza algún incremento en la máquina A,
δA =
0, si no se realiza
Análogamente se define δB . Estas 2 variables toman su valor en función del valor de las variables
binarias previamente definidas:
δA1 + δA2 ≤ 2δA
(3)
δB1 + δB2 ≤ 2δB
(4)
Estas 2 restricciones sustituirı́an a las anteriores (1) y (2). Además, habrı́a que añadir para modelizar la condición que se nos pide ahora:
δA + δB ≤ 1
4
(b) Si no se quiere añadir disponibilidad de B a menos que se añada de A, ¿cómo se representa esta
nueva condición?
Como antes, si no se elimina la condición de, a lo sumo 1 inversión en cada máquina, habrı́a que
añadir la restricción:
δB1 + δB2 ≤ δA1 + δA2
Si se elimina la condición, entonces se definen δA y δB como antes y se añade la restricción:
δB ≤ δA
(b) La empresa desea ampliar la disponibilidad con la maquinaria B si, y sólo si, se incrementa
también la A. ¿Cómo debe modificarse la condición considerada en el apartado anterior?
Se debe cambiar la desigualdad por una igualdad.
3. Dado el problema entero
mı́nx
x1 − 2x2 + 2x3
s.a x1 + x2 − 2x3 ≤ 4
2x1 − x2 − x3 ≥ 3
x ≥ 0 enteras,
a) Comprueba que la solución del problema relajado es:
T
7/3 5/3 0
.
b) Indica el siguiente subproblema que elegirı́as para resolver por el método de “branch and bound.”
c) Calcula la solución de dicho subproblema y comenta qué subproblemas introducirı́as para continuar el proceso de solución.
Solución.
a) El problema relajado en forma estándar es
mı́nx,s
x1 − 2x2 + 2x3
s.a
x1 + x2 − 2x3 + s1 = 4
2x1 − x2 − x3 − s2 = 3
x, s ≥ 0,
y en el vértice indicado tenemos que
T
B λ = cB ⇔
σN
1 2
1 −1

!
λ=
1
−2
!
⇒λ=
 

−2 −1
2
  

= cN − N T λ =  0  −  1
0 
0
0 −1
−1
1
−1
1
!
!


1
 
=  1  ≥ 0.
1
Por tanto, el vértice indicado es solución.
b) Con los valores que toman las variables básicas, los nuevos subproblemas se pueden introducir
bien sobre x1 (x1 ≤ 2 y x1 ≥ 3) o bien sobre x2 (x2 ≤ 1 y x2 ≥ 2). Cualquiera de ellos se puede
seleccionar para continuar el proceso.
5
Con la información proporcionada por la solución óptima del problema relajado, tenemos las
siguientes cotas para el problema entero:
−1 ≤ zopt ≤ ∞
Siguiendo las reglas dadas en la práctica, como hay empate (las 2 están igual de cerca del entero
más próximo), usamos el orden lexicográfico y ramificamos por x1 .
c) Construimos entonces los subproblemas (ya en forma estándar)
mı́nx,s
x1 − 2x2 + 2x3
s.a
x1 + x2 − 2x3 + s1 = 4
2x1 − x2 − x3 − s2 = 3 (P1 )
x 1 + s3 = 2
x, s ≥ 0,
mı́nx,s
x1 − 2x2 + 2x3
s.a
x1 + x2 − 2x3 + s1 = 4
2x1 − x2 − x3 − s2 = 3 (P2 ).
x 1 − s4 = 3
x, s ≥ 0,
Resolvemos P1 aplicando algún procedimiento adecuado. El más eficiente (que no hemos visto
en clase) es el método dual del Simplex. A continuación se obtiene la solución por el método
primal del Simplex (el estudiado en clase). Partimos de la solucı́ón básica:
x1 = 2, x2 = 1, x3 = 0, s1 = 1, s2 = 0, s3 = 0.
Para comprobar si es óptima, calculamos los costes reducidos de las variables no básicas. Los
multiplicadores son
 

   
0
1
1 2 1
λ1
 

   
T
B λ = cB ⇔ 1 −1 0 λ2  = −2 ⇒ λ =  2 
−3
0
1 0 0
λ3
y los costes reducidos
   
   
4
0
−2 −1 0
2
σ(x3 )
   
   

σN =  σ(s2 )  = 0 −  0 −1 0  2  = 2
3
0
0 1
−3
σ(s3 )
0

Todos los costes reducidos son positivos, entonces el vértice actual es la solución óptima del
subproblema P1 . Como además tiene todas sus coordenadas x1 , x2 y x3 enteras, se trata de
una solución factible del problema entero. Podamos la rama P1 , guardamos la solución actual
(2, 1, 0)t como la mejor solución entera encontrada hasta el momento y actualizamos la cota
superior (mejor conocido):
−1 ≤ zopt ≤ 0
El único nodo que queda pendiente es el correspondiente al subproblema P2 :
6
Si en el apartado b) hubieramos optado por ramificar por x2 , entonces tendrı́amos que construir los
subproblemas (ya en forma estándar)
mı́nx,s
x1 − 2x2 + 2x3
s.a
x1 + x2 − 2x3 + s1 = 4
2x1 − x2 − x3 − s2 = 3 (P1 )
x2 + s 3 = 1
x, s ≥ 0,
mı́nx,s
x1 − 2x2 + 2x3
s.a
x1 + x2 − 2x3 + s1 = 4
2x1 − x2 − x3 − s2 = 3 (P2 ).
x2 − s 4 = 2
x, s ≥ 0,
Si resolvemos, por ejemplo, P2 obtenemos que la solución óptima de dicho subproblema es:
x1 = 8/3, x2 = 2, x3 = 1/3, s1 = 0, s2 = 0, s4 = 0.
Esta solución no es entera por lo que serı́a necesario volver a ramificar, en este caso en x1 o en x2 .
Por lo tanto, si hemos seguido este camino todavı́a nos quedarı́an 3 nodos pendientes por explorar.
Por ejemplo, si optamos ramificar el subproblema P2 por x1 , tendrı́amos:
Para cada uno de los nodos tendrı́amos las siguientes cotas:
cota inferior
nodo 1
-1
nodo 2
0
nodo 3
0
cota superior
+∞
+∞
+∞
La cota inferior de los nodos 2 y 3 se obtiene de ajustar la cota inferior de − 32 teniendo en cuenta que
los coeficientes de la función objetivo son enteros.
4. Resuelve, aplicando el método de “branch and bound”, el siguiente problema entero:
máx
s.a
4x1 + 5x2 + x3
3x1 + 2x2 ≤ 10
x1 + 4x2 ≤ 11
3x1 + 3x2 + x3 ≤ 13
x ≥ 0, enteras.
7
Solución. Empezamos escribiendo el problema en forma estándar.
máx
s.a
4x1 + 5x2 + x3
3x1 + 2x2 + s1 = 10
x1 + 4x2 + s2 = 11
3x1 + 3x2 + x3 + s3 = 13
x ≥ 0 enteras, s ≥ 0.
Resolvemos el problema relajado, y obtenemos como solución,
x1 = 1.8, x2 = 2.3, x3 = 0.7, con z = 19.4
Por tanto, obtenemos las siguientes cotas para el problema entero:
−∞ ≤ zopt ≤ 19.4
La cota superior de 19.4 se puede ajustar a 19 (mejor cota), ya que todos los coeficientes son enteros.
Siguiendo la regla de las prácticas ramificamos por x1 (es la que toma un valor más cercano al entero)
⇒ introducimos las restricciones x1 ≤ 1 y x1 ≥ 2. Los subproblemas resultantes son:
máx
s.a
4x1 + 5x2 + x3
3x1 + 2x2 ≤ 10
x1 + 4x2 ≤ 11
(P1 )
3x1 + 3x2 + x3 ≤ 13
x1 ≤ 1
x≥0
máx
s.a
4x1 + 5x2 + x3
3x1 + 2x2 ≤ 10
x1 + 4x2 ≤ 11
(P2 )
3x1 + 3x2 + x3 ≤ 13
x1 ≥ 2
x≥0
Comenzamos resolviendo P1 , que en forma estándar es:
máx
s.a
4x1 + 5x2 + x3
3x1 + 2x2 + s1 = 10
x1 + 4x2 + s2 = 11
3x1 + 3x2 + x3 + s3 = 13
x1 + s 4 = 1
x ≥ 0, s ≥ 0
Empezamos por la SBF asociada a la base (variables básicas: {x1 , x2 , x3 , s1 })


 
3 2 0 1
1
1 4 0 0
5


 
B=
xB = B −1 b =  25 
,
3 3 1 0
2
1 0 0 0
2
Los costes reducidos de las variables no básicas (s2 , s3 , s4 ) vienen dados por:

   
 
3 1 3 1
λ1
4
0
2 4 3 0 λ  5
1

  2  
 
B T λ = cB ⇔ 
   =   ⇒ λ = 2
0 0 1 0 λ3  1
1
1 0 0 0

   
σ(s2 )
0
0

   
σN = σ(s3 ) = 0 − 0
σ(s4 )
0
0
1
0
2
 
 0
 
1 0 0 1
− 12
   
0 1 0  2  =  −1 
1
0 0 1
− 12
1
λ4
2
8
Todos los costes reducidos son negativos y se trata de un problema de maximización, entonces el
vértice actual es la solución óptima del subproblema P1 . Como la solución es fraccionaria, tenemos
que seguir ramificando. Hay un empate, entonces ramificamos por la de menor ı́ndice, que en este
caso es x2 . El valor óptimo del subproblema P1 es 19, entonces todos los nodos que cuelguen de este
nodo tienen las siguientes cotas:
−∞ ≤ z ∗ ≤ 19
Obtenemos los subproblemas:
máx
s.a
máx
s.a
4x1 + 5x2 + x3
3x1 + 2x2 ≤ 10
x1 + 4x2 ≤ 11
3x1 + 3x2 + x3 ≤ 13 (P3 )
x1 ≤ 1
x2 ≤ 2
x≥0
4x1 + 5x2 + x3
3x1 + 2x2 ≤ 10
x1 + 4x2 ≤ 11
3x1 + 3x2 + x3 ≤ 13 (P4 )
x1 ≤ 1
x2 ≥ 3
x≥0
Escogemos de los dos últimos subproblemas (seguimos una estrategia de búsqueda en profundidad)
el subproblema P3 . En forma estándar:
máx 4x1 + 5x2 + x3
s.a

3

1

3


1
0
2
4
3
0
1
0
0
1
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
 
x1

  x2 
  
10
0  
x3 
 



0   11
  s1   
13
0
=





  s2   
0    1 
s3 
2
1 
 
 s4 
s5
x1 , x2 , x3 , s1 , . . . , s5 ≥ 0
Empezamos por la SBF asociada a la base (variables básicas: {x1 , x2 , x3 , s1 , s2 })


 
3 2 0 1 0
1


 
1 4 0 0 1 
2


 
−1



B = 3 3 1 0 0  ,
xB = B b = 
4


 
1 0 0 0 0 
3
0 1 0 0 0
2
9
Los costes reducidos de las variables no básicas (s2 , s3 , s4 ) vienen dados por:

   
 
3 1 3 1 0
λ1
4
0

   
 
2 4 3 0 1  λ2  5
0






 
  λ3  = 1 ⇒ λ = 1
B T λ = cB ⇔ 
0
0
1
0
0

   
 

   
 
1 0 0 0 0  λ4  0
1
0 1 0 0 0
λ5
0 
2
0

   
   
σ(s3 )
0
0 0 1 0 0 0
−1
  

   


σN = σ(s4 ) = 0 − 0 0 0 1 0 
1 = −1
 
σ(s5 )
0
0 0 0 0 1 1
−2
2
Todos los costes reducidos son negativos y se trata de un problema de maximización, entonces el
vértice actual es la solución óptima del subproblema P3 . Como además tiene todas sus coordenadas
x1 , x2 y x3 enteras, se trata de una solución factible del problema entero, con valor objetivo z ∗ = 18.
Podamos la rama P3 , guardamos la solución actual (1, 2, 4)t como la mejor solución entera encontrada hasta el momento y actualizamos la cota inferior del problema entero (mejor conocido)
18 ≤ zopt ≤ 19
Pasamos a resolver el subproblema P4 , correspondiente al nodo hermano del subproblema P3 . En
forma estándar:
máx
4x1 + 5x2 + x3
s.a
3x1 + 2x2 + s1 = 10
x1 + 4x2 + s2 = 11
3x1 + 3x2 + x3 + s3 = 13 (P4 )
x1 + s 4 = 1
x 2 − s5 = 3
x ≥ 0, s ≥ 0
Como x2 ≥ 3, entonces en la segunda restricción debe ser
x1 + 4x2 ≥ 0 + 4 · 3 = 12 11.
Luego, el subproblema P4 es no factible y se poda esa rama. Nota: si no nos damos cuenta del razonamiento anterior, después de probar algunas bases y de que todas nos den no factibles, se resuleve el
problema por el método de las dos fases. El problema de la fase 1 es:
mı́n
s.a
z1
3x1 + 2x2 + s1 = 10
x1 + 4x2 + s2 = 11
3x1 + 3x2 + x3 + s3 = 13 (P4 )
x1 + s 4 = 1
x2 − s5 + z1 = 3
x ≥ 0, s ≥ 0, z1 ≥ 0
10
Al resolverlo se obtiene como solución óptima (x, s, z1 )t = (0, 2.75, 0, 4.5, 0, 4.75, 1, 0, 0.25) con
valor objetivo óptimo z ∗ = 0.25 > 0.
El único nodo que queda pendiente es el correspondiente al subproblema P2 , que en forma estándar
es:
máx
4x1 + 5x2 + x3
s.a
3x1 + 2x2 + s1 = 10
x1 + 4x2 + s2 = 11
(P2 )
3x1 + 3x2 + x3 + s3 = 13
x1 − s 4 = 2
x ≥ 0, s ≥ 0
Empezamos por la SBF asociada a la base (variables básicas: {x1 , x2 , x3 , s2 })

3
1

B=
3
1
2
4
3
0
0
0
1
0

0
1

,
0
0
 
2
2
 
xB = B −1 b =  
1
1
Los costes reducidos de las variables no básicas (s2 , s3 , s4 ) vienen dados por:
 
   
1
4
λ1
3 1 3 1
0
2 4 3 0 λ  5
 
  2  

B T λ = cB ⇔ 
  =   ⇒ λ =  
1
0 0 1 0 λ3  1
−2
0
λ4
0 1 0 0
  

   

−1
1
1 0 0 0
0
σ(s1 )
  

   

σN = σ(s3 ) = 0 − 0 0 1 0   0  = −1
−2
1−2
0 0 0 −1
0
σ(s4 )

Todos los costes reducidos son negativos y se trata de un problema de maximización, entonces el
vértice actual es la solución óptima del subproblema P2 . Como además tiene todas sus coordenadas
x1 , x2 y x3 enteras, se trata de una solución factible del problema entero, con valor objetivo z ∗ = 19.
Podamos la rama P2 y podemos dar por finalizada la búsqueda, ya que la solución factible entera
obtenida alcanza la mejor cota del problema. Si no nos damos cuenta de esto, como la solución que
acabamos de encontrar mejora a la mejor por el momento que tenı́amos guardada (que tenı́a un valor
objetivo de 18), también podemos garantizar que el vértice actual es el óptimo del problema entero.
En este caso, si hubiéramos empezado resolviendo el problema P2 , no habrı́amos tenido que resolver
ningún otro subproblema, ya que habrı́amos obtenido una solución entera cuyo valor óptimo lanza la
mejor cota.
El árbol de búsqueda es:
11
5. Resuelve por el método de Branch and Bound el siguiente problema de programación entera:
minimizar
sujeto a
− x 1 − x2
− x1 ≤ 0
2x1 − 2x2 ≤ 1
2x2 ≤ 9
x1 , x2 ∈ {0, 1, 2, . . .}
Solución. El problema relajado P0 es el siguiente:
minimizar
sujeto a
− x1 − x2
− x1 ≤ 0
2x1 − 2x2 ≤ 1
2x2 ≤ 9,
y su solución es x = (5, 4.5) con z = −9.5. Como la solución no satisface las condiciones de
integralidad hay que ramificar por x2 y se crean dos problemas P1 y P2 , añadiendo las restricciones
x2 ≤ 4 y x2 ≥ 5, respectivamente. Cotas para la función objetivo: −9.5 ≤ z ∗ ≤ ∞. La mejor cota se
puede ajustar a −9.
Problema P1 :
minimizar
sujeto a
− x1 − x2
− x1 ≤ 0
2x1 − 2x2 ≤ 1
2x2 ≤ 9
x2 ≤ 4,
solución x = (4.5, 4) con z = −8.5. Como no se satisfacen las condiciones de integralidad y el valor
de la f.o. está entre las cotas superior e inferior hay que ramificar (por x1 ). Cotas para el valor de
todas las souciones con x2 ≤ 4: −8.5 ≤ z ∗ ≤ ∞, que se puede ajustar a −8 ≤ z ∗ ≤ ∞. La mejor
cota para el problema original sigue siendo −9.
12
Problema P3 :
minimizar
sujeto a
− x1 − x2
− x1 ≤ 0
2x1 − 2x2 ≤ 1
2x2 ≤ 9
x2 ≤ 4
x1 ≤ 4.
Problema P4 :
minimizar
sujeto a
− x1 − x2
− x1 ≤ 0
2x1 − 2x2 ≤ 1
2x2 ≤ 9
x2 ≤ 4
x1 ≥ 5
Siguiendo una estrategia de búsqueda en profundidad deberı́amos de seguir resolviendo P3 . Vamos a
seguir una estrategia de búsqueda en anchura y pasamos a reolver el problea P2 .
El problema P2 :
minimizar
sujeto a
− x1 − x2
− x1 ≤ 0
2x1 − 2x2 ≤ 1
2x2 ≤ 9
x2 ≥ 5,
es no factible y por tanto la rama se poda. Pasamos, entonces, a resolver el problema P3 , cuya solución
es x = (4, 4) con z = −8. Como la solución sı́ satisface las condiciones de integralidad y el valor de
la f.o. está entre las cotas, entonces la rama se poda y se actualiza la cota superior para el problema
original, ahora mejor conocido= −8. Las nuevas cotas para el problema original son:
−9 ≤ z ∗ ≤ −8
Se guarda la solución x = (4, 4) como mejor solución encontrada (incumbente).
Pasamos a resolver el problema P4 , que resulta ser no factible, por lo que la rama se poda.
Ya no tenemos más problemas que procesar por lo que el procedimiento termina escogiendo el mejor
candidato, esto es x∗ = (4, 4) con z ∗ = −8
6. En una central hidroeléctrica debe decidirse qué turbinas se pondrán en marcha durante el dı́a de
manera que se satisfaga la demanda (estimada) de la población a la que se sirve:
13
12 p.m. a 6 a.m.
6 a.m. a 9 a.m.
9 a.m. a 3 p.m.
3 p.m. a 6 p.m.
6 p.m. a 12 p.m.
15.000 MW
30.000 MW
25.000 MW
40.000 MW
27.000 MW
La central dispone de turbinas de 3 tipos distintos. Concretamente, dispone de 12 de tipo 1, 10 de tipo
2 y 5 de tipo 3. Cada turbina tiene que funcionar entre unos niveles mı́nimo y máximo. Los costes
de funcionamiento dependen del nivel al que la turbina esté operando: hay un coste por hora que la
turbina opera a nivel mı́nimo y un coste extra, también por hora, por cada megawatio que la turbina
opera sobre el nivel mı́nimo. Además, la puesta en marcha de una turbina conlleva un coste:
Tipo 1
Tipo 2
Tipo 3
Nivel
mı́nimo
850 MW
1.250 MW
1.500 MW
Nivel
Coste por hora
máximo
al mı́nimo
2.000 MW
1.000
1.750 MW
2.600
4.000 MW
3.000
Coste/hora por MW coste puesta
por encima del mı́n. en marcha
2
2.000
1’30
1.000
3
500
Además, para cumplir con los requisitos de calidad establecidos en el contrato, tiene que haber suficientes generadores funcionando en cualquier periodo del dı́a como para responder a un incremento
de la demanda estimada de hasta un 15 %. El posible incremento debe poder ser atendido ajustando,
siempre dentro de los lı́mites de operación, la producción de las turbinas que están en funcionamiento.
Al final del ciclo de 24 horas hay una desconexión breve antes de comenzar la aplicación de la
siguiente planificación; no obstante, durante el dı́a, una vez que una turbina se ha puesto en marcha
ya no se desconecta hasta el final del ciclo.
a) ¿Qué turbinas deben estar funcionando y en qué periodos del dı́a deben hacerlo para minimizar el
coste total?
b) ¿Cuál es el coste marginal de producción de electricidad en cada periodo del dı́a?, es decir,
¿qué tarifas se deberı́an cobrar?
c) ¿Qué ahorro se producirı́a si se rebajara el 15 % de reserva de energı́a que se debe garantizar?, es
decir, ¿cuánto cuesta este nivel de garantı́a de servicio?
d) ¿Cómo cambiarı́a el modelo si no se produce la desconexión al final del dı́a? Compara las soluciones obtenidas con los dos modelos
Solución.
Modelo del apartado a), en el que hay desconexión al final del dı́a y las turbinas no se pueden desconectar de un periodo a otro.
Variables:
nit = número de turbinas trabajando del tipo i en el periodo t.
xit = producción de las turbinas del tipo i en el periodo t.
14
Obsérvese que, por ejemplo, x12 − 850n12 es el número de MW que globalmente todas las turbinas
de tipo 1 están produciendo por encima del mı́nimo durante todo el perido 2. En general,
(
MW que globalmente todas las turbinas de tipo i están produciendo por encima
xit − mi nit =
del mı́nimo en el periodo t,
donde mi = la producción mı́nima de las turbinas de tipo i.
Entonces, la función objetivo, que tiene que medir todos los costes derivados de las decisiones
tomadas, contendrá los siguientes sumandos para cada uno de los periodos:
Costes de funcionamiento al mı́nimo:
E1t n1t + E2t n2t + E3t n3t ,
donde Eit = costes de funcionamiento por periodo (coste por hora al mı́nimo por número de
horas del periodo).
Costes de funcionamiento por encima del mı́nimo:
C1t (x1t − m1 n1t ) + C2t (x2t − m2 n2t ) + C3t (x3t − m3 n3t ),
donde Cit = costes de producción por periodo (coste por hora por MW por encima del mı́nimo
por número de horas del periodo).
Costes de puesta en marcha:
Como las turbinas no se pueden apagar, el número de turbinas puestas en marcha durante el dı́a
se corresponde con el número de turbinas que están funcionando en el último periodo. Luego, es
suficiente con contar el número de turbinas funcionando en el último periodo y cargar su coste:
F1 n15 + F2 n25 + F3 n35 ,
donde Fi = costes de puesta en marcha.
Función objetivo:
mı́n
5 X
3
X
Eit nit +
5 X
3
X
t=1 i=1
Cit (xit − mi nit ) +
t=1 i=1
3
X
Fi ni5
i=1
Por ejemplo, para el primer periodo los costes de producción serı́an (primer y segundo sumando de
la función objetivo):
h
i h
i
6×1000n11 +6×2600n21 +6×3000n31 + 2(x11 −850n11 )+1.30(x21 −1250n21 )+3(x31 −1500n31 )
Restricciones:
Demanda de cada periodo de tiempo:
3
X
xit ≥ Dt
i=1
15
∀t = 1, . . . , 5
Lı́mites de producción de cada turbina en cada periodo:
mi nit ≤ xit ≤ Mi nit
∀i = 1, 2, 3, t = 1, . . . , 5
(mi y Mi son los lı́mites de capacidad de los generadores de tipo i).
Garantı́a del 15 % de producción extra:
3
X
Mi nit ≥ 1.15Dt ,
∀t = 1, . . . , 5
i=1
Número de generadores funcionando y puestos en marcha: como no se pueden desconectar de
un periodo a otro, se debe verificar
ni(t+1) ≥ nit ,
∀i = 1, 2, 3, t = 1, . . . , 4
(5)
El número de turbinas puestas en marcha en el periodo t + 1 se puede calcular como
si(t+1) = ni(t+1) − nit ,
∀i = 1, 2, 3, t = 1, . . . , 4
nit son variables enteras acotadas entre 0 y el número máximo de generadores del tipo i:
0 ≤ n1t ≤ 12, 0 ≤ n2t ≤ 10, 0 ≤ n3t ≤ 5, para todo t = 1, . . . , 5
(6)
Como tenemos las restricciones (5), es suficiente con exigir no negatividad y
n15 ≤ 12, n25 ≤ 10, n35 ≤ 5
En el modelo del apartado b), en el que las turbinas se pueden desconectar de un periodo a otro y
no hay desconexión al final del dı́a tenemos que considerar las variables sit = número de turbinas
puestas en marcha del tipo i en el periodo t, que son también variables enteras acotadas entre 0 y el
número máximo de generadores del tipo i:
0 ≤ s1t ≤ 12, 0 ≤ s2t ≤ 10, 0 ≤ s3t ≤ 5, para todo t = 1, . . . , 5
Cambia el cálculo de los costes de puesta en marcha. En la función objetivo hay que reemplazar
el sumando
3
X
Fi ni5
i=1
por
5 X
3
X
Fi sit
t=1 i=1
Cambian las restricciones relativas al número de generadores funcionando y puestos en marcha:
sit ≥ nit − nit−1 ,
∀i = 1, 2, 3, t = 1, . . . , 5
(cuando t = 1, t − 1 = 5) No se puede dejar la igualdad como en modelo anterior, ya que si
sólo se han desconectado turbinas de un periodo a otro nos darı́a un valor negativo.
Las restricciones de cota (6) se deben de mantener para todos los periodos.
16
Para contestar a las cuestiones b) y c) hay que tener en cuenta que la interpretación de los multiplicadores λ como precios sombra no es posible en modelos con variables enteras.
Una alternativa es obtener los multiplicadores de un problema relacionado:
Fijar las variables enteras al valor obtenido en la solución óptima y resolver el problema
lineal resultante
Ası́, para contestar a la cuestión b), en la que se pedı́a calcular el coste marginal de producción de
electricidad en cada periodo del dı́a, lo que debemos hacer es fijar el número de turbinas de cada tipo
que funcionan en cada periodo al valor obtenido en la solución óptima del problema entero y resolver
el problema de programación lienal que queda. El coste marginal vendrá dado por los multiplicadores
de las restricciones de satisfacción de demanda.
Para contestar al apartado c) no podemos hacer lo mismo porque al fijar el número de turbinas que
funcionan en cada periodo la restricción del 15 % de reserva de energı́a desaparece. En ese caso,
lo que podemos hacer es resolver la relajación lineal del problema entero original y fijarnos en el
multiplicador de la restricción de reserva.
17
Descargar