Está en la página 1de 34

MATERIA:

Investigación de operaciones

NUMERO DE CONTROL
213S0424

DOCENTE:
Ing. Karen Yaneth Santos Santiago

NOMBRE DEL ALUMNO:


Isaí Pérez Del Ángel

GRUPO:
4to”C”

PERIODO:
Febrero – Junio 2023

Tantoyuca, Ver., 7 de Junio del 2023


INTRODUCCIÓN
La programación entera es una rama de la optimización matemática que se centra en la
resolución de problemas de decisión en los cuales las variables de decisión deben tomar
valores enteros. Estos problemas tienen una amplia gama de aplicaciones en diversas áreas,
como la planificación de la producción, la asignación de recursos, la logística y la
programación de horarios. Para resolver estos desafiantes problemas de optimización, se han
desarrollado diversos métodos de programación entera que ofrecen enfoques y técnicas
específicas.

El objetivo de esta investigación es explorar y analizar los diferentes métodos de


programación entera disponibles en la literatura científica y en la práctica. Se examinarán en
detalle los métodos más comunes, como el método de ramificación y acotación, el método de
planos de corte y el método de descomposición y coordinación, entre otros. Se compararán y
evaluarán estos métodos en términos de eficiencia computacional, calidad de las soluciones
obtenidas y aplicaciones más efectivas.

Además, se analizarán las implementaciones y herramientas computacionales disponibles


para implementar los métodos de programación entera. Se examinarán bibliotecas populares,
como CPLEX, Gurobi y SCIP, considerando aspectos como su facilidad de uso, rendimiento y
disponibilidad para diferentes lenguajes de programación. Asimismo, se explorarán casos de
uso y aplicaciones prácticas de estos métodos en la optimización de la cadena de suministro,
la programación de la producción y otros problemas relevantes.
Mediante esta investigación, se busca proporcionar una visión general de los métodos de
programación entera, sus características distintivas y su aplicabilidad en diferentes contextos.
Los resultados obtenidos permitirán comprender mejor las fortalezas y limitaciones de cada
método, así como identificar áreas de investigación futura y posibles mejoras en la resolución
de problemas de programación entera.

pág. 1
Investigación
¿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).

METODOS DE PROGRAMACIÓN ENTERA


 Método de Descomposición de Benders
 Método de Planos Cortantes (Optimización Dual)
 Problema de Tamaño de Lote No Capacitado (Formulación y Resolución en
Solver)
 Ejemplo de Relajación Lagrangeana en Programación Entera
 Modelo de Localización y Transporte con Preferencias

pág. 2
Investigación
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:

pág. 3
Investigación
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:

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.

pág. 4
Investigación
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:

¿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:

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

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:

pág. 5
Investigación
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:

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.

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.

pág. 6
Investigación
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:

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.

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):

pág. 7
Investigación
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:

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):

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:

pág. 8
Investigación
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:

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

pág. 9
Investigación
MÉTODO DE PLANOS CORTANTES (OPTIMIZACIÓN DUAL)

En un tutorial anterior discutimos sobre la Relajación Lagrangeana, y gracias a dicho ejemplo,


vimos que al variar los valores de las variables asociadas a la relajación (más conocidos como
los Multiplicadores de Lagrange), el valor de la función objetivo del Problema Dual
Lagrangeano se va aproximando al valor que se obtiene al resolver el problema original. En
palabras simples, lo que se realizó en ese ejemplo fue optimizar los multiplicadores.

En este artículo, lo que veremos es una forma distinta de optimizar dichas variables, mediante
un algoritmo que lleva el nombre de Método de Planos Cortantes o Método de Planos de
Corte (o simplemente Planos Cortantes). Este algoritmo también se conoce con el nombre de
Cortes basados en Descomposición de Benders, y esto es principalmente debido a que este
procedimiento utiliza inecuaciones muy similares a las que se ocupan en el método propuesto
por J.F. Benders.

La idea fundamental detrás del algoritmo de planos cortantes es comenzar con una solución
inicial factible para el problema relajado, para después “cortar” o sacar dicha solución y
cambiarla por otra que mejore el valor de la función objetivo que se está optimizando (es decir
el valor del Problema Dual Lagrangeano).

Además, para iniciar este método es necesario tener una consideración especial:

El conjunto de puntos que constituyen las soluciones enteras factibles del problema
relajado debe ser acotado.

¿Por qué?: Debido a que el algoritmo de planos cortantes utiliza estos puntos, por lo que si el
conjunto fuera no acotado, entonces el algoritmo nunca convergería (es decir, nunca

pág. 10
Investigación
terminaría de iterar). Este conjunto acotado se conoce como la envoltura convexa, pero
cuidado: no es cualquiera, es la envoltura convexa de las soluciones enteras del problema
relajado.

Veamos entonces cómo funciona este método de forma general. Supongamos que tenemos el
siguiente problema, en donde el segundo conjunto de restricciones Cx\leq d es “difícil” y
complica la resolución, por lo tanto lo sacamos y lo llevamos a la función objetivo, a lo cual
llamaremos el problema relajado:

Además, supongamos que es posible enumerar todos los puntos que son factibles para
nuestro problema relajado (es decir, los que están dentro de la envoltura convexa). Si
pudiéramos hacer eso, entonces bastaría con evaluar en la función objetivo todos esos
puntos, y ver cuál entrega el menor valor: este punto sería entonces nuestra solución óptima.
Lo que se menciona anteriormente, se puede representar matemáticamente de la siguiente
forma, donde p es la cantidad de puntos que pertenecen a las soluciones enteras de este
problema relajado:

pág. 11
Investigación
Con lo anterior en consideración, podemos entonces expresar nuestro Problema Dual
Lagrangeano de la siguiente forma:

Lo cual, se puede volver a reformular y expresar mediante un problema de optimización. Esta


reformulación se conoce como el Problema Maestro, en donde ocupamos una variable auxiliar
u y queda expresado de la siguiente forma:

Esta reformulación es importante de entender, ya que gracias a que se dispone de cada uno
de los puntos que pertenecen a las soluciones enteras del problema relajado (recuerda que
dijimos que se podían enumerar), entonces cada una de las restricciones del tipo:

Constituyen un corte para nuestro problema.


Esto nos lleva a la siguiente pregunta: ¿si tenemos todos los puntos, entonces agregamos
todos los cortes inmediatamente (simultáneamente)?
La respuesta es NO, ya que esto sería un trabajo muy tedioso, y tomaría mucho tiempo
computacional. Para esto existe el algoritmo de los planos cortantes, para ir
agregando iterativamente los cortes, de manera tal que tome menos tiempo que agregarlos
todos en conjunto.
Como hemos llamado a la reformulación anterior el Problema Maestro, entonces necesitamos
un sub-problema, o problema esclavo. Este sub-problema corresponde al problema relajado
que discutimos al principio del desarrollo:

Finalmente, la última pregunta que nos podemos hacer es con cuántos cortes partir. Para la
pregunta anterior no hay una respuesta que pudiésemos dar a priori como exacta, pero una
buena aproximación es que la cantidad de cortes iniciales (o puntos iniciales a utilizar) sea
igual a la cantidad de variables o penalizadores, incrementado en una unidad, es decir:

Número de Cortes Iniciales = Número de Penalizadores + 1


pág. 12
Investigación
Algoritmo de Planos Cortantes
El algoritmo de planos cortantes se puede enunciar mediante los siguientes pasos. Además,
luego encontrarás un resumen mediante un diagrama de flujo:

 Sea k=1. Sea x1, x2 ,x3 ,…, xr la cantidad de puntos necesarios para iniciar el algoritmo.
Crear los cortes del tipo \mu \leq c^{T}x_{i}+\lambda ^{T}(Cx_{i}-d) con dichos puntos.
 Resolver el Problema Maestro.
 El problema maestro entregará una actualización para los valores de los Multiplicadores de
Lagrange. Con ellos, resolver el sub-problema.
 Al resolver el sub-problema, se encontrará un nuevo punto perteneciente a las soluciones
factibles del problema relajado. Verificar el criterio de parada. Si se cumple, terminar; sino,
crear un nuevo corte.
 Agregar el corte al Problema Maestro, hacer k=k+1 y volver a 2.

La teoría de este procedimiento puede ser un poco complicada, así que veamos un ejemplo.

Ejemplo Método de Planos Cortantes


Supongamos el siguiente problema de optimización, en donde las primeras cuatro
inecuaciones serán las que permanecen en el problema relajado, y las ultimas 4 son las
inecuaciones “complicadas” que serán incorporadas a la función objetivo.

pág. 13
Investigación
Sin embargo, antes de ello presentaremos una representación gráfica del problema
propuesto. El área achurada de color verde corresponde al dominio de soluciones factibles de
la relajación continua del problema, es decir, omitiendo las condiciones de integralidad para
las variables de decisión.
En este contexto la solución óptima de la relajación continua es el vértice B donde x=30/11 e
y=42/11, con valor óptimo V(PL)=186/11=16,909 (aprox).
De forma análoga, la solución óptima del problema entero se encuentra identificado con la
letra F con x=3 e y=3, siendo el valor óptimo V(PE)=15.

Notar que la representación gráfica anterior y la obtención de la solución óptima de


la relajación continua y del modelo de Programación Entera propuesto tiene un fin
sólo ilustrativo, de modo que favorezca la comprensión de los conceptos que presentamos más
adelante.

pág. 14
Investigación
continuación retomamos el procedimiento del Algoritmo de Planos Cortantes. Para ello
escribiremos el problema relajado (no confundir con la relajación continua!) de la siguiente
forma:

Al escribir este problema, los puntos pertenecientes a la envoltura convexa de las soluciones
enteras del problema relajado son los siguientes:

Una representación gráfica de la envoltura convexa del problema relajado se muestra a


continuación:

pág. 15
Investigación
A pesar de que el método sugiere una cantidad de cortes iniciales, como se puede ver en este
ejemplo son sólo 8 puntos (denotados por E, F, G, H, I, J más las coordenadas (2,3) y (3,2)),
por lo que no seguiremos esta sugerencia. Para iniciar, hacemos k=1 y utilizaremos el punto
(1,4) para crear el siguiente corte:

Por lo que el Problema Maestro en la iteración k=1 es:

Al resolver este problema, la solución óptima es:

Con estos valores para los Multiplicadores de Lagrange, resolvemos el problema relajado:

El cual, entrega como resultado los valores x=5 e y=1, con un valor objetivo de 58,5.
Luego verificamos el criterio de parada (0\neq 58,5) por lo que el nuevo punto que nos permite
generar un nuevo corte:

Hacemos k=2 y el nuevo Problema Maestro es:

Al resolver este problema, la solución óptima es:

pág. 16
Investigación
Con estos valores para los Multiplicadores de Lagrange, resolvemos el problema relajado:

El cual, entrega como resultado los valores x=2 e y=4, con un valor objetivo de 15,882.
Verificamos el criterio de parada (13,76\neq 15,882) por lo que el nuevo punto que nos
permite generar un nuevo corte:

Hacemos k=3 y el nuevo Problema Maestro es:

Al resolver este problema, la solución óptima es:

Con estos valores para los Multiplicadores de Lagrange, resolvemos el problema relajado:

El cual, entrega como resultado los valores x=5 e y=1, con un valor objetivo de 15,6,
verificamos el criterio de parada (15,6=15,6), por lo que como se cumple el criterio de parada
y el algoritmo se detiene.

pág. 17
Investigación
Al estar optimizando los valores para una Relajación Lagrangeana, hemos encontrado un
valor que cumple con lo siguiente:

Particularmente para este problema se cumple que:

Mis sinceros agradecimientos a mi amigo Javier Maturana Ross en la elaboración de este


artículo, esperando nos pueda seguir contribuyendo con sus aportes y conocimientos al sitio
de Gestión de Operaciones.

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.

pág. 18
Investigació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).

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.

pág. 19
Investigación
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.

nventario 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.

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

pág. 20
Investigación
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.

pág. 21
Investigación
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.

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

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.

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.

pág. 23
Investigación
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.

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.

pág. 24
Investigación
EJEMPLO DE RELAJACIÓN LAGRANGEANA EN
PROGRAMACIÓN ENTERA

El método de Relajación Lagrangeana (o Relajación Lagrangiana) consiste básicamente en un


Método de Descomposición cuya idea se basa en descomponer un problema original
restringido, en principio complejo de resolver, de modo de reemplazarlo por otro problema que
permita simplificar la resolución. Esto se logra incorporando aquellas restricciones que se
consideran difíciles (las que hacen compleja la resolución directa del problema) a la función
objetivo, donde cada una de éstas tendrá asociada un Multiplicador de Lagrange \lambda que
permitirá (iterativamente) penalizar el incumplimiento de las mismas al ser establecidos
distintos valores para los multiplicadores. De esta forma se espera que las restantes
restricciones (las que no se incorporan mediante penalizaciones en la función objetivo)
permitan verificar un problema cuya resolución sea fácil (o al menos más sencilla que el
problema en su estructura original).

El problema asociado a encontrar los valores de que permitan minimizar la


función (que en sí es un problema de maximización) se conoce como el Problema
Dual Lagrangeano. En general puede resultar un problema tedioso de resolver, no obstante,
a continuación se enumeran una serie de pasos que permiten una aproximación a la
implementación del método de Relajación Lagrangeana.

Supongamos que el problema original es de Maximización y que la o las restricciones


relajadas son inecuaciones del tipo :

1. Comenzar con cada \lambda igual a cero. Definir inicialmente (y de forma arbitraria) un
Paso de magnitud k.
2. Resolver LR(\lambda) de modo de alcanzar la solución óptima en términos de x.
3. Para cada restricción violada por x, incrementar el correspondiente \lambda por k.
4. Si han transcurrido m iteraciones desde que se alcanzo la última relajación para el
problema dual lagrangeano, disminuir k a la mitad.
5. Ir al Paso 2.
pág. 25
Investigación
Para ilustrar el procedimiento anterior consideremos un Problema de la Mochila como el que
se describe a continuación:

Luego de resolver el problema de Programación Entera propuesto haciendo uso de Solver


de Excel se alcanza la Solución Óptima: con Valor
Óptimo: .

Relajaremos las Restricciones 1 y 2 incorporando éstas a la función objetivo y dejando


exclusivamente las condiciones de binarios para las variables de decisión. Esto da origen a
nuestro problema de Relajación Lagrangeana :

Consideraremos inicialmente y . La resolución de dicha instancia es trivial


obteniéndose como Solución Óptima: y Valor
Óptimo: . Notar que la solución alcanzada no satisface la Restricción 1 (sin
embargo, se satisface la Restricción 2).

Penalizaremos la Restricción 1 al considerar (penalización arbitrariamente definida


como punto de partida) y manteniendo (dado que la Restricción 2 se satisface).
La Solución Óptima es con Valor Óptimo de . En
consecuencia, la penalización establecida resulto ser insuficiente para que se evitara la
violación (incumplimiento) de la Restricción 1.

Sea (aumentamos nuevamente en 0,5 la penalización de la Restricción 1) y .


La Solución Óptima se mantiene: con Valor
Óptimo: .

Sea y . La Solución Óptima se


mantiene: con Valor Óptimo: . Se sigue violando la
Restricción 1.
pág. 26
Investigación
Sea y . La Solución Óptima ahora es: con Valor
Óptimo: . Ahora se satisfacen las Restricciones 1 y 2, teniendo éstas holguras de
5 y 1, respectivamente. Luego si se decide disminuir la penalización de la Restricción 1
a se vuelve al mismo punto de la iteración anterior. En consecuencia se disminuye la
magnitud del paso (penalización) a 0,25 de modo que y . La Solución
Óptima es: con Valor Óptimo: .

No obstante, la Restricción 2 no se satisface para esta nueva solución y de esta forma se


establecen nuevas penalizaciones: y y que dan origen a la Solución
Óptima: con Valor Óptimo: .

El procedimiento continua de esta forma disminuyendo la magnitud del paso (penalización)


cuando resulta necesario. Notar que de esta forma las respectivas penalizaciones pueden
aumentar o disminuir al cabo de una iteración. El detalle de las iteraciones realizadas se
muestra a continuación:

Para cada iteración k se muestra la penalización aplicada para la Restricción 1 y 2


respectivamente, el criterio para la actualización del Paso, el valor de la función objetivo de
la Relajación Lagrangeana , la Solución Óptima alcanzada para el problema
(destacado con color amarillo), el valor que representa dicha solución óptima al ser evaluada
en la función objetivo original V(PE), la holgura de la Restricción 1 (2) (con color rojo se
destaca cuando se viola la restricción en una determinada magnitud) y si la solución óptima
alcanzada en la iteración k-ésima es factible en el problema original PE).

pág. 27
Investigación
Según se señala en un tutorial por Michael A. Trick (donde se ha tomado este ejemplo y se
ha extendido a un número mayor de iteraciones con ciertas variaciones en la aplicación de las
mismas) las penalizaciones “óptimas” (luego de seguir iterando) corresponderán
aproximadamente a y , alcanzando que constituye una
cota superior del valor óptimo del problema original. La Solución Óptima asociada a este
escenario es que es factible en el problema original y reporta un
valor en la función objetivo de 11. Notar que la Solución Óptima del PE)
es con Valor Óptimo de 13.

Modelo de Localización y Transporte con Preferencias

Los modelos de optimización que integran decisiones de localización y transporte han sido
materia de análisis detallado en nuestro sitio como se aborda en los artículos Optimización
de una Red Logística de Transporte y Localización de Centros de Distribución y
el Problema de Transbordo en una Red Logística de Transporte Multiperíodo, entre
otros. En esta ocasión incorporaremos un concepto adicional a la problemática anterior a
través de la incorporación de las preferencias de los clientes por ser abastecidos por
determinados centros de oferta. A este problema lo llamaremos Modelo de Localización y
Transporte con Preferencias de Clientes y a continuación describiremos un caso particular

pág. 28
Investigación
que permita visualizar una alternativa de formulación sencilla con su correspondiente
implementación computacional.

Asumamos que cada cliente (demandante) ha manifestado su preferencia por ser abastecido
por determinados oferentes (potenciales). En este contexto cada cliente elegirá siempre su
mejor (menor) prioridad de las alternativas ofertas disponibles, es decir, de aquellas que se
decidan instalar (localizar).

Consideremos los siguientes parámetros para el modelo:

Sea el costo de abastecer al cliente j (para el total de su demanda) desde el centro de


oferta i. Como se puede apreciar asumiremos que cada cliente debe ser abastecido por solo
un oferente. Adicionalmente y para efectos de ilustración consideraremos 4 oferentes
(potenciales) y 6 clientes.

Sea K_{i} el costo de instalar el centro de oferta i. Por ejemplo, habilitar (localizar) el oferente
1 tiene un costo fijo de 3.500 unidades monetarias.

Sea p_{ij} la preferencia que manifiesta el cliente j por ser abastecido por el oferente i.
Asumiremos que un menor valor representa una mayor preferencia. Por ejemplo, el cliente 1
prefiere ser abastecido por los oferentes 4,1,3,2, respectivamente. En este sentido si se
llegará, por ejemplo, solo a instalar el oferente 1 y 3, el cliente 1 debe ser abastecido del
oferente 1 dado que de las 2 alternativas este oferente representa una mayor preferencia.

pág. 29
Investigación
Dada las definiciones anteriores, el Modelo de Localización y Transporte con
Preferencias de Clientes es el siguiente:

Donde es una variable binaria que adopta un valor 1 si se instala el centro


(oferente) i (cero en caso contrario. Por otra parte es una variable binaria que
indica si el cliente j se abastece (exclusivamente) desde el oferente i (cero en
caso contrario). Luego, la función objetivo representa la minimización de los
costos de instalación de los oferentes y el transporte que se origina entre éstos y
los clientes.
En cuanto a las restricciones tenemos:
 (1) Determina que cada cliente sea abastecido desde un único centro de
oferta.
 (2) Los clientes pueden optar a ser abastecidos desde aquellos oferentes
que hayan sido seleccionados.
 (3) La preferencia de cada cliente corresponderá al promedio ponderado
de columna correspondiente en la matriz de preferencias (asociada a dicho
cliente) por la decisión de abastecimiento desde un oferente dado.

pág. 30
Investigación
 (4) Se impone a través de la preferencia calculada en (3) que cada cliente
sea atendido por aquel oferente que le reporta la mayor satisfacción
(menor puntuación en el ejemplo según lo descrito previamente).
 (5) Las variables de decisión son binarias.
Luego de implementar en Solver el modelo de Programación Entera anterior
se alcanzan los siguientes resultados:

Se observa que se instalan los centros de oferta 1, 2 y 4, que representa


un costo de localización (total) de $9.000. En cuanto a las decisiones de
distribución, el oferente 1 abastece al cliente 4; el oferente 2 abastece a los
clientes 2 y 5 y finalmente el oferente 4 abastece a los clientes 1, 3 y 6. El costo
total de transporte es de $12.062, de modo que el costo
total es $21.062 (valor óptimo). Notar que cada cliente recibe los pedidos de su
mejor alternativa posible (marcado con color verde). A continuación se
encuentra disponible el archivo Excel con la implementación computacional
del Modelo de Localización y Transporte con Preferencias para ser
descargado.

pág. 31
Investigación
CONCLUSIÓN
En conclusión, los diferentes métodos de programación entera son herramientas poderosas
que nos permiten resolver problemas de optimización en diversas áreas de aplicación. Estos
métodos son especialmente útiles cuando se enfrentan restricciones y decisiones que
requieren que las variables de decisión sean enteras.
La enumeración exhaustiva, aunque poco eficiente para problemas grandes, es útil para
problemas pequeños o cuando se necesita una solución exacta. Los métodos de corte de
plano pueden mejorar la eficiencia al agregar restricciones adicionales para eliminar
soluciones no enteras, pero pueden seguir siendo costosos computacionalmente.
El método de ramificación y acotamiento es ampliamente utilizado debido a su capacidad para
encontrar soluciones óptimas y su eficiencia en muchos casos. Sin embargo, en problemas
complejos, puede requerir mucho tiempo de cómputo.
Los métodos de programación entera mixta son útiles cuando se pueden permitir variables
continuas, lo que puede reducir la complejidad del problema y mejorar la eficiencia de la
resolución. Además, los métodos de relajación y redondeo pueden proporcionar soluciones
factibles en un tiempo más corto, aunque no garantizan la óptima.
En general, los métodos de programación entera nos permiten abordar problemas de
optimización con restricciones y decisiones enteras, lo que puede ser crucial en áreas como la
planificación de la producción, la logística, la asignación de recursos y muchas otras
aplicaciones. Estos métodos nos ayudan a encontrar soluciones óptimas o cercanas a lo
óptimo, optimizando la utilización de recursos, minimizando los costos y maximizando los
resultados deseados.
Es importante seleccionar el método más adecuado según las características del problema, la
eficiencia computacional requerida y los recursos disponibles. Además, el uso de técnicas
avanzadas, combinación de métodos o enfoques híbridos puede ser necesario para abordar
problemas más complejos y obtener soluciones de mayor calidad en un tiempo razonable. En
última instancia, los métodos de programación entera nos brindan herramientas valiosas para
la toma de decisiones y la optimización en diversos contextos.

pág. 32
Investigación
REFERENCIAS BIBLIOGRAFICAS

 Tutoriales, G. E. O. (s/f). Programación Entera Archivos - Página 3 de 9 -


Gestión de Operaciones. Gestión de Operaciones. Recuperado el 7 de
junio de 2023, de
https://www.gestiondeoperaciones.net/category/programacion-
entera/page/3/
 Achterberg, T., Koch, T., & Martin, A. (2020). SCIP Optimization Suite.
Recuperado de https://www.scipopt.org/
 Puget, J. F. (2018). Integer Programming - Using solvers and modeling
languages. Recuperado de https://www.gurobi.com/resource/integer-
programming-using-solvers-and-modeling-languages/

pág. 33
Investigación

También podría gustarte