Archivo

Archivo para la categoría ‘Investigación de Operaciones’

Modelos cuantitativos II – para ansiosos

Miércoles, 25 de noviembre de 2009 Sin comentarios

Vimos en la entrada Modelos cuantitativos una breve introducción a este tipo de modelos y planteamos un pequeño ejemplo de los mismos. No vimos la  solución al problema en dicha oportunidad, tan solo lo planteamos. En esta oportunidad, y haciendome trampa al solitario, no voy a hablar sobre la teoría tras la solución del problema sino que voy a ir directo a lo jugoso e interesante, el modelo matematico, o mejor dicho, un posible modelo matemático para hallar la solución del problema.

El modelo que a continuación presento está hecho en Glpk y lo probé en la vesión 4.25, pero asumo que dada la sencillez del modelo, cualquier otra versión más o menos reciente debería poder resolverlo sin problemas.

El modelo y su solución se reparten en tres archivos, el modelo propiamente dicho (ej1.mod), los datos de entrada (ej1.data) y la salida o solución  (ej1.sol). Archivos que a continuación se transcriben

El modelo – ej1.mod

/* Sets */
set PRODUCTO;
set PLANTA;

/* Parameters */
param Ganancia_por_lote { p in PRODUCTO };
param Horas_necesarias { p in PRODUCTO, h in PLANTA };
param Tiempo_disponible { h in PLANTA };

/* Decision variables */
var x { p in PRODUCTO } >= 0;

/* Objective function */
maximize z: sum {p in PRODUCTO } Ganancia_por_lote[p] * x[p];

/* Constraints */
s.t. supply { h in PLANTA }: sum { p in PRODUCTO } Horas_necesarias[p,h]*x[p] <= Tiempo_disponible[h];

end;

Datos de entrada – ej1.data

data; /* data section */

set PRODUCTO := puerta ventana;
set PLANTA := planta1 planta2 planta3;

param Horas_necesarias : planta1 planta2 planta3 :=
puerta    1 0 3
ventana 0 2 2;

param Ganancia_por_lote :=
puerta 3000
ventana 5000;

param Tiempo_disponible :=
planta1 4
planta2 12
planta3 18;

end;

Salida – ej1.sol

Problem:    ej1
Rows:       4
Columns:    2
Non-zeros:  6
Status:     OPTIMAL
Objective:  z = 36000 (MAXimum)

No.   Row name   St   Activity     Lower bound   Upper bound    Marginal
—— ———— — ————- ————- ————- ————-
1 z            B          36000
2 supply[planta1]
B              2                           4
3 supply[planta2]
NU            12                          12          1500
4 supply[planta3]
NU            18                          18          1000

No. Column name  St   Activity     Lower bound   Upper bound    Marginal
—— ———— — ————- ————- ————- ————-
1 x[puerta]    B              2             0
2 x[ventana]   B              6             0

La salida mostrada es parcial, ya que el solver da algunos datos más que no veremos en esta oportunidad. Las tres líneas marcadas en negro son las que más nos interesan. La primera de ellas nos dice cual es el valor óptimo alcanzado para la función objetivo, en este caso 36.000, es decir que esa será nuestra ganancia semanal dadas las condiciones y datos de entrada que se especificaron. Las otras dos líneas en negro nos muestran los valores que cada una de las variables debe tomar para alcanzar dicho valor. En este caso, se deberán producir dos lotes de puertas y 6 lotes de ventanas.

Si bien el ejemplo es sencillo es un ejemplo muy representativo de la realidad (a excepción del tamaño del problema) y es una interesante introducción a Glpk.

Modelos cuantitativos

Sábado, 21 de noviembre de 2009 1 comentario

Los modelos son representaciones idealizadas y parciales de una determinada realidad y se utilizan para estudiar aspectos de la misma, que de otra manera sería muy costoso en tiempo o dinero, inviable o hasta podría reñirse con la ética o aspectos morales.

En esta oportunidad vamos a centrarnos en un tipo particular de modelos, los modelos cuantitativos, los cuales tienen como característica fundamental de ser modelos que operan sobre cifras. Sus características principales son las siguientes:

  • son una descripción parcial, selectiva e idealizada de la realidad
  • operan sobre variables de decisión numéricas
  • arrojan sus resultados a través de funciones objetivos
  • los resultados no son absolutos y deben ser analizados en función de las hipótesis del modelo

Los modelos pueden ser utilizados en gran cantidad de situaciones, entre las que podemos mencionar las siguientes:

  • realización de predicciones
  • determinar el comportamiento de la realidad en distintas circunstancias
  • realizar simulaciones
  • validar o estudiar el impacto de cambios

El estudio de un modelo puede requerir de varias iteraciones para la confección y validación del mismo hasta alcanzar un estado de desarrollo satisfactorio. Una vez que el modelo es satisfactorio es de suma importancia la capacidad de quien analiza para evaluar los resultados de manera satisfactoria.

Veamos un ejemplo sencillo de un modelo cuantitativo (tomado del libro Investigación de Operaciones, Hillier – Lieberman, Séptima edición, pág 25)

Una empresa produce dos productos en tres plantas, teniendo plantas y productos las siguientes características:

  • La planta 1 hace marcos y molduras de aluminio
  • La planta 2 los marcos de madera
  • La planta 3 hace los trabajos en vidrio y el ensamblaje.
  • Producto 1: una puerta de vidrio de 8 pies con marco de aluminio – requiere de las plantas 1 y 3
  • Producto 2: una ventana de resbalón con marco de madera de 4×6 pies – requiere de las plantas 2 y 3

Objetivo: determinar la tasa de producción de cada producto para maximizar las utilidades

La siguiente tabla resume los restantes datos necesarios para la formulación del modelo:

Planta Prod 1 Prod 2 Tiempo disponible
1 1 0 4
2 0 2 12
3 3 2 18
Ganancia por lote 3.000 5.000

Para cada planta se da el tiempo de producción por lote necesario para cada producto y el tiempo total disponible en dicha planta. En la última fila se dan las ganancias por lote para cada uno de los productos.

El modelo

Sean:

x_1 =número de lotes del producto 1 fabricados por semana

x_2 =número de lotes del producto 2 fabricados por semana

Z =ganancia semanal total al producir éstos productos

Así x_1 y x_2 son las variables de decisión y utilizando la última fila de la tabla, llegamos a la siguiente función objetivo:

Z = 3x_1 + 5x_2

y las siguientes restricciones:

x_1 <= 4

2x_2 <= 12

3x_1 + 2x_2 <= 18

x_1 >= 0

x_2 >= 0

En esta oportunidad el énfasis está en la construcción del modelo. En alguna futura entrada veremos como resolver el problema.

Pronósticos para modelos de nivel constante

Viernes, 17 de julio de 2009 Sin comentarios

Los pronósticos son parte vital del negocio de muchísimas empresas y es algo que en Uruguay, muchas veces se hace a la vieja usanza, con la regla del ojo por ciento. Preguntas tales como ¿cuál va a ser la demanda de un producto durante la temporada? ¿cuántas piezas de repuesto se van a necesitar? ¿cuánto personal será necesario para atender a los clientes? son preguntas que pueden cambiar completamente la estructura y/o la economía de un negocio.  Estos pronósticos pueden ser tomados a la ligera y ser hechos meramente en base a la opinión de los experientes en el negocio, o pueden utilizarse algunas técnicas matemáticas para hacerlo.

Para fijar ideas, vamos a centrarnos en el problema de determinar la necesidad de un insumo específico en la producción, por ejemplo, tinta. Lo que pretendemos establecer es la necesidad futura de este insumo y como no hacemos futurología ni tenemos la bola de cristal, debemos basarnos para ello en los datos que sí tenemos, que son los valores de utilización pasada de dicho insumo. Es decir, en base al histórico de consumo, realizaremos un modelo que nos permita pronosticar que es lo que ocurrirá en el futuro.

Series de tiempo

Una serie de tiempo es un conjunto de observaciones de una variable aleatoria. Por ejemplo, si nuestra variable aleatoria es X_i y la misma fue observada en los tiempos i=1,2,3,...,n-1,n entonces el conjunto de observaciones delim{lbrace}X_1=x_1, X_2=x_2,X_3=x_3,...,X_{n-1}=x_{n-1},X_n=x_n {rbrace} es la serie de tiempo. El pronóstico en el tiempo t+1 será el valor de la función F_{t+1}

Métodos para modelos de nivel constante

Los métodos más simplistas para pronosticar la demanda X_{i+1} son:

  1. último valor
  2. promedio
  3. promedios móviles
  4. exponencial

1 – Este es el más simple de los métodos de pronóstico y considera el valor de la variable aleatoria F_{t+1}=X_t. Muy simple, pero útil únicamente en acotados casos.

2 – Pronostica como valor de la variable aleatoria F_{t+1} = sum {t=1}{t}{x_t /n}. Esta puede ser una buena estimación cuando se trata de un proceso muy estable o que cambia muy poco en el tiempo.

3 – Los promedios móviles solucionan, en parte, el hecho de que el proceso cambia en el tiempo y considera únicamente las últimas k observaciones, por lo que F_{t+1}=sum{t=t-k-1}{t}{x_t /k}. De esta forma, mejoramos el método anterior, aunque seguimos asignando el mismo peso relativo a las observaciones más viejas que a las más actuales.

4- El método exponencial o de suavizado exponencial, soluciona este problema introduciendo una constante de suavizado, alpha, 0<alpha<1 y calcula el nuevo valor de la variable aleatoria como F_{t+1}=alpha X_t+(1-alpha)F_{t}

Estos métodos  muestran el hecho fundamental de que los procesos son cambiantes y están sujetos a factores externos que deben ser tenidos en cuenta a la hora de realizar el modelo. Una de estos factores, el que suscita nuestro interés en este momento, es el factor estacional. Por ejemplo, las necesidades de nuestro insumo tinta, se verán afectadas por la demanda del producto, la cual tendrá grandes variaciones a lo largo del año si se trata por ejemplo de un juguete muy popular que verá incrementadas su ventas durante las festividades de reyes, día del niño y navidad. Este factor estacional hace que nuestra serie de tiempo viole la suposición de que el modelo es de nivel constante. Para poder utilizar estos métodos deberemos primero eliminar el factor estacional de nuestra serie de tiempo.

Supongamos que tenemos el histórico del consumo de tinta de los últimos cuatro años para cada trimestre del año y veamos como se calcula el factor estacional:

Trimestre Consumo Factor estacional Valores con ajuste
1 1280 1280/1457.5=0.878 1280/0.878=1457.8
2 1040 1040/1457.5=0.714 1040/0.714=1456.6
3 1520 1520/1457.5=1.043 1520/1.043=1457.3
4 1990 1990/1457.5=1.365 1990/1.365=1457.9

El promedio de consumo es 5830/4 = 1457.5

El factor estacional para cada trimestre se calcula como el cociente entre el promedio del trimestre y el promedio global de consumo. Utilizando este promedio, se ajustan los valores históricos, eliminando de esta manera el factor estacional.

Con estos nuevos valores ajustados podemos aplicar los métodos anteriormente descritos para el pronóstico de consumo del siguiente trimeste, valor que tendrá que ser multiplicado por el factor estacional correspondiente al trimeste pronosticado.

Queda para mas adelante el pronóstico en modelos que no son de nivel constante.