Cambio en el Lado Derecho de las Restricciones (Programación Lineal)

El vector del lado derecho asociado a las restricciones de un modelo de Programación Lineal puede tener distintas interpretaciones prácticas como, por ejemplo, la disponibilidad de insumos para la fabricación de determinados productos, limitantes de capacidad, requisitos de demanda, entre otros.

En consecuencia resulta de interés analizar el impacto del cambio de uno o varios coeficientes del vector de lado derecho sobre los resultados originales del modelo sin la necesidad de reoptimizar, es decir, sin que tener que resolver nuevamente un modelo que incorpore los cambios propuestos.

En este contexto, si en particular se verifica que:

vector-xb

Se puede afirmar que se conserva la actual base óptima. Lo anterior implica que las variables básicas del modelo lo seguirán siendo bajo este nuevo escenario y por tanto la nueva solución óptima del problema se podrá encontrar a través de la resolución del mismo sistema de ecuaciones original (se conservan las restricciones activas originales).

Ahora bien, si alguno de los coeficientes en el cálculo del vector de variables básicas adopta un valor negativo, estamos frente a una solución básica infactible, lo que nos obliga a realizar una actualización de los resultados del modelo para encontrar la nueva solución, base óptima y valor óptimo, pero que no pase por la reoptimización del mismo.

Consideremos el siguiente modelo de optimización:

Modelo de Programación Lineal

Al resolver este modelo de Programación Lineal con el Método Simplex se alcanza la siguiente tabla final, donde s1, s2 y s3 son las variables de holgura de las restricciones 1, 2 y 3, respectivamente:

Tabla Optima Metodo Simplex

Las variables básicas son x=100, s2=400, y=350, donde todas satisfacen las condiciones de no negatividad (es decir es una solución básica factible) y además el costo reducido de las variables no básicas (s1 y s3) son mayores o iguales a cero, condición necesaria y suficiente junto a lo anterior para garantizar que nos encontramos frente a la solución óptima del problema (solución básica factible óptima).

Adicionalmente y en relación a la proposición anterior se pueden corroborar los resultados obtenidos:

calculo-xb

Consideremos ahora que el lado derecho de la restricción 1 cambia de su valor original 1600 a 1650. ¿Cambia la actual base óptima?. Para ello recalculamos el vector de las variables básicas:

calculo-xb-modificado

Se puede apreciar que todos los coeficientes del vector de variables básicas (Xb) son mayores o iguales a cero, es decir, se conserva la base óptima (idénticas variables básicas) pero la solución óptima cambia a x=125, s2=250, y=350.

Adicionalmente el valor óptimo ahora es V(P)=3.175. Sin embargo, no es necesario seguir realizando iteraciones del Método Simplex (dado que estamos frente a una solución básica factible óptima) y nos ahorramos el trabajo de la reoptimización.

La pregunta natural es ¿Qué sucede si al actualizar el vector de las variables básicas al menos una de las variables toma un valor negativo?. Modifiquemos ahora en forma simultanea los lados derechos de las restricciones 1 y 2 a 2.000 y 1.500, respectivamente. El nuevo vector de variables básicas queda definido de la siguiente forma:

calculo-xb-modificado-v2

Notar que ahora la variables básica s2=-1.000 adopta un valor que no satisface la condición de no negatividad para las variables de decisión. Al definir lo anterior una situación de infactibilidad es necesario actualizar la tabla final del Método Simplex con el valor de las variables básicas y el valor de la función objetivo:

tabla-simplex-lado-derecho

Para encontrar la solución óptima de este problema a partir de la tabla anterior se puede aplicar el Método Simplex Dual. La variable básica que deja la base es s2 (variable básica asociada a la fila 2 donde encontramos el “lado derecho” negativo).

Para determinar la variable que entra a la base calculamos el mínimo cuociente: Min{-3/2/-3}=1/2 ==> s1 entra a la base. Actualizamos la tabla del Método Simplex obteniendo lo siguiente:

tabla-final-simplex-modific

Se puede apreciar que sólo fue necesario realizar una iteración adicional para poder obtener la solución óptima del nuevo escenario (x=400/3, s1=1.000/3, y=350) con un valor óptimo de V(P)=3.200.

El siguiente gráfico realizado con el software Geogebra permite visualizar la nueva solución óptima y estructura del problema, donde ahora la solución óptima se encuentra con las restricciones 2 y 3 activas (el problema original en su solución óptima consideraba la restricción 1 y 3 como activas):

resolucion-grafica-cambio-l

Método Simplex de 2 Fases en Programación Lineal (Ejercicios Resueltos)

En el artículo anterior nos referimos a Cómo resolver un modelo de Programación Lineal con el Método Simplex Dual, siendo ésta una alternativa de resolución cuando al llevar un modelo de Programación Lineal a su forma estándar no se dispone de una solución básica factible inicial.

A continuación tomaremos el mismo ejemplo pero aplicaremos una metodología conocida como Método Simplex de 2 Fases que como el nombre lo sugiere consiste en una variante del Método Simplex que permite abordar esta clase particular de problemas.

Ejemplo Método Simplex de 2 Fases

ejemplo-simplex-dual

Para llevar el problema a la forma estándar agregamos las variables de exceso no negativas X4 y X5 para la primera y segunda restricción, respectivamente. El problema queda como sigue:

forma-estandar-simplexdual

Sabemos que las variables X4 y X5 no tienen la estructura de la identidad para utilizarlas como variables básicas y en consecuencia no provee un punto de partida válido para realizar las iteraciones.

¿Qué podemos hacer?. Una alternativa es aplicar el Método Simplex Dual pero también podemos utilizar el Método Simplex de 2 Fases. Para ello agregaremos 2 variables artificiales (o variables auxiliares) no negativas que llamaremos X6 y X7 (una para cada restricción) que nos permitirá tener una solución básica factible inicial.

Luego, el método en su Fase I minimiza la suma de las variables auxiliares (en este caso 2 variables). En consecuencia, el problema de la Fase I queda definido por:

fase-1

Construimos la tabla inicial de la Fase 1:

tabla-1-fase-1

Para utilizar X6 y X7 como variables básicas necesitamos llevar sus costos reducidos a cero. Para ello realizamos operaciones fila multiplicando la fila 1 por -1 y luego sumando a la fila 3. Repetimos el procedimiento multiplicando por -1 la fila 2 y sumando a la fila 3. La tabla actualizada corresponde a:

tabla-2-fase-1

Continuando con las iteraciones del Método Simplex ingresamos la variable X3 a la base (criterio: variable no básica con costo reducido más negativo) y realizamos el mínimo cuociente: Min{1/4; 3/2/2}=1/4 ==> el pivote se encuentra en la fila 1 por tanto deja la base la variable básica X6 (variable básica asociada a la fila 1).

Se realiza una iteración del Método Simplex y se actualiza la tabla:

tabla-3-fase-1

Ahora las variables no básicas con costo reducido negativo son X1 y X4. Hacemos entrar a la base a la variable X1 y calculamos el mínimo cuociente: Min{1/4/1/2; 1/1}=1 ==> el pivote esta en la fila 1 y por tanto la variable X3 deja la base. En este punto es importante destacar un aspecto: “es una situación inusual (pero no por ello incorrecto) que una variable que en una iteración previa haya ingresado a la base, deje ésta inmediatamente en la iteración posterior”. Si bien este es el caso al cual nos enfrentamos continuaremos con las iteraciones del Método Simplex:

IMPORTANTE: El lector podrá identificar que la variable no básica con costo reducido más negativo en la tabla anterior es X2 y por tanto dicha variable debería ser la que ingrese a la base. No obstante de forma involuntaria se omitió dicha situación y se incorporó a la base la variable X1 como se muestra en la tabla a continuación. El efecto de esta decisión sólo tiene que ver con la rapidez de convergencia del Método Simplex y no afecta en absoluto los resultados finales. Esto se puede corroborar revisando tanto este artículo como el que trata sobre Criterios para la Rapidez de Convergencia del Método Simplex. Sin embargo, cabe destacar que no hay garantías que incorporando la variable no básica con el costo reducido más negativo el Método Simplex alcance la solución óptima (de existir) de forma más rápida.

tabla-4-fase-1

Para seguir con las iteraciones podemos seleccionar tanto la variable X2 como X4 como variables que ingresan a la base (ambas con similar costo reducido negativo). En este caso optaremos por la variable X2 y calculamos el mínimo cuociente: Min{1/2/1/2; 1/2/1}=1/2 ==> X7 deja la base. Actualizamos la tabla obteniendo lo siguiente:

tabla-5-fase-1

Notar que ahora tenemos una solución básica factible con las variables X1=1/4 y X2=1/2. Adicionalmente todas las variables no básicas (X3, X4, X5, X6, X7) tienen costos reducidos mayores o iguales a cero. Por último y muy importante el valor de la función objetivo al finalizar la Fase I es cero, condición indispensable para seguir a la Fase II del método.

Si el valor de la función objetivo al concluir la Fase I del Método Simplex de 2 Fases es distinto a cero el problema es infactible, es decir, no tiene solución (su dominio de soluciones factibles es vacío).

Para seguir con la Fase II eliminamos la(s) columna(s) asociadas a las variables artificiales y actualizamos el vector de costos reducidos considerando la función objetivo original. Se obtiene en consecuencia la siguiente tabla:

tabla-1-fase-2

Buscamos ahora llevar a cero el costo reducido a cero para las variables X1 y X2 (variables básicas al finalizar la Fase I). Para ello desarrollamos operaciones fila multiplicando la fila 1 por -1 y luego sumando a la fila 3 (también multiplicamos por -1 la fila 2 y sumando a la fila 3).

tabla-2-fase-2

Finalmente se logra conservar la estructura de variables básicas para las variables X1 y X2 y las variables no básicas tienen costos reducidos mayores o iguales a cero. En consecuencia estamos frente a la solución óptima del problema con X1=1/4 y X2=1/2.

Te recomendamos verificar que la solución alcanzada es similar a la obtenida a través del Método Simplex Dual pero evidentemente con un esfuerzo en la resolución distinto.

Problema del Vendedor de Periódicos (Newsvendor Problem)

El Problema del Vendedor de Periódicos (también conocido como Newsvendor Problem) es una forma sencilla de ilustrar una categoría de problemas con demanda incierta (estocástica) pero con distribución de probabilidad conocida, donde se debe determinar el tamaño de pedido o lote económico que minimice una función de costos esperados.

Este problema es de un sólo período debido a que los periódicos que no se logran vender en un día no se pueden vender al día siguiente a un valor de mercado y por tanto cada exceso de inventario (tamaño de pedido superior a la demanda) tiene un costo monetario asociado.

Sin embargo, en algunas ocasiones se asume que si se puede vender el inventario en exceso pero a un precio que usualmente es significativamente menor que el costo de adquisición. Este sería, por ejemplo, el caso de una panadería que vende el pan que le sobra de un día al día siguiente a un precio descontado.

En el mismo contexto, realizar un pedido insuficiente para enfrentar la demanda tiene un costo de oportunidad asociado, que en el mejor de los casos se puede estimar como el margen no logrado por quiebre de stock, pero que en la práctica puede incluso provocar la pérdida del cliente (costo muy complejo de estimar).

Consideremos los siguientes parámetros del Modelo Newsvendor:

  • Costo unitario c.
  • Valor de consignación h (items no vendidos).
  • Costo de quiebre de stock (stock-out) p (costo de imagen).
  • Demanda desconocida con distribución de probabilidad conocida F(x).

La función que permite minimizar el costo esperado asociado al inventario es:

costo-esperado

Donde la solución óptima esta dada por:

solucion-newsvendor

Ejemplo Problema del Vendedor de Diarios (Newsvendor Problem)

Un vendedor de periódicos elige todas las noches que cantidad de periódico él va a pedir al editor. El costo unitario es $1.5 pero él puede devolver al editor periódicos no vendidos y recibir a cambio $0.9. Cada cliente que llega a su tienda y sale sin periódico tiene un costo de $2.5 para el vendedor.  Suponiendo que la demanda por periódicos es uniforme en el intervalo [50,150], ¿cuántos periódicos el vendedor debe pedir diariamente al editor?.

Primero debemos determinar cuáles son los parámetros del modelo: c=$1.5, h=$0.9, p=$2.5 y F(x)~U[50,150]. Luego evaluamos en F(y*) para obtener el tamaño de pedido que minimiza la función de costo esperado:

resultado-newsvendor

La cantidad de periódicos que debe pedir el vendedor es 112 unidades. Notar que si bien en el denominador de la fórmula se considera h con signo positivo, en el ejemplo dicho valor corresponde a un ingreso (lo que el vendedor puede rescatar o recuperar por cada unidad que no logra vender. Esto se conoce alternativamente como salvage value) por tanto se evalúa con signo negativo.

Finalmente al evaluar el tamaño óptimo de pedido en la función de costo esperado se obtiene:

costo-esperado-sol

Donde μ es la media de la variable aleatoria que representa el comportamiento de la demanda.

En el ejemplo la media de una distribución uniforme entre [50,150] es μ=(50+150)/2=100. Finalmente al desarrollar la expresión se obtiene C(112)=$168,752.

Te recomendamos evaluar otro tamaño de pedido (por ejemplo y=100 o y=140) en la función de costos esperado y verificar que el costo que se alcanza es mayor a C(112)=$168,752.

Finalmente: ¿Cuál es la probabilidad de satisfacer la demanda para el vendedor de periódicos en un día cualquiera?.

Si compra y=112 periódicos la probabilidad de Instock es P[D<=112]=(112-50)/(150-50)=62%. Esto implica que la probabilidad de incurrir en un quiebre de stock para el tamaño de pedido que minimiza la función de costos esperados es de un 38% (100%-62%).

Cómo resolver un modelo de Programación Lineal con What’sBest!

En el siguiente tutorial mostraremos Cómo resolver un modelo de Programación Lineal con What’sBest!. Para ello por supuesto se requiere previamente descargar e instalar What’sBest! como complemento de Excel tal cual lo explicamos paso a paso en un artículo previo.

Para mostrar cómo utilizar este programa utilizaremos el Problema de Transporte que consiste en determinar una política de distribución que minimice los costos de la logística, al mismo tiempo que satisface la demanda de los clientes y respeta la capacidad de los oferentes.

La información se resume en el siguiente diagrama para un caso particular de 2 plantas y 3 clientes, donde los números sobre las flechas representan los respectivos costos unitarios de transporte entre una planta y un cliente.

Problema de Transporte

Los pasos para implementar este problema de programación lineal en What’sBest! son:

Paso A: Definir las Variables de Decisión: Para ello debes previamente definir en un planilla Excel las celdas que utilizarás como variables. En el ejemplo la Xij: Unidades transportadas desde la planta i al cliente j. Con i=1,2 y j=1,2,3 se tienen 6 variables de decisión.

variables-whatbest

Importante: Completa las celdas que serán variables de decisión con cero como se muestra en la imagen anterior. Luego selecciona el rango de celdas que corresponde a las variables del modelo y presiona “Make Adjustable”.

Paso B: Definir la Función Objetivo: Como el nombre lo indica, ésta celda corresponde al objetivo del problema de optimización que en este caso es minimizar los costos totales de transporte. La celda contiene una fórmula SUMAPRODUCTO(C3:E4;C12:E13) previamente ingresa que pondera los costos unitarios de transporte para las distintas combinaciones (datos o parámetros) y las variable de decisión previamente definidas. Finalmente nos posicionamos sobre la celda de la función objetivo y seleccionamos en este caso “Minimize”.

fobj-whatbest

Paso C: Definir las Restricciones: Se incorporan las restricciones del modelo de optimización, es decir, las condiciones que deben cumplir las variables de decisión al momento de la resolución. Para ello se selecciona en el menú la opción “Constraints”.

En la imagen a continuación se muestra cómo se incorporó la restricción que garantiza que la cantidad de unidades enviadas por cada planta (L.IZQ) no supere (<=) la capacidad de la misma (L.DER). Como se puede apreciar se incorporan las restricciones de capacidad de la planta 1 y 2 en forma simultanea.

restricciones-wb

Finalmente para proceder a la  resolución del modelo seleccionamos la opción “Solve” del menú:

solve-wb

Luego de lo cual se obtienen los siguientes resultados:

solucion-wb

Solución Básica Factible Óptima: X11=80.000; X12=40.000; X13=0; X21=0; X22=30.000; X23=90.000. El Valor Óptimo (mínimo costo) es de $940.000. Para descargar el archivo Excel con la resolución del modelo de transporte con What’sBest! sigue los pasos a continuación:

[sociallocker]Descarga Aquí: http://dlu.jzt.temporary.site/wp-content/uploads/2013/02/PTWB.xlsx[/sociallocker]

Problema de Construcción de Viviendas resuelto Gráficamente

El siguiente problema fue enviado por uno de nuestros usuarios de la ciudad de Bogotá, Colombia:

En la ciudad de Armenia se va a demoler un barrio de 10 acres y la alcaldía debe decidir sobre el nuevo plan de desarrollo. Se van a considerar dos proyectos habitacionales: viviendas a bajo costo y viviendas a medio costo. Se pueden construir 20 y 15 unidades de cada vivienda por acre, respectivamente. Los costos por unidad de las viviendas a bajo y medio costo son $13.000 y $18.000, respectivamente. Los límites inferior y superior establecidos por la alcaldía sobre el número de viviendas de bajo costo son 60 y 100 respectivamente. De igual manera, el número de viviendas de costo medio debe estar entre 30 y 70. Se estima que el mercado potencial combinado máximo para las viviendas es de 150 (que es menor que la suma de los límites de los mercados individuales debido al traslapo entre los dos mercados). Se desea que la hipoteca total comprometida al nuevo plan de desarrollo no exceda los $2 millones. Finalmente, el asesor de la obra sugirió que el número de viviendas de bajo costo sea por lo menos de 50 unidades mayor que la mitad del número de viviendas de costo medio.

Formule como un Programa Lineal el problema del nuevo plan de desarrollo a costo mínimo y resuelvalo gráficamente.

A continuación detallamos la resolución de este problema de Programación Lineal utilizando el Método Gráfico:

1. Variables de Decisión:

  • X1: Viviendas de bajo costo a construir
  • X2: Viviendas de costo medio a construir

2. Función Objetivo: Minimizar 13.000X1 + 18.000X2

3. Restricciones:

  • Disponibilidad de acres: (X1/20) + (X2/15) <= 10
  • Límites de viviendas de bajo costo: 60 <= X1 <= 100
  • Límites de viviendas de costo medio: 30 <= X2 <= 70
  • Límite mercado combinado: X1 + X2 <= 150
  • Límite hipoteca total: 13.000X1 + 18.000X2 <= 2.000.0000
  • Sugerencia asesor de obra: X1 >= 50 + (X2/2)
  • No Negatividad: X1>=0   X2>=0

La resolución gráfica del modelo de programación lineal anterior se muestra a continuación utilizando el software Geogebra:

resolución gráfica problema de viviendas