Archivo del Autor: Aldo Romero

Investigación de Operaciones: Soluciones básicas, factibles y no degeneradas (10)

Por Aldo Romero

Introducción

Ya hablamos de lo que es la forma canónica y la forma estándar de un problema lineal. Como platicamos, esto nos permitirá darle solución a los problemas siguiendo métodos que requieren tener el problema en alguna de estas dos formas. Lo que haremos ahora es reflexionar a qué nos referimos con resolver un problema de programación lineal. Para ello, recordemos los distintos tipos de soluciones que los problemas lineales pueden tener.

Tipos de soluciones y región de factibilidad

Recordemos los conceptos de soluciones factibles, soluciones básicas factibles (degeneradas y no degeneradas) y de región de factibilidad.

Supongamos que tenemos un problema de programación lineal en su forma canónica:

\begin{align*}
Max \quad z &= cx\\
s.a&\\
Ax &\leq b\\
x &\geq \bar 0\\
\end{align*}

donde usamos la misma notación que en la entrada anterior. Recordemos que $c$ es un vector fila en $\mathbb{R}^n$, $x$ es un vector columna en $\mathbb{R}^n$, $b$ es vector columna en $\mathbb{R}^m$ y $A$ es una matriz de $m\times n$. Recuerda que en la expresión anterior entendemos $\bar 0$ como un vector en $\mathbb{R}^n$ con entradas todas iguales a cero.

También recordemos la forma estándar de un problema de programación lineal:

\begin{align*}
Max \quad z &= cx\\
s.a&\\
Ax &=b\\
x &\geq \bar 0\\
\end{align*}

en donde $c$ es un vector fila en $\mathbb{R}^n$, $x$ es un vector columna en $\mathbb{R}^{n}$,$b$ es un vector columna en $\mathbb{R}^{m}$ y $A$ es una matriz de valores reales de $m \times n$.

Como recordatorio, tenemos las siguientes definiciones para los tipos de soluciones del problema lineal.

Definición. Una solución factible a un problema de programación lineal en forma estándar es un vector columna $x = x_1 + x_2 \ldots + x_n$ que satisface $Ax= b$ y $x\geq \bar 0$.

Definición. La región de factibilidad de un problema de programación lineal es el conjunto de todas las soluciones factibles.

Definición. Una solución básica es una solución $x$ correspondiente al problema en forma estándar con no más de $m$ componentes positivas. Es decir, tiene al menos $n-m$ entradas iguales a cero.

Definición. Una solución básica factible es una solución básica cuyas variables son todas no negativas.

Definición. Una solución básica factible no degenerada es una solución factible $x$ correspondiente a una solución $x$ del problema en forma estándar con exactamente $m$ componentes positivas. En otras palabras, $x$ tiene exactamente $n-m$ entradas iguales a cero.

Definición. Una solución básica factible degenerada es una solución factible correspondiente a una solución $x$ del problema en forma estándar con menos de $m$ componentes positivas. En otras palabras, $x$ tiene más de $n-m$ entradas iguales a cero.

La importancia de las soluciones básicas factibles y no degeneradas es que cumplen las siguientes:

  1. Se puede mostrar que si un problema de programación lineal tiene óptimo, entonces dicho óptimo se alcanza para alguna solución básica factible y no degenerada.
  2. Las soluciones básicas factibles y no degeneradas se pueden encontrar resolviendo sistemas de ecuaciones.
  3. Geométricamente, las soluciones básicas factibles y no degeneradas están en puntos extremos dentro de la región de factibilidad.

A continuación explicaremos algunos de estos puntos con un ejemplo detallado, que te ayudará a entender la intuición detrás de estas definiciones y de su importancia.

Ejemplos de región de factibilidad y tipos de solución

Consideremos el siguiente problema de programación lineal en su forma canónica:

\begin{align*}
Max. \quad z &= 2x_1 + 3x_2\\
s.a.&\\
&\begin{matrix}2x_1 &+ x_2 &\leq & 4\\
x_1 &+ 2x_2 &\leq &5\end{matrix}\\
&x_1, x_2 \geq 0.
\end{align*}

La región de factibilidad es el conjunto de todos los $(x_1,x_2)$ (en el plano $\mathbb{R}^2$) que cumplen las restricciones del problema, es decir, $2x_1 + x_2 \leq 4$, $x_1 + 2x_2 \leq 5$ y $x_1,x_2 \geq 0$. Para entender esto mejor, vamos a ilustrar cada restricción en $\mathbb{R}^2$ a continuación :

Región 1: La región $x_1\geq 0$, que son todos los elementos de $\mathbb{R}^2$ que se encuentran a la derecha del eje $Y$ incluyéndolo:

Región 2: La región $x_2\geq 0$, que son todos los elementos de $\mathbb{R}^2$ que se encuentran arriba del eje $X$ incluyéndolo:

Región 3: La región $2x_1 + x_2 \leq 4$, que son los elementos en $\mathbb{R}^2$ que están debajo de la recta $2x_1+x_2=4$ incluyéndola:

Región 4: La región $x_1+2x_2\leq 5$, que son los elementos en $\mathbb{R}^2$ que están debajo de la recta $x_1+2x_2=5$ incluyéndola:

Como queremos que se cumplan todas las restricciones al mismo tiempo, los puntos $(x_1,x_2) \in \mathbb{R}^2$ de la región de factibilidad que se encuentren en todas las regiones al mismo tiempo, es decir, los puntos que estén en la intersección. Al sobreponer las regiones que acabamos de ilustrar, obtenemos la región encerrada en la siguiente figura:

También puedes explorar el interactivo de Geogebra en donde se han coloreado los complementos de las regiones para más claridad. Puedes usar el cursor para mover la figura y las herramientas de lupa para hacer acercamientos y alejamientos.

Como hemos mencionado, el óptimo de un problema de programación lineal es una solución básica factible no degenerada y toda solución básica factible no degenerada se encuentra en algún vértice de la región de factibilidad. Entonces, el valor máximo de la función $2x_1+3x_2$ se alcanza en alguno de los vértices del polígono que es la región factible. Veamos dónde el álgebra nos dice esto.

Para ello, pensemos al problema en su forma estándar, tomando variables de holgura $s_1$ y $s_2$. Las restricciones que tienen las cuatro variables en conjunto son las siguientes.

\begin{align*}
2x_1 + x_2 + s_1 &= 4\\
x_1 + 2x_2 + s_2 &= 5\\
x_1, x_2, s_1, s_2 &\geq 0.
\end{align*}

La matriz $A’$ es $\begin{pmatrix}2 & 1 & 1 & 0 \\ 1 & 2 & 0 & 1 \end{pmatrix}$, que, se puede verificar, tiene rango $2$. Las soluciones básicas y no degeneradas corresponden a tener en ese sistema de ecuaciones exactamente $m=2$ variables positivas, de manera que necesitamos hacer exactamente $n-m=4-2=2$ de estas variables iguales a cero. Al hacer esto, podemos resolver para las $m=2$ variables restantes. Por ejemplo, si establecemos $x_1 = 0$ y $x_2 = 0$, las ecuaciones se convierten en:

\begin{align*}
s_1 = 4\\
s_2 = 5\\
x_1, x_2, s_1, s_2 \geq 0,
\end{align*}

que tiene solución única $(x_1,x_2,s_1,s_2)=(0,0,4,5)$. Así, la solución básica del problema en forma canónica es $(x_1,x_2)=(0,0)$. Hay que recordar la solución básica sólo para las variables originales, es decir, las del problema en forma canónica.

Esta solución corresponde al punto $A$ del interactivo de GeoGebra. Se puede determinar otra solución básica fijando $s_1 = 0$ y $s_2 = 0$, donde el sistema sería ahora

\begin{align*}
2x_1 + x_2 = 4\\
x_1 + 2x_2 = 5\\
x_1, x_2, s_1, s_2 \geq 0,
\end{align*}

Resolvamos este sistema de ecuaciones de forma rápida. Si multiplicamos la segunda ecuación por un $-2$ y sumamos ambas ecuaciones, la variable $x_1$ se eliminará y tendremos solo una ecuación: $-3x_2 = -6$ lo que es equivalente a $x_2 = 2$. Si sustituimos ahora este valor para $x_2$ en cualquiera de las ecuaciones, tras unos simples despejes tendremos que $x_1 = 1$.

Así, la solución básica que se obtiene es $(x_1,x_2)=(1,2)$, que es el punto $D$ del interactivo de GeoGebra.

Si seguimos considerando todas las posibilidades en las que dos variables son cero y resolvemos los ssistemas de ecuaciones resultantes, eso nos dará todas soluciones básicas no degeneradas. La solución óptima es la solución básica factible (punto extremo) con el mejor valor objetivo.

En este ejemplo tenemos $\binom{4}{2} = \frac{4!}{2!2!} = 6$ formas de volver dos de las $n$ variables iguales a cero. Ya para las variables $x_1$ y $x_2$, los puntos que obtenemos son los puntos $A$, $B$, $C$, $D$ que son puntos extremos de la región de factibilidad. Los puntos $E$ y $F$ del interactivo también son puntos básicos y no degenerados (son las otras dos intersecciones de las rectas que dibujamos), pero como no satisfacen la condición de factibilidad del problema, entonces no los podemos considerar y por lo tanto no son candidatos a dar el valor óptimo.

La siguiente tabla muestra todas las soluciones básicas factibles y no factibles de este problema:

Variables no básicas (cero)Variables básicasSolución para $(x_1,x_2)$Punto de extremo asociado¿Factible?Valor objetivo z
$(x_1, x_2) = (0,0)$$(s_1, s_2) = (4,5)$$(0, 0)$A0
$(x_1, s_1) = (0,0)$$(x_2, s_2) = (4,-3)$$(0, 4)$ENo ya que $s_2 < 0$12 (No factible)
$(x_1, s_2) = (0,0)$$(x_2, s_1) = (2.5,1.5) $$(0, 2.5)$B7.5
$(x_2, s_1) = (0,0)$$(x_1, s_2) = (2,3)$$(2, 0)$C4
$(x_2, s_2) = (0,0)$$(x_1, s_1) = (5, -6)$$(5, 0)$FNo ya que
$s_1 < 0$
10 (No factible)
$(s_1, s_2) = (0,0)$$(x_1, x_2) = (1,2)$$(1, 2)$D8 (óptimo)

Más adelante…

Notemos que a medida que el tamaño del problema se incrementa, enumerar todos los puntos esquina se volverá una tarea que tomaría mucho tiempo. Por ejemplo, si tuviéramos $20$ variables (ya con las de holgura) y $10$ restricciones, es necesario resolver considerar $\binom{20}{10}=184756$ formas de crear ecuaciones de $10\times 10$, y resolver cada una de ellas. Aunque esto es finito, son demasiadas operaciones. Y este en la práctica incluso es un ejemplo pequeño, ya que en la vida real hay problemas lineales que pueden incluir miles de variables y restricciones.

Por ello, se vuelve cruciar encontrar un método que atenúe esta carga computacional en forma drástica, que permita investigar sólo un subconjunto de todas las posibles soluciones factibles básicas no degeneradas (vértices de la región de factibilidad), pero que garantice encontrar el óptimo. Una idea intuitiva que debería servir es comenzar en un vértice y «avanzar en una dirección que mejore la función objetivo». Esto precisamente es la intuición detrás del método simplex, que repasaremos a continuación.

Tarea moral

  1. Considera el siguiente problema lineal en su forma canónica:

\begin{align*}
Min \quad z &= 2x_1 + 3x_2 \\
s.a.&\\
&\begin{matrix}x_1 &+ 3x_2 &\geq&6\\
3x_1 &+ 2x_2 &\geq &6\end{matrix}\\
&x_1, x_2 \geq 0.
\end{align*}

Usa el procedimiento descrito arriba para encontrar todas sus soluciones básicas no degeneradas y encontrar el óptimo del problema.

  1. Considera un problema de programación lineal en dos variables $x$ y $y$, en forma canónica y con $m$ restricciones (desigualdades), además de las restricciones $x\geq 0$ y $y\geq 0$. Explica con tus propias palabras por qué la región de factibilidad siempre es un polígono con a lo más $m+2$ lados, y por qué entonces basta evaluar la función objetivo en a lo más $m+2$ puntos para encontrar su máximo.
  2. Explica con tus palabras cómo se vería la región de factibilidad de un problema de programación lineal de maximización que no tenga máximo. ¿Qué cambios se le tendrían que hacer a las restricciones del primer ejemplo para que se volviera un problema de maximización sin máximo?

Respuestas

1.- Primero vamos a cambiar este problema a su forma estándar.

Definamos variables de holgura no negativas $s_1$ y $s_2$ tales que $x_1 + 3x_2 – s_1 = 6$ y $3x_1 +2x_2 – s_2 = 6$.

Entonces la forma estandar del problema sería de la siguiente manera:

\begin{align*}
Min \quad z &= 2x_1 + 3x_2 \\
s.a.&\\
&\begin{matrix}x_1 &+ 3x_2 &- s_1 = &6\\
3x_1 &+ 2x_2 &- s_2 = &6\end{matrix}\\
&x_1, x_2, s_1, s_2 \geq 0.
\end{align*}

Su matriz A asociado a las restricciones $\begin{pmatrix}1 & 3 & -1 & 0 \\ 3 & 2 & 0 & -1 \end{pmatrix}$ en una matriz de $2 \times 4$. Las soluciones básicas no degeneradas $x’$ en $\mathbb{R}^4$ tienen $4-2 = 2$ entradas iguales a 0.

Variables no básicas (cero)Variables básicasSolución para $(x_1,x_2)$Punto de extremo asociado¿Factible?Valor objetivo z
$(x_1, x_2) = (0,0)$$(s_1, s_2) = (-6,-6)$$(0, 0)$ANo ya que $s_1,s_2 < 0$0
$(x_1, s_1) = (0,0)$$(x_2, s_2) = (2,-2)$$(0, 2)$BNo ya que $s_2 < 0$6 (No factible)
$(x_1, s_2) = (0,0)$$(x_2, s_1) = (3,3)$$(0, 3)$C9
$(x_2, s_1) = (0,0)$$(x_1, s_2) = (6, 12) $$(6, 0)$D12
$(x_2, s_2) = (0,0)$$(x_1, s_1) = (2,-4)$$(2, 0)$ENo ya que
$s_1 < 0$
4 (No factible)
$(s_1, s_2) = (0,0)$$(x_1, x_2) = (6/7,12/7)$$(6/7,12/7)$F48/7 = 6 + 6/7 (óptimo)

Por lo que el óptimo se encuentra en el punto F = (6/7, 12/7).

En el siguiente interactivo de GeoGebra, verifica uno por uno los puntos extremos que se encontraron.

2.- Se podría argumentar tal vez que cada restricción de un problema de programación lineal representa un lado del polígono que forma la región factible. Y como tenemos m restricciones en el problema y las condiciones de no negatividad son 2 restricciones más, el polígono tendrá a lo más m+2 lados.

3.- La región de factibilidad se vería como una región no acotada en el primer cuadrante del plano. En esta región, dada un punto x dentro de ella, existe otro punto x’ tal que $z(x) < z(x’)$.

El que se tendría que hacer en el primer problema sería simplemente invertir las desigualdades de las restricciones:

\begin{align*}
Max. \quad z &= 2x_1 + 3x_2\\
s.a.&\\
&\begin{matrix}2x_1 &+ x_2 &\geq & 4\\
x_1 &+ 2x_2 &\geq &5\end{matrix}\\
&x_1, x_2 \geq 0.
\end{align*}

Se puede verificar haciendo los cambios en el primer interactivo que estos cambios nos cambiaran la región factible a una región no acotada.

Entradas relacionadas

Investigación de Operaciones: Forma canónica y forma estándar de un problema lineal (9)

Por Aldo Romero

Introducción

En las entradas anteriores hemos dado ejemplos de varios problemas de aplicación que pueden ser planteados mediante un problema de programación lineal. Una vez que llegamos a un modelo, se pueden tener restricciones de los tipos $\leq$, $=$ y $\geq$. Además, puede haber restricciones de signo sobre las variables. Puede que se les pida ser no positivas, no negativas o irrestrictas (no restringidas) en signo. Lo que haremos ahora es recordar forma estándar y forma canónica de un problema lineal; y como pasar de un formato a otro.

Forma canónica de un problema lineal

Definición. Se dice que un problema de programación lineal está en forma canónica si cumple las siguientes tres propiedades:

  1. Las variables de decisión son todas no negativas ($x_i \geq 0$).
  2. El problema es de maximización ($Max \quad z = c_1x_1+\ldots+c_nx_n$).
  3. Las restricciones del problema son todas del tipo $\leq$ ($a_{i1}x_1+ \ldots + a_{in}x_n \leq b_i$).

Tenemos entonces que un problema en forma canónica se ve de la siguiente manera:

\begin{align*}
Max \quad z &= c_1x_1+\ldots+c_nx_n\\
s.a.&\\
&\begin{matrix} a_{11}x_1 + a_{12}x_2 + \ldots + a_{1n}x_n \leq b_1\\
a_{21}x_1+a_{22}x_2+\ldots + a_{2n}x_n \leq b_2\\
\vdots \\
a_{m1}x_1+a_{m2}x_2+\ldots+a_{mn}x_n\leq b_n\end{matrix}\\
& x_1\geq 0, x_2\geq 0, \ldots, x_n\geq 0.
\end{align*}

En términos matriciales, esto podemos reescribirlo de manera mucho más compacta como sigue:

\begin{align*}
Max \quad z &= cx\\
s.a.&\\
Ax &\leq b\\
x &\geq \bar 0,\\
\end{align*}

en donde:

  • $c=(c_1,\ldots,c_n)\in \mathbb R^n$ es el vector de costos (vector fila)
  • $x = (x_1,\ldots,x_n)\in \mathbb R^n$ es el vector de variables de decisión (vector columna),
  • $A=[a_{ij}]$ es la matriz de restricciones, que es una matriz de $m \times n$ y
  • $b = (b_1,\ldots,b_m) \in \mathbb R^m$ es el vector de términos independientes o vector de recursos (vector columna),
  • Entendemos $\bar{0}$ como el vector en $\mathbb{R}^n$ cuyas entradas son todas cero (vector fila o vector columna según sea el caso).

Dado un problema de programación lineal, este siempre se puede ser expresar en su forma canónica; es decir, puede definirse un problema en forma canónica equivalente a él. Esta expresión del problema nos ayuda a resolverlo con métodos de solución que veremos más adelante, pero que requieren que el problema esté en su forma canónica.

A continuación de presenta una serie de posibilidades que podria tener un problema de programación lineal formulado y qué se debe de hacer para que cumpla las condiciones para pasarlo a su forma estándar.

  • Para una variable negativa ($x_i\leq 0$), se puede sustituir por una nueva variable $x_i’$ definida como $x_i’ = -x_i$, siendo ahora $x_i’ \geq 0$. El valor de $x_i$ está directamente relacionado con el valor de $x_i’$ ya que es su opuesto negativo.
  • Para una variable $x_i$ sin restricción de signo (SRS), se pueden definir dos variables no negativas $x_i’$ y $x_i»$ tales que el resultado de su resta sea $x_i$ ($x_i = x_i’-x_i$»). Dada cualquier $x_i$, podemos construir dichas variables, y así mismo; dadas cualesquiera $x_i’$ y $x_i»$, se puede construir $x_i$.
  • Si el problema formulado es a minimizar ($Min \quad z = c_1x_1+\ldots+c_nx_n$), puede considerarse en vez de la función $z$, su opuesta negativa $z’$ (es decir, $z’ = -z$). Así, minimizar la función $z$ equivale a maximizar la función $z’$ ($Max \quad z’ = -c_1x_1 – \ldots -c_nx_n$).
  • Si dada una restricción, esta es del tipo $\geq$ ($a_{i1}x_1+ \ldots + a_{in}x_n \geq b_i$), se pueden multiplicar ambos lados de la restricción por un $-1$ para que la desigualdad se invierta y nos quede una restricción del tipo $\leq$ ($-a_{i1}x_1- \ldots – a_{in}x_n \leq -b_i$).
  • Una ecuación ($a_{i1}x_1+ \ldots + a_{in}x_n = b_i$) puede ser substituida por dos desigualdades, una del tipo $\leq$ ($a_{i1}x_1+ \ldots + a_{in}x_n \leq b_i$) y otra del tipo $\geq$ ($a_{i1}x_1+ \ldots + a_{in}x_n \geq b_i$). Luego, la ecuación del tipo $\geq$ puede se multiplica de ambos lados por un $-1$ para que sea una ecuación del tipo $\leq$ ($-a_{i1}x_1 – \ldots -a_{in}x_n \leq -b_i$).

Ejemplo 1 de pasar un problema a forma canónica

Transformemos el siguiente problema a su forma canónica:
\begin{align*}
Min \quad z &= 3x_1-x_2\\
s.a&\\
&\begin{matrix}2x_1&+x_2& \leq 50\\
-x_1&+3x_2& \geq 20\end{matrix}\\
& x_1\geq 0, x_2 \leq 0\\
\end{align*}

Primero, observemos que la primera condición se cumple para la variable $x_1$, pero para $x_2$ no ya que $x_2 \geq 0$. Entonces definimos $x_2′ = -x_2$ y de esa manera, $x_2′ \leq 0$.

Ahora, la segunda condición nos dice que el problema tiene que ser de maximización y en este momento es de minimización. Para transformar nuestro problema a uno de maximización solo tenemos que invertir el signo de la función objetivo, ya que el minimizar la primera función ($z$) es equivalente a maximizar la función negativa ($-z$).

$$Max \quad z = -3x_1 + x_2$$

Y por último verifiquemos que se cumpla la tercera condición. La primera restricción claramente es del tipo $\leq$, pero la segunda restricción no es del tipo $\leq$ sino que es del tipo $\geq$. A esta restricción se le puede multiplicar por -1 de ambos lados y se convierte en una restricción del tipo $\leq$.

\begin{matrix}2x_1&+x_2& \leq 50\\
x_1&-3x_2& \leq -20\end{matrix}

Entonces nuestro problema ya cumple las 3 condiciones y podemos decir que está en forma canónica:

\begin{align*}
Max \quad z &= -3x_1 + x_2\\
&s.a\\
&\begin{matrix}2x_1&+x_2& \leq& 50\\
x_1&-3x_2& \leq& -20\end{matrix}\\
& x_1, x_2\geq 0\\
\end{align*}

Ejemplo 2 de pasar un problema a forma canónica

Transformemos el siguiente problema a su forma canónica.

\begin{align*}
Max \quad z &= 2x_1 + 5x_2 -3x_3\\
&s.a\\
&\begin{matrix}-x_1&+2x_2&-4x_3 =& -9\\
3x_1&+x_2&-5x_3 \geq& 10\\
4x_1&-6x_2&+7x_3 \geq& 2\\
\end{matrix}\\
& x_1, x_2\geq 0, \quad x_3 \quad SRS\\
\end{align*}

Primero observemos que la primera condición se cumple para $x_1$ y $x_2$ pero $x_3$ está sin restricción de signo, por lo que vamos a definir $x_3’$ y $x_3″$ no negativos tales que $x_3 = x_3′- x_3″$.

Ahora, observemos que el problema ya es de maximización. Lo único que haremos es sustituir la variable $x_3$ que acabamos de re definir:

$$Max \quad z = 2x_1 + 5x_2 – 3x_3′ + 3x_3″$$

Y por último, para cumplir la tercera restricción tenemos que hacer a todas nuestras restricciones del tipo $\leq$.

Para la primera restricción, primero sustituimos la variable $x_3$ en términos de $x_3’$ y $x_3″$:

$$-x_1 + 2x_2 – 4x_3′ + 4x_3″ = -9$$

Y dado que es una igualdad, la podemos sustituir por dos desigualdades. Estas son:

\begin{matrix}-x_1&+2x_2&-4x_3’& + 4x_3″& \leq -9\\
-x_1&+2x_2& -4x_3’& +4x_3″& \geq -9\end{matrix}

La primera de estas dos nuevas restricciones ya es del tipo $\leq$, pero la segunda es del tipo $\geq$, por lo que lo único que hay que hacer es multiplicar por $-1$ de cada lado para que la desigualdad se invierta y la restricción sea del tipo $\leq$:

\begin{matrix}-x_1&+2x_2&-4x_3’& + 4x_3″& \leq -9\\
x_1&-2x_2& +4x_3’& -4x_3″& \leq 9\end{matrix}

Para la segunda y tercera restricción del problema original, primero sustituimos a variable $x_3$ en términos de $x_3’$ y $x_3″$:

\begin{matrix}3x_1&+x_2&-5x_3’& + 5x_3″& \geq 10\\
4x_1&-6x_2& +7x_3’& -7x_3″& \geq 2\end{matrix}

Y luego transformamos estas restricciones en restricciones del tipo \leq como acabamos de hacer.

\begin{matrix}-3x_1&-x_2&+5x_3’& -5x_3″& \leq -10\\
-4x_1&+6x_2& -7x_3’& +7x_3″& \leq -2\end{matrix}

Y así, juntando todo, el problema quedaría planteado de la siguiente manera:

\begin{align*}
Max \quad z = 2x_1 + 5x_2 – 3x_3′ + 3x_3″\\
\begin{matrix}-x_1&+2x_2&-4x_3’& + 4x_3″& \leq -9\\
x_1&-2x_2& +4x_3’& -4x_3″& \leq 9\\
3x_1&-x_2&+5x_3’& -5x_3″& \leq -10\\
-4x_1&+6x_2& -7x_3’& +7x_3″& \leq -2\end{matrix}\\
x_1, x_2, x_3′, x_3″ \geq 0\\
\end{align*}

Y así este segundo problema quedaría en su forma canónica.

Forma estándar de un problema lineal

Definición. Se dice que un problema de programación lineal está en forma estándar si

  1. Todas las variables son no negativas.
  2. Todas las restricciones son ecuaciones.
  3. Todos los elementos del vector de recursos son no negativos

De esta manera, un problema en forma estándar se ve como sigue:

\begin{align*}
Max\, (\text{o } Min) \quad z &= c_1x_1+\ldots+c_nx_n\\
s.a.&\\
&\begin{matrix} a_{11}x_1 + a_{12}x_2 + \ldots + a_{1n}x_n = b_1\\
a_{21}x_1+a_{22}x_2+\ldots + a_{2n}x_n = b_2\\
\vdots \\
a_{m1}x_1+a_{m2}x_2+\ldots+a_{mn}x_n= b_n\\
x_1\geq 0, x_2\geq 0, \ldots, x_n\geq 0.
\end{matrix}\\
\end{align*}

En notación matricial, el problema en forma canónica queda expresado de la siguiente manera:

\begin{align*}
Max\, (\text{o } Min) \quad z &= c^tx\\
s.a.&\\
Ax &= b\\
x &\geq \bar 0\\
\end{align*}

en donde $c, x, A$ y $b \geq \bar 0$ son como se mencionó antes.

Así como cualquier problema de programación lineal puede ser escrito en su forma canónica, así también cualquier problema de programación lineal puede ser escrito en forma estándar.

Aparte de las indicaciones anteriores que dimos para pasar un problema a su forma canónica, daremos una indicación de qué hacer cuando tenemos una desigualdad y queremos convertirla en igualdad:

  • Si tenemos una restricción del tipo $\leq$ ($a_{i1}x_1+ \ldots + a_{in}x_n \leq b_i$), definiremos una variable de holgura no negativa $x_{n+1}$ tal que $a_{i1}x_1+ \ldots + a_{in}x_n + x_{n+1} = b_i$.
  • Si tenemos una restricción del tipo $\geq$ ($a_{i1}x_1+ \ldots + a_{in}x_n \geq b_i$), definiremos una variable de holgura no negativa $x_{n+1}$ tal que $a_{i1}x_1+ \ldots + a_{in}x_n – x_{n+1} = b_i$.

Ejemplo 1 de pasar un problema a forma estándar

Retomemos el primer ejemplo, antes de expresarlo en forma estándar.

\begin{align*}
Min \quad z &= 3x_1-x_2\\
s.a&\\
&\begin{matrix}2x_1&+x_2& \leq 50\\
-x_1&+3x_2& \geq 20 \end{matrix}\\
& x_1 \geq 0, x_2 \leq 0\\
\end{align*}

Observemos que la primera condición se cumple para la variable $x_1$, pero para $x_2$ no ya que $x_2 \geq 0$. Entonces definimos $x_2′ = -x_2$ y de esa manera, $x_2′ \leq 0$.

Para la función objetivo, solo hay que sustituir $x_2$ en términos de $x_2’$, ya que recordemos la función puede ser a maximizar o minimizar:

$$Min \quad z = 3x_1+x_2’$$

Para cumplir la segunda condición, debemos añadir variables de holgura a las restricciones que son desigualdades como se acaba de mencionar. En la primera restricción, se define un variable no negativa $x_3$ tal que $2x_1+x_2 +x_3 = 50$. En la segunda restricción, se define una variable no negativa $x_4$ tal que $-x_1+3x_2 -x_4 = 20$

Y la tercera condición se cumple, ya que 50 y 20 son no negativos.

Así, juntando todos estos cambios, la forma estándar de este problema quedaría de la siguiente manera:

\begin{align*} Min \quad z &= 3x_1+x_2’\\
s.a&\\
&\begin{matrix}2x_1&+x_2& +x_3 = 50\\
-x_1&+3x_2& -x_4 = 20 \end{matrix}\\
& x_1, x_2′ \geq 0\\
\end{align*}

Ejemplo 2 de pasar un problema a forma estándar

Retomemos el segundo ejemplo, antes de expresarlo en forma estándar.

\begin{align*}
Max \quad z &= 2x_1 + 5x_2 -3x_3\\
&s.a\\
&\begin{matrix}-x_1&+2x_2&-4x_3 =& -9\\
3x_1&+x_2&-5x_3 \geq& 10\\
4x_1&-6x_2&+7x_3 \geq& 2\\
\end{matrix}\\
& x_1, x_2\geq 0, \quad x_3 \quad SRS\\
\end{align*}

Para la primera condición, las variables $x_1$ y $x_2$ cumplen con la no negatividad. La variable $x_3$ en cambio es una variable sin restricción de signo (SRS), por lo que, como se hizo anteriormente, definiremos variables no negativas $x_3’$ y $x_3″$ tales que $x_3 = x_3′ – x_3″$. En la función objetivo solo reemplazamos $x_3$ en términos de $x_3’$ y $x_3″$:

$$Max \quad z = 2x_1 + 5x_2 -3x_3′ + x_3″$$

La primera restricción ya cumple la segunda condición, por lo que solo hay que sustituir a $x_3$.

$$-x_1 +2x_2 -4x_3′ +4x_3″ = -9$$

En la segunda restricción definimos una variable de holgura no negativa $x_4$ tal que $3x_1 +x_2 -5x_3 -x_4 = 10$. Y sustituimos $x_3$ de igual forma:

$$3x_1 +x_2 -5x_3′ + 5x_3″ -x_4 = 10$$

Y para la tercera restricción definimos una variable de holgura no negativa $x_5$ tal que $4x_1-6x_2+7x_3 -x_5 = 2$. Y también sustituimos $x_3$:

$$4x_1-6x_2+7x_3′ – 7x_3″ -x_5 = 2$$

Y por último, la única restricción que no cumple la tercera condición es la primera, por lo que multiplicamos la ecuación por $-1$ para invertir el signo del valor independiente y sea no negativo:

$$x_1 -2x_2 +4x_3′ -4x_3″ = 9$$

Por lo que, juntando los cambios anteriores, la forma estándar de este problema sería la siguiente:

\begin{align*}
Max \quad z &= 2x_1 + 5x_2 -3x_3′ + 3x_3″\\
&s.a\\
&\begin{matrix}x_1&-2x_2&+4x_3’&-4x_3″& =& 9\\
3x_1&+x_2&-5x_3’& +5x_3″& -x_4& = 10\\
4x_1&-6x_2&+7x_3’& -7x_3″& -x_5& = 2\\
\end{matrix}\\
& x_1, x_2, x_3′, x_3″,x_4, x_5\geq 0\\
\end{align*}

Más adelante…

Las formas que estudiamos en esta entrada nos ayudarán posteriormente para plantear soluciones para problemas de programación lineal.

Mientras tanto, en la siguiente entrada hablaremos de otros conceptos relativos a la teoría de problemas lineales y propiedades que puede tener una asignación de variables. Recordaremos también lo que es una solución básica, una solución factible y un punto extremo para un problema lineal.

Tarea moral

  1. ¿Cuál sería la forma canónica del problema de maximizar $x+3y$ sujeto a $x-y\leq 8$ y $x + y \leq 0$, con $x \geq 0, y \quad \text{SRS}$? ¿Y su forma estándar?
  2. Transforma el siguiente problema de programación lineal a su forma canónica y a su forma estándar:
    \begin{align*}
    Max \quad z &= -2x_1 + 3x_2 – 2x_3\\
    &s.a.\\
    &\begin{matrix}4x_1 &-x_2 &- 5x_3 &=& 10\\
    2x_1 &+ 3x_2 &+ 2x_3 &\geq &12\end{matrix}\\
    & x_1 \leq 0, \quad x_2 \geq 0, x_3 \quad SRS.
    \end{align*}
  3. Encontrar la solución a la forma estándar (y también la canónica) de un problema de programación lineal es equivalente a encontrar la solución al problema original. ¿Porqué crees que se da esto? Justifica con tus propias palabras.

Respuestas

1.- \begin{align*}
Max \quad z &= x + 3y\\
&s.a\\
x-y &\geq -8\\
x+y &\leq 15 \\
x &\geq 0, y \quad SRS\\
\end{align*}

Primero, vamos a pasar el problema a su forma canónica.

Notemos que $x$ es no negativa. Sin embargo, $y$ es una variable sin restricción de signo, por lo que definimos variables no negativas $y’$ y $y»$ tales que $y = y’ – y»$

Sustituimos $y$ en la función objetivo que ya es a maximizar:

$$Max \quad z = x + 3y’ -3y»$$

Ahora, la segunda restricción ya es del tipo \leq, pero la primera restricción no, por lo que multiplicamos por $-1$ ambos lados de la desigualdad para invertirla y que ya sea del tipo $\leq$.

Juntando todo tenemos el problema en su forma canónica:

\begin{align*}
Max \quad z &= x + 3y’ – 3y»\\
&s.a\\
-x+y’+y» &\leq 8\\
x+y’+y» &\leq 15 \\
x,y’,y» &\geq 0\\
\end{align*}

Para la forma estándar solo hay que hacer cambios en las restricciones. Para la primera restricción definimos una variable de holgura no negativa $z_1$ tal que $-x+y’+y» +z_1 = 8$. Para la segunda restricción definimos una variable de holgura no negativa $z_2$ tal que $x+y’+y» +z_2 = 15$.

Entonces el problema en su forma estándar sería de la siguiente manera:

\begin{align*}
Max \quad z &= x + 3y’ – 3y»\\
&s.a\\
-x+y’+y» +z_1 &= 8\\
x+y’+y» +z_2 &= 15 \\
x,y’,y»,z_1,z_2 &\geq 0\\
\end{align*}

2.- \begin{align*}
Max \quad z &= -2x_1 + 3x_2 – 2x_3\\
&s.a.\\
&\begin{matrix}4x_1 &-x_2 &- 5x_3 &=& 10\\
2x_1 &+ 3x_2 &+ 2x_3 &\geq &12\end{matrix}\\
& x_1 \leq 0, \quad x_2 \geq 0, x_3 \quad SRS
\end{align*}

Primero vamos a expresar el problema en su forma estándar.

La variable $x_2$ ya es no negativa. La variable $x_1$ es no positiva por lo que definimos $x_1’$ tal que $x_1′ = -x_1$. $x_3$ es una variable sin restricción de signo, por lo que definimos variables no negativas $x_3’$ y $x_3″$ tal que $x_3= x_3′ – x_3″$.

En la función objetivo solo sustituimos los valores de $x_1$ y $x_3$:

$Max \quad z = 2x_1′ + 3x_2 – 2x_3′ + 2x_3″$$

La primera restricción ya es una ecuación. La segunda restricción es del tipo $\geq$, entonces definimos una variable de holgura no negativa $x_4$ tal que $2x_1 + 3x_2 + 2x_3 – x_4 = 12$. Ahora sustituimos $x_1$ y $x_3$ en ambas restricciones.

\begin{matrix}-4x_1′ & – x_2& – 5x_3’& + 5x_3″=& 10\\
-2x_1’& + 3x_2& + 2x_3’& – 2x_3″& – x_4 =& 12\end{matrix}

Y el vector de recursos es no negativo ya que $10,12 \geq 0$

Entonces la forma estándar de este problema sería la siguiente:

\begin{align*}
Max \quad z &= 2x_1′ + 3x_2 – 2x_3′ + 2x_3″\\
&s.a.\\
&\begin{matrix}
-4x_1’& – x_2& – 5x_3’& + 5x_3″& =& 10\\
-2x_1’& + 3x_2& + 2x_3’& – 2x_3″& – x_4 =& 12\\
\end{matrix}\\
&x_1′,x_2,x_3′,x_3″,x_4 \geq 0
\end{align*}

Para la forma canónica, vamos a hacer cambios a las restricciones resultantes de pasar el problema a su forma estándar.

Para la primera restricción que es una ecuación, la vamos a expresar como dos desigualdades:

\begin{align*}
-4x_1’& – x_2& – 5x_3’& + 5x_3″& \leq& 10\\
-4x_1’& – x_2& – 5x_3’& + 5x_3″& \geq& 10\\
\end{align*}

Para la restricción del tipo $\geq$, multiplicamos por $-1$ de ambos lados para invertir la desigualdad y que sea del tipo $\leq$:

\begin{align}
-4x_1’& – x_2& – 5x_3’& + 5x_3″& \leq& 10\\
4x_1’& + x_2& + 5x_3’& – 5x_3″& \leq& -10\\
\end{align}

Ahora, para la segunda restricción del problema estandarizado, retiramos la variable de holgura no negativa:

$$-2x_1′ + 3x_2 + 2x_3′ – 2x_3″ \geq 12$$

Y multiplicamos por $-1$ para invertir la desigualdad:

$$2x_1′ – 3x_2 – 2x_3′ + 2x_3″ \leq -12$$

Entonces la forma canónica de este problema sería la siguiente:

\begin{align*}
Max \quad z &= 2x_1′ + 3x_2 – 2x_3′ + 2x_3″\\
&s.a.\\
&\begin{matrix}
-4x_1’& – x_2& – 5x_3’& + 5x_3″& \leq& 10\\
4x_1’& + x_2& + 5x_3’& – 5x_3″& \leq& -10\\
2x_1’& – 3x_2& – 2x_3’& + 2x_3″& \leq& -12\\
\end{matrix}\\
&x_1′,x_2,x_3′,x_3″ \geq 0
\end{align*}

Entradas relacionadas

Investigación de Operaciones: El problema de producción e inventario (7)

Por Aldo Romero

Introducción

Ya hemos visto algunos ejemplos en los que se plantea un problema de programación lineal a partir de un contexto específico. Hemos visto el problema de la dieta, el problema de la mochila y el problema del transporte. Hay algunos problemas que parecen un poco más complicados y que no es tan evidente desde el inicio que se pueden plantear como problemas de programación lineal. En esta ocasión veremos uno de ellos: el problema de producción e inventario.

Abundan las aplicaciones de la programación lineal para planificar la producción y para controlar inventarios. El siguiente es solo una de múltiples aplicaciones que se les puede dar a este tipo de problemas.

A grandes rasgos, el problema consiste en modelar una fábrica que necesita tener lista cierta cantidad de inventario de un producto en determinados momentos del año. La fábrica puede producir cierta cantidad de producto que depende de la temporada del año. Quizás haya temporadas en las que puede producir más de lo que necesita, pero si hace eso incurrirá en costos de almacenaje. ¿Cómo puede distribuir su producción, almacenaje y despacho la fábrica para minimizar el costo y cumplir con su compromiso de inventario? Veamos a continuación que esta situación se puede plantear en términos de un problema de programación lineal.

Ejemplo del problema de producción e inventario

Una empresa productora de videojuegos indie acaba de finalizar su último gran lanzamiento y está lista para producirlo en masa en su formato físico. La siguiente tabla indica la demanda de los primeros 3 meses de lanzamiento.

Meses transcurridos a
partir del lanzamiento
012
Demanda en miles de copias
del mes en curso
806040
Productividad disponible del
mes en curso
1105030

Como el primer mes de lanzamiento es el más importante, la empresa decide que se pueden producir hasta 110 mil copias ese mes, y gradualmente va a reducir su productividad a 50 mil copias el segundo mes y 30 mil el tercer mes; esto con la finalidad de enfocar más tiempo y recursos en otras producciones.

La empresa productora y las tiendas donde se venden tiene un contrato que establece en particular dos cosas:

  • Las tiendas tienen que tener en stock la cantidad de copias demandas cada mes, y esta cantidad de copias será las que la empresa productora entregó este mes junto con las que sobraron el mes pasado
  • Si se entregan más copias que las demandadas por la tienda, se cobrará un costo de almacenamiento de \$2000 al mes por cada mil copias que están siendo almacenadas en tienda fuera de la demanda establecida.

El costo de producción de cada mil copias es de \$20000. Se desea determinar el plan de producción e inventario que satisfaga el contrato con estas tiendas a fin de minimizar los costos.

Variables de decisión

De manera intuitiva, vamos a hacer nuestras variables de decisión las miles de copias que se van a producir el mes en curso desde el lanzamiento del juego.

$x_i$ = miles de copias a producir en el mes $i$ desde el lanzamiento del juego. $(i \in \{1, 2, 3\})$.

Función objetivo

Como se mencionó, el plan de producción tiene que minimizar los costos para la empresa, tanto los gastos de producción de sus videojuegos como el almacenamiento de estos.

El costo de producción es simplemente el número de copias producidas por cada mes, multiplicado por el costo de fabricación de cada copia ($\$20$). Esto es: $20(x_1 + x_2 + x_3)$.

Y luego consideramos el costo de almacenamiento de las copias que no fueron demandadas por la empresa en ese mes. Entonces, para el primer mes, $x_1 – 80$ son las miles de copias que la empresa tiene que cubrir en gastos de almacenamiento. Para el segundo mes, las copias demandadas al momento son las acumuladas del primer y segundo mes ($140000$) y los juegos producidos son solamente $x_1 + x_2$. Entonces, los miles de juegos por los que hay que cubrir el costo de almacenamiento son $x_1 + x_2 – 140$. Y para el tercer mes, las copias demandadas son las acumuladas de los primeros 3 meses ($180000$) y los juegos producidos serán $x_1 + x_2 + x_3$ en miles de copias, y así, los costos de almacenamiento para el tercer mes serán $x_1 + x_2 + x_3 – 180$.

Entonces, el número de miles de copias por las que hay que cubrir costos de almacenamiento para estos 3 meses será: $(x_1 – 80) + (x_1 + x_2 – 140) + (x_1 + x_2 + x_3 -180)$. Y esta cantidad la multiplicamos por el costo de almacenamiento mensual por millar de copias (\$2000).

Entonces, juntando las expresiones, el costo total que hay que minimizar sería:

$$Min \quad z = 20000(x_1 + x_2 + x_3) + 2000[(x_1 – 80) + (x_1 + x_2 – 140) + (x_1 + x_2 + x_3 – 180)]$$

O si lo queremos poner de la forma más resumida posible, esto es:

$$Min \quad z = 26000x_1 + 24000x_2 + 22000x_3 – 800000$$

Restricciones del problema de producción e inventario

Primero, vayamos con las restricciones de oferta:

\begin{align*}
x_1 \leq 110\\
x_2 \leq 50\\
x_3 \leq 30\\
\end{align*}

Después, vayamos con las restricciones de demanda:

\begin{align*}
x_1 \geq 80\\
x_2 + (x_1 – 80) \geq 60\\
x_3 + (x_1 + x_2 – 140) \geq 40\\
\end{align*}

Recordemos que la razón de la última restricción es para que la empresa productora no se quede ninguna copia más de las demandadas para que no haya cuota por almacenamiento en las tiendas para el cuarto mes.

Y naturalmente nuestras variables de decisión son no negativas ya que hablamos de la cantidad de unidades que tenemos de un producto.

Resumen de formulación del problema de producción e inventario

En resumen, nuestro problema de programación lineal quedaría planteado así:

\begin{align*}
Min \quad z = 20000(x_1 + x_2 + x_3) &+ 2000[(x_1 – 80) + (x_1 + x_2 – 140) + (x_1 + x_2 + x_3 – 180)]\\
&s.a\\
x_1 &\leq 110\\
x_2 &\leq 50\\
x_3 &\leq 30\\
x_1 &\geq 80\\
x_2 + (x_1 – 80) &\geq 60\\
x_3 + (x_1 + x_2 – 140) &\geq 40\\
x_i &\geq 0, i \in \{1, 2, 3\}\\
\end{align*}

Más adelante…

La siguiente entrada muestra nuestro último ejemplo introductorio: el problema de la ruta más corta. Como veremos, en este problema también es necesario aprovechar la situación del problema de manera creativa para poder llevarlo a un contexto lineal.

Tarea

  1. El problema se vuelve mucho más sencillo si únicamente hay dos periodos. Plantea un problema que refleje esta situación en el caso particular de la entrada y resuélvelo. Es decir, determina en esos dos periodos (el primer y segundo mes) cuál es la cantidad correcta de unidades a producir por mes, para minimizar el costo total.
  2. Cambia el planteamiento dado en la entrada por uno en el que el costo de almacenaje en las tiendas sea de \$0. En ese caso, ¿cuál sería el plan de producción e inventario óptimo?
  3. En esta entrada dimos la formulación de un caso particular del problema de producción e inventario. Sin embargo, ya tienes todas las herramientas para plantear el problema de manera general. Realiza una formulación general en la que:
    1. Se tengan n periodos con demanda de unidades$d_1, d_2, \ldots, d_n$ por cada periodo.
    2. Se tengan capacidades de producción $o_1, o_2, \ldots, o_n$ unidades en cada periodo.
    3. Se tengan costos $P$ y $A$, de producir y almacenar una unidad de producto respectivamente.
  4. En un problema general de producción e inventario. ¿Por qué podría ser mala idea producir mucho más de lo necesario en las temporadas en las que se puede? Intenta justificar intuitivamente, y luego encuentra algunos casos particulares del problema que apoyen tus argumentos.

Respuestas

1.- Si eliminamos un mes del problema, tendríamos la siguiente tabla de productividad y demanda:

Meses transcurridos a
partir del lanzamiento
01
Demanda en miles de copias
del mes en curso
8060
Productividad disponible del
mes en curso
11050

Tenemos las mismas variables de decisión: $x_i$ = miles de copias a producir el mes $i$ desde el lanzamiento del juego. $i \in \{1, 2\}$

Para la función objetivo, el costo de producción de las copias va a ser: $20000(x_1 + x_2)$. Los gastos de almacenamiento del primer y segundo mes serán: $2000[(x_1 – 80) + (x_1 + x_2 – 140)]$.

Entonces la función objetivo queda de la siguiente manera:

$$Min \quad z = 24000x_1 + 22000x_2 – 440000$$

Las restricciones de oferta y de demanda serían:

\begin{align*}
x_1 &\leq 110\\
x_2 &\leq 50\\
x_1 &\geq 80\\
x2 + (x_1 – 80) &\geq 60\\
\end{align*}

Entonces, el problema con dos periodos de tiempo quedaría planteado de la siguiente manera:

\begin{align*}
Min \quad z &= 24000x_1 + 22000x_2 – 440000\\
&s.a\\
x_1 &\leq 110\\
x_2 &\leq 50\\
x_1 &\geq 80\\
x_2 + (x_1 – 80) &\geq 60\\
x_i &\geq 0, i \in \{1, 2\}\\
\end{align*}

Ahora, una posible solución a este problema sea satisfacer la demanda del primer mes, con tal de que sobren solamente la menor cantidad de copias que al sumarlas con la producción del segundo mes, nos cumplan también la demanda exacta de ese mes. Es decir, producir en el primer mes 90000 copias, almacenar 10000 que sobrarían en tienda y producir hasta el límite de producción el segundo mes que son 50000 copias y juntos con las 10000 que había almacenadas, se cumplirá la demanda que tenemos para el segundo periodo que son 60000 copias. De esta manera no se incurre en gastos innecesarios de almacenamiento, ya que para el tercer mes no hay copias por almacenar que nos generen ese gasto.

2.- Si no hubiera costo por almacenamiento tenemos varias soluciones que podrían ser óptimas, pero en realidad lo sería cualquiera donde se cumplan los valores de demanda al mínimo, es decir, que se produzcan las unidades que nos piden por los tres meses y ni una más.

3.- Sea una empresa tiene que producir un producto y este producto se vende en n periodos de tiempo, con su respectiva demanda ($d_1, \ldots, d_n$) y oferta de productos ($o_1, \ldots, o_n$) en cada uno de ellos.

Se tiene un costo $P$ de fabricación por producto y un costo A de almacenamiento por producto de un periodo a otro.

Se quiere determinar el plan de producción e inventario que satisfaga la demanda y minimice los costos.

Variables de decisión: $x_i$ = número de unidades a producir en el periodo $i$. $i \in \{1, \ldots, n\}$

Función objetivo:

$$Min \quad z = P(x_1 + \ldots + x_n) + A[(x_1-d_1) + (x_1 + x_2 – d_1 – d_2) + \ldots + (\sum_{i=1}^n{x_i} – \sum_{i=1}^n{d_i})]$$

Y por último, las restricciones serían:

\begin{align*}
x_1 &\leq o_1\\
x_2 &\leq o_2\\
&\vdots\\
x_n &\leq o_n\\
x_1 &\geq d_1\\
x_1 + x_2 – d_1 &\geq d_2\\
\vdots\\
\end{align*}

$$(\sum_{i=1}^n{x_i} – \sum_{i=1}^{n-1}{d_i}) \geq \sum_{i=1}^n{d_i}$$

$$x_i \geq 0,\quad i \in \{1, \ldots, n\}$$

4.- Dependería del problema pero en general como se intenta minimizar los costos, esto también sería minimizar los costos que conlleva el almacenaje de productos y si se producen muchos cada periodo, esto incurrirá en el aumento de los gastos mencionados y no será lo optimo para el objetivo que tenemos.

Entradas relacionadas

Investigación de Operaciones: El problema del transporte (6)

Por Aldo Romero

Introducción

En esta entrada abordaremos otro de los problemas conocidos que se pueden plantear en términos de programación lineal: el problema del transporte. A grandes rasgos, el problema del transporte habla de cómo surtir a diferentes destinos de un cierto producto que parte de diferentes orígenes con disponibilidad limitada.

Siendo un poco más concretos, cada origen tiene una cierta cantidad de unidades de producto. Cada destino requiere de una cierta cantidad de unidades de producto. Además, para cada pareja origen-destino se tiene un costo de transporte unitario. El objetivo es determinar cuál es la manera más económica de cumplir con todos los requisitos de oferta y demanda.

Ejemplo del problema del transporte

Supongamos que una compañía que produce electrónicos tiene tres almacenes $A$, $B$ y $C$. La cantidad de computadoras portátiles disponibles en cada uno de los almacenes se encuentra registrada en la siguiente tabla.

OrigenABC
Oferta en unidades200350470

Pensemos que hay dos tiendas de electrónicos $X$ y $Y$ que desean vender computadoras portátiles de dicha compañía. La cantidad de computadoras portátiles que necesita cada tienda está dada en la siguiente tabla.

DestinoXY
Demanda en
unidades
300500

Además de esto sabemos que transportar cada una de las computadoras portátiles tiene un costo que depende del almacén origen y de la tienda destino. El costo unitario de transporte está dado por la siguiente tabla.

A (200)B (350)C (470)
X (300)354042
Y (500)443745

Así, por ejemplo, transportar una computadora portátil del almacén $B$ a la tienda $Y$ tiene un costo de \$37 por unidad.

Queremos determinar cuántas computadoras portátiles se tienen que enviar de cada origen a cada destino de manera que no se exceda la cantidad disponible en cada origen, a cada tienda llegue la cantidad de computadoras que se deben enviar y se minimice el costo total de envío.

Variables de decisión

Lo que tenemos que decidir en nuestro problema es cuántas computadoras portátiles se envían de cada origen a cada destino. Por ejemplo, debemos decidir cuánto vale una variable $x_{ij}$ que nos dice cuántas computadoras portátiles enviar del almacén $i$ a la tienda $j$. Así, las variables se definen de la siguiente manera:

$x_{ij}$ = número de computadoras a transportar del almacén $i$ al destino $j$. $i \in \{A, B, C\}, j \in \{X, Y\}$.

En este ejemplo en concreto, la cantidad de unidades debe ser un número entero (no podemos enviar $1/2$ de computadora portátil de un almacén a una tienda).

Función objetivo

Debemos de establecer cuál es la función objetivo que queremos optimizar. Notemos que el costo total que involucrarán las computadoras portátiles enviadas del almacén $A$ a la tienda $X$ es $35x_{AX}$, pues de acuerdo a la tabla de costos de transporte, hay un costo de \$35 para enviar cada computadora portátil. Todas las computadoras que salgan del almacén $A$ tendrán entonces un costo de $35x_{AX}+44x_{AY}$. Si calculamos de manera similar el costo de las computadoras que se salen de los almacenes $B$ y $C$ obtenemos el total. Entonces la función objetivo será la siguiente expresión:

$$Min \quad z = 35x_{AX}+44x_{AY}+40x_{BX}+37x_{BY}+42x_{CX}+45x_{CY}.$$

Restricciones

Hay dos tipos de restricciones que debemos cuidar:

  • Que ninguno de los almacenes exceda la cantidad de computadoras portátiles que tiene disponible.
  • Que cada tienda reciba el número de computadoras portátiles que requiere.

En el caso de la primera restricción, lo que estamos haciendo es limitar a las sumas que involucren a un mismo almacén. Por ejemplo, para no exceder las $200$ unidades que se tienen disponibles en el almacén $A$, se debe cumplir que $x_{AX}+x_{AY}\leq 200$. De manera similar, con el almacén $B$ obtenemos que $x_{BX}+x_{BY}\leq 350$ y con el almacén $C$ obtenemos que $x_{CX}+x_{CY}\leq 470$.

En el caso de la segunda restricción, ahora la desigualdad es opuesta: es una condición que requiere que las computadoras portátiles que lleguen a cada tienda sean al menos un valor dado. Entonces, para la tienda $X$ se tiene que cumplir $x_{AX}+x_{BX}+x_{CX}\geq 300$ y para la tienda $Y$ se tiene que cumplir $x_{AY}+x_{BY}+x_{CY}\geq 500$.

Entonces, juntando todas las restricciones, tenemos:

\begin{align*}
x_{AX}+x_{AY} \leq 200\\
x_{BX}+x_{BY} \leq 350\\
x_{CX}+x_{CY} \leq 470\\
x_{AX}+x_{BX}+x_{CX} \geq 300\\
x_{AY}+x_{BY}+x_{CY} \geq 500\\
x_{ij} \in \mathbb{Z}, i \in \{A, B, C\}, j \in \{X, Y\}\\
\end{align*}

Resumen de formulación del problema del transporte

En resumen, el ejemplo de problema de transporte queda resumido en el siguiente PPL.

\begin{align*}
Min \quad z = 35x_{AX}+44x_{AY}+40x_{BX}&+37x_{BY}+42x_{CX}+45x_{CY}&\\
s.a.&\\
x_{AX}+x_{AY}&\leq 200\\
x_{BX}+x_{BY}&\leq 350\\
x_{CX}+x_{CY}&\leq 470\\
x_{AX}+x_{BX}+x_{CX}&\geq 300\\
x_{AY}+x_{BY}+x_{CY}&\geq 500\\
x_{ij} \in \mathbb{Z}, i \in \{A, B, C\}, j \in \{X, Y\}\\
\end{align*}

Formulación general del problema del transporte

De manera general, en el problema del transporte se requieren transportar ciertas unidades de un producto desde $m$ centros de oferta (también llamados orígenes), a $n$ centros de demanda, (también denominados destinos). Cada centro de oferta tiene una cierta cantidad de unidades disponibles, y cada centro de demanda tiene una cierta cantidad de unidades que desea recibir.

Llamemos $o_i$ a la oferta del origen $i$ en unidades del producto ($i=1, \ldots , m$) y $d_j$ la demanda del destino $j$ en unidades del producto ($j=1, \ldots, n$). Para cada origen $i$ y cada destino $j$ tiene cierto costo enviar una unidad de producto. Sea $c_{ij}$ el costo unitario de transporte del producto del origen $i$ al destino $j$ ($i = 1, \ldots , m;j=1, \ldots , n$).

Lo que buscamos es determinar para cada origen $i$ y cada destino $j$ cuántas unidades $x_{ij}$ se deben transportar de tal modo que no se exceda la producción de cada origen, se satisfaga la demanda en cada destino y se incurra en el mínimo costo de transporte.

Como lo hemos hecho en entradas anteriores, las condiciones anteriores pueden ser planteadas en términos lineales. Para no exceder la oferta del origen $i$, se debe cumplir que

$$\sum_{j=1}^nx_{ij} \leq o_i,$$

para cada $i=1,\ldots,m$. A estas desigualdades les llamamos las restricciones de oferta.

Para cumplir con la demanda en el destino $j$ se debe cumplir que

$$\sum_{i=1}^{m}x_{ij} \geq d_j,$$

para cada $j=1,\ldots,n$. A estas desigualdades les llamamos las restricciones de demanda.

Agregando las condiciones de positividad y estableciendo que queremos minimizar el costo total, obtenemos el problema planteado de la siguiente manera:

\begin{align*}
Min \quad z &= \sum_{i=1}^{m} \sum_{j=1}^{n} c_{ij}x_{ij}\\
s.a.&\\
\sum_{j=1}^nx_{ij} &\leq o_i, \quad i=1, \ldots , m \quad \quad (1)\\
\sum_{i=1}^{m}x_{ij} &\geq d_j, \quad j=1, \ldots , n \quad \quad (2)\\
x_{ij} &\geq 0; \quad i=1, \ldots , m; j=1, \ldots , n,\\
\end{align*}

donde $x_{ij}$ es el número de unidades del producto a transportar del origen $i$ al destino $j$, para cada $i=1, \ldots , m$ y cada $j = 1, \ldots , n$.

Las desigualdades en (1) se llaman restricciones de oferta y en (2) restricciones de demanda.

Más adelante…

Con este problema contamos ya con tres ejemplos de situaciones que se pueden plantear en términos de programación lineal: el problema de la dieta, el problema de la mochila y el problema del transporte. A continuación veremos dos más: el problema de producción e inventario, y el problema de la ruta más corta.

Tarea

  1. Encuentra por lo menos una manera de realizar las asignaciones de variables en el problema de los almacenes de computadoras portátiles y las tiendas. No importa que el costo total que encuentres no sea óptimo, pero sí se deben cumplir las restricciones de oferta y de demanda.
  2. ¿Qué sucede en el problema del transporte si la cantidad total de demanda excede a la cantidad total de oferta? Plantea esta posibilidad en términos de los parámetros $o_i$ y $d_j$ de oferta y demanda, respectivamente.
  3. Imagina que en el ejemplo que planteamos de computadoras portátiles, almacenes y tiendas sucede que el precio de transportar una computadora portátil es de \$30 sin importar el almacén origen o la tienda destino. En este caso, ¿cuál sería una manera óptima de realizar los envíos, y tal que se cumplan las restricciones de oferta y demanda?
  4. Se presenta la siguiente situación:

Una empresa coreana fabrica y luego distribuye sus pantallas a diferentes vendedores. En este momentos tienen pantallas de 4 diferentes tamaños: 43″, 50″, 55″ y 65″. Los países a donde distribuyen sus productos son Japón, China y Estados Unidos. En la siguiente tabla se muestra el costo de exportación en miles de dólares por cada 1000 televisores de cada modelo.

43″50″55″65″Demanda este año
Japón\$50k\$60k\$65k\$70k100k
China\$60k\$70k\$75k\$80k300k
Estados Unidos\$80k\$90k\$95k\$100k350k
Disponibilidad250k220k180k150k——

También se señaló en la tabla anterior cual es la demanda de cada país para este año y las pantallas que fueron fabricadas este año por cada modelo.

Plantea este problema como un problema del transporte como se hizo anteriormente.

  1. Un posible caso particular del problema del transporte sucede cuando hay muchos orígenes y únicamente un destino. Plantea esta posibilidad de manera general. En este caso, ¿cuál sería una buena estrategia para decidir cuáles orígenes deben enviar unidades del producto al destino?

Respuestas

1.- (Respuesta a criterio del lector)

2.- Si la demanda supera a la oferta, por lo menos uno de los destinos del problema va a cumplir que $\sum_{i=1}^{m}x_{ij} < d_j$, por lo que no cumplirá una de las restricciones de nuestro problema y no habrá solución factible.

3.- En este caso, sería indistinto de donde elijamos enviar nuestras computadoras con tal de que se satisfaga la demanda, y solamente se parará de enviar computadoras cuando se satisfaga esta demanda de 800 computadoras, que en cualquier caso nos dará un costo total de envío de $24000.

4.- Nuestra variable de decisión va a ser la siguiente: $x_{ij}$ = miles de televisores del tamaño $i$ que van a ser exportados al país $j$, $i \in \{1 (\textrm{43″}), 2 (\textrm{50″}), 3 (\textrm{55″}), 4 (\textrm{65″})\}$, $j \in \{1 (\textrm{Japón}), 2 (\textrm{China}), 3 (\textrm{Estados Unidos})\}$

Si seguimos los pasos como lo hemos venido haciendo, el problema debería quedar planteado de la siguiente manera:

\begin{align*}
Min \quad z = &50x_{11} + 60 x_{12} + 80x{13} + 60 x_{21} + 70 x_{22} + 90x_{23}\\
+ &65x_{31} + 75x_{32} + 95x_{33} + 70x_{41} + 80x_{42} + 100x_{43}\\
&s.a\\
&x_{11} + x_{21} + x_{31} + x_{41} \geq 100\\
&x_{12} + x_{22} + x_{32} + x_{42} \geq 300\\
&x_{13} + x_{23} + x_{33} + x_{43} \geq 350\\
&x_{11} + x_{12} + x_{13} \leq 250\\
&x_{21} + x_{22} + x_{23} \leq 220\\
&x_{31} + x_{32} + x_{33} \leq 180\\
&x_{41} + x_{42} + x_{43} \leq 150\\
&x_{ij} \in \mathbb{N}\\
\end{align*}

5.- Como solamente habría un destino, la variable de decisión sería la siguiente:
$x_i$ = unidades de producto que vamos a enviar del origen $i$ a nuestro destino, $i \in \{1, \ldots, m\}$

Sea $d$ la demanda de nuestro único destino.

El planteamiento general sería el siguiente:

\begin{align*}
Min \quad z &= \sum_{i=1}^{m} c_{i}x_{i}\\
s.a.&\\
x_i &\leq o_i, \quad i \in \{1, \ldots , m\}\\
\sum_{i=1}^{m}x_i &\geq d\\
x_i &\geq 0 \quad i \in \{1, \ldots , m\}\\
\end{align*}

Una buena estrategia para resolver el problema simplemente sería ir agotando las unidades que nos puede proporcionar cada origen empezando por los que nos dan el menor costo de transporte por unidad, y parar justo cuando se haya cumplido la demanda de este único destino.

Entradas relacionadas

Investigación de Operaciones: El problema de la ruta más corta (8)

Por Aldo Romero

Introducción

Veamos un último ejemplo de los problemas que podremos resolver con la teoría que desarrollaremos más adelante. Se conoce como el problema de la ruta más corta, y la idea es muy sencilla. Se tiene una red de localizaciones en un mapa. Hay algunos tramos que conectan localizaciones. Atravesar cada uno de ellos tiene cierto costo (asociado por ejemplo, con la distancia). Si nos dan un origen y un destino, ¿cómo podremos determinar el camino a seguir que nos lleve del origen al destino con el menor costo posible? Comencemos con un ejemplo concreto.

Ejemplo del problema de la ruta más corta

Supongamos que un empleado sale de trabajar a cierta hora de la noche y para regresar a su casa evalúa las posibles rutas a tomar en una aplicación móvil. La aplicación le indica algunas calles y avenidas que lo llevan de su trabajo (1) a su casa (7). Los vértices de en medio (2, 3, 4, 5 y 6) representan los cruces de calles por los que se transita en estas posibles rutas. También le indica cual es el tiempo que le tomará ir por cada calle o avenida en minutos, tomando en cuenta no solo la distancia, sino también el tráfico y los accidentes que se presentan. El empleado busca la ruta más rápida para poder llegar a su casa a descansar.

Una representación gráfica del problema presentado

Aunque parezca que este problema es muy geométrico, en realidad también se puede plantear en términos algebraicos, como veremos a continuación.

Variables de decisión del problema de la ruta más corta

En otros problemas hemos tenido variables de decisión que nos dicen cuánto producir, cuánto transportar, cuánto comer, etc. En esta caso, nuestras variables de decisión no representarán una cantidad, sino simplemente una decisión de «sí» o «no». Lo que haremos es establecer una variable $x_{ij}$ por cada uno de los posibles tramos del destino $i$ al $j$, y será una variable binaria que indique la decisión de recorrer o no tal tramo. Si sí lo recorremos tendrá valor $1$ y si no, tendrá valor $0$.

Por ejemplo si tomamos la ruta {1,2,3,7}, tendremos $x_{12} = x_{23} = x_{37}=1$, lo cual nos indicará que sí se recorren los tramos $(1,2)$, $(2,3)$, y $(3,7)$. Por otro lado, tomaremos $x_{ij} = 0$ para los demás tramos, que nos indicará que no se recorren.

Explícitamente, en nuestro ejemplo tomaremos variables $x_{ij}$ con $i<j$, y tales que $(i,j)$ esté en el conjunto $A$ de todas las parejas $i<j$ para las cuales haya un tramo entre $i$ y $j$ (en cualquier dirección). La interpretación que les daremos será la siguiente:

$$x_{ij}=\begin{cases} 1 \quad \text{si se recorre el tramo $(i,j)$} \\ 0 \quad \text{si no}. \end{cases}$$

Restricciones del problema de la ruta más corta

Ya establecidas las variables de decisión, lo que debemos hacer ahora es dar restricciones que hagan que los tramos elegidos definan una ruta.

Pensemos en qué sucede desde el trabajo. De ahí es donde debemos empezar. Solamente debemos tomar un tramo desde el trabajo, pues si pasamos por el trabajo más de una vez, en realidad nos podemos ahorrar esa vuelta que dimos de más para llegar más rápido a casa . Esto significa o que $x_{12} = 1$, o que $x_{14}=1$, y sólo una de estas dos igualdades se cumple. Ya que las variables sólo serán $0$ ó $1$, otra manera de escribir esto mismo es pedir que $$x_{12}+x_{14}=1.$$

Del mismo modo, debemos garantizar que se llegue a casa por un solo tramo, que se puede escribir como $$x_{37}+x_{57}+x_{67}=1,$$ o bien $$-x_{37}-x_{57}-x_{67}=-1.$$

Para el resto de las zonas, debemos tomar en cuenta que si se entra a una, también se debe salir. Y si no se entra tampoco se sale. Veamos qué pasa, por ejemplo, con el cruce 2:

  • Si se entra entonces $x_{12}=1$. Deberá cumplirse entonces que $x_{23} = 1$ o $x_{26} = 1$ y sólo una de éstas.
  • Si no se entra entonces $x_{12}=0$. Deberá cumplirse entonces: $x_{23}=x_{26} = 0$.

Podemos reescribir ambos casos anteriores de manera simplificada con la igualdad $$x_{12} = x_{23}+x_{26},$$ que también se puede escribir como $$x_{23}+x_{26}-x_{12}=0.$$

Cada uno de los cruces $3,4,5,6$ nos dan restricciones similares.

Función objetivo del problema de la ruta más corta

Finalmente, debemos determinar cuánto nos costará recorrer una ruta una vez fijas las variables de decisión. Esto es sencillo. Si el tramo de $i$ a $j$ tiene un costo de $c_{ij}$, entonces recorrerlo nos costará $x_{ij}c_{ij}$. En nuestro problema, la función objetivo quedaría como sigue:

\begin{align*}z&=30x_{12}+20x_{14}+20x_{23}+8x_{26}\\
&+10x_{36}+50x_{37}+20x_{45}+10x_{56}\\
&+50x_{57}+30x_{67}.\end{align*}

Resumen de formulación del problema de la ruta más corta

Así, el problema de ruta más corta que vimos como ejemplo queda descrito como sigue.
\begin{align*}
z&=30x_{12}+20x_{14}+20x_{23}+8x_{26}\\
&+10x_{36}+50x_{37}+20x_{45}+10x_{56}\\
&+50x_{57}+30x_{67}.
\end{align*}
\begin{align*}
s.a.\\
x_{12}+x_{14} &= 1\\
-x_{12}+x_{23}+x_{26} &= 0\\
-x_{14}+x_{45} &= 0\\
-x_{23}+x_{36}+x_{37} &= 0\\
-x_{45}+x_{56}+x_{57} &= 0\\
-x_{26}-x_{36}-x_{56}+x_{67} &= 0\\
-x_{37}-x_{57}-x_{67} &= -1\\
x_{ij}=0,1 \quad \forall (i,j) &\in A.\\
\end{align*}

Este problema podría plantearse en general, bajo algunas condiciones sobre el tipo de mapas en los que se puede resolver. Este es un modelo lineal entero binario que tiene la propiedad de que puede ser resuelto eficientemente con algoritmos de programación lineal

Otro ejemplo de ruta más corta

La idea anterior puede servir no sólo para resolver problemas en donde nos interesen las distancias geográficas. En otros problemas, nos interesa llegar «rápidamente» a una meta que tenemos, pero quizás con una noción un poco distinta de «rapidez». Esto puede querer decir llegar a un objetivo de negocio en pocos días. Hay casos en los que también podremos plantear esta situación como un problema de ruta más corta. Considera el siguiente ejemplo.

Una compañía que renta automóviles está desarrollando una política de reemplazo para su flotilla de automóviles en un horizonte de planeación de 4 años. Al inicio de cada año, un automóvil se reemplaza o se conserva en operación durante un año más. Un automóvil debe estar en servicio de 1 a 3 años. La siguiente tabla proporciona el costo de reemplazo como una función del año en que se adquiere un automóvil y los años en operación.

Equipo adquirido al inicio del añoCosto de reemplazo ($) para años dados en operación
123
1400054009800
2430062008700
348007100______
44900____________

El problema puede formularse como una red en la que los nodos 1 a 5 representan el inicio de los años 1 a 5. Los arcos a partir del nodo 1 (año 1) pueden llegar a los nodos 2, 3 y 4 porque un automóvil puede estar en operación de 1 a 3 años. Los arcos a partir de los demás nodos pueden interpretarse del mismo modo. La longitud de cada arco es igual al costo de reemplazo. La solución del problema es equivalente a determinar la ruta más corta entre los nodos 1 y 5.

El problema puede ser representado con la siguiente red:

Más adelante…

Con esto terminamos los últimos planteamientos de problemas ejemplo de programación lineal. Por un lado, estos nos servirán como motivación para saber el tipo de problemas que podemos resolver. Por otro lado, nos irán guíando para el desarrollo de distintas técnicas de solución.

Ya que conocemos el tipo de problemas que podremos resolver, platicaremos ahora un poco de la teoría general que respaldará nuestros métodos. En la siguiente entrada introduciremos algunos aspectos teóricos de los problemas de programación lineal.

Tarea moral

  1. Intenta resolver el ejemplo de la ruta más corta que pusimos como ejemplo usando técnicas elementales y una división en casos. ¿Cuál sería la ruta más corta? ¿Por qué crees que sea importante tener métodos generales si este ejemplo se puede resolver de manera muy sencilla con unos pocos casos?
  2. Formula el segundo ejemplo del problema de la ruta más corta como un problema de programación lineal. ¿Qué interpretación tendría encontrar la ruta más corta?
  3. Pedro va en auto diariamente a la facultad. Pedro siempre toma la misma ruta para llegar a la facultad. Por desgracia, en ocasiones hay algunos asaltos sobre la ruta, y a Pedro le gustaría disminuir lo más posible la probabilidad de que esto suceda. Pedro ha decidido por lo tanto elegir una ruta que minimice la probabilidad de ser asaltado.
    La red presentada a continuación muestra las posibles rutas de su casa a la facultad y la probabilidad asociada de no ser asaltado en cada segmento.

La probabilidad de no ser asaltado en la ruta es el producto de las probabilidades de sus segmentos. Por ejemplo, la probabilidad de no ser asaltado en la ruta $1 \rightarrow 3 \rightarrow 5\rightarrow 7$ es $.9 \times .3 \times .25 = .0675$. El objetivo de Pedro es seleccionar la ruta que minimice la probabilidad de ser asaltado.
¿Puedes pensar en una manera de formular este problema como un modelo de la ruta más corta? Como sugerencia, trata de usar la función logaritmo.

  1. Una vez planteado el problema anterior, intenta resolverlo con herramientas básicas y algunos casos.
  2. Intenta plantear por tu cuenta una versión general del segundo problema que vimos en esta entrada. ¿Qué sucedería si tenemos más periodos en los que se puede renovar la flotilla? ¿Cómo se vería el problema?

Entradas relacionadas