aplicaciones de la programación lineal

Anuncio
Aplicaciones de la Programación Lineal
APLICACIONES DE LA PROGRAMACIÓN LINEAL
Autores: Javier Faulin ([email protected]), Ángel A. Juan ([email protected]).
ESQUEMA DE CONTENIDOS___________________________________________
Finanzas
Asignación tareas
Aplicaciones
Prog. Lineal
Producción
Marketing
Otras decisiones
Mezclas
INTRODUCCIÓN
Logística
___________________
Después de estudiar detalladamente los conceptos básicos de Programación Lineal ubicados en
un contexto de aplicaciones de la Investigación Operativa en el mundo empresarial e industrial,
se hace preciso describir cómo es posible aplicar los conceptos anteriores en diferentes
situaciones prácticas. Este desarrollo de situaciones del mundo real constituye el auténtico
desarrollo de la programación lineal. No se tratan de meras aplicaciones, sino del campo
específico natural de desarrollo de la programación lineal. Sin casos prácticos como los que aquí
se van a desarrollar no se hubiera dado el auge real de esta técnica operacional. Por otra parte,
el conocimiento de aplicación de los principales conceptos de programación lineal permite
plantear la resolución de nuevos casos prácticos que surgen día a día en la Empresa, la Industria
y la Ingeniería.
De esta forma, el objetivo de este capítulo es mostrar el vasto número de problemas de la vida
real que pueden ser abordados mediante las técnicas de programación lineal. Presentaremos
aplicaciones a áreas tan diversas como dirección de la producción, investigación de mercados,
marketing, logística, finanzas, etc. En todos esos ámbitos, la programación lineal se revela como
herramienta insustituible en la toma de decisiones.
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
1
Aplicaciones de la Programación Lineal
OBJETIVOS
•
•
•
•
________________________
Conocimiento detallado de la Programación Lineal en el mundo real.
Conocimiento detallado de los principales problemas que resuelve la Programación Lineal.
Adquisición de habilidades para el planteamiento y resolución de nuevos casos reales.
Manejo del paquete LINDO en la resolución de casos reales.
CONOCIMIENTOS PREVIOS
___________________________________
Se recomienda haber leído los mathblocks de Introducción a la Investigación Operativa y de
Programación Lineal y Programación Lineal Entera con Excel y LINDO.
CONCEPTOS FUNDAMENTALES
______________________________
Programación lineal y método simplex:
Una vez se tiene un concepto general de lo que es la programación lineal, es importante
conocer la forma de actuación particular de los algoritmos que resuelven programas lineales.
De entre todos los algoritmos destaca por su importancia histórica y práctica el método
simplex. Dicho método fue desarrollado por Dantzig en 1947, alcanzando un éxito inusitado
en las décadas posteriores con el desarrollo de los computadores. El conocimiento básico de
dicho método ayuda a la comprensión de las diferentes formas de resolución de programas
lineales. Dicho método puede ser estudiado en alguno de los manuales que se presentan a
continuación: Hillier y Liebermann (2001) (Capítulos 4 y 5) o bien Winston (1994) (Capítulos 3
y 4). Por otra parte, el estudio de aplicaciones de la Programación Lineal es exhaustivo en los
textos de Hillier, Hillier y Liebermann (2000); Eppen et al.(1998); o bien de Anderson,
Sweeney y Williams (2001).
Clasificación de las aplicaciones de PL:
La Programación Lineal presenta un gran número de aplicaciones en multitud de ámbitos
empresariales, industriales, de gestión y en general, de toma de decisiones. En este
mathblock tan sólo se hace una exposición sucinta de las aplicaciones más clásicas. Sin
embargo, se aconseja al lector la consulta de los documentos de Internet siguientes:
http://www.fred.ifas.ufl.edu/courses/AEB5516/Lectures/blending.doc
http://dsc.gsu.edu/dscthw/Optimize/LP.PDF
En el primero se describen los problemas clásicos de mezclas y de la dieta, mientras en el
segundo se desarrolla un elenco de aplicaciones que sirven muy bien para completar los
casos aquí descritos. En otro orden de cosas, en el presente mathblock se van a desarrollar
campos de aplicación de la programación lineal en los ámbitos siguientes: Marketing,
Producción, Asignación de Tareas, Finanzas, Logística y Mezclas. Esta clasificación no es
exhaustiva: existen otros muchos campos de aplicación de la Programación Lineal que aquí
no aparecen citados, todos ellos relacionados con tomas de decisiones operativas y tácticas
en la gestión empresarial. En algún caso, también aparecen aplicaciones en tomas de
decisiones estratégicas.
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
2
Aplicaciones de la Programación Lineal
APLICACIONES DE LA PROGRAMACIÓN LINEAL EN MARKETING_______ __
SELECCIÓN DE MEDIOS PUBLICITARIOS
La Programación Lineal se utiliza en el campo del marketing y la publicidad como una
herramienta que nos permite determinar cuál es la combinación más efectiva de medios para
anunciar nuestros productos. En muchas ocasiones partiremos de un presupuesto para
publicidad fijo y nuestro objetivo será distribuirlo entre las distintas opciones que se nos ofrecen
(televisión, radio, periódicos, revistas, etc.) de forma que nuestros productos tengan la mayor
difusión posible. En otros casos, las restricciones no serán presupuestarias sino que vendrán
dadas por la disponibilidad de cada medio y por las políticas publicitarias de nuestra propia
empresa.
Supongamos, por ejemplo, que trabajamos para una cadena nacional de bingos, el director de la
cual nos otorga un presupuesto de 8.000 € por semana para publicidad. Este dinero debe
dedicarse a publicar anuncios en cuatro tipos de medios de difusión: TV, periódicos, y dos
emisoras de radio. Nuestro objetivo final no será otro que el de conseguir la mayor audiencia
posible. En el cuadro que se muestra a continuación se recoge información referente a la
audiencia esperada por anuncio, el coste del mismo, y el nº máximo de anuncios que es posible
insertar en cada medio por semana:
MEDIO
TV
Periódico
Radio 1
Radio 2
AUDIENCIA POR ANUNCIO
5.000
8.500
2.400
2.800
COSTE POR ANUNCIO (€)
800
925
290
380
Nº MÁXIMO POR SEMANA
12
5
25
20
Además, los acuerdos contractuales de nuestra empresa requieren la contratación al menos 5
anuncios de radio por semana, aunque la dirección insiste en no dedicar a este medio más de
1.800 € por semana. Usaremos LINDO para plantear y resolver este problema:
! SELECCIÓN DE MEDIOS
!
!
!
!
X1
X2
X3
X4
MAX
ST
X1
X2
X3
X4
=
=
=
=
"anuncios
"anuncios
"anuncios
"anuncios
en
en
en
en
TV por semana"
periódico por semana"
radio 1 por semana"
radio 2 por semana"
5000 X1 + 8500 X2 + 2400 X3 + 2800 X4
<= 12
<= 5
<= 25
<= 20
800 X1 + 925 X2 + 290 X3 + 380 X4 <= 8000
X3 +
X4 >=
5
290 X3 + 380 X4 <= 1800
END
GIN 4
LP OPTIMUM FOUND AT STEP
3
OBJECTIVE VALUE =
67240.3047
SET
SET
X1 TO <=
X4 TO <=
2 AT
0 AT
1, BND=
2, BND=
NEW INTEGER SOLUTION OF
66900.0000
BOUND ON OPTIMUM: 66900.00
0.6699E+05 TWIN= 0.6514E+05
0.6690E+05 TWIN= 0.6690E+05
AT BRANCH
2 PIVOT
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
27
31
31
3
Aplicaciones de la Programación Lineal
DELETE
X4 AT LEVEL
2
DELETE
X1 AT LEVEL
1
ENUMERATION COMPLETE. BRANCHES=
2 PIVOTS=
31
LAST INTEGER SOLUTION IS THE BEST FOUND
RE-INSTALLING BEST SOLUTION...
OBJECTIVE FUNCTION VALUE
1)
VARIABLE
X1
X2
X3
X4
ROW
2)
3)
4)
5)
6)
7)
8)
66900.00
VALUE
2.000000
5.000000
6.000000
0.000000
REDUCED COST
-5000.000000
-8500.000000
-2400.000000
-2800.000000
SLACK OR SURPLUS
10.000000
0.000000
19.000000
20.000000
35.000000
1.000000
60.000000
NO. ITERATIONS=
31
BRANCHES=
2 DETERM.=
DUAL PRICES
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
1.000E
0
Por tanto, la forma más efectiva de distribuir nuestro capital en base a las condiciones
preestablecidas, será emitiendo dos anuncios semanales en televisión, 5 en el periódico, y 6 en
la radio 1. Ello hará que unos 66.900 potenciales compradores conozcan nuestros productos.
ESTUDIOS DE MERCADO
La programación lineal es aplicable también a la investigación de mercados. En el siguiente
ejemplo se muestra cómo los estadísticos pueden hacer uso de la Programación Lineal a la hora
de diseñar encuestas:
Supongamos que pretendemos realizar una encuesta para determinar la opinión de los
españoles acerca del problema de la inmigración. A fin de que la misma sea significativa desde
un punto de vista estadístico, exigiremos que ésta deba cumplir los siguientes requisitos:
1. Entrevistar al menos un total de 2.300 familias españolas.
2. De las familias entrevistadas, al menos 1.000 deben cumplir que su cabeza de familia no
supere los 30 años de edad.
3. Al menos 600 de las familias entrevistadas tendrán un cabeza de familia con edad
comprendida entre los 31 y los 50 años.
4. El porcentaje de entrevistados que pertenecen a zonas con elevada tasa de inmigración no
debe ser inferior a un 15% del total.
5. Finalmente, no más de un 20% de los entrevistados mayores de 50 años pertenecerán a
zonas con alta tasa de inmigración.
Además, todas las encuestas deberán realizarse en persona. A continuación indicamos el coste
estimado de cada encuesta según la edad del encuestado y si procede o no de una zona con
una alta tasa de inmigración:
ZONA
Tasa de inmig. elevada
Tasa de inmig. baja
EDAD < 31 AÑOS
7.50 €
6.90 €
EDAD 31-50
6.80 €
7.25 €
EDAD > 50
5.50 €
6.10 €
Obviamente, nuestro objetivo será cumplir todos los requisitos anteriores minimizando el coste:
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
4
Aplicaciones de la Programación Lineal
! ESTUDIO DE MERCADO - ENCUESTA
! I3 = "nº encuestados de edad <= 30 y que viven en zonas de mucha inmigración"
! I4 = "nº encuestados de edad entre 31-50 que viven en zonas de mucha inmigración"
! I5 = "nº encuestados de edad > 50 que viven en zonas de mucha inmigración"
! N3 = "nº encuestados de edad <= 30 y que NO viven en zonas de mucha inmigración"
! N4 = "nº encuestados de edad entre 31-50 que NO viven en zonas de mucha inmigración"
! N5 = "nº encuestados de edad > 50 que NO viven en zonas de mucha inmigración"
MIN
7.50 I3 + 6.80 I4 + 5.50 I5 + 6.90 N3 + 7.25 N4 +6.10 N5
ST
I3 + I4 + I5 + N3 + N4 + N5 >= 2300
I3 +
N3
>= 1000
I4 +
N4
>= 600
I3 + I4 + I5 - .15 I3 - .15 I4 - .15 I5 - .15 N3 -.15 N4 - .15 N5 >= 0
I5 - .2 I5 - .2 N5 <= 0
END
GIN 6
LP OPTIMUM FOUND AT STEP
4
OBJECTIVE VALUE =
15166.0000
FIX ALL VARS.(
2)
WITH RC >
0.000000E+00
NEW INTEGER SOLUTION OF
15166.0000
AT BRANCH
BOUND ON OPTIMUM: 15166.00
ENUMERATION COMPLETE. BRANCHES=
0 PIVOTS=
4
0 PIVOT
4
LAST INTEGER SOLUTION IS THE BEST FOUND
RE-INSTALLING BEST SOLUTION...
OBJECTIVE FUNCTION VALUE
1)
VARIABLE
I3
I4
I5
N3
N4
N5
ROW
2)
3)
4)
5)
6)
15166.00
VALUE
0.000000
600.000000
140.000000
1000.000000
0.000000
560.000000
SLACK OR SURPLUS
0.000000
0.000000
0.000000
395.000000
0.000000
NO. ITERATIONS=
4
BRANCHES=
0 DETERM.=
1.000E
REDUCED COST
7.500000
6.800000
5.500000
6.900000
7.250000
6.100000
DUAL PRICES
0.000000
0.000000
0.000000
0.000000
0.000000
0
Así pues, deberíamos realizar la encuesta exclusivamente a 600 individuos del tipo I4, a 140 del
tipo I5, a 1.000 del tipo N3 y a 560 del tipo N5. Ello supondría unos costes estimados de 15.166
€.
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
5
Aplicaciones de la Programación Lineal
APLICACIONES DE LA PROGRAMACIÓN LINEAL EN PRODUCCIÓN______ __
COMBINACIÓN ÓPTIMA DE BIENES
A menudo las técnicas de PL permiten decidir sobre la cantidad más adecuada que una empresa
debe producir de cada uno de sus productos a fin maximizar los beneficios sin dejar de cumplir
con unos determinados requisitos (financieros, de demanda, contractuales, de disponibilidad de
materias primas, etc.).
Una empresa dedicada a la elaboración y venta de ropa para hombre produce cuatro tipos de
corbatas, una de seda, otra de poliester, y dos de poliester/algodón. La tabla siguiente muestra
el coste de cada uno de estos materiales y su disponibilidad:
MATERIAL
Seda
Poliester
Algodón
COSTE POR METRO (€)
21
6
9
METROS DISPONIBLES / MES
800
3.000
1.600
La empresa tiene contratos de larga duración para suministrar corbatas a cinco cadenas de
tiendas de ropa. En dichos contratos se especifica que la empresa deberá suministrar unas
cantidades mínimas mensuales de cada tipo de corbata y, que en caso de recibir una demanda
superior al mínimo, será la propia empresa la que decida si puede o no servir la cantidad extra
solicitada. A continuación aparecen los datos relevantes:
TIPO DE
CORBATA
Seda
Poliester
Algodón # 1
PRECIO DE
VENTA (€)
6.70
3.55
4.31
MÍNIMO A
SERVIR
6.000
10.000
13.000
DEMANDA
MENSUAL
7.000
14.000
16.000
METROS
NECESARIOS
0.125
0.08
0.10
Algodón # 2
4.81
6.000
8.500
0.10
COMPOSICIÓN
100% seda
100% poliester
50% poliester
50% algodón
30% poliester
70% algodón
El objetivo de la empresa es elegir el plan de producción que maximice sus beneficios
mensuales.
Lo primero en este problema será determinar qué beneficios nos reporta cada una de las
corbatas vendidas y fabricadas. Así por ejemplo, cada corbata de seda requiere de 0.125 metros
de este material, a un coste de 21 € por metro, lo que nos da un coste por corbata de 2.62 €.
Como la vendemos por 6.70 €, el beneficio que obtenemos será de 4.08 € por cada unidad
producida y vendida. El mismo razonamiento se aplicará a los restantes tres tipos de corbata,
con lo que obtendremos el siguiente planteamiento:
! COMBINACIÓN DE BIENES A PRODUCIR
!
!
!
!
S = "Nº corbatas de seda a producir"
P = "Nº corbatas de poliester a producir"
A1 = "Nº corbatas de algodón #1 a producir"
A2 = "Nº corbatas de algodón #2 a producir"
MAX
4.08 S + 3.07 P + 3.56 A1 + 4.00 A2
ST
.125 S
<= 800
.08 P + .05 A1 + .03 A2 <= 3000
.05 A1 + .07 A2 <= 1600
S
S
P
P
A1
A1
>=
<=
>=
<=
>=
<=
6000
7000
10000
14000
13000
16000
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
6
Aplicaciones de la Programación Lineal
A2 >=
A2 <=
6000
8500
END
GIN 4
Observar que la solución a nuestro caso será producir cada mes 6.400 corbatas de seda, 14.000
de poliéster, 16.000 de algodón #1, y 8.500 de algodón #2. Ello nos dará unos beneficios de
160.052 € por mes.
LP OPTIMUM FOUND AT STEP
2
OBJECTIVE VALUE =
160052.000
NEW INTEGER SOLUTION OF
160052.000
AT BRANCH
BOUND ON OPTIMUM: 160052.0
ENUMERATION COMPLETE. BRANCHES=
0 PIVOTS=
2
0 PIVOT
2
LAST INTEGER SOLUTION IS THE BEST FOUND
RE-INSTALLING BEST SOLUTION...
OBJECTIVE FUNCTION VALUE
1)
VARIABLE
S
P
A1
A2
ROW
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
160052.0
VALUE
6400.000000
14000.000000
16000.000000
8500.000000
REDUCED COST
-4.080000
-3.070000
-3.560000
-4.000000
SLACK OR SURPLUS
0.000000
825.000000
204.999985
400.000000
600.000000
4000.000000
0.000000
3000.000000
0.000000
2500.000000
0.000000
DUAL PRICES
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
NO. ITERATIONS=
2
BRANCHES=
0 DETERM.=
1.000E
0
PLANIFICACIÓN DE LA PRODUCCIÓN
El establecer un plan de producción para un período de semanas o meses resulta ser una tarea
difícil e importante en la mayoría de las plantas de producción. El director de operaciones debe
considerar muchos factores: mano de obra, costes de inventario y almacenamiento, limitaciones
de espacio, demanda, etc. Por lo general la mayoría de las plantas producen más de un bien,
con lo que la tarea anterior se complica aún más. Como veremos en el siguiente ejemplo, el
problema de la planificación se asemeja bastante al de la combinación óptima de bienes,
pudiendo ser el objetivo maximizar beneficios o bien minimizar los costes de producción más
almacenamiento.
La empresa Motores de Almazora, S.A. fabrica dos tipos de motores eléctricos los cuales vende
a la compañía Electrodomésticos Villareal, S.A. Tres veces al año, el director de compras de esta
última empresa envía a la primera un pedido que abarca los siguientes cuatro meses. A
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
7
Aplicaciones de la Programación Lineal
continuación se muestra una tabla con el pedido para el período enero-abril para cada modelo de
motor:
MODELO ENERO
ME3A
ME3B
800
1.000
FEBRERO
MARZO
ABRIL
700
1.200
1.000
1.400
1.100
1.400
La planificación de la producción en Motores de Almazora, S.A. debe considerar cuatro factores:
1. El deseo de producir el mismo nº de motores cada mes. Esto simplificaría la planificación y los
horarios de trabajadores y máquinas.
2. La necesidad de mantener lo más bajo posible los costes de estucos. Esto sugiere que en
cada mes se ha de ajustar la producción a lo estrictamente requerido en el mismo.
3. Limitaciones de almacenes, las cuales son de 3.300 unidades máximo de cada tipo.
4. La política de no despidos de la compañía, la cual garantiza que un mínimo de la capacidad
productiva estará en activo cada mes. Concretamente se asegura un nivel no inferior a las
2.240 horas mensuales de mano de obra, pudiéndose ampliar tal recurso hasta las 2.560
horas mensuales si fuese necesario.
Deberemos tener en cuenta que los costes de producción son de 10 € por unidad de ME3A y de
6 € por unidad de ME3B, si bien debido a un acuerdo con los sindicatos, éstos costes se
incrementarán en un 10% a partir del 1 de marzo. Además, cada motor de tipo ME3A que
permanezca en estoc supone un coste de 0.18 € por mes, mientras que almacenar uno de tipo
ME3B genera un coste de 0.13 € mensuales.
Por otro lado, se desea tener un inventario de seguridad de 450 ME3A y 300 ME3B a finales de
abril. Indicar finalmente que cada ME3A requerirá de 1.3 horas de mano de obra, mientras que
cada ME3B necesita de 0.9 horas.
TITLE PLAN DE PRODUCCIÓN
! XAi = "nº de ME3A producidos durante el mes i"
! XBi = "nº de ME3B producidos durante el mes i"
i=1,2,3,4
! IAi = "nº de ME3A en inventario al final del mes i"
! IBi = "nº de ME3B en inventario al final del mes i"
MIN
10XA1 + 10XA2 + 11XA3 + 11XA4 + 6XB1 + 6XB2 + 6.6XB3 + 6.6XB4 +
.18IA1 + .18IA2 + .18IA3 + .18IA4 + .13IB1 + .13IB2 + .13IB3 + .13IB4
! costes de producción y costes de inventario
ST
XA1 - IA1 = 800 ! demanda de enero
XB1 - IB1 = 1000
XA2 + IA1 - IA2 = 700! demanda de febrero
XB2 + IB1 - IB2 = 1200
XA3 + IA2 - IA3 = 1000! demanda de marzo
XB3 + IB2 - IB3 = 1400
XA4 + IA3 - IA4 = 1100! demanda de abril
XB4 + IB3 - IB4 = 1400
IA4 = 450
IB4 = 300
IA1 + IB1 <= 3300
IA2 + IB2 <= 3300
IA3 + IB3 <= 3300
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
8
Aplicaciones de la Programación Lineal
IA4 + IB4 <= 3300
1.3XA1 + .9XB1 >= 2240! mínimo uso de mano de obra en enero
1.3XA1 + .9XB1 <= 2560
1.3XA2 + .9XB2 >= 2240! mínimo uso de mano de obra en febrero
1.3XA2 + .9XB2 <= 2560
1.3XA3 + .9XB3 >= 2240! mínimo uso de mano de obra en marzo
1.3XA3 + .9XB3 <= 2560
1.3XA4 + .9XB4 >= 2240! mínimo uso de mano de obra en abril
1.3XA4 + .9XB4 <= 2560
END
GIN 16
El ejemplo anterior nos muestra la elaboración de un plan de producción relativamente sencillo
ya que sólo se consideran dos productos. Sin embargo, el mismo procedimiento usado aquí es
aplicable a planes de producción con decenas de productos y centenares de restricciones.
LP OPTIMUM FOUND AT STEP
13
OBJECTIVE VALUE =
76301.6172
SET
SET
SET
SET
SET
XA2
IB2
IA1
IB3
IA3
TO
TO
TO
TO
TO
<=
<=
<=
>=
>=
1138
0
476
2
757
AT
AT
AT
AT
AT
1,
2,
3,
4,
5,
BND=
BND=
BND=
BND=
BND=
-0.7630E+05
-0.7630E+05
-0.7630E+05
-0.7630E+05
-0.7630E+05
TWIN=-0.7630E+05
TWIN=-0.7630E+05
TWIN=-0.1000E+31
TWIN=-0.7630E+05
TWIN=-0.7630E+05
NEW INTEGER SOLUTION OF
76302.7188
AT BRANCH
5 PIVOT
BOUND ON OPTIMUM: 76301.62
FLIP
IA3 TO <=
756 AT
5 WITH BND=
-76302.602
SET
XA2 TO >= 1138 AT
6, BND= -0.7630E+05 TWIN=-0.1000E+31
SET
IA1 TO >=
476 AT
7, BND= -0.7630E+05 TWIN=-0.1000E+31
SET
IB1 TO <=
0 AT
8, BND= -0.7630E+05 TWIN=-0.1000E+31
SET
IB3 TO >=
3 AT
9, BND= -0.7630E+05 TWIN=-0.1000E+31
SET
IA3 TO >=
756 AT
10, BND= -0.7630E+05 TWIN=-0.7630E+05
...
...
...
48
51
55
58
65
65
65
65
65
66
68
...
...
...
OBJECTIVE FUNCTION VALUE
1)
VARIABLE
XA1
XA2
XA3
XA4
XB1
XB2
XB3
XB4
IA1
IA2
IA3
IA4
IB1
IB2
IB3
IB4
ROW
2)
3)
76301.87
VALUE
1270.000000
1144.000000
843.000000
793.000000
1010.000000
1192.000000
1399.000000
1699.000000
470.000000
914.000000
757.000000
450.000000
10.000000
2.000000
1.000000
300.000000
SLACK OR SURPLUS
0.000000
0.000000
REDUCED COST
10.000000
10.000000
11.000000
11.000000
6.000000
6.000000
6.600000
6.600000
0.180000
0.180000
0.180000
0.180000
0.130000
0.130000
0.130000
0.130000
DUAL PRICES
0.000000
0.000000
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
9
Aplicaciones de la Programación Lineal
4)
5)
6)
7)
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
8)
0.000000
0.000000
9)
10)
11)
12)
13)
14)
15)
16)
17)
18)
19)
20)
21)
22)
23)
0.000000
0.000000
0.000000
2820.000000
2384.000000
2542.000000
2550.000000
319.999908
0.000085
319.999908
0.000083
114.999924
205.000076
319.999908
0.000078
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
NO. ITERATIONS=
245
BRANCHES=
62 DETERM.=
1.000E
0
APLICACIONES DE LA PROGRAMACIÓN LINEAL A LA DISTRIBUCIÓN DE
TAREAS______ ________ ________ ________ ________ ________ _____
ASIGNACIÓN DE TRABAJOS
El objetivo aquí será asignar de la forma más eficiente posible un trabajo a cada empleado o
máquina. Ejemplos de este tipo de asignación serían la distribución de coches patrulla por las
calles de una ciudad o la destino de cada jefe de ventas a una determinada zona geográfica. El
objetivo puede ser bien minimizar los tiempos o costes de desplazamiento, o bien maximizar la
efectividad de las asignaciones.
Aparte de poder utilizar los algoritmos tradicionales (Simplex y Karmarkar), este tipo de
problemas también puede resolverse usando técnicas especialmente diseñadas para sus
características como el método húngaro, el cual necesita de menos iteraciones para dar con la
solución.
Una propiedad particular de los problemas de asignación es que tanto los coeficientes
tecnológicos cómo los términos independientes (right-hand-side) siempre toman el valor 1.
Además, todas las variables serán binarias, tomando el valor 1 si la asignación propuesta se
lleva a cabo y 0 en caso contrario.
Veamos un ejemplo:
Un gabinete de abogados tiene en su nómina cuatro hábiles licenciados en derecho a los cuales
quiere utilizar de forma óptima asignando a cada uno el caso que más se ajuste a sus
características. El 1 de marzo llegan a la compañía cuatro clientes en busca de asesoramiento, y
el director del gabinete decide asignar cada caso a cada uno de sus cuatro empleados según
sus especialidades y preferencias.
A continuación se muestra una tabla donde se estima la efectividad (valorada en una escala del
1 al 9) de cada trabajador para cada uno de los casos que presentan los clientes:
ABOGADO DIVORCIO
A1
6
FUSIÓN
EMPRESAS
2
ABSORCIÓN
EMPRESAS
8
EXHIBICIONISMO
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
5
10
Aplicaciones de la Programación Lineal
A2
A3
A4
9
4
6
3
8
7
5
3
6
8
4
4
Para resolver esta situación, consideraremos las variables Xij, donde i = 1, 2, 3, 4 según
abogado, y j = 1, 2, 3, 4 según caso. Así, la variable Xij tomará el valor 1 si el abogado i es
asignado al caso j, y 0 en caso contrario.
TITLE
MAX
DESPACHO DE ABOGADOS
6X11 + 2X12 + 8X13 + 5X14 + 9X21 + 3X22 + 5X23 + 8X24 +
4X31 + 8X32 + 3X33 + 4X34 + 6X41 + 7X42 + 6X43 + 4X44
! Maximizamos la efectividad total
ST
X11
X12
X13
X14
+
+
+
+
X21
X22
X23
X24
+
+
+
+
X31
X32
X33
X34
+
+
+
+
X41
X42
X43
X44
=
=
=
=
1
1
1
1
!
!
!
!
Caso
Caso
Caso
Caso
divorcio
fusión
absorción
exhibicionismo
X11
X21
X31
X41
+
+
+
+
X12
X22
X32
X42
+
+
+
+
X13
X23
X33
X43
+
+
+
+
X14
X24
X34
X44
=
=
=
=
1
1
1
1
!
!
!
!
Abogado
Abogado
Abogado
Abogado
1
2
3
4
END
INT 16 ! Todas las variables son binarias
LP OPTIMUM FOUND AT STEP
14
OBJECTIVE VALUE =
30.0000000
FIX ALL VARS.(
9)
WITH RC >
1.00000
NEW INTEGER SOLUTION OF
30.0000000
AT BRANCH
BOUND ON OPTIMUM: 30.00000
ENUMERATION COMPLETE. BRANCHES=
0 PIVOTS=
14
0 PIVOT
14
LAST INTEGER SOLUTION IS THE BEST FOUND
RE-INSTALLING BEST SOLUTION...
OBJECTIVE FUNCTION VALUE
1)
VARIABLE
X11
X12
X13
X14
X21
X22
X23
X24
X31
X32
X33
X34
X41
X42
X43
X44
ROW
2)
30.00000
VALUE
0.000000
0.000000
1.000000
0.000000
0.000000
0.000000
0.000000
1.000000
0.000000
1.000000
0.000000
0.000000
1.000000
0.000000
0.000000
0.000000
SLACK OR SURPLUS
0.000000
REDUCED COST
-6.000000
-2.000000
-8.000000
-5.000000
-9.000000
-3.000000
-5.000000
-8.000000
-4.000000
-8.000000
-3.000000
-4.000000
-6.000000
-7.000000
-6.000000
-4.000000
DUAL PRICES
0.000000
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
11
Aplicaciones de la Programación Lineal
3)
4)
5)
6)
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
7)
0.000000
0.000000
8)
9)
0.000000
0.000000
0.000000
0.000000
NO. ITERATIONS=
14
BRANCHES=
0 DETERM.=
1.000E
0
Queda claro pues que el abogado 1 se ocupará del caso de absorción empresarial, el abogado 2
del caso de exhibicionismo, el abogado 3 del caso de la fusión, y el abogado 4 del divorcio.
PLANIFICACIÓN DE HORARIOS
La planificación de horarios intenta dar una respuesta efectiva a las necesidades de personal
durante un período concreto de tiempo. La aplicación de la PL a este tipo de problemas resulta
especialmente útil cuando los directivos disponen de cierta flexibilidad a la hora de asignar tareas
a empleados polifuncionales. Un sector típico donde se hace uso de la PL para tomar decisiones
sobre planificación de horarios son las entidades bancarias.
Supongamos que una oficina bancaria necesita diariamente entre 10 y 18 cajeros en función de
la hora según se especifica en la tabla siguiente:
FRANJA
HORARIA
9 a.m. – 10 a.m.
10 a.m. – 11 a.m.
11 a.m. – 12 a.m.
12 a.m. – 1 p.m.
1 p.m. – 2 p.m.
2 p.m. – 3 p.m.
3 p.m. – 4 p.m.
4 p.m. – 5 p.m.
Nº DE CAJEROS
NECESARIOS
10
12
14
16
18
17
15
10
En la actualidad la oficina tiene 12 trabajadores a jornada completa (“full-time”), y dispone de
una larga lista de gente dispuesta a trabajar a media jornada (“part-time”). Un cajero que
trabaje a media jornada ha de estar operativo 4 horas al día, y estar disponible para comenzar
su trabajo a cualquier hora entre las 9 a.m. y la 1 p.m. Por su parte, los trabajadores a jornada
completa están operativos de 9 a.m. a 5 p.m., teniendo libre una hora para comer (la mitad de
ellos lo harán de 11 a.m. a 12 a.m. y la otra mitad de 12 a.m. a 1 p.m.). Observar que cada uno
de estos cajeros tiene una jornada semanal de 35 horas.
Las normas de la entidad limitan el número de horas realizadas por los “part-time” a, como
máximo, el 50% de las horas diarias requeridas. Los “part-time” ganan una media de 4 € la hora
(es decir, 16 € al día), por 50 € diarios que ganan los “full-time”. El banco pretende establecer un
horario que minimice sus costes salariales, estando dispuesto a desprenderse de algún
trabajador “full-time” si ello resulta conveniente.
TITLE
!
!
!
!
HORARIOS BANCO
F = "nº trabajadores full-time"
P1 = "nº trabajadores part-time operativos de 9 a.m. a 1 p.m."
P2 = "nº trabajadores part-time operativos de 10 a.m. a 2 p.m."
P3 = "nº trabajadores part-time operativos de 11 a.m. a 3 p.m."
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
12
Aplicaciones de la Programación Lineal
!
!
P4 = "nº trabajadores part-time operativos de 12 a.m. a 4 p.m."
P5 = "nº trabajadores part-time operativos de 1 p.m. a 5 p.m."
MIN
50 F + 16 P1 + 16 P2 + 16 P3 + 16 P4 + 16 P5
! Queremos minimizar los costes salariales
ST
F
F
.5F
.5F
F
F
F
F
+
+
+
+
P1
P1 + P2
P1 + P2 +
P1 + P2 +
+ P2 +
+
P3
P3 + P4
P3 + P4 +
P3 + P4 +
+ P4 +
+
P5
P5
P5
P5
>=
>=
>=
>=
>=
>=
>=
>=
10
12
14
16
18
17
15
10
! Necesidades de 9 a.m. a 10 a.m.
F <= 12
4P1 + 4P2 + 4P3 + 4P4 + 4P5 <= 56
! Los part-time harán a lo sumo el 50% de las horas
END
GIN 6
LP OPTIMUM FOUND AT STEP
8
OBJECTIVE VALUE =
724.000000
OBJECTIVE FUNCTION VALUE
1)
724.0000
VARIABLE
F
P1
P2
P3
P4
P5
ROW
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
VALUE
10.000000
0.000000
2.000000
7.000000
5.000000
0.000000
SLACK OR SURPLUS
0.000000
0.000000
0.000000
3.000000
6.000000
5.000000
0.000000
0.000000
2.000000
0.000000
NO. ITERATIONS=
8
BRANCHES=
0 DETERM.=
1.000E
REDUCED COST
50.000000
16.000000
16.000000
16.000000
16.000000
16.000000
DUAL PRICES
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
13
Aplicaciones de la Programación Lineal
APLICACIONES DE LA PROGRAMACIÓN LINEAL A LAS FINANZAS______ ___
SELECCIÓN DE UNA CARTERA DE VALORES
Un problema al que se tienen que enfrentar de forma habitual los directivos de bancos, fondos
de inversión, y compañías de seguros es la selección de una serie de inversiones concretas de
entre la gran variedad de alternativas existentes en el mercado. Por norma general, el objetivo de
estos directivos es maximizar los beneficios esperados de estas inversiones, las cuales se ven
sometidas a un conjunto de restricciones, algunas legales y otras provenientes de la propia
empresa (como puede ser el nivel de riesgo que se desea asumir o la cantidad máxima que se
permite invertir).
Supongamos que nuestro banco se dedica a invertir en créditos al consumo, bonos corporativos,
depósitos de oro, y préstamos a la construcción. Con el fin de diversificar la cartera de valores, la
Junta Directiva del banco ha puesto límite a las cantidades que se permiten invertir en cada una
de las opciones anteriores. En la actualidad disponemos de 5 millones de € para invertir, y
pretendemos: (1) Maximizar el interés esperado para los próximos seis meses, y (2) cumplir con
la diversificación propugnada por la Junta Directiva según se especifica en la tabla siguiente:
TIPO DE INVERSIÓN
INTERÉS
ESPERADO
Crédito al consumo
Bonos corporativos
Depósitos de oro
Préstamos a la
construcción
7%
11%
19%
15%
LÍMITE DE
INVERSIÓN
( MILLONES DE € )
1.0
2.5
1.5
1.8
Además, la Directiva requiere que al menos un 5% de los fondos se dediquen a depósitos de oro
y préstamos a la construcción, mientras que el porcentaje dedicado a créditos al consumo no
debe superar el 15%.
TITLE
!
!
!
!
X1
X2
X3
X4
MAX
ST
SELECCIÓN DE UNA CARTERA
=
=
=
=
"Cantidad
"Cantidad
"Cantidad
"Cantidad
invertida
invertida
invertida
invertida
en
en
en
en
créditos al consumo"
bonos corporativos"
depósitos de oro"
préstamos a la construcción"
.07 X1 + .11 X2 + .19 X3 + .15 X4
X1
X2
X3
X4
X3
X1
X1
<= 1000000
<= 2500000
<= 1500000
<= 1800000
+ X4 - .55X1 - .55X2 - .55X3 - .55X4 >= 0
- .15X1 - .15X2 - .15X3 - .15X4 >= 0
+ X2 + X3 + X4 <= 5000000
END
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
14
Aplicaciones de la Programación Lineal
LP OPTIMUM FOUND AT STEP
4
OBJECTIVE FUNCTION VALUE
1)
712000.0
VARIABLE
X1
X2
X3
X4
ROW
2)
3)
4)
5)
6)
7)
8)
VALUE
750000.000000
950000.000000
1500000.000000
1800000.000000
REDUCED COST
0.000000
0.000000
0.000000
0.000000
SLACK OR SURPLUS
250000.000000
1550000.000000
0.000000
0.000000
550000.000000
0.000000
0.000000
NO. ITERATIONS=
DUAL PRICES
0.000000
0.000000
0.080000
0.040000
0.000000
-0.040000
0.104000
4
APLICACIONES DE LA PROGRAMACIÓN LINEAL A LA LOGÍSTICA____ _____
El PROBLEMA DEL TRANSPORTE
El llamado problema del transporte se refiere al proceso de determinar el número de bienes o
mercancías que se han de transportar desde cada uno de los orígenes a cada uno de los
destinos posibles. El objetivo suele ser minimizar costes de transporte, y las restricciones vienen
dadas por las capacidades productivas de cada origen y las necesidades de cada destino. Este
tipo de problema es un caso específico de PL, por lo que existen métodos y algoritmos
especiales que facilitan su resolución (Regla de la Esquina NorOeste, Método de Vogel, Método
de Paso Secuencial, y Método de distribución modificada o MODI).
Una compañía de ámbito nacional produce y distribuye una línea de bicicletas de alta
competición. La empresa tiene líneas de montaje en dos ciudades, Castellón y Sabadell,
mientras que sus tres principales cadenas de distribución están localizadas en Madrid,
Barcelona, y Vitoria.
La oficina de Madrid presenta una demanda anual de 10.000 bicicletas, mientras que la de
Barcelona solicita 8.000 y la de Vitoria 15.000. La planta de Castellón puede producir hasta
20.000 bicicletas anuales, por 15.000 la de Sabadell. Los costes de transporte por unidad son los
siguientes:
ORIGEN
Castellón
Sabadell
Madrid
2€
3€
DESTINO
Barcelona
3€
1€
Vitoria
5€
4€
La compañía pretende establecer un plan de distribución que minimice sus costes anuales de
transporte.
TITLE
!
!
!
!
!
!
CM
CB
CV
SM
SB
SV
EL PROBLEMA DEL TRANSPORTE
=
=
=
=
=
=
"nº bicicletas a transportar desde Castellón hasta Madrid"
"nº
"
"
"
"
"
Barcelona"
"nº
"
"
"
"
"
Vitoria"
"nº
"
"
"
Sabadell
"
Madrid"
"nº
"
"
"
"
"
Barcelona"
"nº
"
"
"
"
"
Vitoria"
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
15
Aplicaciones de la Programación Lineal
MIN
ST
2 CM + 3 CB + 5 CV + 3 SM + 1 SB + 4 SV
CM + SM = 10000
CB + SB = 8000
CV + SV = 15000
CM + CB + CV <= 20000
SM + SB + SV <= 15000
END
GIN 6
LP OPTIMUM FOUND AT STEP
2
OBJECTIVE VALUE =
96000.0000
OBJECTIVE FUNCTION VALUE
1)
96000.00
VARIABLE
CM
CB
CV
SM
SB
SV
ROW
2)
3)
4)
5)
6)
VALUE
10000.000000
0.000000
8000.000000
0.000000
8000.000000
7000.000000
REDUCED COST
2.000000
3.000000
5.000000
3.000000
1.000000
4.000000
SLACK OR SURPLUS
0.000000
0.000000
0.000000
2000.000000
0.000000
DUAL PRICES
0.000000
0.000000
0.000000
0.000000
0.000000
NO. ITERATIONS=
2
BRANCHES=
0 DETERM.=
1.000E
0
APLICACIONES DE LA PROGRAMACIÓN LINEAL A MEZCLAS_ ______ _____
El PROBLEMA DE LA DIETA
Este problema representa una de las primeras aplicaciones de la PL, y comenzó a utilizarse en
los hospitales para determinar la dieta más económica con la que alimentar a los pacientes a
partir de unas especificaciones nutritivas mínimas. En la actualidad también se aplica con éxito
en el ámbito agrícola con la misma idea de encontrar la combinación óptima de alimentos que,
logrando un aporte nutritivo mínimo, suponga el menor coste posible.
Un centro de nutrición utiliza tres tipos de granos para elaborar un cereal natural que vende por
kilos. El eslogan del centro es que cada 125 gramos de su cereal, tomados con medio vaso de
leche entera, cubre las necesidades alimenticias de un adulto en cuanto a proteínas, hidratos de
carbono, fósforo y magnesio. El coste de cada tipo de grano y sus contenidos por kg. se reflejan
en la siguiente tabla:
GRANO
A
B
C
COSTE POR
KG.
0.33 €
0.47 €
0.38 €
PROTEINAS HIDRATOS C FÓSFORO MAGNESIO
(unidades/kg) (unidades/kg.) (unidades/kg) (unidades/kg)
22
16
8
5
28
14
7
0
21
25
9
6
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
16
Aplicaciones de la Programación Lineal
Los requisitos nutricionales mínimos por día para un adulto son 3 unidades de proteínas, 2 de
hidratos de carbono, 1 de fósforo, y 0.425 de magnesio. Se tratará pues de establecer la mezcla
adecuada de granos que logra cubrir estas necesidades con el mínimo coste para el centro.
TITLE PROBLEMA DE LA DIETA
!
!
!
XA = "kgs. grano tipo A que usaremos en 125 gramos de cereal"
XB = "kgs.
"
" B
"
"
"
cereal"
XC = "kgs.
"
" C
"
"
"
cereal"
MIN
.33 XA + .47 XB + .38 XC
ST
22
16
8
5
XA + 28 XB + 21 XC >= 3
XA + 14 XB + 25 XC >= 2
XA + 7 XB + 9 XC >= 1
XA
+ 6 XC >= .425
XA +
XB +
XC =
.125
END
LP OPTIMUM FOUND AT STEP
3
OBJECTIVE FUNCTION VALUE
1)
0.5075001E-01
VARIABLE
XA
XB
XC
ROW
2)
3)
4)
5)
6)
VALUE
0.025000
0.050000
0.050000
SLACK OR SURPLUS
0.000000
0.350001
0.000000
0.000000
0.000000
NO. ITERATIONS=
REDUCED COST
0.000000
0.000000
0.000000
DUAL PRICES
-0.390000
0.000000
0.000000
-0.440000
10.450000
3
Queda claro pues que la solución ideal será usar 25 gramos de grano tipo A, 50 de grano tipo B
y otros 50 de grano tipo C. Con ello logramos cumplir con nuestro eslogan al menor coste
posible.
BIBLIOGRAFÍA
______________________________________________
1) Anderson, D.R., Sweeney, D. J. y Williams, T.A. (2001): Quantitative Methods for Business. West
Publishing Company. (Existe versión en español).
2) Anderson, D.R., Sweeney, D. J. y Williams, T.A. (2000): An Introduction to Management Science.
Quantitative Approach to Decision Making. West Publishing Company. (Existe versión en español)
3) Anderson, D.R., Sweeney, D. J. y Williams, T.A. (1999): Contemporary Management Science with
Spreadsheets. International Thomson Publishing Company.
4) Camm, J. y Evans, J.R. (2000): Management Science and Decision Technology. South Western
College Publishing.
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
17
Aplicaciones de la Programación Lineal
5) Eppen, G.D., Gould, F.J., Schmidt, C.P., Moore, J.H., Weatherford, L.R. (1998): Introductory
Management Science. Decision Modeling with Spreadsheets. Upper Saddle River. (Existe versión
en español)
6) Hillier, F.S. y Liebermann, G.J. (2001): Introducción a la Investigación de Operaciones. Ed.
McGraw-Hill.
7) Hillier, F.S., Hillier, M.S. y Liebermann, G.J. (2000): Introduction to Management Science. A
Modeling and Case Studies Approach with Spreadsheets. Irwin-McGraw-Hill.
8) Lawrence, A.L. y Pasternack, B.A. (1998): Applied Management Science. A Computer Integrated
Approach for Decision Making. Ed. Wiley.
9) Moore, L.J., Lee, S.M. y Taylor, B.W. (1993): Management Science. Allyn and Bacon.
10) Taha, H.A. (1997): Operations Research. An Introduction. McMillan Publishing Company. (Existe
versión en español)
11) Winston, W. (1994): Investigación de Operaciones. Aplicaciones y Algoritmos. Grupo Editorial
Iberoamericano.
12) Winston, W. y Albright, S. C. (1997): Practical Management Science. Spreadsheet Modeling and
Applications. Duxbury Press.
ENLACES
___________________________________
http://www-fp.mcs.anl.gov/otc/Guide/CaseStudies/
Página web de ejemplos de aplicación de programación matemática.
http://www.statslab.cam.ac.uk/~rrw1/opt/diet_history.html
Historia del problema de la dieta.
http://www.e-optimization.com/directory/trailblazers/dantzig/interview_dietg.cfm
Cómo George Dantzig resolvió el problema de la dieta.
http://www.maths.abdn.ac.uk/~igc/tch/index/mx3503/notes/node14.html
Curso básico de Programación Lineal y temas afines de la Universidad de Aberdeen.
http://www.fred.ifas.ufl.edu/courses/AEB5516/Lectures/blending.doc
Ejemplos de mezclas y de dietas resueltos con Programación Lineal.
http://dsc.gsu.edu/dscthw/Optimize/LP.PDF
Artículo de 65 páginas con ejemplos clásicos de aplicación de la Programación Lineal.
http://www.pitt.edu/~jrclass/or/or-intro.doc
Artículo introductorio a la Investigación Operativa y sus aplicaciones.
http://www.kem.ae.poznan.pl/Books/Excel-Solver/T1/T1.htm
Tutorial sobre optimización con Excel-Solver.
http://www.faqs.org/faqs/linear-programming-faq/
Web dedicada a preguntas más comunes acerca de Programación Lineal.
http://carbon.cudenver.edu/~hgreenbe/courseware/LPshort/intro.html
Se trata de un curso breve de Programación Lineal.
Proyecto e-Math
Financiado por la Secretaría de Estado de Educación y Universidades (MECD)
18
Descargar