formulación de modelos de programación lineal

Anuncio
INTRODUCCIÓN A LA
MODELACIÓN MATEMÁTICA
Y OPTIMIZACIÓN
Carlos Julio Vidal Holguín
UNIVERSIDAD DEL VALLE
FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA INDUSTRIAL Y ESTADÍSTICA
1. FORMULACIÓN DE MODELOS DE
PROGRAMACIÓN LINEAL
1.1. ORÍGENES Y ANTECEDENTES HISTÓRICOS
La Programación Lineal (PL) es una de las técnicas de la investigación de
Operaciones. Muchos autores consideran que ha sido uno de los más importantes avances
científicos del presente siglo y, de hecho, su gran aplicación y la magnitud de todos los
problemas que ha resuelto, así lo confirman. Mediante la utilización de la PL se han
logrado ahorros millonarios en las organizaciones que la han aplicado.
Los orígenes de la PL se remontan hacia la década del 40, cuando el economista
Leontief desarrolla el método de análisis insumo-producto. En 1947, Stigler plantea el
conocido “problema de la dieta”, el cual trataba de buscar la combinación de alimentos más
barata, que permitiera a la persona tener los requerimientos mínimos de proteínas,
vitaminas, minerales, carbohidratos, etc. Y es en este mismo año cuando el Dr. George
Dantzig concluye su desarrollo del método simplex de solución de problemas de PL. Sin
este método la PL nunca hubiera tenido el desarrollo y la aplicación desde 1950 hasta
nuestros días. Sin embargo, el método simplex tampoco hubiera sido tan útil sin la valiosa
ayuda de los computadoras digitales, los cuales permitieron resolver problemas de gran
magnitud rápida y eficientemente (en un estudio realizado por la IBM se concluyó que
aproximadamente el 25% del tiempo de computador se dedica a cálculo de PL y sus afines).
El método simplex se ha venido aplicando aproximadamente desde 1950 y su
utilización actual es extensa, aunque todavía existen problemas de tal magnitud, los cuales
son muy difíciles de resolver incluso con las capacidades computacionales que existen
actualmente, debido precisamente a su tamaño y al tiempo de computador que se utilizaría
en ellos. Uno de estos problemas son los de las compañías aéreas, los de las refinerías de
petróleo y los de optimización de cadenas de suministro, los cuales normalmente tienen un
alto número de variables y restricciones. Varios procedimientos especiales han sido
diseñados para estos problemas, los cuales generalmente descomponen el problema original
en una serie de subproblemas más fáciles de resolver. Igualmente, actualmente existen los
denominados algoritmos de punto interior, los cuales compiten con el método simplex en
algunos problemas y vienen implementados en el software especializado que resuelve
modelos de programación lineal.
1.2. NATURALEZA
LINEAL
DE
LA
PROGRAMACIÓN
La PL es la técnica de la Investigación de Operaciones más aplicada y mejor
conocida. Básicamente, la PL trata de buscar la mejor forma de asignar recursos limitados a
diferentes actividades competidoras.
Las organizaciones disponen de diversos recursos (humanos, económicos, tecnológicos,
etc.), los cuales son necesariamente limitados, debido a su naturaleza. Las formas en que se
pueden distribuir y utilizar estos recursos son múltiples y diversas. Pero no todas ellas
proporcionan beneficios a la organización. Sólo una o unas pocas brindarán el máximo
beneficio a la organización. Son precisamente estas soluciones óptimas las que pueden
encontrar las técnicas basadas en la PL.
Lo expuesto anteriormente brinda una idea muy general de lo que busca la
programación lineal. Esta idea debe enmarcarse en un contexto más definido. Primero, la
palabra programación se refiere a la planeación de recursos y no a algo relacionado con la
programación de computadores. Segundo, el término lineal hace referencia a la naturaleza
de las variables, sus relaciones y las funciones que utiliza la programación lineal. Ellas
deben ser, como su nombre lo indica, lineales. Más adelante se estudiarán los supuestos
básicos que hacen que un problema se pueda clasificar como lineal.
En los problemas que resuelve la PL debe existir primeramente un objetivo buscado
por la organización. Este objetivo debe ser cuantificado por medio de una función objetivo
lineal, la cual debe definirlo claramente. Ejemplos típicos de funciones objetivos son los de
maximización de utilidades, minimización de costos, minimización de tiempos y
maximización de probabilidades de éxito. Para definir claramente el objetivo buscado,
deben identificarse con antelación las actividades que la organización puede desarrollar,
representadas en las variables de decisión del problema.
Una vez definidas las actividades y la función objetivo, se pasa a estudiar las
restricciones del sistema, las cuales son el reflejo de los recursos limitados de que se
dispone. El desarrollo de cada actividad consumirá parte de los recursos y la cuantificación
total de la contribución de todas las actividades conformará las restricciones del sistema.
Estas restricciones se expresan como funciones matemáticas lineales de igualdad o
desigualdad.
Una vez obtenidos la función objetivo y el cuerpo de restricciones, se pasa a la
solución del modelo, si ésta existe, y a su análisis correspondiente. En PL es más
importante la obtención del modelo que la solución del mismo, excepto en el caso de que
existan condiciones especiales o en problemas de gran tamaño, donde la solución se vuelve
dificultosa. Esto se explica porque actualmente la solución de grandes problemas de PL
puede hacerse en forma muy eficiente utilizando el método simplex. Los problemas de PL
son tipo P, ya que se conocen algoritmos polinomiales para resolverlos. Curiosamente, se
conocen problemas para los cuales el algoritmo simplex corre en tiempo exponencial. Sin
embargo, en la práctica nunca se ha observado este comportamiento del método simplex y
por ello sigue siendo tal vez el método más eficiente de solución de problemas de
programación lineal.1
Existen, por ejemplo, un gran número de procedimientos que resuelven
subproblemas de PL miles de veces en forma eficiente. Por ejemplo, como se analizará más
1
Para mayores detalles sobre esta discusión, consultar Chvátal (1983), Capítulo 4, pág. 45–52.
adelante, la solución de problemas de programación entera mediante las técnicas de
ramificación y acotamiento requiere de la solución de un gran número de subproblemas de
programación lineal continúa.
La obtención del modelo se basa en la observación cuidadosa del sistema bajo
estudio. Este paso es fundamental para que los resultados eventuales del modelo tengan
validez.
1.3. SUPOSICIONES DE LOS
PROGRAMACIÓN LINEAL
MODELOS
DE
Las condiciones básicas que deben cumplirse para que tanto la función objetivo
como cada una de las restricciones sean de naturaleza lineal son la proporcionalidad y la
aditividad. Ellas se explican a continuación.
1.3.1. Proporcionalidad
La proporcionalidad expresa básicamente que si una unidad de la actividad i cuesta
$a y gasta b unidades del recurso j, entonces xi unidades de la misma actividad costarán
$axi y consumirán bxi unidades del recurso j. Esto debe ser válido para cualquier actividad i
y para cualquier recurso j, de tal forma que el modelo obtenido sea lineal. La
proporcionalidad debe, por lo tanto, existir en todas las restricciones y en la función
objetivo.
Este no es el caso más común en la realidad. Sin embargo, dentro de ciertos rangos
normales de operación de los sistemas, existe comúnmente la proporcionalidad. Fuera de
estos rangos es probable que haya que utilizar otras técnicas, tales como la programación
no-lineal.
1.3.2. Aditividad
El hecho de que exista la proporcionalidad para todas las actividades no garantiza
que todas las funciones sean lineales, ya que puede existir cierto grado de dependencia
entre las actividades, lo que ocasionaría la aparición de no-linealidades. Lo que plantea la
aditividad, por lo tanto, es que las contribuciones de cada actividad a la función objetivo y a
las restricciones sean independientes de otras actividades.
A manera de ilustración, supóngase que una empresa produce los artículos A y B,
los cuales producen utilidades unitarias de $30/unidad y $20/unidad, respectivamente, e
independientemente de las cantidades que se produzcan. Así, la función objetivo se
escribiría como:
= 30
+ 20
[$]
(3.1)
Donde XA y XB son las cantidades a producir de A y B, respectivamente. Obsérvese,
primero, que el supuesto de proporcionalidad está implícito en la función objetivo (3.1).
Además, las contribuciones de cada actividad, XA y XB, son independientes entre sí.
Supóngase ahora que el hecho de producir una mayor cantidad del artículo B, hace
que los costos de producción del artículo A se incrementen. Así, por ejemplo, la utilidad
unitaria del artículo A se vería disminuida mediante cierto factor y podría expresarse como
$(30 – 0.0001XB)/unidad. La función objetivo sería por lo tanto:
= (30 – 0.0001
)
+ 20
[$]
(3.2)
Claramente, al aparecer el producto cruzado XAXB, la función objetivo deja de ser
lineal, convirtiéndose en una función cuadrática de manejo dificultoso.
Cabe la pregunta de por qué la PL se utiliza tan ampliamente si estos supuestos casi
nunca se cumplen en la práctica?
Una respuesta simple es que afortunadamente las no-linealidades de la práctica en la
mayoría de los casos pueden adaptarse, transformarse o asumirse como lineales dentro de
cierto rango de validez. A medida que se vayan desarrollando los modelos típicos se verá
que realmente la suposición de linealidad es razonable en la mayoría de los casos
analizados.
1.3.3. Certeza y Divisibilidad
Algunos autores hablan de otros dos supuestos, la certeza y la divisibilidad (Ver
Hillier y Lieberman (1997)). La divisibilidad se aplica fundamentalmente a problemas de
números enteros. Existen muchos casos prácticos en los cuales las variables de decisión o
actividades sólo tienen significado físico si sus valores son enteros. Por ejemplo, si una
compañía de aviación está analizando cuántos aviones comprar de cierto tipo, es obvio que
una respuesta de 2.33 aviones no es satisfactoria y deberá darse una respuesta entera en su
lugar, la cual no necesariamente corresponde a alguno de los enteros vecinos. Para
problemas enteros se han desarrollado técnicas de solución especiales, las cuales se siguen
investigando actualmente. Una introducción a este tópico se presentará posteriormente.
La certeza, más que un supuesto, es una característica propia de los modelos de PL.
Se dice entonces que todos los valores de los parámetros que alimentan el modelo tienen
valores determinísticos, o sea que no se consideran como variables aleatorias. Una demanda
de un producto, por ejemplo, se obtiene como un valor promedio estimado, pero su
distribución probabilística propia no se considera en el modelo. En la mayoría de los casos
prácticos, ningún parámetro o variable puede considerarse determinístico. En la mayoría de
los casos, los parámetros y variables tienen un rango de validez entre los cuales pueden
oscilar sus valores y, por lo tanto, se constituyen en variables aleatorias cuya distribución
probabilística puede o no ser conocida. Actualmente están en investigación y desarrollo
técnicas de programación lineal estocástica y programación lineal con conjuntos difusos,
donde se consideran algunos parámetros de los modelos como variables aleatorias2.
Dado que el desarrollo de la programación lineal estocástica es muy incipiente, el
problema de la incertidumbre de los parámetros de los modelos de PL aún se resuelve de
una forma relativamente sencilla, haciendo uso de los análisis de sensibilidad.
Normalmente se obtiene la solución óptima utilizando los mejores estimados de los
parámetros y, posteriormente, se analizan los posibles efectos de su variación sobre la
solución óptima original. Si estos efectos no son significativos, no se justifica invertir
mayor esfuerzo, tiempo y dinero en su estimación más precisa. Si por el contrario, se
observa que el efecto de cambios pequeños en los valores de ciertos parámetros es
significativo, debe prestársele especial atención a su estimación más precisa y a su
posibilidad de cambio real en el sistema bajo estudio. Igualmente, existen otras tendencias
actuales tales como la combinación de modelos matemáticos con modelos de simulación3,
los cuales representan de una manera más fiel los sistemas y sus variabilidades, y otros
como el análisis de diversos escenarios aleatorios con la ayuda de modelos de
optimización4.
A continuación se presentan diversos ejemplos de formulación de modelos de
programación lineal. Cada uno de ellos analiza aspectos diferentes e introduce distintos
factores útiles para la formulación real de modelos aplicables en la práctica.
2
Ver, por ejemplo, Taha (1998), pág. 807.
Ver, por ejemplo, Hicks (1999).
4
Ver, por ejemplo, Escudero et al. (1999).
3
Descargar