Unidad 4: PROGRAMACIÓN LINEAL INTRODUCCIÓN

Anuncio
Unidad 4: PROGRAMACIÓN LINEAL
INTRODUCCIÓN
El problema básico de la programación lineal es el de
optimizar (hacer máxima o mínima) una cierta expresión
lineal (que puede expresar beneficios, gasto, tiempo...)
sometida a una serie de restricciones (dinero disponible,
material, personal...) que vienen expresadas por inecuaciones
lineales.
Sus orígenes se sitúan en el siglo XX, cerca de la Segunda
Guerra Mundial. En un principio las investigaciones fueron
fundamentalmente con fines militares, pero pronto se le
encontraron infinidad de aplicaciones en el campo civil. En los
años cuarenta se describió por primera vez, el problema del
transporte, que fue estudiado independientemente por
Kantorovich y Koopmans. En 1947, Dantzig ideó un algoritmo
para la resolución de estos problemas, denominado método
del simplex.
El ejemplo con el que Dantzig presentó el “método simplex” trataba
sobre la mejor asignación de 70 personas a 70 puestos de trabajo.
1
Por los complejos problemas que aborda, y por el enorme
número de variables que se manejan en la práctica, es
imprescindible encontrar algoritmos eficaces que se pueden
implementar en ordenador.
4.1.- ¿QUÉ ES UN PROBLEMA DE PROGRAMACIÓN
LINEAL?
Tal y como hemos apuntado en la introducción, se puede
definir la programación lineal como una técnica de
optimización que permite distribuir los recursos de la mejor
manera posible.
A partir de un ejemplo o problema tipo se irán destacando
las características comunes de los problemas de
programación lineal.
Ejemplo:
Un fabricante de abanicos dispone de dos modelos A y B. El
modelo A requiere, para su elaboración, 20 cm2 de papel, 120
cm2 de lámina de madera y 1 enganche metálico. El modelo B
requiere: 60 cm2 de papel, 80 cm2 de lámina de madera y 1
enganche metálico. El coste de producción de cada modelo es
1,20 euros el A y 1,30 euros el B. El precio de venta es de
1,80 euros cada uno, independientemente del modelo.
Teniendo en cuenta que las existencias son de 3000 cm2 de
papel, 7200 cm2 de lámina de madera y 70 enganches.
1)
Representa la región factible.
2)
Determina el número de abanicos de cada modelo que
ha de hacer para obtener un beneficio máximo.
3)
Calcula cuál es ese beneficio.
2
Al intentar formular matemáticamente este enunciado se
observa que aparecen una serie de características comunes a
todos los problemas de programación y que son las
siguientes:
• El conjunto de variables o incógnitas que representan
las decisiones que se deben tomar, designadas
habitualmente por x e y, se llaman variables de
decisión.
En nuestro problema hemos de determinar el número de
abanicos de cada modelo que se han de fabricar para
obtener el máximo beneficio.
x: número de abanicos del modelo A.
y: número de abanicos del modelo B.
• Las decisiones que se deben tomar van aparejadas a una
función que se quiere hacer máxima (maximizar) como
ingresos, beneficios… o hacer mínima (minimizar) como
costes, distancias, tiempo… Pues bien, esta función
lineal en las variables de decisión x e y, z = f(x, y) , que
hay que maximizar o minimizar, se llama función
objetivo.
En nuestro problema queremos maximizar los
beneficios. Hemos de encontrar la expresión que los
obtiene:
Beneficios = Ingresos – Gastos
Beneficios = (1, 80x + 1, 80y ) − (1,20x + 1,30y ) =
= 0, 6x + 0, 5y
Así, la función objetivo será z = f(x, y) = 0, 6x + 0, 5y
3
• A lo largo del enunciado de un problema de
programación lineal aparecerán una serie de condiciones
que han de satisfacer las variables de decisión, y que se
expresan por ecuaciones o inecuaciones lineales,
llamadas restricciones.
Podemos obtener las condiciones de nuestro problema a
partir de la tabla siguiente:
2
Papel (cm )
Lámina de madera (cm2)
Enganche metálico
Modelo A
20
120
1
Modelo B
60
80
1
Disponemos de 3000 cm2 de papel, por tanto:
20x + 60y ≤ 3000
Disponemos de 7200 cm2 de lámina de madera, por
tanto:
120x + 80y ≤ 7200
Disponemos de 70 enganches, por tanto:
x + y ≤ 70
Además de las restricciones explícitas, o sea, indicadas
en el enunciado del problema, hay que añadir las
correspondientes a las variables de decisión. Es decir,
como el número de abanicos no puede ser negativo,
exigiremos que x e y sean mayores o iguales que cero, y
también que sean números enteros:
x ≥ 0,
y ≥ 0,
x, y ∈ »
4
El problema se puede escribir en forma resumida de la
siguiente manera:
Maximizar z = 0, 6x + 0, 5y
s.a.


120x + 80y ≤ 7200


x + y ≤ 70

x ≥ 0, y ≥ 0, x, y ∈ » 
20x + 60y ≤ 3000
• El conjunto de todos los puntos del plano (x, y) que
satisfacen todas y cada una de las restricciones del
problema de programación lineal, se llama región
factible o conjunto solución.
• La solución óptima de un problema de programación
lineal es un punto de la región factible en el cual la
función objetivo alcanza el máximo o el mínimo, según se
trate de un problema de maximización o minimización.
5
En nuestro problema ya está representada la región
factible. Por tanto, habrá que buscar la solución óptima,
que, en este caso, consiste en maximizar la función
objetivo z = 0, 6x + 0, 5y sobre esta región factible. O, lo
que es equivalente, se trata de encontrar el mayor valor
de z sobre la región factible.
Comenzamos dibujando la función objetivo para z = 0 .
Esto es, la recta 0 = 0, 6x + 0, 5y .
A continuación se trazan paralelas a la recta z = 0 (por
ejemplo: z = 10 , z = 20 ) con el fin de ir aumentando el
valor de z hasta que no corte a la región factible, siendo la
última recta que corta a la región factible la que define el
máximo valor de z.
De esta manera, corresponde al punto (40,30) de la región
factible el mayor valor de z, que es 39.
6
La solución de nuestro problema será, por tanto, que para
obtener el máximo beneficio se han de fabricar 40
abanicos del modelo A y 30 del modelo B. Dicho beneficio
máximo será de 39 euros.
Primer resultado fundamental de la programación lineal:
Si un problema de programación lineal tiene solución
óptima, ésta se alcanza en alguno de los vértices de la
región factible.
Este resultado permite reducir la búsqueda de la solución
óptima a los vértices de la región factible, de tal forma que
una alternativa al trazado de paralelas de la función objetivo
realizada anteriormente, consiste en calcular el valor de la
función objetivo en cada uno de los vértices de la región
factible. Así, el mayor valor indicará el vértice donde se
alcanza el máximo y, de forma análoga, el menor valor
mostrará el vértice donde se encuentra el mínimo.
Ejercicio 5. Beneficio máximo (pág. 110)
Con 80 kg de acero y 120 kg de aluminio se quieren fabricar
bicicletas de montaña y de paseo que se venderán a 200 € y
150 €, respectivamente. Para la de montaña son necesarios 1
kg de acero y 3 kg de aluminio y para la de paseo 2 kg de
cada uno de los dos metales.
¿Cuántas bicicletas de paseo y cuántas de montaña se deben
fabricar para obtener el máximo beneficio?
7
4.2.- PROBLEMAS DE PROGRAMACIÓN LINEAL CON
MÚLTIPLES ÓPTIMOS
Consideremos el siguiente problema de programación lineal:
Maximizar z = x + y
s.a.


x−y≥0


3x + 2y ≥ 6 
x ≥ 0, y ≥ 0 
x+y≤6
La región factible está delimitada por el polígono ABCD. Los
vértices de este polígono son las intersecciones de los
siguientes pares de rectas:
t : 3x + 2y = 6 
 ⇒ x = 2,
eje OX : y = 0 
y=0
A(2, 0)
8

 ⇒ x = 6,
eje OX : y = 0 
r:x+ y = 6
r : x + y = 6
 ⇒ x = 3,
s : x − y = 0
y =3

6
⇒x= ,
t : 3x + 2y = 6
5
s:x−y = 0
y=0
y=
B(6, 0)
C(3,3)
6
5
6 6
D , 
5 5
Como se trata de una región acotada, se calcula el valor de la
función objetivo en cada uno de los vértices:
Vértices
Valor de la función objetivo
z=x+y
A(2, 0)
B(6, 0)
C(3,3)
6 6
D , 
5 5
2
6 → Máximo
6 → Máximo
12
= 2, 4
5
En este caso, la función objetivo alcanza el máximo en los
vértices B(6,0) y C(3,3) con el mismo valor z = 6 .
Procediendo de otra manera, se traza la función objetivo
para z = 0 , o sea: x + y = 0 y se la desplaza paralelamente a
sí misma sobre la región factible, observando que se
superpone al segmento BC . Por tanto, alcanza el máximo en
los infinitos puntos de la arista BC , y el problema tiene
infinitas soluciones o múltiples óptimos.
9
Segundo resultado fundamental de la programación lineal:
Si la región factible está acotada, entonces el máximo o el
mínimo de la función objetivo se encuentra en uno de los
vértices de la región factible.
Pero si el máximo o el mínimo se encuentran en dos
vértices adyacentes de la región factible, entonces se
alcanzará en los infinitos puntos de la arista que los une.
Ejercicio 7. Solución múltiple (pág. 112)
Un comerciante desea comprar dos tipos de frigoríficos, F1 y
F2. Los de tipo F1 cuestan 300 € y los de tipo F2, 500 €.
Sólo dispone de sitio para 20 frigoríficos y de 7000 € para
hacer las compras.
10
¿Cuántos frigoríficos ha de comprar de cada tipo para
obtener beneficios máximos con su venta posterior, sabiendo
que en cada frigorífico gana el 30% de su compra?
4.3.- PROBLEMAS DE PROGRAMACIÓN LINEAL CON
REGIÓN FACTIBLE NO ACOTADA
Cuando la región factible de un problema de programación
lineal está acotada, siempre será posible encontrar el
óptimo. Sin embargo, en el caso de que la región factible
no esté acotada puede ocurrir que exista o no solución
óptima. Veamos dos ejemplos:
Ejemplo 1:
Minimizar z = 7x + 10y
s.a.
3x + 2y ≥ 18
2x + 8y ≥ 32
x ≥ 0,
y ≥ 0,



x, y ∈ » 
11
La región factible no está acotada. Hemos trazado la función
objetivo para z = 0 y trasladándola paralelamente a sí
misma, el primer punto de la región factible que se alcanza
es el vértice A(4,3). En este punto se obtendrá el valor
mínimo de z sobre la región factible. Por tanto, la solución
del problema será x = 3, y = 4.
Ejemplo 2:
Maximizar z = 3x + y
s.a.
5x + 2y ≥ 10 

3x + 7y ≥ 21 
x ≥ 0, y ≥ 0 
12
La región factible no está acotada, por lo que, trazando
paralelas a la función objetivo para z = 0 , se observa que z
puede alcanzar valores arbitrariamente grandes y, por tanto,
no se puede encontrar la solución óptima. En este caso el
problema no tiene solución o tiene solución no acotada (no
se puede determinar).
Ejercicio 6. Coste mínimo. Solución única. (pág. 111)
Una refinería de petróleo tiene dos fuentes de petróleo
crudo: ligero y pesado.
Cada barril de crudo ligero cuesta 70 dólares y con él la
refinería produce 0,3 barriles de gasolina (G); 0,2 barriles
de combustible de calefacción (C) y 0,3 barriles de
combustible para turbinas (T).
Cada barril de crudo pesado cuesta 60 dólares y produce 0,3
barriles de G; 0,4 barriles de C y 0,2 barriles de T.
La refinería ha contratado el suministro de 900000 barriles
de G, 800000 barriles de C y 500000 de T. Halla las
cantidades de crudo ligero y pesado que debe comprar para
poder cubrir sus necesidades con un coste mínimo.
Ejercicio. Coste mínimo. Solución múltiple.
Se quiere elaborar una dieta diaria para ganado que
satisfaga unas condiciones mínimas de contenidos vitamínicos
al día: 2 mg de vitamina A, 3 mg de vitamina B, 30 de la C y 2
de la D. Para ello se van a mezclar piensos de dos tipos, P y
Q, cuyo precio por kg es para ambos de 3 euros, y cuyo
contenido vitamínico por kg se recoge en la tabla adjunta.
¿Cómo deben mezclarse los piensos para que el gasto sea
mínimo? ¿Cuál es este gasto mínimo?
13
4.4.- EL PROBLEMA DEL TRANSPORTE
El problema del transporte es un importante tipo de
problema de programación lineal. Veamos un ejemplo de una
versión muy sencilla.
Ejemplo
Desde dos almacenes, A y B, se tiene que distribuir fruta a
tres mercados de la ciudad. El almacén A dispone de 10
toneladas de fruta diarias y el B de 15 toneladas, que se
reparten en su totalidad. Los dos primeros mercados
necesitan, diariamente, 8 toneladas de fruta, mientras que el
tercero necesita 9 toneladas diarias. El coste del transporte
por tonelada desde cada almacén a cada mercado viene dado
por los datos de la tabla adjunta.
COSTE
Mercado 1
Mercado 2
Mercado 3
Almacén A
10
15
15
10
20
10
Almacén B
Planifica el transporte para que el coste sea mínimo.
Si llamamos “x” a la cantidad de mercancía que entrega el
almacén A al mercado 1, e “y” a la mercancía que entrega el
almacén A al mercado 2, el resto de la mercancía se
distribuye en la forma que se recoge en la siguiente tabla:
Mercancía
(en toneladas)
Mercado 1
Mercado 2
Mercado 3
Almacén A
x
y
10 − x − y
8−x
8−y
Almacén B
15 − (8 − x ) − (8 − y ) =
= −1 + x + y
14
Las cantidades entregadas a cada mercado deben ser no
negativas, es decir, deben cumplir las desigualdades
siguientes:
x ≥ 0 , y ≥ 0 , 10 − x − y ≥ 0 , 8 − x ≥ 0 , 8 − y ≥ 0 , −1 + x + y ≥ 0
Simplificando las desigualdades anteriores, se obtienen las
siguientes inecuaciones:
x ≥ 0 , y ≥ 0 , x + y ≤ 10 , x ≤ 8 , y ≤ 8 , x + y ≥ 1
Teniendo en cuenta la tabla de costes del enunciado y la
tabla anterior, resulta la siguiente función objetivo que se
ha de minimizar:
z = 10x + 15y + 20 (10 − x − y ) + 15 ( 8 − x ) + 10 (8 − y ) + 10 ( −1 + x + y )
Operando y simplificando, se obtiene la función:
z = 390 − 15x − 5y
El problema de programación a resolver es:
Minimizar z = 390 − 15x − 5y
s.a.


y≤8

x + y ≤ 10


x+y ≥1

x ≥ 0, y ≥ 0 
x≤8
15
La región factible está delimitada por el polígono ABCDEF.
Los vértices de este polígono son los puntos A(1,0), B(8,0),
C(8,2), D(2,8), E(0,8) y F(0,1).
Como se trata de una región acotada, se calcula el valor de la
función objetivo en cada uno de los vértices:
Vértices
Valor de la función objetivo
z = 390 − 15x − 5y
A(1,0)
B(8,0)
C(8,2)
D(2,8)
E(0,8)
F(0,1)
375
270
260
320
350
385
Se observa que en el vértice C se minimiza la función
objetivo; por tanto, la solución es x = 8 , y = 2, es decir, las
cantidades a transportar son las que se recogen en la tabla
adjunta:
16
Mercancía
(en toneladas)
Almacén A
Almacén B
Mercado 1
Mercado 2
Mercado 3
8
0
2
6
0
9
Ejercicio
Para abastecer de madera a tres aserraderos, A1, A2 y A3,
hay dos bosques, B1 y B2, que producen 26 toneladas y 30
toneladas, respectivamente. Las necesidades de cada
aserradero son: 20, 22 y 14 toneladas, respectivamente. Si
los costes de transporte por tonelada de los bosques a los
aserraderos son, en cientos de euros, los que se indican en la
tabla adjunta, propón el transporte con el coste mínimo.
COSTE
Aserradero A1
Aserradero A2
Aserradero A3
Bosque B1
1
2
3
1
1
1
Bosque B2
Ejercicios: 13, 14, 15, 16 y 17 pág. 115,
19, 20, 21, 22, 23 y 24 pág. 116.
17
Descargar