Formulación de un Problema de Asignación en Programación Entera

El siguiente problema fue enviado por uno de nuestros usuarios de la ciudad de Valparaíso, Chile:

En un evento atlético de gimnasia las competencias comprenden cuatro disciplinas: salto, barras asimétricas, viga de equilibrio y manos libres. Cada equipo debe presentar 5 deportistas por disciplina. Un deportista puede participar como especialista en una o dos disciplinas o bien como un all-rounder que participa en las cuatro disciplinas. Al menos 3 de los miembros del equipo deben ser all-rounder. Un deportista es evaluado en una escala de 1 a 10. De acuerdo a las estadísticas del equipo de gimnasia de la universidad, se tienen las siguientes calificaciones para cada uno de los 6 miembros del equipo actual:

tabla-deportistas

Formule y resuelva un modelo de Programación Entera que permita seleccionar a los 5 deportistas que presentará la universidad en cada disciplina del evento.

A continuación detallamos la formulación de este problema de Programación Entera:

1. Variables de Decisión:

variables-deportistas

Con i=1,…,6 (deportistas) y j=1,….,4 (deportes)

2. Función Objetivo: Maximizar el puntaje a obtener por los deportistas

funcion-deportistas

Donde Pij representa el puntaje que tiene el deportista i en la disciplina j. Estos valores son parámetros del modelo y son los que se resumen en la tabla del enunciado. Por ejemplo: P13=9.

3. Restricciones:

Si un deportista es all-rounder se debe asignar a todas las disciplinas:

all-rounder-disc

Deben haber al menos 3 deportistas all-rounder:

all-rounder

Se requiere de exactamente 5 deportistas por disciplina:

5-por-disciplina

Límite de disciplinas por deportistas según su categoría:

maximo-deportista

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

Restricción con Precio Sombra Negativo en Programación Lineal

En Programación Lineal, el Precio Sombra se refiere a una tasa de cambio del valor óptimo ante una modificación marginal del lado derecho de una restricción, entendiendo como marginal una modificación que permita mantener las actuales restricciones activas para el problema (se conserva la base óptima). En este tipo de análisis se asume que el resto de los parámetros del modelo permanecen constantes.

En artículos anteriores hemos analizado Cómo calcular el Precio Sombra de una Restricción Gráficamente y en forma complementaria Cómo interpretar los Informes de Sensibilidad de Restricciones de Solver de Excel. Esto sin duda es una buena base conceptual para entender el significado del Precio Sombra de una restricción.

En esta oportunidad nos referiremos a una situación que a priori podría parecer anómala, pero que definitivamente no lo es: que una restricción asociada a un modelo de Programación Lineal tenga un Precio Sombra negativo.

Para ilustrar este escenario utilizaremos nuevamente el Modelo de Transporte el cual se representa esquemáticamente a continuación:

Problema de Transporte

La resolución computacional de este modelo utilizando Solver de Excel se resume a continuación:

solución modelo de transporte

Notar que la Planta 1 tiene un exceso de capacidad de 40.000 unidades (diferencia entre su capacidad de 160.000 y las 120.000 unidades que despacha).

Por el contrario la Planta 2 funciona a máxima capacidad (despacha 120.000 unidades). El Informe de Sensibilidad de restricciones reporta lo siguiente:

precio sombra negativo

La restricción de capacidad de la Planta 2 tiene un Precio Sombra negativo de magnitud -1. Esto significa que si se incrementa en una unidad la capacidad de la Planta 2 (a 120.001 unidades) el nuevo valor óptimo será 939.999.

Análogamente, cualquier cambio en la capacidad de la Planta 2 en el intervalo [120.000-40.000,120.000+40.000]=[80.000,160.000] generará una modificación del valor óptimo del problema proporcional al Precio Sombra de la restricción de capacidad de dicha planta.

Por ejemplo, si la capacidad de la Planta 2 aumenta a 130.000 unidades, el nuevo valor óptimo será:

V(\bar{P})=V(P)+\Delta b\cdot \pi =940.000+(130.000-120.000)\cdot -1=930.000

Por el contrario, si la capacidad de la Planta 2 disminuye a 110.000 unidades, el nuevo valor óptimo es:

V(\bar{P})=V(P)+\Delta b\cdot \pi =940.000+(110.000-120.000)\cdot -1=950.000

¿Por qué se produce este fenómeno?. Básicamente por una reasignación debido a que resulta ser relativamente más conveniente generar despachos desde la Planta 2 en comparación a la Planta 1 (que tiene capacidad ociosa y por tanto un Precio Sombra igual a cero).

7 Recursos Gratuitos para el estudiante de Investigación de Operaciones

En Internet existen recursos gratuitos valiosos para los estudiantes de los cursos de Investigación de Operaciones (conocido también como Investigación Operativa) que son de gran ayuda para complementar los conceptos tratados en el aula y la bibliografía. En el siguiente artículo ponemos en disposición de nuestros lectores algunos recursos que recomendamos:

1. Solver: Es sin duda la principal herramienta para resolver modelos de optimización de tamaño reducido utilizado por los alumnos de cursos de ingeniería. Este complemento de Excel se puede descargar desde el sitio web de Frontline en su versión comercial (Premium Solver Pro) para implementar modelos de mayor tamaño.

premium-solver-interfaz

2. What’sBest!: Es la alternativa a Solver dado que funciona integrada en una planilla de cálculo (Excel). La interfaz es intuitiva y seguramente quién domine Solver no demorará mucho en aprender los elementos básicos de este programa. What’sBest! ha sido desarrollado por la empresa de software Lindo.

variables-whatbest

3. AMPL: Es un lenguaje de programación matemática que permite abordar la formulación y resolución de modelos de optimización de programación lineal, programación entera y programación no lineal (entre otros). Esta plataforma es popular para modelos de mayor complejidad que requieren para su resolución de algoritmos especializados.

solucion-ampl-problema-no-l

4. GAMS: Es una herramienta de formulación matemática alternativa a AMPL que permite formular y resolver modelos de optimización de complejidad mayor.

5. NEOS Solvers: Es un portal que consolida una gran variedad de solvers (algoritmos) que permiten resolver distintas categorías de modelos de optimización formulados en un lenguaje matemático determinado (como AMPL y GAMS). El procedimiento es el siguiente: se selecciona un solver que permita resolver nuestro modelo (depende del lenguaje de programación matemática y el tipo de modelo), se sube el archivo del  modelos (y/o datos) y se obtienen los resultados online.

Solver NEOS

6. Geogebra: Es un excelente programa que nos ayuda a graficar distintas formas geométricas y en particular resolver gráficamente modelos de optimización lineales o no lineales. Este programa se puede descargar gratuitamente e instalar en nuestro computador o alternativamente utilizar su aplicación web directamente sin necesidad de descargar el programa.

solucion-grafica-nueva-rest

7. Método Simplex (ProgramacionLineal.net): Es una herramienta que permite resolver modelos de programación lineal a través del método simplex, mostrando paso a paso las respectivas iteraciones, solución óptima y valor óptimo.

tabla-simplex-nueva-variabl

8. Linear Programming: Versión en inglés de los principales artículos de este Blog que trata sobre la Investigación de Operaciones y en particular de la Programación Lineal, con recursos educativos y ejercicios resueltos.

Problema de Producción e Inventario resuelto con Solver de Excel

La Programación Lineal nos permite abordar distintos problemas de naturaleza real algunos de los cuales ya hemos tratado en artículos anteriores como el Problema de Transporte, el Problema de Mezcla de Productos y el Problema de la Dieta.

En el siguiente artículo analizaremos otra aplicación clásica conocida como el Problema de Producción e Inventario cuyas extensiones y variantes se pueden consultar adicionalmente en la categoría del Plan Maestro de la Producción.

El Problema de Producción e Inventario consiste básicamente en determinar una política de producción en el tiempo que permita satisfacer ciertos requerimientos de demanda, respetando las limitantes de producción y a un costo mínimo.

Este tipo de modelos se puede extender para varios productos, sin embargo, en esta oportunidad consideraremos un solo producto para su ilustración.

En este contexto, consideremos los siguientes antecedentes de producción que se presentan a continuación:

producción e inventario

Luego, definimos el siguiente modelo de optimización lineal:

Supuesto: se dispone de un inventario inicial de 50 unidades, es decir, I0=50.

1. Variables de Decisión:

  • Xt: Unidades a producir en el mes t (t=1,..,6 con t=1 => Enero; t=6 => Junio)
  • It: Unidades a almacenar en inventario al final del mes t (t=1,..,6 con t=1 => Enero; t=6 => Junio)

2. Función Objetivo: Minimizar los costos de producción (destacados con color azul) y costos de inventario (destacados con color rojo) durante el período de planificación definido por:

60X1 + 60X2 + 55X3 + 55X4 + 50X5 + 50X6 + 15I1 + 15I2 + 20I3 + 20I4 + 20I5 + 20I6

De forma compacta (parametrica) se puede representar la función objetivo como:

Minimizar\sum_{t=1}^{6}[C_{t}\cdot X_{t}+H_{t}\cdot I_{t}]

Donde C_{t} es el costo unitario de producción en el mes t (por ejemplo C_{1}=60) y H_{t} es el costo unitario de almacenar unidades en inventario durante el mes t (por ejemplo H_{1}=15)

3. Restricciones:

a) Satisfacer los requerimientos de demanda (conocida como restricción de Balance de Inventario).

Por ejemplo, el inventario disponible al final del mes de Enero será el resultado de la producción del mismo mes, más el inventario inicial (que se asume un dato, en este caso 50 unidades) menos la demanda satisfecha durante el mes de Enero.

  • X1 + 50 – I1 = 100 (Enero)
  • X2 + I1 – I2 = 130 (Febrero)
  • X3 + I2 – I3 = 160 (Marzo)
  • X4 + I3 – I4 = 160 (Abril)
  • X5 + I4 – I5 = 140 (Mayo)
  • X6 + I5 – I6 = 140 (Junio)

Notar que la restricción se Balance de Inventario impuesta para un producto se puede generalizar como: X_{t}+I_{t-1}-I_{t}=d_{t}, donde d_{t} representa la demanda estimada (parámetro) para el mes t.

b) Respetar la capacidad máxima de producción mensual (oferta).

Se establece que la oferta o producción máxima mensual no puede superar la capacidad de producción.

X1<=120   X2<=120   X3<=150   X4<=150   X5<=150   X6<=150

O simplemente X_{t}\leq O_{t} donde O_{t} es la capacidad de producción máxima del mes t (parámetro).

c) Condiciones de no negatividad.

De forma natural y dada nuestra definición cada variable de decisión debe ser no negativa.

Xt >= 0    It >= 0  Para todo t

El siguiente tutorial muestra cómo implementar este Modelo de Producción e Inventario correspondiente a la Programación Lineal en Solver de Excel:

La solución óptima se muestra a continuación con un valor óptimo de $43.450. Se puede apreciar que se producen en total 780 unidades entre Enero y Junio las cuales junto al inventario inicial de 50 unidades permiten satisfacer los requerimientos de demanda mensualmente.

solución problema producción e inventario

¿Quieres tener el archivo Excel con la resolución en Solver de este problema?.

[sociallocker]

MUCHAS GRACIAS!. DESCARGA AQUÍ EL ARCHIVO

[/sociallocker]