Método de Descomposición de Benders

La Descomposición de Benders es, como su nombre lo dice, un Método de Descomposición. La idea de este método es bastante simple: dividir para conquistar. El objetivo es literalmente descomponer el problema en dos partes: El Master Problem (Problema Maestro) y el Subproblem (Subproblema) (también llamado Slave Problem o Problema Esclavo). En el siguiente artículo revisaremos de qué se trata el Método de Descomposición de Benders, en conjunto con la presentación de su uso en un pequeño ejemplo.

Esta metodología fue propuesta por J.F. Benders en 1962, su nombre original es Partitioning procedures for solving mixed-variables programming problems, y como su nombre bien lo dice el método está pensado originalmente para problemas de Programación Entera Mixta. Sin embargo, también se puede aplicar en problemas de Programación Lineal.

El Método de Descomposición de Benders trabaja bajo el concepto de las “variables complicadas”, es decir las variables que hacen que nuestro problema se «complique». Si estas variables no existieran (o más bien, conociéramos su valor de forma anticipada) entonces el problema resultante se supone que es considerablemente más fácil de resolver.

En Programación Entera Mixta, se espera que estas variables “complicadas” sean las enteras, las cuales al fijar su valor, dejan un problema resultante que cumple con una característica muy conveniente: es lineal. Y como cumple con esto, entonces podemos hacer uso de todo lo que conocemos sobre Programación Lineal para realizar la optimización de las variables que (en un principio) fijamos.

Veamos entonces brevemente de que se trata el Método de Descomposición de Benders. Supongamos que tenemos un problema que tiene la siguiente estructura:

descomposición de benders

Como mencionamos al principio, entonces podemos separar este problema en dos partes. A continuación se muestra el Master Problem (Problema Maestro) a la izquierda y el Subproblem (Subproblema) a la derecha:

master y subproblema benders

Como se puede ver, el Master Problem contiene las variables que son enteras, y el Subproblem contiene las variables continuas, por lo que este último cumple con ser un problema de Programación Lineal.

Notar que el lado derecho de las restricciones del problema esclavo son números, ya que los valores de las variables enteras están fijos.

Iniciamos este artículo diciendo que el concepto central es dividir para conquistar: en este caso lo que se hace es resolver el Problema Maestro para obtener los valores de y; con esto, podemos resolver entonces el Subproblema. Se puede observar que el valor de la función objetivo del Subproblema se encuentra en la función objetivo del Problema Maestro, lo anterior se reformulará más adelante.

Una nota relevante: Si te das cuenta, el Problema Maestro para esta formulación no tiene ninguna restricción más que las de dominio. Nada impide que el Problema Maestro también tenga restricciones. Esto estará dado por la estructura del problema que estemos estudiando.

Recuerda siempre: ambos problemas están conectados, por lo que el resultado de uno influye directamente en el resultado del otro. Con esto en consideración, se cumple la siguiente propiedad:

Si el Subproblema es no acotado, entonces el Problema Maestro también lo es, resultando en que el problema original es no acotado.

Si tenemos un problema de Programación Lineal, entonces tenemos que aprovecharlo. ¿Qué es lo primero que se nos viene a la mente con un problema lineal? La respuesta es dualidad. Cada problema lineal (primal) tiene su problema dual asociado, el cual para el caso del problema esclavo enunciado anteriormente, tiene la siguiente estructura:

dual subproblema benders

¿Qué es lo que podemos ver en este problema dual?: Que la región factible (es decir el sub-espacio definido por las restricciones y el dominio del problema) no depende del valor que tomen las variables enteras, y sólo influye en el valor de la función objetivo (notar que están en ella).

Lo anterior entonces nos lleva a la siguiente pregunta: ¿Qué sucede cuando la región factible del problema es vacía? (recuerda que al ser vacía estamos diciendo que nuestro problema dual es infactible). Dos cosas pueden ocurrir:

  1. Al ser el problema dual infactible, entonces su primal es no acotado para algún valor de las variables enteras, en cuyo caso el problema original también es no acotado, o bien
  2. La región factible del problema primal es también infactible para todo valor de las variables enteras, llevando a la conclusión de que el problema original es infactible.

¿Por qué revisamos todo esto?: Porque es importante tenerlo en consideración, ya que como mencionamos anteriormente, al tener un problema esclavo lineal, entonces podemos hacer el uso de los conceptos de dualidad.

¿Para qué la usaremos?: Para reformular nuestro Problema Maestro, y transformarlo en lo que usualmente se conoce como Relaxed Master Problem (RMP). Esta reformulación utiliza las variables duales asociadas a las restricciones del Slave Problem primal.

El Relaxed Master Problem (Problema Maestro Relajado) se puede escribir de la siguiente forma:

problema maestro relajado benders

A las restricciones (1) y (2) se les conoce como restricciones de factibilidad y optimalidad, respectivamente. Además, existe una variable auxiliar z, la cual permite es la responsable de hacer la “conexión” entre el Problema Maestro y el Subproblema (esto se puede ver en las restricciones del tipo (1) y (2)).

Al resolver el RMP vamos a obtener los valores de las variables enteras, las cuales utilizaremos para resolver el Subproblema, como resultado podemos obtener dos cosas:

  1. El sub-problema es infactible, lo cual implica que el problema dual es no acotado. Si esto ocurre, debemos agregar un corte de factibilidad al RMP.
  2. El sub-problema tiene una solución óptima, lo cual implica que el problema dual también la tiene. Si esto ocurre, entonces hay que agregar un corte de optimalidad al RMP.

La última pregunta que nos queda por responder es: ¿Cuántas veces iterar?. Para responder lo anterior debemos definir la cota superior e inferior.

La cota superior corresponde al valor de la función objetivo original de nuestro problema; la cota inferior corresponde a la función objetivo del Master Problem, por lo tanto, debemos continuar hasta que ambos valores sean iguales.

Como la teoría de esta descomposición puede ser un poco compleja, veamos un ejemplo.

Ejemplo Método de Descomposición de Benders (Programación Lineal)

El ejemplo que veremos a continuación corresponde a un problema de Programación Lineal. La aplicación es similar para los problemas de Programación Entera Mixta.

Supongamos que tenemos que resolver el siguiente problema:

ejemplo benders programación lineal

La solución óptima para este problema es: x_{1}=0, x_{2}=0,714 e y=1,571 con un valor para la función objetivo (valor óptimo) de 5,285. La solución óptima del problema anterior se puede alcanzar de forma sencilla a través del Método Simplex Dual o el Método Simplex de 2 Fases (y por cierto a través de otros procedimientos y herramientas computacionales como Solver de Excel).

Vamos a descomponer el problema de la siguiente forma: recuerda que utilizaremos el RMP (Problema Maestro Relajado). Sea esta la primera iteración, K=1.

iteración 1 benders

Al resolver el RMP de la primera iteración, obtenemos como solución óptima y=0 y z=0; lo cual utilizaremos para resolver el Subproblema. Con y=0, el resultado del Subproblema es: x_{1}=2,2 y x_{2}=0,4 con un valor en la función objetivo de 5,6.

Ahora debemos calcular la cota superior (UB) y cota inferior (LB):

cotas benders

Como difieren el valor de las cotas, debemos continuar. Gracias a la herramienta “Análisis de Sensibilidad” del Solver en Excel, podemos obtener el valor de las variables duales asociadas a las restricciones del Subproblema (también podríamos obtener el valor de las variables duales óptimas al utilizar el Teorema de Holguras Complementarias). Esos valores son: \lambda_{1}=-1,6 y \lambda_{2}=-0,2.

Estos valores nos permiten crear el siguiente corte de optimalidad: -1,6(-3+y)-0,2(-4+3y)\leq z, el cual agregamos al Problema Maestro:

corte benders

Hacemos K=2 (contador de iteraciones) y resolvemos el Problema Maestro nuevamente. Este corte nos permite encontrar una nueva solución óptima: y=2,545 y z=0. Con este valor de y, el resultado del Subproblema es: x_{1}=0 y x_{2}=0,227 con un valor en la función objetivo de 0,68.

Ahora debemos calcular la cota superior (UB) y cota inferior (LB):

cota 2 benders

Al ver las variables duales para las restricciones del Subproblema tenemos que: \lambda_{1}=-1,5 y \lambda_{2}=0, lo cual permite crear el siguiente corte de optimalidad el cual agregamos al Problema Maestro:

corte 2 benders

Hacemos K=3 y resolvemos el Problema Maestro nuevamente. La nueva solución óptima para el Problema Maestro es y=1,571 y z=2,142 con un valor óptimo de 5,285. Con y=1,571 la solución del Subproblema es: x_{1}=0 y x_{2}=0,714 con un valor en la función objetivo de 2,148.

Ahora debemos calcular la cota superior e inferior:

cota 3 benders
convergencia descomposición de benders

Como ambas cotas (superior e inferior) son iguales, podemos detenernos. Hemos encontrado la solución óptima para nuestro problema de Programación Lineal. (Mis sinceros agradecimientos a mi amigo Javier Maturana Ross por su contribución con este detallado tutorial y los créditos correspondientes al profesor Yuping Huang por el ejemplo presentado en este artículo).

Problema de Tamaño de Lote No Capacitado (Formulación y Resolución en Solver)

El Problema de Tamaño de Lote No Capacitado o ULS (por sus siglas en inglés, Uncapacitated Lot-Sizing), consiste en decidir sobre un Plan de Producción para un horizonte de T periodos para un solo producto. El objetivo consiste en minimizar la sumatoria de los costos de producción, almacenamiento de productos en inventario y setup (costos de emisión), asumiendo que las demandas son conocidas en cada uno de los T periodos y éstas deben ser satisfechas de forma íntegra.

Una formulación típica del Problema de Tamaño de Lote No Capacitado considera los siguientes parámetros y variables de decisión.

Formulación Tradicional Problema de Tamaño de Lote No Capacitado

Variables de Decisión:

  • x_{t} = cantidad producida en el periodo t.
  • s_{t} = inventario al final del periodo t.
  • y_{t} = 1 si la producción ocurre en el periodo t, 0 si no.

Parámetros:

  • f_{t} = costo fijo de producción en el periodo t.
  • p_{t} = costo unitario de producción en el periodo t.
  • h_{t} = costo unitario de almacenamiento en el periodo t.
  • d_{t} = demanda en el periodo t.

La definición anterior da origen al siguiente problema de Programación Entera Mixta (PEM).

formulación tradicional tamaño de lote no capacitado

La función objetivo consiste en minimizar la suma de los costos de producción, costos de almacenamiento de productos en inventario y costos de emisión de pedidos, para todo el horizonte de planificación (T períodos).

Por otra parte las restricciones del problema quedan definidas por:

Balance de Inventario s_{t}=s_{t-1}+x_{t}-d_{t}: El inventario al final de un período t es igual al inventario al final del período anterior (t-1) más lo producido en el período t y menos lo demandado en el período t.

Capacidad de Producción x_{t}\leq M\cdot y_{t}: Si bien hemos definido el problema como no capacitado, esta restricción permite vincular la decisión de producción en un período con la cantidad (volumen) de dicha producción. De esta forma se evita situaciones anómalas como que en un período cualquiera se produzca y al mismo tiempo el y_{t} respectivo sea cero.

Además, asumiremos que la constante M es lo suficientemente grande (por ejemplo, la suma de las demandas para el horizonte de planificación). En términos prácticos esto hace que el problema no tenga limitantes de capacidad (es decir, es no capacitado) y que, en un extremo, podría producir en el primer período todo lo requerido durante el horizonte de planificación para luego ir satisfaciendo dichos requerimientos con los remanentes de inventario.

Inventario Inicial s_{0}=0: Se asume que no se dispone de inventario al inicio del horizonte de planificación.

Finalmente se establecen condiciones de no negatividad y binarios a las variables según corresponda.

Alternativamente se propone otra formulación como alternativa al Problema de Tamaño de Lote No Capacitado.

Formulación Dinámica Problema de Tamaño de Lote No Capacitado

Variables de Decisión:

  • w_{ts} = cantidad producida en el periodo t para satisfacer la demanda en el periodo s.
  • s_{ts} = inventario al final del periodo t destinado para el periodo s.
  • y_{t} = 1 si la producción ocurre en el periodo t, 0 si no.

Al conservar la definición de parámetros definida para la formulación anterior, se propone el siguiente modelo de Programación Entera:

formulación dinámica tamaño de lote no capacitado

De modo de corroborar la equivalencia de las formulaciones anteriores se propone una instancia sencilla que corresponde a 5 períodos de planificación (T=5) y donde los valores de los parámetros se resumen en la siguiente tabla. Por ejemplo, p_{1}=3 representa el costo de producción unitario en el período 1.

parámetros uls

La solución óptima alcanzada con la Formulación Tradicional del Problema de Tamaño de Lote No Capacitado ULS se observa en las celdas de color amarillo en la imagen a continuación. Se producen 32, 125 y 20 unidades en los períodos 1, 2 y 5, respectivamente, almacenando sólo productos en inventario al final del período 2 y 3 (84 y 36 unidades, respectivamente). El valor óptimo (costo total) asciende a $781.

solución óptima formulación tradicional uls

De forma análoga la solución óptima obtenida con la Formulación Dinámica del Problema de Tamaño de Lote No Capacitado ULS se observa en las celdas de color amarillo en la tabla a continuación.

Notar que w_{11}=32, es decir, en el primer período se produce sólo lo necesario para satisfacer los requerimientos de dicho período. Adicionalmente w_{22}=41, w_{23}=48 y w_{24}=36, es decir, en el período 2 se producen en total 125 unidades (41+48+36), para satisfacer la demanda de los períodos 2, 3 y 4. Por último en el período 5 se produce simplemente 20 unidades (w_{55}=20) para cumplir lo requerido.

Naturalmente dado lo descrito, la solución alcanzada en la Formulación Dinámica del ULS es equivalente a la obtenida en la Formulación Tradicional del ULS.

solución óptima formulación dinámica uls

Se puede consultar otras variantes de Problemas de Planificación de la Producción en nuestro sitio donde se detalla diversas formulaciones e instancias de problemas de esta naturaleza, donde destaca la contribución de la Investigación de Operaciones como herramienta de apoyo para la toma de decisiones.

[sociallocker]Descarga Aquí el Problema de Tamaño de Lote No Capacitado (ULS)[/sociallocker]

Qué es la Programación Entera

¿Qué es la Programación Entera?: Un modelo de Programación Entera es aquel cuya solución óptima tiene sentido solamente si una parte o todas las variables de decisión toman valores restringidos a números enteros, permitiendo incorporar en el modelamiento matemático algunos aspectos que quedan fuera del alcance de los modelos de Programación Lineal.

En este sentido los algoritmos de resolución de los modelos de Programación Entera difieren a los utilizados en los modelos de Programación Lineal, destacándose entre ellos el Algoritmo de Ramificación y Acotamiento (o Branch & Bound), Branch & Cut, Planos Cortantes, Relajación Lagrangeana, entre otros.

Los modelos de Programación Entera se pueden clasificar en 2 grandes áreas: Programación Entera Mixta (PEM) y Programación Entera Pura (PEP).

categorías programación entera

Programación Entera Mixta (PEM)

A esta categoría pertenecen aquellos problemas de optimización que consideran variables de decisión enteras o binarias pero no de forma exclusiva. De esta forma un problema de PEM puede considerarse como un híbrido entre distintas categorías de modelamiento, siendo un caso típico aquel que considera la mezcla de variables enteras y variables continuas (estas últimas características de los modelos de Programación Lineal). A modo de ejemplo los siguientes artículos que hemos abordado en el Blog dan cuenta de modelos de Programación Entera Mixta:

  1. Incorporación de Costos Fijos
  2. Problemas de Localización y Transporte
  3. Problema de Generación Eléctrica

Programación Entera Pura (PEP)

En esta categoría encontramos aquellos modelos de Programación Entera que consideran exclusivamente variables de decisión que adoptan valores enteros o binarios. Un ejemplo de ello son las siguientes aplicaciones:

  1. Problema de Asignación
  2. Problema de Corte de Rollos
  3. Selección de Invitados a una Boda
  4. Programación de la Explotación Forestal
  5. Problema de la Mochila

Notar que en los problemas anteriores (PEP) el conjunto de las soluciones factibles (o dominio de soluciones factibles) es finito. Esto ocurrirá generalmente con los problemas de Programación Entera (puros).

Adicionalmente resulta interesante hacer un contrastes entre las propiedades de un modelo de Programación Lineal (PL) y uno de Programación Entera (PE). A continuación se presentan 2 modelos de optimización que se diferencian únicamente en que al segundo de ellos (PE) se le exige que las variables de decisión adopten valores enteros.

comparación pl y pe

Para los problemas propuestos realizamos una representación gráfica haciendo uso del software Geogebra. El dominio de soluciones factibles del Problema Lineal (PL) corresponde al área achurada de color verde. Por otro lado el dominio de soluciones factibles del Problema Entero (PE) es enumerable y corresponde a las coordenadas denotadas por A, E, F, B, G, H, I, J, K, C, L, M, D (que es un subconjunto del dominio de factibilidad del PL). En este caso en particular la solución óptima de ambos problemas coincide (en el vértice C), no obstante, perfectamente podrían ser distintas (bastaría con modificar los parámetros del problema).

dominio lineal y entero

En este contexto y dada la naturaleza de los problemas propuestos, el valor óptimo del Problema Lineal (PL) será una cota superior del valor óptimo del Problema Entero (PE). También se concluye que el dominio de soluciones factibles de un modelo de Programación Lineal (cuando existe) representa un conjunto convexo (los problemas de Programación Lineal son convexos) y en el caso del problema de Programación Entera Pura su conjunto de soluciones factibles es discreto.

Adicionalmente según tratamos en el artículo Por qué no aparece el Informe de Confidencialidad (o Informe de Sensibilidad) en Solver de Excel se debe tener en cuenta que en la utilización de software para la resolución computacional del modelos de Programación Entera no tendremos acceso a los reportes de sensibilidad como en el caso de la implementación de modelos de Programación Lineal. De esta forma ante la necesidad de analizar el impacto en los resultados ante la modificación de los parámetros del problema será necesario reoptimizar ante la información que brinde el o los nuevos escenarios.

resultados solver sin informe de sensibilidad

Es importante destacar que las aplicaciones de la Programación Entera no reemplaza la versatilidad que ofrece el disponer de modelos de Programación Lineal. Más aún, se pueden considerar estas categorías de modelamiento matemático como complementarias en el ámbito de la Investigación de Operaciones.

En este sentido en términos abstractos los modelos de Programación Entera imponen un desafío mayor al momento de la resolución en comparación a las propiedades simplificadoras que están asociadas a los problemas de Programación Lineal. De esta forma se espera que el tomador de decisiones sea capaz de evaluar la relación rigurosidad del modelado con el costo (complejidad) de la resolución del mismo.

Problema de Explotación de Minas y Transporte de Carbón a Puertos

Es frecuente reconocer en los problemas de optimización que representan una estructura productiva, un componente de costo fijo asociado a la utilización de un recurso (dentro de un intervalo de producción relevante) y un costo variable que que asume proporcional al nivel de actividad que represente la unidad productiva (por ejemplo, lo que se refiere a costos de producción, costos de transporte en una red logística, entre otros). Por ejemplo, el Problema de Inclusión de Costos Fijos en Programación Entera representa una situación muy sencilla de lo anteriormente descrito.

En este contexto a continuación se presenta un problema de operación de minas de carbón que su simple utilización tiene asociado un costo fijo, además de incurrir en costos variables por concepto de producción y transporte a distintos puertos demandantes, que adicionalmente tienen requerimientos particulares sobre la calidad del producto recepcionado.

Problema de Explotación de Minas y Transporte

La compañía ABC puede explotar hasta tres minas de carbón y debe realizar envíos a tres puertos. El costo por tonelada de producción (en dólares), el costo fijo de operación en dólares (en caso de ser utilizada), los contenidos de una cierta clase de ceniza y de sulfuro por tonelada y las capacidades de producción (en toneladas de carbón) se resumen en la siguiente tabla:

antecedentes-productivos-mi

Por su parte, las toneladas demandadas que deben ser enviadas a cada puerto, conjuntamente con los costos de transporte (en dólares por tonelada) se dan en la siguiente tabla:

demanda-puertos

Formule y resuelva un modelo de optimización que permita determinar la eventual operación de cada mina y sus niveles de producción, de modo de satisfacer los requerimientos de demanda y que las cantidades enviadas a cada puerto contenga a los más un 4,5% de ceniza y a lo más un 3% de sulfuro.

Variables de Decisión:

variables-minas-y-puertos

Parámetros:

parametros-minas-y-puertos

Función Objetivo: Se desea minimizar los costos asociados a la explotación de las minas, el costo de producción del carbón y los costos de transporte del carbón enviado desde las minas a los puertos.

funcion-objetivo-minas-y-pu

Restricciones:

Capacidad de Producción de las Minas: cada mina puede operar a su capacidad máxima de producción para abastecer los requerimientos de los distintos puertos en caso en que se decida realizar funciones de explotación en la misma.

capacidad-minas

Demanda de Carbón los Puertos: cada puerto debe recibir la cantidad de toneladas de carbón que demanda.

demanda-carbon-puertos

Máximo Porcentaje de Ceniza admitido por cada Puerto: cada puerto esta dispuesto a recibir como máximo un 4,5% de ceniza en los envíos de carbón que recibe desde las minas. En este caso se expresa dicha condición de forma general a través de parámetros.

maximo-ceniza-puertos

Máximo Porcentaje de Sulfuro admitido por cada Puerto: similar al caso anterior pero estableciendo un límite máximo al porcentaje de sulfuro que admite cada puerto (en el ejemplo un 3%).

maximo-sulfuro-puertos

No Negatividad: las toneladas producidas en las minas y transportadas a los puertos naturalmente deben satisfacer las condiciones de no negatividad.

no-neg-minas-y-puertos

A continuación de presenta un extracto de la implementación computacional del modelo anterior haciendo uso de Solver de Excel junto a un tutorial de nuestro canal de Youtube con los detalles de la resolución:

solucion-minas-y-puertos-so

Se puede observar que sólo se utilizan las minas 1 y 3. La mina 1 envía 35, 45 y 30 toneladas al Puerto 1, 2 y 3, respectivamente. En el caso de la mina 3, ésta envía 35, 35 y 30 toneladas a los Puertos 1, 2 y 3, respectivamente. La demanda en toneladas de carbón es satisfecha en los puertos y se respeta adicionalmente la capacidad máxima de producción de las minas. Adicionalmente se puede observar en color verde el porcentaje de ceniza o sulfuro (según sea el caso) que recibe cada puerto lo cual satisface las condiciones expuestas. Finalmente el valor óptimo, es decir, el costo mínimo asociado al plan de producción y transporte descrito es de 14.550 dólares.

¿Quieres tener el archivo Excel con la implementación computacional de este problema?

[sociallocker]

MUCHAS GRACIAS!. DESCARGA AQUÍ EL ARCHIVO

[/sociallocker]

Problema de Inclusión de Costos Fijos en Programación Entera

La estructura de cobro utilizadas en general por las compañías de servicios donde el cliente debe pagar un valor fijo sólo por su utilización (independiente del nivel de consumo y/o eventualmente acotado a un máximo permitido) y un valor variable proporcional al consumo, son una práctica común en el esquema de fijación de precios. Esto suele ser el caso de las compañías de luz, agua, gas, teléfono, entre otras, donde el sólo hecho de tener una red operativa genera costos para la empresa los cuales son traspasados en parte o en su totalidad a los usuarios en un cargo fijo o de mantención más un cargo variable por consumo.

El artículo que presentamos a continuación busca, desde la perspectiva del cliente, minimizar el pago asociado a una cuenta telefónica mensual a través de un modelo de Programación Entera, lo que constituye un problema de inclusión de costos fijos. Cabe destacar que la complejidad del problema es menor y dado los datos se podría resolver por simple inspección, no obstante, nuestro interés es mostrar un marco de análisis pertinente a este tipo de problemas.

Ejemplo Inclusión de Costos Fijos en Programación Entera

Tres empresas telefónicas pidieron que me suscribiera a su servicio de larga distancia dentro del país. MaBell cobra US$16 fijos por mes, más US$0,25 por minuto. PaBell cobra US$25 por mes, pero el costo por minuto se reduce a US$0,21. Y con PhoneBell, la tarifa fija es de US$18 y el costo por minuto de US$0,22. Suelo hacer un promedio de 200 minutos de llamadas de larga distancia al mes. Suponiendo que no pague el cargo fijo si no hago llamadas y que puedo repartir a voluntad mis llamadas entre las tres empresas, ¿Cómo debo repartir las llamadas entre las tres empresas para minimizar la cuenta telefónica mensual?.

Variables de Decisión:

variables-inclusion-costos-

Función Objetivo:

funcion-objetivo-telefonia

Donde F_{i} representa el costo fijo mensual asociado a la compañía i y V_{i} el costo variable por minuto de larga distancia nacional correspondiente a la compañía i. Para mayor claridad se ha marcado con color amarillo y verde los elementos de costos fijos y variables (respectivamente) en la función objetivo.

Restricciones:

restricciones-telefonia

Donde (1) garantiza que se satisfaga el consumo mensual de llamadas, (2) que se realizan llamadas sólo a través de la(s) compañía(s) donde se asume el cargo fijo mensual y (3) impone las condiciones de no negatividad para las variables continuas X_{i}.

A continuación se muestra los resultados de la implementación computacional en Solver para el problema de telefonía que considera la inclusión de costos fijos.

solucion-solver-telefonia

La solución óptima consiste en X_{1}=0X_{2}=0X_{3}=200Y_{1}=0Y_{2}=0Y_{3}=1, es decir, se utiliza exclusivamente la compañía 3 (PhoneBell) y se cursan los 200 minutos mensuales de llamadas de larga distancia a través de dicha compañía. El valor óptimo es de US$62 que representa el costo mínimo de la cuenta telefónica mensual (US$18+200*US$0,22).

¿Quieres tener el archivo Excel con la implementación en Solver del Problema de Inclusión de Costos Fijos en Programación Entera?

[sociallocker]

MUCHAS GRACIAS!. DESCARGA AQUÍ EL ARCHIVO

[/sociallocker]