Problema de transbordo con Solver VBA

Un saludo a toda mi gente linda, hoy veremos un tema logístico llamado el Problema de transbordo con Solver VBA

Esta publicación es gracias a uno de mis seguidores que me pidió auxilio por mi Instagram OMG

Vale, vamos directo a la carnecita ñam, reduciré lo mayor posible la teoría

El problema de transbordo

El problema de transbordo es una variación del problema de transporte con un pizca de costos, tal que el fin usualmente es obtener el costo mínimo

Problema de transbordo Excel VBA
Típico problema de transbordo

Los problemas de transbordo se pueden solucionar de diferentes formas y con diferentes softwares, la mayoría usa como lógica de solución la programación lineal (Sí, lo que viste en la universidad)

Hace años el acceso a softwares era muy costoso, hoy en día el talento reemplaza al costo

Ing. Luis Rojas

Pero si tú mi querido lector estás leyendo este post, ya debes saber lo que acabo de mencionar y solo lo he dicho como recordatorio.

¿Software para solucionar problemas logísticos?

En el mercado existen varios de estos programitas que te ayudan a solucionar este tipo de problemas como por ejemplo:

  • WinQSB
  • Simio
  • Network Modeling
  • Lindo
  • Lingo
  • Excel
  • Entre otros no conocidos

Vale, con alguno se te va a complicar más la vida que con otro, y aquí vengo yo nuevamente molestando a los usuarios de programas

He encontrado soluciones en Excel con Solver, pero ninguna con Macros y me he quedado sorprendido.

Como no existe ningún programa con Excel VBA, he decidido hacerlo yo, así que en esta publicación te enseñaré a usarlo

Y puedes descargarlo completamente gratis desde el siguiente link El problema de transbordo.xlsm

¿En qué consiste tu programa VB qué?

Vale, no suelo hacer tan largas mis publicaciones, solo lo hago con ésta por ser un tema logístico, es que trabajé años en ese área.

Tú ya conoces a nuestro amigo Excel, y probablemente sepas manejarlo a nivel de fórmulas, tablas dinámicas, gráficas, quizás solver y etc.

Nuestro amigo Excel tiene su parte programadora, a la cual la conocemos como VBA, en ella se pueden hacer desarrollos a medida fabulosos.

Te voy a decir un secreto, Solver (Se encuentra en la ficha Datos de Excel) es código VBA que alguien programó y lo bautizó con ese nombre.

Yo lo que he desarrollado ahora es código VBA más uso del VBA de Solver, lo que nos da un bonito producto con rangos dinámicos.

Explicando el uso de la macro problema de transbordo

Muy bien, la macro que he desarrollado la puedes descargar desde el siguiente enlace

El uso es muy simplecito y vas a tener dos escenarios, los cuales serán los siguientes:

  • Oferta = Demanda | Solo la ejecutamos
  • Oferta != Demanda | Crearemos un artificio

Muy bien, vamos a usar un ejemplo para explicar el Problema de transbordo con Solver VBA en 5 simples pasos

Paso #1: Crea tu representación gráfica

Lo primero que debemos hacer es crear nuestra representación gráfica de nuestro problema a resolver

Problema de transbordo Excel VBA Solver

Paso #2: Identificación de nodos

Muy bien, ahora vamos a identificar los nodos de la representación gráfica

  • P1 y P2 son los nodos de ingreso u oferta pura
  • D3 es el nodo de salida o demanda pura
  • D1 y D2 son nodos de transbordo y demanda
  • T1 y T2 son los nodos de transbordo o de oferta y demanda

Mucho ojito con D1 y D2, ya que son nodos de demanda y también de transbordo ¿Por qué? Porque tienen la opción de enviar unidades a otros nodos

Paso #3: Crear nuestro cuadro de costos entre nodos

Vamos a crear un cuadros de costos por unidad en nuestra hoja de Excel

Para ello estamos considerando solo los valores que se encuentran entre línea y línea

Nodos de transbordo Excel VBA

Explico el cuadrito de la imagen

  • Del nodo P1 a T1, el costo unitario es de 3
  • Del nodo P1 a T2, el costo unitario es de 4
  • Del nodo P1 a D1, no hay ruta, por lo que ponemos M (M es igual a un costo muy alto a nivel de programa)
  • Del nodo T1 a T1, se coloca cero porque no hay costo al mismo punto

Paso #4: Agregar la cantidad amortizada

Esta parte es un poquito ‘compleja’, ya que aquí se evalúan dos escenarios

En la mayoría de escenarios la cantidad que se oferta y demanda será la misma, en casos particulares serán diferentes

Para el ejemplo que estamos viendo, la cantidad ofertada y demandada es de 2200

Costos del problema de transbordo

Muy bien agregamos un nuevo término, el cual es la cantidad amortizada

Si las cantidades de oferta y demanda son iguales, entonces la cantidad amortizada será igual a este monto (2200)

Si las cantidades de oferta y demanda son diferentes, entonces la cantidad amortizada será el monto mayor

Para este ejemplo, la cantidad amortizada será 2200, este valor nos ayudará a completar la tabla

Primero trabajaremos con las columnas

Aquellos que sean nodos de ingresos, para el ejemplo P1 y P2 (Ver celda G7 y G8) tendrán como valor, el mismo valor de la oferta

Los nodos de transbordo T1, T2, D1 y D2 serán iguales a la cantidad amortizada que hemos calculado

Ahora trabajaremos con las filas

Nodos de destino Excel VBA Solver Problema de transbordo

De manera similar a las columnas, los nodos de transbordo serán iguales a la cantidad amortizada

Los nodos que son de transbordo y demanda (D1 y D2) serán iguales a la cantidad amortizadas más el valor de la demanda

Solo los nodos de demanda pura serán iguales solo a sus valores de salida (Demanda)

Si en caso la cantidad de ingreso y salida son diferentes, debemos agregar una columna ficticia con valores M, cuya cantidad será la diferencia entre oferta y demanda

Ing. Luis Rojas

Paso #5: Ejecútalo y disfruta el programa

Antes de dar click sobre ejecutar, debes habilitar Solver, lo puedes hacer dando click sobre el botón que he creado

Habilitar Solver desde VBA

Si en caso ya tenías habilitado Solver, no es necesario dar click sobre el botón.

Muy bien, ahora solo debes dar click sobre el botón Ejecutar y obtendrás lo siguiente:

Confirmar modelo de transbordo con excel vba solver

Le damos en SI, si luego nos muestra un mensaje, lo aceptamos

Transporte con Solver

Podemos visualizar que Solver encontró una solución, así que damos click en Aceptar

Aceptar Excel VBA Solver logísticac

Y finalmente aceptamos el último mensaje, el resultado será el siguiente:

Escenario óptimo problema de transbordo Excel VBA

Gráficamente se representaría así

Solución óptima problema de trasbordo

Terminamos con el Problema de transbordo con Solver VBA

Vale, ya terminamos con el problema de transbordo, resolveré ejercicios en mi canal de Youtube sobre este tema, así que te invito a visitarlo Canal Youtube Ing. Luis Rojas

Si quieres aprender a programar desde cero en Excel, te invito a mi curso Excel VBA para principiantes

Cualquier duda o consulta, me puedes escribir a mi Instagram Luis Rojas

Deja una respuesta