Problema de Inversión y Selección de Proyectos

Los modelos de Programación Entera constituyen una alternativa eficiente para apoyar la toma de decisiones en aquellos problemas donde se debe implementar (o no) una alternativa o curso de acción que no admite soluciones intermedias. Tal es el caso del Problema de Selección de Cartera de Proyectos donde no es razonable, por ejemplo, si se destina la mitad de los fondos requeridos para un proyecto, asumir que de éste se obtendrá la mitad de sus beneficios o Valor Presente Neto (VPN). Dicho de otro modo, el cumplimiento del supuesto de la proporcionalidad de la Programación Lineal no es adecuado.

El problema que se presenta a continuación aborda estos aspectos y adicionalmente se busca proponer distintas alternativas al momento de establecer las restricciones o condiciones del problema.

Problema de Inversión y Selección de Proyectos

Una empresa está pensando invertir en cuatro proyectos diferentes, cada proyecto se finaliza a lo más en 3 años. Los flujos de caja requeridos en cada año junto con el Valor Presente Neto (VPN) de cada proyecto, concluidos los años de ejecución, y las disponibilidades de recursos financieros se resumen en la siguiente tabla:

tabla-inversion-y-vpn-proye

Interesa determinar en cuáles proyectos invertir de modo de conseguir el mayor VPN de la inversión.

Variables de Decisión: Se desea determina en cuáles proyectos invertir de las 4 alternativas posibles.

variables-decision-inversio

Función Objetivo: Maximizar la sumatoria del Valor Presente Neto (VPN) de los proyectos en los cuales se decida invertir.

maximizar-vpn-inversion

Restricciones: Se proponen 3 escenarios para definir las restricciones del problema.

Alternativa 1: Reinvirtiendo el dinero no utilizado en un período, es decir, el dinero que eventualmente quede disponible al final del año 1 y año 2 se puede considerar como parte del presupuesto disponible para el año siguiente. Lo anterior se representa a través de las variables s_{1} y s_{2}, respectivamente.

alternativa-1-inversion-pro

La implementación computacional del problema haciendo uso de Solver de Excel nos entrega los siguientes resultados:

solucion-optima-inversion-1

Se debe invertir en los proyectos 1 y 4. El VPN total es de $51.

Alternativa 2: Sin invertir el dinero no utilizado en un período, pero utilizando el retorno de los proyectos concluidos.

alternativa-2-inversion

En este caso se debe invertir en los proyectos 1, 2 y 4, alcanzando un VPN total de $69.

solucion-optima-inversion-2

Alternativa 3: Reinvirtiendo el dinero no utilizado en un período y también el retorno de los proyectos concluidos.

alternativa-3-inversion

En este caso la solución óptima y valor óptimo es equivalente al escenario planteado en la Alternativa 3.

solucion-optima-inversion-3

Cabe destacar que la Alternativa 3 es la que provee mayor flexibilidad (en cuanto a los presupuestos para inversión) en comparación a las Alternativas 1 y 2, en consecuencia era razonable esperar en este caso que el VPN total de la Alternativa 3 sea mayor o igual que los VPN de las Alternativas 1 y 2.

Notar que el conjunto de las soluciones factibles es finito. Esto ocurrirá generalmente con los problemas de Programación Entera (puros). En el ejemplo, el número de soluciones factibles no supera el número de las soluciones binarias del problema (variables restringidas sólo a valores 0 o 1) que son 2^{4}=16, dado el número de variables utilizadas, de hecho las soluciones factibles son menos de 16 pues en particular x_{i}=1 para i=1,2,3,4 no satisface las disponibilidades de capital en cualquiera de las tres alternativas.

Fórmula del modelo de Tamaño Económico de Pedido (EOQ)

En el modelo de Tamaño Económico de Pedido o EOQ (de sus denominación del inglés Economic Order Quantity) y considerando sus supuestos simplificadores (entre otros demanda constante y conocida y tiempo de reposición o Lead Time constante y conocido) los costos significativos son los costos de mantener el inventario y los costos de hacer el pedido.

Sea D la demanda anual (o la demanda durante el horizonte de evaluación que corresponda), S el costo de emisión de pedidos que se asume que es fijo independiente del tamaño del pedido y H el costo unitario de almacenamiento (anual o según corresponda), la función de costos totales se expresa de la siguiente forma:

costos-totales-eoq

Se puede observar que desde el punto de vista de los costos de almacenamiento existe un incentivo a pedidos de menor tamaño para satisfacer la demanda. No obstante los costos de emisión de pedidos son crecientes cuando los pedidos son de menor tamaño dado que se requerirá de un mayor número de pedidos para satisfacer la demanda. Este efecto contrapuesto de los costos de almacenamiento y emisión de pedidos para distintos tamaños de pedido se observa en la siguiente gráfica:

grafico-costos-eoq

En relación a lo anterior la solución del modelo EOQ busca encontrar el tamaño óptimo de pedido que permite minimizar la función de costos totales (que es la suma de los costos de almacenamiento y costos de emisión). Para encontrar dicho Q óptimo derivamos la función de costos totales en términos del tamaño de pedido e igualamos a cero, para luego encontrar la solución EOQ. A continuación la deducción de la fórmula del modelo EOQ:

deduccion-formula-eoq

Notar que el término C*D marcado con color rojo en la fórmula anterior representa el costo asociado a la compra de las unidades que permite satisfacer la demanda D. Si se asume que no hay descuentos por cantidad dicho costo de compra no discrimina entre distintas alternativas de tamaño de pedido. Por el contrario bajo el escenario de que existe descuentos por cantidad entonces el costo total de compra se verá afectado para distintos tramos de pedido que generan cambios en los precios unitarios. Recomendamos al lector revisar en este caso el modelo EOQ con Descuentos por Cantidad.

Ejemplo: LubeCar se especializa en cambios rápidos de aceite para motor de automóvil. La empresa compra aceite para motor a granel a un distribuidor a $2,5 por galón. En el servicio se atienden unos 150 autos diarios y cada cambio de aceite requiere de 1,25 galones. LubeCar guarda el aceite a granel con un costo de $0,02 por galón y por día. También, el costo de emitir un pedido de aceite a granel es de $20. Considere que el tiempo de entrega del distribuidor (tiempo de espera) es de 2 días. Asuma que un año típico tiene 250 días.

Determine la cantidad óptima de pedido utilizando EOQ:

D=1,25[galones/auto]*150[autos/día]*250[días/año]=46.875[galones/año]. Por tanto la cantidad óptima a pedir es:

solucion-eoq-lubecar

Determine el costo total anual para LubeCar:

costo-total-eoq

El lector podrá observar que el tamaño óptimo de pedido de Q^{*}=612[galones/pedido] es el que minimiza el valor de la función de costos totales (se incluye el costo de la compra). Para corroborar el resultado anterior y con la ayuda de Excel se evalúan otras alternativas de pedido que otorgan costos anuales mayores que la cantidad económica de pedido.

costo-total-para-distintos-

Efecto de un Dato Atípico u Outlier en un Pronóstico de Demanda

Un dato atípico conocido comúnmente también como outlier es aquel cuyo valor es numéricamente distante del resto de los datos. Esta situación en particular se puede ver reflejada en una serie de tiempo cuando la variable en cuestión por alguna causa extraordinaria tiene un comportamiento que escapa a los parámetros de comportamiento usuales. Por ejemplo, tal podría ser el caso del shock de demanda por mascarillas luego de un brote de influenza, la demanda de agua en bidones luego de una emergencia provocada por causas naturales (terremoto, aluvión, etc), la demanda de pilas (baterías) y linternas luego de un terremoto, etc.

En el siguiente artículo presentamos una serie de tiempo que corresponde a la demanda de un producto determinado donde en el mes de Julio se observa una demanda que numéricamente escapa de forma significativa respecto al resto de los datos. Para dicha demanda real se ha aplicado el método de Suavizamiento Exponencial para distintos valores de alfa (0,1; 0,5 y 0,9) como también el método de Medias Móviles para 3 y 5 períodos (n=3 y n=5) obtenidos con la ayuda de Excel.

pronosticos-datos-atipicos

Para favorecer la interpretación de los resultados y por separado se muestra el ajuste de los métodos de pronóstico de demanda anteriormente identificados en las siguientes gráficas:

ajuste-pronostico-de-demand

En el caso del método de Suavizamiento Exponencial se puede observar que mientras mayor sea el valor de alfa el pronóstico reacciona con mayor fuerza a la presencia del dato atípico u outlier. Adicionalmente y luego del efecto del outlier el pronóstico se ajusta nuevamente a valores cercanos a los que se observan en la serie de tiempo. Notar adicionalmente que en los casos de α=0,1 y α=0,5 los pronósticos superan la demanda real en el resto de los períodos, es decir, de Agosto a Diciembre.

Por otra parte y luego de pronosticar la demanda utilizando el método de Media Móvil Simple, se observa que a medida que mayor sea el valor de n los efectos del outlier tienden a perpetuarse en el tiempo. En contraste a lo anterior, al seleccionar n=3 el efecto del outlier se ve reflejado hasta la última oportunidad en que dicho dato real es considerado para efectos de pronósticos, es decir, en la proyección del mes de Octubre (que corresponde al promedio simple de la demanda real de Julio, Agosto y Septiembre).

¿Qué hacer con el outlier?. No es una pregunta con una respuesta sencilla. Una primera recomendación es buscar información complementaria que ayude a explicar las razones de este comportamiento de la demanda que escapa a lo usual. Efectivamente y según los ejemplos presentados anteriormente es difícil extrapolar a futuro un comportamiento que obedece sólo a una causa excepcional. Ahora bien, un dato atípico en casos puntuales puede suponer un cambio sustantivos en las preferencias de los clientes que eventualmente se podría sostener en el tiempo. En dicho caso omitir el dato atípico para efectos de proyección no sería recomendable.

Cálculo del Intervalo de Variación del Lado Derecho que conserva la Base Óptima

Una vez concluidas las iteraciones del Método Simplex y en el caso de alcanzar una solución básica factible óptima, puede resultar de interés determinar un intervalo de variación para un parámetro del vector de los lados derechos de las restricciones que permita conservar la geometría del problema. Esto implica que se conservan las restricciones activas originales en el nuevo escenario (es decir, se mantiene la base óptima) que se genera a partir de la modificación (individual) de un parámetro o coeficiente del lado derecho. Para ilustrar el resultado anterior consideremos el siguiente modelo de Programación Lineal.

modelo-lineal-cambio-lado-d

Luego de llevar a la forma estándar el modelo anterior agregando x_{3}, x_{4} y x_{5} como las variables de holgura de las restricciones 1, 2 y 3, respectivamente, y aplicar las iteraciones necesarias del Método Simplex, se alcanza la siguiente tabla final (óptima):

tabla-optima-simplex-lado-d

La solución óptima es x_{1}=15x_{2}=40 con valor óptimo V(P)=615. El valor de las variables de holgura en el óptimo x_{3}, x_{4} y x_{5} es 0, 0 y 20, respectivamente. Luego se puede concluir que la solución óptima del problema se alcanza con las restricciones 1 y 2 activas (notar que sus respectivas holguras con variables no básicas en el óptimo) y la base actual esta conformada por las variables x_{1}, x_{2} y x_{5}.

Sabemos adicionalmente que, por ejemplo, el costo reducido de la variable de holgura x_{3} representa el precio sombra asociado a la primera restricción (\pi_{1}=1/2). No obstante desconocemos en qué intervalo puede variar el parámetro del lado derecho de la restricción 1 (actualmente b_{1}=180) de modo que se conserve la base óptima y por tanto nos permita hacer un correcto uso de la información del precio sombra.

Para ello se propone la siguiente fórmula que permite encontrar el intervalo de variación para un lado derecho que conserva la base óptima:

Max {-bj/yij con yij>0} <= D <= Min {-bj/yij con yij<0}

Por ejemplo determinemos el intervalo para el parámetro b_{1}:

intervalo-variacion-lado-de

En consecuencia b_{1} puede disminuir en 30 unidades y aumentar en 15 unidades y se conserva la base óptima. Es decir, si b_{1}\epsilon [150,195] se mantiene la base óptima.

intervalo-parametro-b1

El resultado anterior se puede corroborar gráficamente. La solución óptima se encuentra en el vértice C donde las restricciones 1 y 2 son activas (notar la curva de nivel que pasa por el vértice óptimo es la línea punteada de color azul). Si para el lado derecho de la restricción 1 consideramos b_{1}=150 se obtiene la línea de color verde y para b_{1}=195 la línea de color rojo. En estos casos si bien se modifica el dominio de soluciones factibles, la solución óptima conserva las actuales restricciones activas (y por ende cuando b_{1} adopta un valor fuera de este intervalo cambia la geometría del problema o base óptima).

intervalo-grafico-lado-dere

Esto es consistente con el Informe de Confidencialidad de Solver. En particular el reporte de restricciones donde se aprecia el aumento y reducción permisible que conserva la actual base óptima:

informe-lado-derecho-solver

Por ejemplo, ¿cuál es el nuevo valor óptimo si el lado derecho de la restricción 1 ahora es b_{1}=190?. Como b_{1}=190\epsilon[150,195], entonces V(P)=615+\Delta b_{1}\pi _{1}=615+(190-180)*(1/2)=620. ¿Cuál es la nueva solución óptima?. Como sabemos que se conservan las restricciones activas en el óptimo para la variación propuesta, la solución óptima del nuevo escenario se obtiene simplemente resolviendo el siguiente sistema de ecuaciones (notar que la restricción 1 y 2 se conservan activas):

sistema-ecuaciones-restricc

De donde x_{1}=20x_{2}=110/3, que al evaluar en la función objetivo se obtiene: V(P)=9*(20)+12*(110/3)=620 corroborando el resultado anterior. Dejamos al lector el desafío de aplicar los conceptos presentados en este articulo para encontrar un intervalo para b_{2}b_{3} que conserve la base óptima.

Problema de Generación Eléctrica mediante Programación Entera Mixta

Una de las particularidades de los modelos de Programación Entera es que permiten incorporar en la representación matemática costos fijos que no son proporcionales al nivel de actividad en un sistema. Tal sería el caso, por ejemplo, de una empresa que desea determinar lotes de compra de un producto dado, en los que incurre en costos fijos asociados a la gestión de compra (independiente del volumen de unidades compradas dentro de los límites máximos impuestos por el proveedor) y costos variables (proporcionales) a la cantidad de unidades compradas. En este contexto se presenta a continuación un problema de generación de energía eléctrica donde se debe determinar la utilización y actividad de generadores que busca satisfacer requerimientos proyectados de energía de un día particular.

EGE abastece de electricidad a tres ciudades. La compañía dispone de cuatro generadores que son utilizados para proporcionar la potencia eléctrica requerida. El generador principal es empleado las 24 horas del día y no es materia de planificación en este problema.

Los otros tres generadores (que llamaremos 1, 2 y 3) están disponibles para generar la potencia adicional cuando se requiera. Considerar que se incurre en un costo de arranque cada vez que uno de estos generadores comienza a operar.

Los costos de arranque son de $6.000 para el generador 1, de $5.000 para el generador 2 y de $4.000 para el generador 3. Estos generadores se utilizan (por separado) únicamente de la siguiente manera: se puede poner en operación a las 6am y funcionar 8 horas (hasta las 2pm) o 16 horas (hasta las 10pm), o puede ponerse en funcionamiento a las 2pm y funcionar 8 horas (hasta las 10pm).

Los pronósticos para mañana indican la necesidad de contar con 3.200 MW adicionales entre las 6am y las 2pm, necesidad que se eleva a 5.700 MW entre las 2pm y las 10pm. El generador 1 puede proporcionar hasta 2.400 MW, el 2 hasta 2.100 MW y el 3 hasta 3.300MW. El costo por MW utilizado durante un periodo de 8 horas es de $8 en el caso del generador 1, $9 en el de el generador 2 y $7 en el caso del generador 3.

Formule y resuelva un modelo de Programación Entera Mixta para determinar los niveles óptimos de operación de cada generador para el día de mañana que minimice los costos totales satisfaciendo los requerimientos adicionales de potencia eléctrica.

Variables de Decisión:

variables-generacion-energi

Si bien se podría considerar cierta similitud en la definición de Y_{it} y Z_{it}, su utilización se justifica dado que el costo fijo de arranque se debe asociar precisamente a dicho concepto (puesta en marcha de un generador) el cual se produce (en caso de ser utilizado) sólo una vez durante el período de planificación.

Función Objetivo:

funcion-objetivo-generacion

Se busca minimizar los costos fijos asociados al arranque de los generadores más el costo variable que resulte de la cantidad de MW aportados por éstos al sistema en los 2 tramos o períodos de planificación.

Restricciones:

Capacidad Generadores: La cantidad de MW que aporta cada generador al sistema no puede superar su capacidad máxima disponible (en caso que se emplee) en cada uno de los períodos de planificación.

capacidad-mw-generadores

Demanda MW: En conjunto los generadores deben aportar la cantidad de MW adicionales para cada tramo horario, es decir, de 6am a 2pm y de 2pm a 10pm.

demanda-mw

Relación Arranque Funcionamiento: Un generador sólo podrá ser empleado si arranco en el período de planificación actual o inmediatamente anterior, en caso contrario el generador no arranca (y por tanto no funciona en ninguno de los 2 períodos).

arranque-funcionamiento-gen

No Negatividad: La cantidad que aporta cada generador en los 2 tramos horarios de 8 horas debe ser mayor o igual a 0 (MW).

no-negatividad-generadores

Al implementar el modelo anterior haciendo uso de Solver se alcanzan los siguientes resultados:

solucion-optima-generadores

Notar que sólo arranca el generador 1 (a las 2 pm) y el generador 3 (a las 6 am). El generador 2 no arranca (y en consecuencia no se emplea) durante todo el día. El generador aporta 2.400 MW de 2pm a 10 pm, en tanto el generador 3 aporta con 3.200 MW de 6 am a 2 pm y 3.3o0 MW de 2 pm a 10 pm, respetando en cada caso las capacidadidas disponibles y satisfaciendo los requerimientos de demanda. Finalmente el costo óptimo (mínimo) es de $74.700.