Cómo hacer un Histograma con Geogebra

En un artículo anterior nos referimos a Cómo hacer un Histograma con Excel y EasyFit y a continuación mostraremos cómo poder desarrollar el mismo procedimiento utilizando el software de distribución gratuita Geogebra el cuál ya hemos utilizado previamente para la Resolución Gráfica de un modelo de Programación Lineal y como resulta evidente su aplicación no se ve limitada a lo anterior.

Los pasos a seguir son muy sencillos y los detallamos a continuación:

Paso 1: Abrir el programa Geogebra y en el Menú «Vista» seleccionar «Hoja de Cálculo».

hoja-de-calculo-geogebra

Paso 2: Copiar y Pegar los datos a granel en la planilla (Columna A) que desplegara el programa en la esquina superior derecha. En el ejemplo utilizaremos los mismos datos (40) del artículo anterior.

hoja-de-calculo-planilla-ge

Paso 3: En el Menú seleccionar el icono con barras azules (con forma de histograma) y en las opciones que se desplegaran seleccionar «Análisis Una Variable».

analisis-una-variable-geoge

Paso 4: Se desplegara la ventana «Fuente de Datos» donde se podrán observar los valores ingresados en la Columna A. Luego seleccionar «Analiza». Importante: Si los datos de la Columna A no aparecen en la ventana de «Fuente de Datos» debes posicionarte sobre la letra A de la planilla de cálculo y repetir el Paso 2 y 3. La imagen a continuación muestra cómo se deberían visualizar los datos de la Columna A antes de proceder con el Paso 4.

analisis-variable-geogebra

Paso 5: Listo!. Ya hemos generado un histograma con Geogebra. Se puede observar que existe una barra que se puede desplazar para ajustar la cantidad de clases que tiene el histograma según lo que nos parezca razonable. En la imagen a continuación hemos seleccionado 6 clases para mostrar la consistencia de los resultados con lo obtenido previamente con Excel y Easyfit. Notar adicionalmente que en el eje vertical se considera por defecto la frecuencia absoluta («n»).

histograma-geogebra

Finalmente se puede obtener de forma muy sencilla un resumen de las estadísticas de los datos proporcionados a granel seleccionando el icono «Muestra Estadísticas» (símbolo de sumatoria). Adicionalmente existen otras opciones interesantes que permiten generar  un Diagrama de Caja o Diagrama de Tallo y Hojas. Te proponemos el desafío para que lo puedas revisar directamente!

estadisticas-histograma-geo

Modelo de Transporte con Transbordo resuelto con Solver de Excel

Una de las aplicaciones clásicas de la Investigación de Operaciones y en particular de la Programación Lineal es proponer alternativas óptimas para el proceso logístico o transporte de insumos o productos desde un conjunto de oferentes hasta un conjunto de destinatarios o demandantes.

Cuando consideramos que en este proceso de transporte pueden participar intermediarios estamos frente a una extensión del modelo básico de transporte el cual es comúnmente conocido como Modelo de Transporte con Transbordo. A continuación presentaremos un caso aplicado de dicho modelo.

Ejemplo Problema de Transporte con Transbordo

Se deben transportar 20 millones de barriles de petróleo desde Dhahran en Arabia Saudita a las ciudades de Rotterdam, Marsella y Nápoles en Europa. Las demandas de estas tres ciudades son 4, 12 y 4 millones de barriles, respectivamente. A continuación se presenta un diagrama con las posibles rutas:

transporte-con-transbordo

Observe que para cada ciudad existe la posibilidad directa de envío, es decir, que los barriles sean transportados directamente desde Dhahran. Sin embargo, la ruta que une Dhahran y Marsella no puede transportar más de 3 millones de barriles debido a ciertos acuerdos comerciales.

Por otro lado, existe la posibilidad que se realice una detención, ya sea en el puerto de Alejandría o Suez, donde la capacidad de almacenamiento es de 8 y 10 millones respectivamente.

Por último, observe que es posible enviar barriles de petróleo desde Marsella a Nápoles. Sin embargo, le está prohibido a Nápoles recibir más petróleo de Marsella que directamente de Dhahran. Formule y resuelva un modelo de Programación Lineal que permita hallar la política óptima de transporte para cumplir con los requerimientos de demanda de los puertos.

Variables de Decisión:

  • X1: Barriles transportados desde Dhahran a Rotterdam
  • X2: Barriles transportados desde Dhahran a Marsella
  • X3: Barriles transportados desde Dhahran a Nápoles
  • X4: Barriles transportados desde Dhahran a Alejandría
  • X5: Barriles transportados desde Dhahran a Suez
  • X6: Barriles transportados desde Alejandría a Rotterdam
  • X7: Barriles transportados desde Alejandría a Marsella
  • X8: Barriles transportados desde Suez a Marsella
  • X9: Barriles transportados desde Suez a Nápoles
  • X10: Barriles transportados desde Marsella a Nápoles

Función Objetivo:

Minimizar los costos totales de transportes dados por la siguiente expresión: 7X1 + 8X2 + 15X3 + 6X4 + 5X5 + 8X6 + 7X7 + 2X8 + 6X9 + 1X10

Restricciones:

Satisfacer la Demanda en los Puertos:

  • X1 + X6 = 4.000.000   (Rotterdam)
  • X2 + X7 + X8 – X10 = 12.000.000   (Marsella)
  • X3 + X9 + X10 = 4.000.000   (Nápoles)

Notar que Marsella eventualmente podría recibir más de 12 millones de barriles de petróleo (su demanda) debido a que este Puerto tiene la posibilidad de abastecer a Nápoles.

Balance en el Transbordo:

  • X4 = X6 + X7   (Alejandría)
  • X5 = X8 + X9   (Suez)

La cantidad de barriles que recibe Alejandría y Suez debe ser igual a lo que cada uno de ellos despacha a los Puertos, es decir, los intermediarios no acumulan inventario al final del periodo de planificación. En este punto es importante destacar que si se considera un modelo extendido donde se busca satisfacer los requerimientos de demanda de varios periodos podría ser admisible almacenar inventario en Alejandría y Suez, cambiando en este caso la forma del modelo de optimización.

Capacidad de Procesamiento en el Transbordo:

  • X4 <= 8.000.000   (Alejandría)
  • X5 <= 10.000.000   (Suez)

Tanto Alejandría como Suez no pueden recibir una cantidad de barriles mayor a la que pueden procesar.

Capacidad Ruta entre Dhahran y  Marsella:

  • X2 <= 3.000.000

La ruta que une Dhahran y Marsella no puede transportar más de 3 millones de barriles por acuerdos comerciales.

Cantidad Recibida por Nápoles:

  • X3 >= X10

Está prohibido a Nápoles recibir más petróleo de Marsella que directamente de Dhahran.

No Negatividad:

  • Xi >= 0 Para todo i

Al implementar el modelo anterior con Solver de Excel se obtienen los siguientes resultados:

solucion-transporte-con-tra

Donde la solución alcanzada tiene la siguiente estructura (sobre los arcos se detalla el valor de la solución óptima):

solucion-transbordo-diagram

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%).