Imagina que tienes un negocio, programas un modelo matemático para maximizar tus ganancias (o minimizar tus costes), el algoritmo corre y, ¡listo! Tienes la solución óptima en tus manos. Sabes exactamente cuánto producir y qué recursos usar. Todo parece perfecto hasta que… la vida real pasa: el precio de una materia prima fluctúa, un proveedor te ofrece una tonelada extra de recursos, o decides lanzar un nuevo producto al mercado.
¿Significa esto que tienes que tirar todo a la basura y volver a calcular el problema desde cero? Afortunadamente, no. Aquí es donde entra en juego la post-optimización, una de las aplicaciones más potentes e inteligentes de la optimización lineal.
¿Qué es la post-optimización?
En la práctica, casi ningún problema permanece inalterado durante mucho tiempo. Cambian los costes, aparecen nuevos productos, aumenta la disponibilidad de recursos o surgen nuevas restricciones que no existían cuando se resolvió el modelo.
La post-optimización estudia precisamente cómo afectan esos cambios a una solución óptima ya obtenida. En lugar de resolver nuevamente el problema desde cero, aprovecha la información disponible en la tabla final del método del Símplex para determinar si la solución sigue siendo válida o cómo puede actualizarse de forma eficiente.
A grandes rasgos, cuando el contexto cambia, la post-optimización nos permite gestionar dos grandes escenarios:
Modificaciones al modelo inicial: ¿Qué sucede si varía la disponibilidad de los recursos que ya tenemos o si cambian los beneficios económicos de nuestros productos actuales?
Extender el modelo inicial: ¿Qué pasa si decidimos introducir nuevas variables (como un producto completamente nuevo) o si se deben imponer nuevas restricciones operativas?
Ejemplo: un problema de planificación de la producción
Para ilustrar las distintas situaciones de post-optimización utilizaremos el mismo problema durante todo el post. De esta forma será más sencillo apreciar qué cambia en cada escenario y qué información puede reutilizarse de la solución original.
Consideremos una empresa que fabrica tres productos utilizando dos recursos limitados.
Una vez obtenida esta solución aparecen preguntas mucho más interesantes que el propio problema original:
¿Qué ocurre si aumenta el beneficio de uno de los productos?
¿Qué sucede si se dispone de más materia prima?
¿Qué recurso resulta realmente escaso?
¿Qué ocurre si cambia la línea de producción de un producto y cambian las especificaciones técnicas?
¿Qué ocurre si se incorpora un nuevo producto a la línea de producción?
¿Qué ocurre si se incluyen nuevas condiciones al problema?
Estas cuestiones constituyen el núcleo de la post-optimización.
Modificaciones del modelo
En los siguientes apartados estudiaremos modificaciones que no alteran la estructura del problema, sino únicamente los datos con los que fue formulado. La base óptima obtenida puede seguir siendo útil, aunque será necesario comprobar si continúa siendo factible y/o óptima. En este caso cambian los datos disponibles.
Vector de recursos
Un análisis de sensibilidad más habituales consiste en estudiar cómo afectan a la solución óptima los cambios en la disponibilidad de recursos. En términos del modelo, esto equivale a modificar el vector de recursos, $\mathbf{b}$.
Sea $\hat{\mathbf{b}}$ el nuevo vector de recursos. Si la base óptima $\mathbf{B}$ permanece inalterada, la nueva solución básica se obtiene como:
En este caso, la base continúa siendo factible y, como los costes reducidos no han variado, también sigue siendo óptima. Por tanto, la nueva solución del problema es $\hat{\mathbf{x}}_\mathbf{B}$ y el nuevo valor óptimo de la función objetivo es $\hat{z}$.
La solución deja de ser factible, es decir, alguna de las componentes de $\hat{\mathbf{x}}_\mathbf{B}$ es negativa.
En esta situación se pierde la factibilidad primal, aunque la base sigue siendo dual factible. Por ello, no es necesario resolver el problema desde cero, sino que basta con aplicar el algoritmo Dual del Símplex, que permitirá recuperar la factibilidad y obtener la nueva solución óptima de forma eficiente.
Ejemplo: modificación del vector de recursos
Para ilustrar el procedimiento, consideremos el problema resuelto en la sección anterior y supongamos que el vector de recursos cambia. Analizaremos dos situaciones distintas:
$\hat{\mathbf{b}}_1^\intercal=(38,36)$
$\hat{\mathbf{b}}_2^\intercal=(20,60)$
En ambos casos utilizaremos la misma base óptima obtenida previamente y comprobaremos si continúa siendo factible.
Como la factibilidad primal se ha perdido, es necesario aplicar el algoritmo Dual del Símplex para recuperar una solución factible manteniendo la optimalidad dual.
Tras aplicar una iteración del algoritmo dual del símplex se obtiene el siguiente tableau óptimo:
Otro análisis de sensibilidad muy habitual consiste en estudiar cómo afectan a la solución óptima los cambios en los coeficientes de la función objetivo, es decir, en el vector de costes $\mathbf{c}$.
A diferencia de las modificaciones en el vector de recursos, en este caso la solución básica no cambia. Lo que cambia son los costes reducidos y, en consecuencia, el valor de la función objetivo.
Sea $\hat{\mathbf{c}}$ el nuevo vector de costes. Si se mantiene la misma base $\mathbf{B}$, los nuevos valores $\hat{z}_j-\hat{c}_j$ vienen dados por
En ese caso, la solución básica $\mathbf{x}_\mathbf{B}$ sigue siendo óptima y únicamente cambia el valor de la función objetivo.
La base deja de ser óptima. Si existe alguna variable no básica cuyo coste reducido verifica
\[\hat{z}_j-\hat{c}_j<0\]
entonces la tabla deja de ser final. Como la factibilidad no se ha perdido, basta con continuar las iteraciones mediante el algoritmo Primal del Símplex.
Ejemplo: modificación del vector de costes
Consideremos el problema anterior y supongamos ahora que el vector de costes se modifica. Analizaremos dos casos:
Otro análisis de sensibilidad consiste en estudiar cómo afectan a la solución óptima las modificaciones en una de las columnas no básicas de la matriz de restricciones. Este tipo de cambios puede aparecer, por ejemplo, cuando una actividad consume una cantidad diferente de recursos o cuando se modifica la formulación de una variable.
Si la columna modificada corresponde a una variable no básica, la base permanece inalterada. Sin embargo, cambian tanto la columna correspondiente de la tabla del Símplex como el coste reducido de dicha variable.
Sea $\hat{\mathbf{a}}_j$ la nueva columna asociada a la variable no básica $x_j$. La nueva columna de la tabla viene dada por
A partir de este nuevo coste reducido pueden darse dos situaciones:
La base continúa siendo óptima. En un problema de maximización esto ocurre si
\[\hat{z}_j - c_j \geqslant 0\]
En este caso, la solución básica no cambia y el valor de la función objetivo permanece inalterado.
La base deja de ser óptima. Si
\[\hat{z}_j-c_j<0\]
la variable modificada pasa a ser candidata a entrar en la base. Como la solución sigue siendo factible, basta con continuar las iteraciones mediante el algoritmo primal del Símplex.
Ejemplo: modificación del vector de coeficientes técnicos
Consideremos el problema anterior y supongamos que la tercera columna de la matriz de restricciones se modifica. Analizaremos dos posibilidades:
Hasta ahora únicamente hemos modificado información existente del problema. A continuación analizaremos situaciones en las que el propio modelo cambia de dimensión al incorporar nuevas variables o nuevas restricciones. En este caso, el modelo aumenta de tamaño.
Incorporación de una nueva variable
Otro escenario habitual en post-optimización consiste en analizar qué ocurre cuando se incorpora una nueva variable de decisión al modelo. Esto sucede, por ejemplo, cuando una empresa estudia producir un nuevo producto o prestar un nuevo servicio sin necesidad de reformular completamente el problema.
Desde el punto de vista del algoritmo del Símplex, añadir una nueva variable implica incorporar una nueva columna a la tabla.
Sea $x_{n+1}$ la nueva variable, caracterizada por su columna de coeficientes \(\mathbf{a}_{n+1}\) y su coeficiente en la función objetivo $c_{n+1}$. La nueva columna de la tabla se obtiene como
A partir de este valor pueden darse dos situaciones:
La nueva variable no mejora la solución. En un problema de maximización esto ocurre cuando
\[z_{n+1}-c_{n+1} \geqslant 0\]
En ese caso, la nueva variable permanece fuera de la base y la solución óptima no cambia.
La nueva variable mejora la solución. Si
\[z_{n+1}-c_{n+1}<0\]
la nueva variable es candidata a entrar en la base. Como la solución sigue siendo factible, basta con continuar las iteraciones mediante el algoritmo Primal del Símplex.
Ejemplo: Incorporación de una nueva variable
Consideremos el problema anterior e incorporemos un nuevo producto $p_4$.
Analizaremos dos escenarios:
El nuevo producto consume unos recursos
\[\mathbf{a}_4^\intercal=(1,2)\]
y proporciona un beneficio $c_4=1$
El nuevo producto consume
\[\mathbf{a}_4^\intercal=(3,2)\]
y proporciona un beneficio $c_4=3$
En ambos casos se renombran las variables de holgura por $x_5^h$ y $x_6^h$.
Otro análisis habitual de post-optimización consiste en estudiar el efecto de incorporar una nueva restricción al modelo. Este caso aparece cuando el problema original debe adaptarse a nuevas limitaciones, como la disponibilidad de un nuevo recurso, una capacidad adicional o una nueva condición de funcionamiento.
A diferencia de los casos anteriores, añadir una restricción implica incorporar también una nueva variable de holgura, por lo que la tabla del Símplex aumenta una fila y una columna.
Inicialmente, la nueva fila no suele preservar la estructura de la matriz identidad correspondiente a las variables básicas. Sin embargo, esta puede recuperarse combinando adecuadamente las filas existentes de la tabla.
Una vez reconstruida la identidad, pueden darse dos situaciones:
La solución continúa siendo factible. En este caso, la tabla sigue siendo final y la solución no cambia.
La solución deja de ser factible. Si alguna variable básica toma un valor negativo, la factibilidad primal se pierde y es necesario continuar mediante el algoritmo Dual del Símplex.
Ejemplo: Incorporación de una nueva restricción
Partimos del problema resuelto anteriormente e incorporamos un tercer recurso, cuyos coeficientes son
\[(1,1,1)\]
Analizaremos dos disponibilidades distintas para este nuevo recurso:
$b_3=20$.
$b_3=10$.
Caso 1: la solución sigue siendo factible
La nueva restricción es
\[x_1+x_2+x_3 \leqslant 20\]
En forma estándar queda
\[x_1+x_2+x_3+x_6^h=20\]
Al añadir esta nueva ecuación a la tabla se obtiene inicialmente
Obsérvese que la matriz identidad ya no aparece de forma explícita. Para recuperarla basta con restar a la nueva fila la suma de las dos filas básicas existentes.
En este caso aparece una variable básica negativa,
\[x_6^h=-5\]
por lo que la solución deja de ser factible.
La optimalidad dual se conserva, pero la factibilidad primal se ha perdido. En consecuencia, el tableau puede reoptimizarse directamente mediante el algoritmo Dual del Símplex.
Tras una iteración se obtiene la siguiente tabla final:
A lo largo de este post hemos visto que no todas las modificaciones afectan del mismo modo a una solución óptima. Dependiendo del elemento que cambie, puede perderse la factibilidad, la optimalidad o ambas, lo que determina si es posible reutilizar la tabla final o si es necesario continuar iterando mediante alguno de los algoritmos del método del Símplex.
La siguiente tabla resume los casos más habituales:
Modificación
¿Se pierde la factibilidad primal?
¿Se pierde la factibilidad dual?
Algoritmo a aplicar
Cambio en el vector de recursos $\mathbf{b}$
Puede ocurrir
No
Símplex Dual (si se pierde la factibilidad)
Cambio en el vector de costes $\mathbf{c}$
No
Puede ocurrir
Símplex Primal (si se pierde la optimalidad)
Cambio en una columna no básica $\mathbf{a}_j$
No
Puede ocurrir
Símplex Primal (si se pierde la optimalidad)
Incorporación de una nueva variable
No
Puede ocurrir
Símplex Primal (si la nueva variable mejora la solución)
Incorporación de una nueva restricción
Puede ocurrir
No
Símplex Dual (si se pierde la factibilidad)
Puede observarse un patrón muy interesante:
Cuando una modificación afecta a la factibilidad de la solución, el algoritmo adecuado para recuperar el óptimo es el Símplex Dual.
Cuando la modificación afecta únicamente a la optimalidad, manteniéndose la factibilidad, basta con continuar mediante el Símplex Primal.
Una de las principales ventajas del método del Símplex es que la tabla final contiene mucha más información que una simple solución óptima. Esa información permite analizar rápidamente qué ocurre cuando cambian los datos del problema, evitando resolver nuevamente el modelo desde cero en muchas situaciones.
Como hemos visto, el tipo de modificación determina también el algoritmo que debe utilizarse para reoptimizar el problema. Si se pierde la factibilidad primal, el Símplex Dual resulta el procedimiento natural. Si se pierde la factibilidad dual, basta con continuar mediante el Símplex Primal.
La post-optimización convierte así una solución óptima en una herramienta dinámica, capaz de adaptarse de forma eficiente a los cambios que inevitablemente aparecen en problemas reales.
Referencias
Le gustó leer este artículo?
Aqui están algunos artículos relacionados que le pueden gustar: