Empezaremos este tema mostrando diversos ejemplos que se pueden modelizar mediante técnicas de programación lineal.
El objetivo de la programación lineal es optimizar (maximizar o minimizar) una función lineal de \(n\) variables sujetas a restricciones de igualdad o desigualdad, todas ellas también lineales.
La programación lineal se aplica a diversos campos, como por ejemplo
Cualquier problema de programación lineal consta de 4 componentes básicos
El problema del transporte se refiere al proceso de determinar el número de mercancías que se han de llevar desde cada uno de los orígenes a cada uno de los destinos posibles.
El objetivo suele ser minimizar el coste del transporte y las restricciones vienen dadas por las capacidades de producción de cada origen y las necesidades de cada destino
Ejemplo 1
Supóngase que un determinado producto se ha de llevar en cantidades \[u_1,u_2,\dots,u_m\] desde \(m\) puntos de origen y se ha de recibir en \(n\) destinos en cantidades \(v_1,v_2,\dots,v_n\)
El problema consiste en determinar las cantidades \(x_{ij}\) que se han de llevar del origen \(i\) al destino \(j\) para minimizar el coste del transporte
Los cuatro elementos principales del problema son:
Veámoslas una por una
1 - DATOS
2 - VARIABLES
\[x_{ij}\ge 0\ \forall i =1,\dots, m,\ \forall j=1,\dots,n\]
A esto último se lo conoce como dominio de definición de variables. Es decir
\[D = \{x_{ij}: x_{ij}\ge 0\ \forall i =1,\dots, m,\ \forall j=1,\dots,n\}\]
3 - RESTRICCIONES
4 - OBJETIVO
\[\min \sum_{i = 1}^m\sum_{j = 1}^nc_{ij}x_{ij}\]
Ejemplo 2
Una compañía de ámbito nacional produce y distribuye una línea de neveras de alta eficiencia energética.
La empresa tiene líneas de producción y montaje en dos ciudades, Pamplona y Calahorra, y tres cadenas de distribución localizadas en Madrid, Barcelona y Logroño. La oficina de Madrid presenta una demanda anual de 10000 neveras, la de Logroño 4000 y la de Barcelona 13000.
La planta de Calahorra puede producir hasta 13000 neveras anuales y la de Pamplona 18000.
Los costes de transporte por unidad (en euros) son los mostrados en la siguiente tabla.
Se plantea un problema de programación lineal que minimiza los costes anuales de la compañía
Ejercicio 1
Enumera los cuatro elementos principales del problema.
Origen / Destino | Madrid | Barcelona | Logroño |
---|---|---|---|
Pamplona | 3 | 1 | 5 |
Calahorra | 2 | 2 | 4 |
El problema de la dieta representa una de las primeras aplicaciones de la programación lineal que se utiliza en hospitales.
Se usa para determinar la dieta de los pacientes que satisfacen unas especificaciones nutritivas mínimas de la forma más barata posible
Actualmente también se aplica en el sector de la ganadería con la misma idea: encontrar la combinación óptima de alimentos que consiguen una aportación nutritiva mínima suponiendo el menor coste posible.
Ejemplo 3
Un ganadero se quiere asegurar de que sus animales ingieren diariamente al menos 14 unidades de hierro, 12 de vitamina A y 18 de vitamina C
Un kilogramo de harina tiene un coste de 2€ y cuenta con 1 unidad de hierro, 1 de vitamina A y 3 de vitamina C. Un kilogramo de maíz tiene un coste de 3€ y contiene 2 unidades de hierro, 1 de vitamina A y 1 de vitamina C.
Determinad las posibles maneras de alimentar al ganado que satisfagan las necesidades mínimas alimenticias diarias con el mínimo coste posible
Ejercicio 2
Enumera los cuatro elementos principales del problema.
Ejercicio 3
La tabla siguiente muestra todos los datos relativos a la producción, la demanda mensual y la composición de cada tipo de corbata.
Plantead un problema de programación lineal para determinar el plan de producción que maximiza los beneficios de la empresa
Tipos | Precio venta | Demanda (mín-máx) | Metros necesarios | Composición |
---|---|---|---|---|
Seda | 6.70 | 6000-7000 | 0.125 | 100% Seda |
Poliester | 3.55 | 10000-14000 | 0.09 | 100% Poliester |
Pol / Alg | 4.32 | 12000-17000 | 0.12 | 50% Pol, 50% Alg |
Pol / Alg | 4.81 | 4000-9700 | 0.1 | 20% Pol, 80% Alg |
Material | Coste por metro | Metros disponibles/mes |
---|---|---|
Seda | 21 | 800 |
Poliester | 6 | 3000 |
Algodón | 9 | 1600 |
La planificación de horarios intenta dar respuesta efectiva a las necesidades de personal durante un periodo de tiempo concreto.
Sectores típicos donde se practica esta programación lineal para tomar decisiones sobre la planificación de horarios son las entidades bancarias, la educación y los grandes almacenes.
Ejemplo 4
Supongamos que una entidad bancaria necesita diariamente entre 10 y 20 cajeros en función de la hora del día. Las necesidades diarias se especifican en la siguiente tabla
Franja horaria | Número de cajeros |
---|---|
10:00 - 11:00 | 12 |
11:00 - 12:00 | 15 |
12:00 - 13:00 | 17 |
13:00 - 14:00 | 20 |
14:00 - 15:00 | 19 |
15:00 - 16:00 | 18 |
16:00 - 17:00 | 13 |
Ejemplo 5
La oficina tiene 12 trabajadores a jornada completa y dispone de personal suficiente para trabajar a media jornada.
Un cajero que trabaja a media jornada debe estar operativo 4h al día y estar disponible para comenzar a trabajar a cualquier hora entre las 9:00 y las 13:00. Los trabajadores a jornada completa deben estar operativos desde las 9:00 hasta las 17:00 y tienen una hora libre para comer (la mitad come de 11:00 a 12:00 y la otra mitad de 12:00 a 13:00).
Las normas de la entidad limitan el número de horas realizadas por los trabajadores a tiempo parcial a, como mucho, el 50% de las horas diarias que se realicen. Nótese que se realizan 112 horas diarias. Estos trabajadores ganan 16€/día y los trabajadores a jornada completa 50€/día.
Plantead un problema de programación lineal que establezca un horario que minimiza los costes salariales del banco.
Ejemplo 6
Un banco invierte en crédito al consumo, bonos corporativos, depósitos de oro y préstamos de la construcción. Actualmente dispone de cinco millones de euros para invertir y pretende, por un lado maximizar el interés esperado para los próximos seis meses y por el otro, cumplir con la diversificación propugnada por la Junta Directiva según se especifica en la tabla siguiente.
La Directiva también exige que como mínimo un 55% de los fondos se dediquen a depósitos de oro y préstamos a la construcción, mientras que el porcentaje dedicado a los créditos al consumidor no han de superar el 15% de los fondos.
Se plantea un problema de programación lineal que optimice el objetivo del banco
Tipos de inversión | Interés esperado (%) | Límite de inversión (millones de euros) |
---|---|---|
Créditos al consumo | 7 | 1 |
Bonos corporativos | 11 | 2.5 |
Depósitos de oro | 19 | 1.5 |
Préstamos construcción | 15 | 1.8 |
La programación lineal se utiliza en el campo de la mercadotecnia y la publicidad como una herramienta que permite determinar cuál es la combinación lineal más efectiva de los medios para anunciar los productos de una empresa.
Muchas veces la empresa dispone de un presupuesto fijo para publicidad y el objetivo es distribuir este presupuesto entre diversas opciones: TV, radio, periódicos, revistas, Facebook, Google…. con el objetivo de que los productos de una empresa tengan la máxima difusión.
En otros casos, las restricciones vienen dadas por la disponibilidad de medios y de las políticas publicitarias de la empresa.
Ejemplo 7
Una cadena nacional de locales de ocio dispone de 8000 euros semanales para publicidad. Este dinero se ha de destinar a publicar anuncios en TV, periódicos y dos emisoras de radio.
El objetivo final es conseguir la mayor audiencia posible. La tabla siguiente recoge toda la información referente a la audiencia esperada por anuncio, el coste en euros de cada anuncio y el número máximo de anuncios semanales posibles en cada medio.
La empresa también exige la contratación de un mínimo de 5 anuncios por radio semanales y no se puede destinar a este medio más de 1800 euros por semana.
Plantead un problema de programación lineal que optimice el objetivo de la empresa
Medio | Audiencia | Coste (euros) | Número máximo |
---|---|---|---|
TV | 5000 | 800 | 12 |
Periódico | 8500 | 925 | 5 |
Radio 1 | 2400 | 290 | 25 |
Radio 2 | 2800 | 380 | 20 |
La programación lineal también se aplica al estudio de mercados.
Mediante el siguiente ejemplo se puede ver como la estadística puede emplear la programación lineal para el diseño de encuestas.
Ejemplo 8
Se va a realizar una encuesta para determinar la opinión de los ciudadanos de las Islas Baleares sobre la inmigración. La encuesta ha de satisfacer lo siguiente:
Todas las encuestas deben hacerse personalmente y ha de responder la persona de más edad de cada familia
La siguiente tabla indica el coste (en euros) de cada encuesta según la edad del encuestado y si pertenece o no a una zona con tasa elevada de inmigración
Plantead el problema de programación lineal que satisface todas las condiciones de la encuesta y minimiza su coste
Zona | <30 años | 31-50 años | >50 años |
---|---|---|---|
Baja inmigración | 6.9 | 7.3 | 6.1 |
Alta inmigración | 7.5 | 6.8 | 5.5 |
Ya se han visto en los ejemplos anteriores que la programación lineal se presenta en muchas aplicaciones en las cuales es necesaria la toma de decisiones
\[Z = f(x) = \sum_{j = 1}^n c_jx_j\]
bajo restricciones de la forma
\[\sum_{j = 1}^n a_{ij}x_j = b_i,\quad i=1,2,\dots,p-1\] \[\sum_{j = 1}^n a_{ij}x_j \ge b_i,\quad i=p,p+1,\dots,q-1\]
\[\sum_{j = 1}^n a_{ij}x_j \le b_i,\quad i=q,q+1,\dots,m\]
donde \(p,q,m\) son números enteros positivos tales que \(1\le p\le q\le m\), donde normalmente \(n\ge m\)
\[f(\bar{x})\ge f(x)\qquad \text{o bien }\qquad f(\bar{x})\le f(x)\]
para cualquier otro punto factible \(x\)
El objetivo de los problemas de optimización es encontrar un óptimo global. En general, solo se encuentran locales.
Los PPL presentan propiedades que hacen posible encontrar el óptimo global
Se verán a continuación una serie de ejemplos de PPL con solución única, solución múltiple, solución no acotada y solución infactible (sin solución)
Ejemplo 9
Maximícese la función \(Z = 3x+y\) bajo las restricciones
\[\left\{\begin{matrix}-x+y\le 2\\ x+y\le 6\\ x\le 3\\ 2x-y\le 4\\ -y\le 0\\ -x-y\le -1\\ -x\le 0\end{matrix}\right.\]
Representad gráficamente la región factible. Ésta será la intersección de todos los semiplanos que determinen cada una de las restricciones.
Considerad las siguientes rectas:
\[r_1: -x+y = 2\] \[r_2: x+y = 6\] \[r_3: x = 3\] \[r_4: 2x-y = 4\] \[r_5: -y = 0\quad\Leftrightarrow\quad r_5:y=0\] \[r_6: -x-y = -1\quad\Leftrightarrow\quad r_6:x+y=1\] \[r_7: -x = 0\quad\Leftrightarrow\quad r_7:x=0\]
Al representar gráficamente estas rectas, obtenemos las intersecciones siguientes
Ejemplo 9
La región factible \(R\) en este caso es un polígono cerrado.
Las soluciones siempre se encuentran en los extremos de la región factible, por lo tanto se evaluará la función objetivo \(Z = 3x+y\) en los vértices de \(R\)
Por lo tanto, el máximo se alcanza en el punto \(\bar{x} = (3,3)\) y vale \(Z(3,3)=12\)
Ejemplo 10
Maximizad la función \(Z = x+y\) bajo las siguientes restricciones
\[\left\{\begin{matrix}-x+y\le 2\\ x+y\le 6\\ x\le 3\\ 2x-y\le 4\\ -y\le 0\\ -x-y\le -1\\ -x\le 0\end{matrix}\right.\]
Observad que las restricciones de nuestro PPL son exactamente las mismas que en el ejemplo anterior, el Ejemplo 9
. Por lo tanto, la región factible será la misma.
Sin embargo, al evaluar la función objetivo en los vértices obtenemos que el máximo se alcanza en los puntos \((2,4)\) y \((3,3)\). De este modo, los puntos del segmento que une estos dos puntos son máximos globales de nuestro PPL. Este segmento estará sobre la recta \(r_2\)
Ejemplo 11
Maximizad la función \(Z = 3x+y\) bajo las siguientes restricciones
\[\left\{\begin{matrix}-x+y\le 2\\ -y\le 0\\ -x-y\le -1\\ -x\le 0\end{matrix}\right.\]
En este caso se puede observar que la región factible no está acotada en la dirección de crecimiento de la función objetivo
Ejemplo 11
Ejemplo 12
Minimizar la función \(Z = 0.6x+y\) bajo las siguientes restricciones
\[\left\{\begin{matrix}10x+4y\ge 20\\ 5x+5y\ge 20\\ 2x+6y\ge 12\\ x\ge 0\\ y\ge 0\end{matrix}\right.\]
En este caso la región factible no está acotada, pero la función objetivo alcanza el mínimo en el punto \((3,1)\) y vale \(Z = 2.8\)
Ejemplo 12
Ejemplo 13
Minimizad la función \(Z = 2x-3y\) bajo las siguientes restricciones
\[\left\{\begin{matrix}x-2y\ge 4\\ 2x-4y\le -6\\ x\ge 0\\ y\ge 0\end{matrix}\right.\]
En este caso, la región facitble es \(R = \emptyset\), es decir, el problema no tiene solución
Para describir un PPL se necesita
Con estos elementos, el problema lineal asociado en forma estándar tiene la forma siguiente:
\[\min\{Z\} = cx\qquad \text{ o }\qquad \max\{Z\} = cx\]
bajo las restricciones \[Ax = b\]
donde \[x = \begin{pmatrix}x_1\\ \vdots\\ x_n\end{pmatrix}\quad b = \begin{pmatrix}b_1\\ \vdots\\ b_m\end{pmatrix}\]
con \(x_j\ge 0\) para todo \(j = 1,\dots,n\). Normalmente se tiene \(n\ge m\)
Cualquier PPL se puede transformar a la forma estándar:
PASO 1: Transformar las variables en no negativas.
Las variables no restringidas en signo se pueden expresar como diferencia de dos variables no negativas. Se define
\[x_i^+ = \max\{0,x_i\}\] \[x_i^- = \max\{0,-x_i\}\]
Se satisface que \(x_i^+,\ x_i^-\ge 0\) y que \(x_i = x_i^+-x_i^-\)
PASO 2: Transformar las restricciones de desigualdad en igualdades
Las restricciones de desigualdad se pueden transformar en restricciones de igualdad equivalentes introduciendo nuevas variables denominadas
\[a_{i1}x_1+\cdots+a_{in}x_n+x_{n+1} = b_i\]
Si \(a_{i1}x_1+\cdots+a_{in}x_n\ge b_i\), entonces existe una variable \(x_{n+1}\ge 0\) tal que
\[a_{i1}x_1+\cdots+a_{in}x_n-x_{n+1} = b_i\]
PASO 3: Maximizar es lo mismo que minimizar
Si nos piden maximizar \(Z=cx\), esto es equivalente a minimizar \(Z = -cx\) si ambos problemas verifican el mismo conjunto de restricciones.
Por otro lado, si nos piden minimizar \(Z=cx\), esto es equivalente a maximizar \(Z = -cx\) siempre y cuando ambos problemas verifican el mismo conjunto de restricciones.
PASO 4: No negatividad de los términos independientes
Toda restricción con término independiente \(b_i<0\) se puede transformar en otra con término independiente no negativo multiplicando toda la restricción por \(-1\)
Ejemplo 14
Encuentra el máximo de \(Z = 2x_1-3x_2+5x_3\) bajo las restricciones siguientes
\[\left\{\begin{matrix}x_1+x_2\le 2\\ 3x_1+x_2-x_3\ge 3\\ x_1,x_2,x_3\ge 0\end{matrix}\right.\]
Para resolverlo se escribirá en forma estándar de máximo.
En forma estándar será
\[\max Z = 2x_1-3x_2+5x_3+0\cdot x_4+0\cdot x_5\]
bajo las restricciones
\[\left\{\begin{matrix}x_1+x_2+x_4 = 2\\ 3x_1+x_2-x_3-x_5 = 3\\ x_1,x_2,x_3,x_4,x_5\ge 0\end{matrix}\right.\]
Si quisiésemos el mismo problema en forma estándar de mínimo, lo que tendríamos sería
\[\min Z = -2x_1+3x_2-5x_3+0\cdot x_4+0\cdot x_5\]
bajo las restricciones
\[\left\{\begin{matrix}x_1+x_2+x_3 = 2\\ 3x_1+x_2-x_3-x_5 = 3\\ x_1,x_2,x_3,x_4,x_5\ge 0\end{matrix}\right.\]
Ejemplo 15
Encuentra el máximo de \(Z = 2x_1-3x_2+5x_3\) bajo las siguientes restricciones
\[\left\{\begin{matrix}x_1+x_2\le 2\\ 3x_1+x_2-x_3\ge 3\\ x_1,x_2\ge 0\end{matrix}\right.\]
Observad que lo único que cambia con respecto al ejemplo anterior, el Ejemplo 14
, es que la variable \(x_3\) no está restringida en signo. Por tanto, debemos escribir \[x_3 = x_6-x_7\]
donde \(x_6 = x_3^+\) y \(x_7 = x_3^-\) y tal que \(x_3^+,x_3^-\ge 0\).
De este modo, la forma estándar de este PPL sería
\[\max Z = 2x_1-3x_2+5(x_6-x_7)+0\cdot x_4+0\cdot x_5\]
bajo las siguientes restricciones
\[\left\{\begin{matrix}x_1+x_2+x_4 =0\\ 3x_1+x_2-(x_6-x_7)-x_5 = 3\\ x_1,x_2,x_4,x_5,x_6,x_7\ge 0\end{matrix}\right.\]
Ejemplo 16
Hallad el máximo de \(Z = 3x_1-x_3\) bajo las siguientes restricciones
\[\left\{\begin{matrix}x_1+x_2+x_3 = 1\\ x_1-x_2-x_3\le 1\\ x_1+x_3\ge -1\\ x_1\ge 0\end{matrix}\right.\]
Como todas las variables han de ser no negativas,
\[x_2 = x_4-x_5\quad \text{ donde }\quad x_4 = x_2^+;\ x_5 = x_2^-\] \[x_3 = x_6-x_7\quad \text{ donde }\quad x_6 = x_3^+;\ x_7 = x_3^-\]
donde \(x_4,x_5,x_6,x_7\ge 0\)
Notad también que el término independiente de la tercera restricción es negativo, con lo cual se multiplica por \(-1\).
Con todo, el PPL inicial en su forma estándar será:
\[\max Z = 3x_1-x_6+x_7\]
bajo las restricciones
\[\left\{\begin{matrix}x_1+x_4-x_5+x_6-x_7 = 1\\ x_1-x_4+x_5-x_6+x_7 \le 1\\ -x_1-x_6+x_7 \le 1\\ x_1,x_4,x_5,x_6,x_7\ge 0\end{matrix}\right.\]
Ahora ya solo nos falta transformar las restricciones de desigualdad en restricciones de igualdad. Con lo cual nos queda
\[\left\{\begin{matrix}x_1+x_4-x_5+x_6-x_7 = 1\\ x_1-x_4+x_5-x_6+x_7+x_8 = 1\\ -x_1-x_6+x_7+x_9 = 1\\ x_1,x_4,x_5,x_6,x_7,x_8,x_9\ge 0\end{matrix}\right.\]
Supongamos que un PPL viene dado en su forma estándar
\[\min Z = cx\] bajo las restricciones \(Ax = b\), donde \[x = (x_1,x_2,\dots,x_n)\quad x_j\ge 0,\ \forall j = 1,\dots,n\] \[b = (b_1,b_2,\dots,b_m)\quad b_i\ge 0,\ \forall i = 1,\dots,m\] \[A = (a_{ij})_{m\times n}\]
Se pueden suponer sin pérdida de generalidad que \(\text{rg}(A) = m\) ya que \(m\le n\) y que \(Ax = b\) tiene solución.
En cualquier otro caso, o bien el sistema es equivalente a otro sistema compatible con menos ecuaciones o bien el sistema es incompatible.
Sea \(A\) la matriz definida anteriormente, entonces,
Sea \(x_b\) el vector de las variables asociadas a las columnas de \(M_b\)
Si se asigna el valor cero a las variables no básicas \(x_n\), el sistema \(Ax=b\) se puede escribir como
\[\begin{pmatrix} M_b &|& x_n\end{pmatrix}\begin{pmatrix}x_b\\ 0\end{pmatrix} = b\] Donde \(M_bx_b = b\) y, como \(M_b\) es invertible, \(x_b = M_b^{-1}b\) es la
Si además \(M_b\) es una matriz básica factible, su solución básica es factible
Ejemplo 17
Encuentra las soluciones básicas de
\[\left\{\begin{matrix} x_1 &+& 2x_2 &+& x_3&=&8\\ x_1 &+& 3x_2 &-& x_3&=&12\end{matrix}\right.\]
Se tiene que \[A = \begin{pmatrix}1 & 2 & 1\\ 1 & 3 & -1\end{pmatrix}\quad b = \begin{pmatrix} 8\\12\end{pmatrix}\]
Si se considera \[M_b = \begin{pmatrix} 1 & 2\\ 1 & 3\end{pmatrix}\]
Las variables básicas son \(x_1,x_2\) y la variable no básica \(x_3=0\), entonces:
\[x_b = M_b^{-1}b = \begin{pmatrix}3 & -2\\ -1 & 1\end{pmatrix}\begin{pmatrix}8\\ 12\end{pmatrix} = \begin{pmatrix}0 \\ 4\end{pmatrix}\]
De este modo, \((x_1,x_2) = (0,4)\) es una solución básica factible
Si se considera \[M_b = \begin{pmatrix} 1 & 1\\ 1 & -1\end{pmatrix}\]
Las variables básicas son \(x_1,x_3\) y la variable no básica \(x_2=0\), entonces:
\[x_b = M_b^{-1}b = \begin{pmatrix}\frac{1}{2} & \frac{1}{2}\\ \frac{1}{2} & -\frac{1}{2}\end{pmatrix}\begin{pmatrix}8\\ 12\end{pmatrix} = \begin{pmatrix}10 \\ -2\end{pmatrix}\]
En este caso se obtiene una solución básica no factible ya que \(x_3<0\)
Si se considera \[M_b = \begin{pmatrix} 2 & 1\\ 3 & -1\end{pmatrix}\]
Las variables básicas son \(x_2,x_3\) y la variable no básica \(x_1=0\), entonces:
\[x_b = M_b^{-1}b = \begin{pmatrix}\frac{1}{5} & \frac{1}{5}\\ \frac{3}{5} & -\frac{2}{5}\end{pmatrix}\begin{pmatrix}8\\ 12\end{pmatrix} = \begin{pmatrix}4 \\ 0\end{pmatrix}\]
De este modo, \((x_2,x_3) = (4,0)\) es una solución básica factible
El número de soluciones básicas factibles de un PPL acotado con un número finito de restricciones es siempre finito y a cada una le corresponde un punto extremo de la región factible
\[x = \begin{pmatrix}x_b \\ x_n\end{pmatrix}\begin{pmatrix}M_b^{-1}b\\ 0\end{pmatrix}\]
donde \(M_b\) es una matriz de orden \(m\) invertible, extraída de \(A\) que satisface \(M_b^{-1}b\ge 0\)
no necesariamente en este orden
Por lo tanto, para hallar el óptimo de un PPL se encontrará el conjunto de soluciones factibles.
Existen muchas versiones del Método Símplex y todas pretenden lo mismo: encontrar la solución óptima de un PPL.
Para encontrar este óptimo se emplean unas tablas. Se parte de una tabla inicial y se van transformando los valores de la tabla hasta llegar a la solución óptima.
Aquí aplicaremos el método revisado del símplex que incluye la función objetivo en las tablas. En el Método Símplex se toma como matriz básica factible inicial la matriz identidad o cualquier otra matriz básica factible obtenida a partir de la identidad haciendo intercambios de filas
Ejemplo 18
Encuentra el máximo de \(Z = 40x_1 + 30x_2\) bajo las restricciones
\[\left\{\begin{matrix}x_1\le 16\\ x_2\le 8\\ x_1+2x_2\le 24\\ x_1,x_2\ge 0\end{matrix}\right.\]
Resolviéndolo gráficamente se obtiene la región factible con vértices \[(0,0), (16,0), (16,4), (8,8), (0,8)\] y evaluando \(Z\) en dichos vértices se obtiene que el máximo se alcanza en el punto \((16,4)\) y vale \(Z_{\max} = 760\)
Ejemplo 18
Para aplicar el Método Símplex se deben hacer una serie de pasos:
PASO 1
Se debe escribir el problema en forma estándar de máximo, que será el mismo que denota el sistema:
\[\begin{matrix} Z & -& 40x_1 & -& 30x_2 &+& 0\cdot x_3 &&+& 0\cdot x_4&+& 0\cdot x_5 & = & 0\\ & & x_1 & & &+& x_3 &&& && & = & 16\\ & & & & x_2&& &+&x_4& && & = & 8\\ & & x_1 &+ & 2x_2&& &&& &+&x_5 & = & 24\\ \end{matrix}\]
con \(x_1,x_2,x_3,x_4,x_5\ge 0\)
Ahora, podemos construir la siguiente tabla
\(\\) | \(Z\) | \(x_1\) | \(x_2\) | \(x_3\) | \(x_4\) | \(x_5\) | Constantes |
---|---|---|---|---|---|---|---|
fila 1 | 1 | -40 | -30 | 0 | 0 | 0 | 0 |
fila 2 | 0 | 1 | 0 | 1 | 0 | 0 | 16 |
fila 3 | 0 | 0 | 1 | 0 | 1 | 0 | 8 |
fila 4 | 0 | 1 | 2 | 0 | 0 | 1 | 24 |
La matriz básica factible inicial (matriz identidad) corresponde a las variables básicas, en este caso las variables compensatorias \(x_3,x_4,x_5\) y las variables no básicas son \(x_1=x_2=0\)
Teniendo en cuenta también la fila 1 de la tabla, se puede expresar el sistema
\[\begin{pmatrix}1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1\end{pmatrix}\begin{pmatrix} Z\\ x_3\\ x_4\\ x_5\end{pmatrix} = \begin{pmatrix} 0\\ 16\\ 8\\ 24 \end{pmatrix}\]
Que corresponde a \(x_3 = 16,\ x_4 = 8,\ x_5 = 24,\ Z=0\), con \((x_1,x_2) = (0,0)\). Observad que \((0,0)\) es uno de los vértices de la región factible
PASO 2
\(\\) | \(Z\) | \(x_1\) | \(x_2\) | \(x_3\) | \(x_4\) | \(x_5\) | Constantes |
---|---|---|---|---|---|---|---|
fila 1 | 1 | 0 | -30 | 40 | 0 | 0 | 640 |
fila 2 | 0 | 1 | 0 | 1 | 0 | 0 | 16 |
fila 3 | 0 | 0 | 1 | 0 | 1 | 0 | 8 |
fila 4 | 0 | 0 | 2 | -1 | 0 | 1 | 8 |
De la tabla se puede extraer el sistema básico:
\[\begin{pmatrix}1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1\end{pmatrix}\begin{pmatrix} Z\\ x_1\\ x_4\\ x_5\end{pmatrix} = \begin{pmatrix} 640\\ 16\\ 8\\ 8\end{pmatrix}\]
Lo que se corresponde con \(x_1 = 16,\ x_4 = 8\ x_5 = 8\) y \(Z = 640\), con \(x_2 = x_3 = 0\).
Observad que de nuevo \((x_1,x_2)= (16,0)\) es otro vértice de la región factible
PASO 3
Como en la fila 1 todavía hay un número negativo, la solución se puede mejorar. Iterando el paso anterior, obtenemos
\(\\) | \(Z\) | \(x_1\) | \(x_2\) | \(x_3\) | \(x_4\) | \(x_5\) | Constantes |
---|---|---|---|---|---|---|---|
fila 1 | 1 | 0 | 0 | 25 | 0 | 15 | 760 |
fila 2 | 0 | 1 | 0 | 1 | 0 | 0 | 16 |
fila 3 | 0 | 0 | 0 | \(\frac{1}{2}\) | 1 | \(-\frac{1}{2}\) | 4 |
fila 4 | 0 | 0 | 1 | \(-\frac{1}{2}\) | 0 | \(\frac{1}{2}\) | 4 |
De la tabla se puede extraer el sistema básico:
\[\begin{pmatrix}1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1\end{pmatrix}\begin{pmatrix} Z\\ x_1\\ x_4\\ x_2\end{pmatrix} = \begin{pmatrix} 760\\ 16\\ 4\\ 4\end{pmatrix}\]
Lo que se corresponde con \(x_1 = 16,\ x_2 = 4,\ x_4 = 4\) y \(Z = 760\), con \(x_3 = x_5 = 0\).
Observad que de nuevo \((x_1,x_2)= (16,4)\) es otro vértice de la región factible
Como en la fila 1 ya no quedan números negativos, tenemos que la solución no se puede mejorar
En conclusión, el máximo de \(Z\) se toma en el punto \((x_1,x_2) = (16,4)\)
En problemas de minimización no se puede aplicar directamente el método que se ha descrito anteriormente. Veamos con un ejemplo cómo proceder en este caso:
Ejemplo 19
Encontrad el mínimo de \(Z = x_1 + 4x_2\) bajo las siguientes restricciones
\[\left\{\begin{matrix}x_1+x_2\ge 8\\ 3x_1+2x_2\ge 12\\ x_1,x_2\ge 0\end{matrix}\right.\]
Ejercicio 4
Resuelve este problema gráficamente
Si se escrible en forma estándar de mínimo, obtenemos
\[\min Z = x_1 +4x_2 +0\cdot x_3+0\cdot x_4\]
bajo las restricciones
\[\left\{\begin{matrix}x_1+x_2-x_3 = 8\\ 3x_1+2x_2-x_4 = 12\\ x_1,x_2,x_3,x_4\ge 0\end{matrix}\right.\]
O lo que es lo mismo
\[\begin{pmatrix}1 & 2 & -1 & 0\\ 3 & 2 & 0 & -1\end{pmatrix}\begin{pmatrix} x_1\\ x_2\\ x_3\\ x_4\end{pmatrix}=\begin{pmatrix}8\\12\end{pmatrix}\]
con \(x_1,x_2,x_3,x_4\ge 0\)
Se puede observar que de la matriz de coeficientes no se puede extraer la matriz identidad como matriz básica factible inicial. En cambio, se podría extraer la matriz \[\begin{pmatrix}-1 & 0\\ 0 & -1\end{pmatrix}\]
que corresponden a las variables básicas \(x_3,x_4\). La solución \(x_3 = -8,\ x_4 = -12\), resulta ser una solución básica no factible.
Consecuentemente, se ha de buscar una manera de obtener una solución básica factible inicial. Esta se obtiene añadiendo una variable artificial no negativa a cada una de las restricciones. Estas variables artificiales aparecerán en la función objetivo con coeficientes considerablemente grandes con respecto a los coeficientes de las variables del problema dado
Una vez se añaden estas variables compensatorias y artificiales al problema de minimización, se aplicará el Método Símplex aplicando los pasos siguientes
Si se considera el problema de minimización dado en este ejemplo, una vez añadidas las variables artificiales se tiene:
\[\begin{matrix} Z &-&x_1 & - & 4x_2 & +&0x_3& +&0x_4 & -&100v_1& -&100v_2&=&0\\ &&x_1 & + & 2x_2 & -&x_3& & & +&v_1& &&=&8\\ &&3x_1 & + & 2x_2 & &&-&x_4 & && +&v_2&=&12\end{matrix}\]
con \(x_1,x_2,x_3,x_4,v_1,v_2\ge 0\)
Si escribimos ahora la tabla inicial del problema, obtenemos:
\(\\) | \(Z\) | \(x_1\) | \(x_2\) | \(x_3\) | \(x_4\) | \(v_1\) | \(v_2\) | Constantes |
---|---|---|---|---|---|---|---|---|
fila 1 | 1 | -1 | -4 | 0 | 0 | -100 | -100 | 0 |
fila 2 | 0 | 1 | 2 | -1 | 0 | 1 | 0 | 8 |
fila 3 | 0 | 3 | 2 | 0 | -1 | 0 | 1 | 12 |
Si hacemos \(f_1 +100f_2 +100_f3\) los vectores columna de las variables artificiales se transforman en unitarios y se obtiene la siguiente tabla
\(\\) | \(Z\) | \(x_1\) | \(x_2\) | \(x_3\) | \(x_4\) | \(v_1\) | \(v_2\) | Constantes |
---|---|---|---|---|---|---|---|---|
fila 1 | 1 | 399 | 396 | -100 | -100 | 0 | 0 | 2000 |
fila 2 | 0 | 1 | 2 | -1 | 0 | 1 | 0 | 8 |
fila 3 | 0 | 3 | 2 | 0 | -1 | 0 | 1 | 12 |
La columna pivote corresponde a la columna de la variable \(x_1\) y la fila pivote es la tercera ya que \(\min\{\frac{8}{1},\frac{12}{3}\} = 4\). A continuación, se divide \(f_3\) entre 3 para obtener el pivote 1
\(\\) | \(Z\) | \(x_1\) | \(x_2\) | \(x_3\) | \(x_4\) | \(v_1\) | \(v_2\) | Constantes |
---|---|---|---|---|---|---|---|---|
fila 1 | 1 | 0 | 130 | -100 | 33 | 0 | -133 | 404 |
fila 2 | 0 | 0 | \(\frac{4}{3}\) | -1 | \(\frac{1}{3}\) | 1 | \(-\frac{1}{3}\) | 4 |
fila 3 | 0 | 1 | \(\frac{2}{3}\) | 0 | \(-\frac{1}{3}\) | 0 | \(\frac{1}{3}\) | 4 |
De este modo, se obtiene el sistema
\[\begin{pmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\end{pmatrix}\begin{pmatrix} Z\\ v_1\\ x_1 \end{pmatrix} = \begin{pmatrix} 404\\ 4\\ 4\end{pmatrix}\]
lo que corresponde a la solución \((x_1,x_2) = (4,0)\) con \(Z = 404\) ya que \(x_2 = x_3 = x_4 = v_2 = 0\) mientras que \(v_1 = 4\).
Notad que en la solución aparece la variable artificial \(v_1 = 4\), que no nos interesa. La solución no es óptima, ya que todavía quedan elementos positivos en la primera fila.
Ahora, la columna pivote corresponde a la variable \(x_2\) y la fila pivote será la segunda fila
\(\\) | \(Z\) | \(x_1\) | \(x_2\) | \(x_3\) | \(x_4\) | \(v_1\) | \(v_2\) | Constantes |
---|---|---|---|---|---|---|---|---|
fila 1 | 1 | 0 | 0 | \(-\frac{5}{2}\) | \(\frac{1}{2}\) | \(-\frac{195}{2}\) | \(-\frac{201}{2}\) | 14 |
fila 2 | 0 | 0 | 1 | -\(\frac{3}{4}\) | \(\frac{1}{4}\) | \(\frac{3}{4}\) | \(-\frac{1}{4}\) | 3 |
fila 3 | 0 | 1 | 0 | \(\frac{1}{2}\) | \(-\frac{1}{2}\) | \(-\frac{1}{2}\) | \(\frac{1}{2}\) | 2 |
La solución todavía no es óptima.
Se itera el proceso anterior y se obtiene que la columna pivote se corresponde a la variable \(x_4\) y la fila pivote será la segunda, con pivote \(\frac{1}{4}\). Por tanto, multiplicamos dicha fila por 4.
Notad que la fila 3 no puede ser pivote ya que hay un número negativo y, si dividiésemos el término independiente entre \(-\frac{1}{2}\) este pasaría a ser negativo
\(\\) | \(Z\) | \(x_1\) | \(x_2\) | \(x_3\) | \(x_4\) | \(v_1\) | \(v_2\) | Constantes |
---|---|---|---|---|---|---|---|---|
fila 1 | 1 | 0 | -2 | -1 | 0 | -99 | -100 | 8 |
fila 2 | 0 | 0 | 4 | -3 | 1 | 3 | -1 | 12 |
fila 3 | 0 | 1 | 2 | -1 | 0 | 1 | 0 | 8 |
De este modo, extraemos el sistema
\[\begin{pmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\end{pmatrix}\begin{pmatrix} Z\\ x_4\\ x_1 \end{pmatrix} = \begin{pmatrix} 8\\ 12\\ 8\end{pmatrix}\]
que corresponde a la solución \((x_1,x_2) = (8,0)\) con \(x_4 = 8\), \(x_3 = v_1 = v_2 = 0\) y \(Z = 8\).
Por tanto, la solución óptima es \((x_1,x_2) = (8,0)\) y \(Z_{\min} = 8\)
Las variables artificiales no son exclusivas de programas de minimización.
En algunos programas de maximización también se pueden emplear beneficiosamente.
Cuando en el contexto de maximización una de las restricciones es de igualdad, no es necesario añadir una variable compensatoria. En este caso, hará falta un vector unitario en la tabla del símplex para poder tener la solución básica factible inicial que intervendrá en la función objetivo con coeficiente negativo para asegurar que no forma parte de la solución óptima
Cuando en la tabla del símplex, dos o más cocientes comparten la característica de ser los menores, dos o más filas serán candidatas a ser la fila pivote. Se ha de adoptar un criterio, arbitrario, para decidir cuál será la fila pivote.
A veces un paso del pivote no provoca una mejora de la solución y serán necesarios diversos pasos de pivote con mejora nula antes de que el proceso iterativo truque el círculo vicioso.
Se ha dado una introducción al algoritmo del símplex. El proceso no es difícil, pero en programas lineales de dimensiones considerables la tarea de computar es larga y aburrida.
Afortunadamente, hay programas informáticos que desarrollan todo el proceso.