Cómo calcular Gráficamente el Precio Sombra de una Restricción

El Precio Sombra de una restricción en Programación Lineal indica cuánto cambia el valor de la función objetivo (óptimo) ante una variación marginal del lado derecho de una restricción. Se asume que el resto de los parámetros del modelo permanecen constantes. De antemano es conveniente señalar que el Precio Sombra puede ser positivo, cero o negativo y en el Blog iremos discutiendo estos distintos escenarios.

Para obtener los Informes de Sensibilidad de un modelo de Programación Lineal se puede hacer uso de herramientas computacionales como Solver de Excel, sin embargo, en esta oportunidad nos enfocaremos en el cálculo del precio sombra de una restricción en forma gráfica, lo que nos ayudará más adelante a entender los conceptos que fundamentan los resultados de Solver.

Cálculo del Precio Sombra de una Restricción con el Método Gráfico

A continuación calcularemos el precio sombra de una restricción del siguiente modelo de Programación Lineal:

Modelo de Programación Lineal

La solución óptima de este modelo es X=100 e Y=350 con valor óptimo V(P)=3.100 según su resolución gráfica con Geogebra o su resolución con Solver de Excel. El siguiente diagrama muestra la solución óptima obtenida gráficamente en el vértice C, que corresponde a la intersección de la restricción 1 (R1: color rojo) y la restricción 3 (R3: color gris), siendo ésta una solución básica factible óptima.

Resolución Gráfica Programación Lineal

Supongamos que deseamos saber cuánto cambiará el valor óptimo (respecto a su valor actual) si aumenta en una unidad el lado derecho de la restricción 1 pero sin resolver nuevamente el problema. El precio sombra nos permite dar respuesta a dicha interrogante y permite anticipar el nuevo valor óptimo ante una variación marginal del lado derecho de una restricción.

Un variación marginal de un lado derecho implica que la nueva solución óptima se seguirá encontrando con las actuales restricciones activas, es decir, aquellas que se cumplen en igualdad en el óptimo (esto es se conserva la base óptima).

En el caso de la restricción 1 si aumentamos su lado derecho, ésta se desplazará en forma paralela hacia arriba. Si buscamos garantizar que la nueva solución óptima aún se encontrará con R1 y R3 activas llegaremos al vértice donde actualmente se interceptan la R2 y R3 que corresponde a la coordenada X=166,67 e Y=350 (ésta será la máxima variación).

En forma análoga si disminuimos el lado derecho de la restricción 1 y buscamos mantener R1 y R3 activas en el nuevo óptimo, el último punto donde se garantiza esto es el vértice B cuyas coordenadas son X=0 e Y=350 (ésta será la menor variación). Con esta información calculamos el precio sombra de la restricción 1:

Precio Sombra R1

Este precio sombra es válido si el lado derecho de la restricción 1 (actualmente b1=1.600) varía entre [1.400,1.733,33]. Por ejemplo, si el lado derecho de R1 aumenta de 1.600 a 1.700 el nuevo valor óptimo será V(P)=3.100+100*1,5=3.250. Análogamente si el lado derecho de R1 disminuye de 1.600 a 1.550 el nuevo valor óptimo será V(P)=3.100-50*1,5=3.025. (Se recomienda corroborar estos resultados gráficamente con TORA o IORTutorial). Notar que si la variación del lado derecho de la restricción 1 está por fuera del intervalo [1.400,1.733,33], no se puede utilizar el precio sombra para predecir cuál será el nuevo valor óptimo.

En un próximo análisis complementaremos el cálculo del precio sombra de las restricciones 2 y 3 en conjunto con otros Análisis de Sensibilidad en la resolución de modelos de programación lineal. Hasta entonces!

Preguntas Frecuentes (Procesos): Capacidad, Tiempo de Flujo, Tiempo de Ciclo

Para desarrollar un análisis cuantitativo de procesos productivos (proceso de transformación de insumos en productos o servicios) generalmente se hace referencia a indicadores de gestión que permiten evaluar el desempeño y eficiencia de dicho proceso en el tiempo. Algunos de los indicadores más utilizados son capacidad, tiempo de flujo y tiempo de ciclo. A continuación los definimos brevemente para luego aplicarlos a un ejemplo tipo:

  • Capacidad de un Proceso: corresponde a la tasa máxima de producción, es decir, cuántas unidades en un intervalo de tiempo un proceso (sistema) puede producir.

  • Tiempo de Flujo: es el tiempo de producción, es decir, es el tiempo mínimo total que una unidad se demora en pasar por el sistema.

  • Tiempo de Ciclo: es el tiempo promedio entre la producción de dos unidades consecutivas.

A continuación presentaremos un proceso de producción sencillo de fabricación de muebles.

Proceso Paralelo

Las siguientes preguntas frecuentes nos permitirán entender mejor los conceptos relacionados con los procesos productivos:

1. ¿Si se dobla la capacidad de la actividad cuello de botella entonces se doblará la capacidad del proceso?.

Falso. Esto no es cierto en todos los casos. En nuestro ejemplo la actividad cuello de botella es Pintar y su capacidad es de 10[u/hora] (recordar que la capacidad conjunto de las etapas Ensamblar es de 13,5[u/hora]). Si doblamos la capacidad de Pintar su nueva capacidad será ahora 20[u/hora] y ahora el cuello de botella es Pulir. La nueva capacidad del proceso es de 12[u/hora] lo que no es el doble de la capacidad original.

2. ¿En una hora de trabajo se producirán exactamente las unidades que indica la capacidad del proceso?.

Falso. De otra forma en la primera hora de trabajo no se alcanzan a producir las 10[u/hora] que indica la capacidad del proceso. ¿Por qué?. La razón es que la(s) primera(s) unidad(es) se demoran más que las unidades cuando el proceso se encuentra estabilizado. Por ejemplo, la primera unidad sale del sistema a los 19[min] (tiempo de flujo), la segunda unidad sale a los 26[min] (7 minutos después de la primera), la tercera, cuarta, quinta, etc, unidades salen cada 6[min] (tiempo de ciclo) lo que permite anticipar que las unidades que sigan saldrán en promedio cada 6[min]. La Carta Gantt a continuación permite visualizar el proceso en su primera hora donde queda de manifiesto que no se alcanzan a procesar en forma completa las 10 unidades.

Carta Gantt Proceso

3. ¿Cómo determinar entonces cuántas unidades completas se alcanzan a procesar en la primera hora de trabajo?.

Para ello utilizamos la siguiente fórmula:

T(N)=TF+(1/Cap)*(N-1)

En nuestro ejemplo: 60[min]=19[min]+6[min/u]*(N-1) ==> N=7,833[u] ~ 7[u]

Es decir, se alcanzan a producir en forma completa 7 unidades en la primera hora. Notar que esto no contradice la capacidad del proceso. Si tomamos un horizonte de tiempo más amplio (2 horas, 3 horas, etc) la cantidad de unidades que se puedan procesar en promedio en una hora convergerá a la capacidad del proceso que es de 10[u/hora]. El motivo de lo anterior es que cada vez el efecto de las primeras unidades (hasta la estabilización del proceso) es menor.

Regla de Johnson en la Programación de n Trabajos en 2 Máquinas

Una de las variantes de la Programación de Tareas es la asignación de 2 máquinas al procesamiento de n trabajos siguiendo un orden común. Una estrategia a aplicar es la Regla o Método de Johnson con el objetivo de minimizar el tiempo requerido para finalizar los n trabajos en el taller de trabajo (conocido también como makespan).

El Método de Johnson considera los siguientes pasos:

  1. Se anota el tiempo de operación de cada trabajo en ambas máquinas.
  2. Se elige el tiempo más breve.
  3. Si el tiempo breve es para la primera máquina, se hace el primer trabajo; si es para la segunda máquina, se hace el trabajo al último. En caso de empate (igualdad de tiempo) se hace el trabajo en la primera máquina.
  4. Repetir los pasos 2 y 3 con los restantes trabajos hasta completar la programación.

Ejemplo Método de Johnson

A continuación se presenta un ejemplo que considera 7 trabajos a programar en 2 máquinas. Para que un trabajo sea terminado debe pasar primero por la máquina A y luego por la máquina B. Nos interesa aplicar la Regla de Johnson para generar una asignación que tenga asociado el menor tiempo posible (en minutos) en procesar los 7 trabajos:

Tabla Regla de Johnson

Paso 1: Listo. Tiempos de procesamiento disponibles en la tabla.

Paso 2, 3 y 4: Se elige el tiempo más breve (Trabajo 4 Máquina B). Como el tiempo más breve es en la segunda máquina, el Trabajo 4 se hace al final. El siguiente tiempo más breve es en el Trabajo 7 Máquina A y se programa en primer lugar. Luego el Trabajo 6 y 1 tienen el tiempo más breve que sigue (10), sin embargo, dado el empate se hace el trabajo en la Máquina A y por tanto se programa el Trabajo 6 en segundo lugar. Ahora tomamos el Trabajo 1 y siendo su menor tiempo en la Máquina B se programa en penúltimo lugar. Sigue el Trabajo 2 el cual se programa en tercer lugar. Posteriormente el Trabajo 3 en antepenúltimo lugar y finalmente el Trabajo 5 en cuarto lugar.

La secuencia óptima luego de aplicar la Regla de Johnson sería: 7-6-2-5-3-1-4. Luego, para determinar el tiempo requerido para completar los 7 trabajos se puede construir una Carta Gantt que muestre dicha planificación. El tiempo requerido es de 119 minutos (makespan).

Carta Gantt Johnson

El software WINQSB entre sus distintas aplicaciones nos permite generar una programación de los trabajos siguiendo el Método de Johnson según se muestra en el siguiente tutorial:

Problema de Asignación en Programación Entera resuelto con Solver

Cuando necesitamos asignar recursos escasos a determinadas funciones y dichos recursos no son fraccionables, la utilización de modelos de Programación Entera resultan ser de utilidad para la toma de decisiones. En este contexto los problemas de asignación de personal a determinadas tareas es una aplicación típica de la Programación Entera que a continuación desarrollaremos a través de un ejemplo.

Problema de Asignación

Consideremos una empresa que dispone de 5 ingenieros que deben desarrollar 7 proyectos. La tabla a continuación resume el tiempo que demora cada ingeniero (en horas) en completar un determinado proyecto. El problema consiste en determinar una asignación óptima que permita realizar cada uno de los proyectos con la limitante que por motivos estratégicos cada ingeniero debe desarrollar al menos un proyecto y en ningún caso hacer más de 2 proyectos. Por supuesto se busca que el tiempo requerido para realizar los 7 proyectos sea el menor posible.

Tabla Asignación

Una alternativa sería buscar intuitivamente una asignación que cumpla con los requisitos de la empresa y tenga un bajo tiempo asociado. Sin embargo, este tipo de estrategias de resolución queda claramente acotada a problemas de tamaño menor y ni siquiera en ese tipo de situaciones nos asegura la mejor solución posible. Por ello definiremos el siguiente modelo de optimización de Programación Entera:

1. Variables de Decisión: Utilizamos las siguientes variables de decisión binarias

Variables de Decisión Asignación

2. Función Objetivo: Minimizar el tiempo total requerido para completar los proyectos

Función Objetivo Asignación

Donde Tij (parámetros) es el tiempo (en horas) requerido por el ingeniero i en realizar el proyecto j. Por ejemplo T(A,P5)=7.

3. Restricciones:

Cada proyecto debe ser realizado por un solo ingeniero:

Restricción Asignación

Cada ingeniero debe ser al menos un proyecto y no puede hacer más de 2:

Restricción Asignación Ingenieros

El siguiente tutorial muestra cómo resolver este problema de asignación con Solver de Excel:

Se puede observar que para efectos de Solver, las variables de decisión binarias se deben definir como una restricción adicional. También puede resultar que luego de resolver Solver no encuentre inmediatamente la mejor solución posible. Para enfrentar esta situación se puede “volver a resolver” sobre la solución que el programa nos haya proporcionado hasta el momento para verificar si se puede lograr algo mejor. Esta situación es la que sucedió en el tutorial y a continuación se muestra la solución óptima (final) encontrada por Solver.

Solución Óptima Problema de Asignación

En total se requieren 56 horas para realizar los 7 proyectos. El ingeniero A realiza el P7, el ingeniero B el P3 y P5, el ingeniero C el P6, el ingeniero D el P2 y P4 y el ingeniero E el P1. Notar que cada proyecto es realizado por un ingeniero y cada ingeniero al menos realiza un proyecto, pero no más de 2 proyectos.

Probabilidad de terminar un Proyecto en un tiempo determinado con PERT

Cuando se utiliza el método PERT (Program Evaluation and Review Technique) uno de los principales objetivos es considerar la incertidumbre en el tiempo de duración de cada una de las actividades de modo de poder estimar la probabilidad de completar el proyecto en un tiempo determinado. Este tipo de análisis resulta de bastante utilidad en aplicaciones prácticas dado que se entiende que en todo Proyecto existen imprevistos o circunstancias que pueden afectar la duración de una actividad y su impacto se puede traspasar al inicio o termino de otras actividades.

Probabilidad de completar un Proyecto en un tiempo determinado utilizando PERT

Para introducir este concepto consideraremos nuevamente nuestro ejemplo de un proyecto que consta de 9 actividades y que contempla las siguientes secuencias y tiempos estimados para cada uno de sus 3 escenarios:

Tiempo esperado PERT

Luego de obtener la duración del proyecto utilizando la Metodología de PERT y el software WINQSB, se determina que el tiempo estimado para completar el proyecto es de 21,5 semanas y las actividades de la ruta crítica son D-F-G. El paso siguiente es determinar la sumatoria de las varianzas de las actividades que pertenecen a la ruta crítica. La varianza se obtiene como:

Varianza Actividades

Donde b es el tiempo pesimista y a es el tiempo optimista. La siguiente tabla muestra el cálculo de la varianza redondeando a 5 decimales (decisión arbitraria para efectos de desarrollar el ejemplo). Se ha marcado con verde las actividades de la ruta crítica para las cuales en la celda H13 se ha calculado la suma de sus varianzas.

Varianza para PERT

Consideremos ahora que para este proyecto nos interesa calcular la probabilidad de poder terminarlo en 23 semanas o menos. Para ello desarrollamos el siguiente procedimiento que nos indica que dicha probabilidad es un 86,86%:

Probabilidad PERT

Esta probabilidad también se puede obtener con la función de Excel: =DISTR.NORM.ESTAND(1,12)

El siguiente tutorial muestra cómo calcular la probabilidad de terminar el proyecto en 23 semanas o menos utilizando WINQSB. Notar que el resultado es levemente diferente sólo por efecto de aproximación: