






















Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: MATEMATICAS, Profesor: , Carrera: Ingeniero Técnico Agrícola, especialidad en Explotaciones Agropecuarias, Universidad: UniZar
Tipo: Apuntes
1 / 30
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!























Hemos visto una forma gráfica de resolver problemas de Programación Lineal, ahora bien, como ya hemos indicado, si el número de variables es estrictamente mayor que 3, se complica, de modo que resulta imposible la resolución por este procedimiento. Se hace, pues, necesario otro método para resolver estos problemas, ya que en la realidad el número de variables que aparecen es muy elevado.
El método básico para resolver problemas de Programación Lineal fue desarrollado por G. B. Dantzig en 1947 y es conocido con el nombre de Método del Simplex. Los cálculos a realizar son muy sencillos, pero en problemas reales es necesario hacerlo tantas veces que sería muy lento y tedioso, en ocasiones casi imposible, realizarlos “ a mano ”. Por ello es necesaria la utilización de un ordenador que permita resolver problemas lineales en un número de variables y restricciones tan grande como sea preciso. No obstante, es necesario entender los métodos utilizados para aplicar a cada problema el más adecuado y realizar las modificaciones precisas para lograr interpretar correctamente los resultados obtenidos.
En principio, hacemos algunos supuestos básicos inherentes a la propia naturaleza del problema (como proceso de producción), a los recursos o a las actividades implícitas en el modelo lineal:
Los dos últimos supuestos implican la linealidad en las actividades, de aquí el nombre de Programación Lineal. Teniendo en cuenta estos principios básicos, intrínsecos al problema lineal, desarrollemos, antes de entrar en algoritmos formales, un ejemplo cuya solución nos servirá para entender el Método del Simplex que veremos más adelante.
Una empresa tiene posibilidad de fabricar tres tipos de piensos (^) P 1 , (^) P 2 y (^) P 3. Para
ello, son precisas dos fases, una primera (fase A) de fabricación en máquina, y una segunda (fase B) de mano de obra. Dispone de 120 horas mensuales en la fase A y de 260 en la B, y para su fabricación necesita para cada pienso las siguientes horas de en cada una de las dos fases:
1ª solución: la solución más cómoda y evidente consiste en no producir nada, es decir, x 1 (^) = x 2 = x 3 = 0 , con lo cual obtenemos que x 4 H = 120 , x 5 H = 260 (que se
denomina base). Con estos valores se tiene que Z = 0.
Ahora, de las dos ecuaciones disponibles ponemos x 4 H , x 5 H en función de x 1 (^) , x 2 , x 3 :
x 4 H^ = 120 − 0. 1 x 1 − 0. 25 x 2 x (^) 5 H^ = 260 − 0. 2 x 1 − 0. 3 x 2 − 0. 4 x 3 Z = 3 x 1 + 5 x 2 + 4 x 3
Para mejorar el valor de Z , bastará aumentar (^) x 1 , (^) x 2 ó x 3 , ya que todas ellas están
afectadas por coeficientes positivos en la función objetivo y a su vez toman siempre valores positivos. Ahora bien, puesto que de entre estos coeficientes, todos positivos, el mayor es el correspondiente a (^) x 2 , aumentar en esta variable será la estrategia que proporcione una mayor mejora para Z. Por otra parte, este aumento se verá limitado por el hecho de que la nueva solución ha de ser factible. Con este aumento en las restricciones:
x 4 H = 120 − 0. 1 x 1 − 0. 25 x 2 ≥ 0 ⇒ x 2 ≤ 0120. 25 = 480
Ahora hacemos (^) x (^) 4^ H = 0 , ya que el mínimo ( (^) x 2 (^) = 480 ) corresponde a esta restricción. Se dice que (^) x 4 H = 0 sale de la base y (^) x 2 (^) ≠ 0 entra en la base.
2ª solución: la nueva solución obtenida en el paso anterior es:
x 1 = x 3 = x 4 H = 0 x 2 = 480 x 5^ H = 260 − 0. 3 ⋅ 480 = 116 Z = 3 x 1 + 5 x 2 + 4 x 3 = 5 ⋅ 480 = 2400
Con esta solución hemos mejorado el valor de Z.
Escribimos nuevamente x 2 , x 5 H y Z en función de x 1 , x 3 y x 4 H :
x (^) 2 x^1 x^4 H 480 0. 4 x 1 4 x 4^ H
x (^) 5 H^ = 260 − 0. 2 x 1 − 0. 3 ( 480 − 0. 4 x 1 − 4 x 4 H ) − 0. 4 x 3 = 116 − 0. 08 x 1 − 0. 4 x 3 + 1. 2 x 4 H Z = 3 x 1 + 5 x 2 + 4 x 3 = 3 x 1 + 5 ( 480 − 0. 4 x 1 − 4 x 4 H^ ) + 4 x 3 = 2400 + x 1 + 4 x 3 − 20 x 4 H
Para mejorar Z aumentamos x 3 puesto que tiene mayor coeficiente. Este aumento, para que se mantenga la factibilidad, sólo se ve limitado por x 5 H :
x 5 H = 116 − 0. 08 x 1 − 0. 4 x 3 + 1. 2 x 4 H ≥ 0 ⇒ x 3 ≤^1160. 4 = 290
Así, hacemos x (^) 5 H = 0 que sale de la base. Entra en la base x (^) 3 = 290.
3ª solución: x 1 = x 4 H^ = x 5 H = 0 x 2 = 480 x 3 = 290 Z = 2400 + x 1 + 4 x 3 − 20 x 4 H = 2400 + 4 ⋅ 290 = 3560
Expresamos nuevamente (^) x 2 y x 3 en función de (^) x 1 , (^) x 4 H y x 5 H , y también Z :
x (^) 2 = 480 − 0. 4 x 1 − 4 x^ H 4
x x xH xH x xH x^ H (^3 10). 4 4 5 290 0.^21342.^55
Z = 3 x 1 + 5 x 2 + 4 x 3 = 3 x 1 + 5 ( 480 − 0. 4 x 1 − 4 x 4 H^ ) + 4 ( 290 − 0. 2 x 1 + 3 x 4 H − 2. 5 x 5 H ) = = 3560 + 0. 2 x (^) 1 − 8 x 4 H^ − 10 x 5^ H
En consecuencia, ésta es la mejor solución y, por tanto, óptima:
x 1 * = 1200 , x 2 * = 0 , x * 3 = 50 , Z *^ = 3800
Vamos a resumir y tabular las distintas soluciones:
Solución 1: x 1 (^) = x 2 = x 3 = 0 , (^) x (^) 4^ H = 120 , x (^) 5 H = 260 , Z = 0
x 1 x 2 x^ 3 x 4 H x 5^ H x 4^ H 120 0.1 0.25 0 1 0 x 5^ H 260 0.2 0.3 0.4 0 1 0 3 5 4 0 0
Solución 2: x 1 (^) = x 3 = x 4 H = 0 , (^) x 2 (^) = 480 , x (^) 5 H = 116 , Z = 2400
x 1 x 2 x 3^ x 4 H x 5^ H x 2 480 0.4 1 0 4 0 x 5^ H 116 0.08 0 0.4 -1.2 1 2400 1 0 4 -20 0
Solución 3: x 1 (^) = x 4 H^ = x 5 H = 0 , (^) x 2 (^) = 480 , x (^) 3 = 290 , Z = 3560
x 1 x 2 x^ 3 x 4 H x 5^ H x 2 480 0.4 1 0 4 0 x 3 (^) 290 0.2 0 1 -3 2. 3560 0.2 0 0 -8 -
Solución 4 y óptima:
x 2 (^) = x 4 H^ = x 5 H = 0 , (^) x 1 (^) = 1200 , x 3 (^) = 50 , Z = 3800
x 1 + 2. 5 x 2 + 10 x 4 H = 1200 − 0. 5 x 2 + x 3 − 5 x 4 H^ + 2. 5 x 5 H = 50 Z = 3800 − 0. 5 x 2 − 10 x 4 H^ − 10 x 5^ H
x 1 x 2 x^ 3 x 4 H x 5^ H x 1 (^) 1200 1 2.5 0 10 0 x 3 (^) 50 0 -0.5 1 -5 2. 3800 0 -0.5 0 -10 -
que no podamos sacar de la base todas las variables artificiales, se concluirá que el problema no tiene solución.
En la práctica, y para facilitar el objetivo anterior, asociaremos a cada variable artificial (si estamos maximizando) un coste M de valor absoluto muy grande, que introduciremos restando en la función objetivo, con lo que aseguramos que el máximo se alcanzará cuando todas las variables artificiales valgan cero.
Ejemplo:
max (^) Z = x 1 − 2 x 2 max Z = x 1 − 2 x 2 − Mx 5 A s.a.: (^) x 1 (^) + x 2 ≥ 1 s.a.: x 1 + x 2 − x 3 H^ + x 5 A = 1 x 1 (^) + x 2 ≤ 2 x 1 + x 2 + x 4 H = 2 x 1 , x 2 ≥ 0 x 1 , x 2 , x 3 H^ , x 4 H , x 5^ A ≥ 0
Si en la primera restricción no introducimos una variable artificial, x 5 A , es decir, x 1 (^) + x 2 − x 3 H = 1 , e intentamos la solución trivial (no producir), tenemos:
x 1 (^) = x 2 = 0 , x 3 H = − 1 , (^) x 4^ H = 2
que no es factible, pues x 3 H < 0. Al introducir x 5 A , tendremos x 1 (^) + x 2 − x 3 H^ + x 5 A = 1 ,
con lo que la solución factible inicial sería:
x 1 (^) = x 2 = x 3 H = 0 , (^) x (^) 4^ H = 2 , x 5 A = 1
pudiendo así comenzar con las iteraciones precisas en el método del Simplex.
Analizaremos distintos casos para la obtención de una solución factible básica inicial en la aplicación del Algoritmo del Simplex. Antes hay que notar que no es estrictamente necesario aplicar alguno de los métodos siguientes, pudiendo encontrar una primera solución factible “ a ojo ”, si bien los métodos proporcionan mecanismos que siempre se pueden aplicar. Podemos considerar los algoritmos que veremos a continuación como diferentes versiones o variantes del método del Simplex.
Es el caso más sencillo y se da siempre que tengamos como primera solución básica la proporcionada por las variables de holgura.
La formulación del problema debe incluir solamente restricciones del tipo (^) ≤, siempre que los coeficientes de las disponibilidades sean no negativos:
max Z = c 1 x 1 +K+ cn xn s.a.: a 11 (^) x 1 + K+ a 1 n xn ≤ b 1
am (^) 1 x 1 + K+ amnxn ≤ b m x (^) i ≥ 0 , i = 1 ,K, n
Introduciendo las variables de holgura para expresar la forma estándar:
max Z = c 1 x 1 +K+ cn xn s.a.: a 11 (^) x 1 + K+ a 1 n xn + xnH + 1 = b 1
am (^) 1 x 1 + K+ amnxn + xnH + m = b m x (^) i ≥ 0 , i = 1 ,K, n , x (^) nH + i ≥ 0 , i = 1 ,K, m
Podemos representar este problema en una tabla como la que sigue:
x 1 x 2 ... x^ n x^ nH + 1 x^ Hn + 2 ... x^ Hn + m x (^) n^ H + 1 b 1 a 11 a 12 (^) ... a 1 n 1 0 ... 0 xn H + 2 b 2 a (^) 21 a 22 (^) ... a 2 n 0 1 ... 0 M M M M M M M M M M xn H + m b (^) m a (^) m 1 a (^) m 2 ... amn (^) 0 0 ... 1 Z c 1^ c 2^ ... c^ n 0 0 ... 0
En lo que sigue utilizaremos la notación de esta tabla para representar los valores que en cada iteración (es decir, en cada una de las sucesivas tablas que
Seleccionamos el máximo de los productos de los mínimos anteriores para cada columna ( j ∈ J ) por sus correspondientes coeficientes c (^) j. Sea s ∈ J la columna que da el máximo. Esto es:
= c ∋ j ∈ J a c max b a
b j rj
r rs s j
r
Entonces, xs entra en la base y sale de ella la variable correspondiente a la fila r -ésima.
Paso 2:
Hacer en la tabla las transformaciones necesarias para que el vector columna correspondiente a la variable que entra en la base tenga un 1 en el lugar r -ésimo y el resto ceros.
Paso 3:
Volver al paso 1.
Al elemento que ocupa el lugar r -ésimo de la columna s , es decir a (^) rs , se le denomina elemento pivote , y a la operación de transformar la columna del pivote en otra que tenga un 1 en el lugar del elemento pivote y cero en el resto se le conoce con el nombre de operación de pivotar. Para efectuar esta operación podemos utilizar el Método de Eliminación de Gauss.
Nota:
Si para algún (^) j ∈ J se tiene que a (^) ij ≤ 0 , ∀ i , el algoritmo acaba en el paso 2
diciendo que la solución es no acotada (infinito), puesto que podríamos mejorar el valor de la función objetivo introduciendo una variable sin necesidad de que ninguna salga de la base.
Ejemplo:
max Z = 2 x 1 + 3 x 2 + x 3 − 2 x 4 s.a.: x 1 + 2 x 2 + x 3 + x 4 ≤ 6 2 x 1 + x 2 + 4 x 3 + 5 x 4 ≤ 10 xi ≥ 0 , i = 1 , 2 , 3 , 4
Introducimos variables de holgura xH 5 y x 6 H para pasar a forma estándar:
max (^) Z = 2 x 1 + 3 x 2 + x 3 − 2 x 4 s.a.: x 1 + 2 x 2 + x 3 + x 4 + x 5 H = 6 2 x 1 + x 2 + 4 x 3 + 5 x 4 + x 6 H = 10 xi ≥ 0 , i = 1 , 2 , 3 , 4 , x 5 H^ , x 6 H ≥ 0
x 1 x 2 x^ 3 x 4 xH 5^ x 6^ H x 5^ H 6 1 2 1 1 1 0 x 6^ H 10 2 1 4 5 0 1 0 2 3 1 -2 0 0
J = {1, 2, 3}, puesto que (^) c 1 (^) = 2 > 0 , (^) c 2 (^) = 3 > 0 , c (^) 3 = 1 > 0.
j = 1 ⇒ min { 6 1 , 102 } = 102 = 5 ⇒ i = 2
j = 2 ⇒ min^ { 6 2 , 101 }^ = 62 = 3 ⇒ i = 1
j = 3 ⇒ min { 61 , 104 } = 104 = 2. 5 ⇒ i = 2
Calculamos max { 5 ⋅ 2 , 3 ⋅ 3 , 2. 5 ⋅ 1 } = 10 que corresponde a i = 2, j = 1, por lo que pivotamos sobre el elemento (^) a 21 , entrando en la base la variable (^) x 1 y saliendo de ella la variable (^) x 6 H.
La nueva tabla para realizar la siguiente iteración quedará:
Consideremos el siguiente ejemplo:
max (^) Z = 5 x 1 + 2 x 2 s.a.: (^6) x 1 + x 2 ≥ 6 4 x 1 + 3 x 2 ≥ 12 x 1 + 2 x 2 ≥ 4 x 1 , x 2 ≥ 0
Pondremos este problema en forma estándar introduciendo dos tipos de variables en las restricciones lineales de desigualdad:
Variables de holgura: (^) x 3 H , (^) x 4 H y (^) xH 5
Variables artificiales: xA 6 , x 7 A y x 8 A.
Se obtiene el siguiente problema:
max Z = 5 x 1 + 2 x 2 − Mx 6 A^ − MxA 7 − Mx 8 A s.a.: 6 x 1 + x 2 − x 3 H^ + x 6 A = 6 4 x 1 + 3 x 2 − x 4 H^ + x 7 A = 12 x 1 + 2 x 2 − x 5 H^ + x 8 A = 4 x 1 , x 2 , x 3 H^ , x 4 H , x 5 H , x 6 A , x 7 A , x 8 A ≥ 0
La tabla correspondiente a este problema es la siguiente:
x 1 x 2 x 3 H x 4^ H^ x 5^ H^ x 6^ A^ x 7^ A^ x 8^ A x 6^ A 6 6 1 -1 0 0 1 0 0 x 7^ A 12 4 3 0 -1 0 0 1 0 x 8^ A 4 1 2 0 0 -1 0 0 1 5 2 0 0 0 -M -M -M
La solución factible básica inicial es:
Como se observa, los costes en la función objetivo de esta base no son nulos, por lo que no podemos aplicar sin más el algoritmo que hemos desarrollado hasta ahora; será preciso introducir la siguiente definición:
Definición:
∈
= k (^) j B j jk z ca ,
siendo B el conjunto formado por los índices de las variables básicas.
Es decir, zk es el producto escalar de los elementos de la columna de los costes en
la función objetivo de la base por los elementos de cada columna k -ésima de la matriz de coeficientes A.
Para hacer esta operación en la práctica, en la tabla anterior añadimos a la derecha la columna correspondiente a los costes en la función objetivo de la base y una última fila con el resultado obtenido para los costes marginales.
x 1 x 2 xH 3 x^ H 4 x 5^ H x^ A 6 x 7^ A x 8^ A x 6^ A 6 6 1 -1 0 0 1 0 0 -M x 7^ A 12 4 3 0 -1 0 0 1 0 -M x 8^ A 4 1 2 0 0 -1 0 0 1 -M 5 2 0 0 0 -M -M -M 11 M + 5 6 M + 2 -M -M -M 0 0 0
Continuando como en el caso anterior, considerando la última columna como el valor actual de los costes en la función objetivo, tenemos que:
x 1 x 2 x 3 H x 4^ H x^ H 5 x 1 4 1 2 0 0 - x 3^ H 18 0 11 1 0 - x 4^ H 4 0 5 0 1 - 0 -8 0 0 5
Este problema no posee solución acotada, ya que la variable que únicamente puede entrar en la base, x 5 H , posee todos los coeficientes de su columna correspondiente menores o iguales que cero.
Notamos que este problema podría haberse resuelto por el método de resolución gráfica, sin necesidad de pasar a la formulación estándar ni aplicar el algoritmo del Simplex.
En general, lo que logramos con la introducción de los costes marginales en la primera tabla es anular los costes de las variables básicas. Además, este caso no es más que la generalización del anterior: si únicamente es preciso añadir variables de holgura, para éstas los correspondientes z (^) k son cero y, por tanto, c (^) k = ck , esto es,
los costes marginales coinciden con los costes en la función objetivo.
El algoritmo que utilizaremos en este caso es similar al anterior, sustituyendo (^) cj
por c (^) j. En este caso, la distribución de los datos del problema en la tabla será:
A: base actual ( x (^) j ) B: valor de las variables básicas actuales ( (^) bi ) C: matriz de los coeficientes en las restricciones ( a (^) ij ), que se modifican sucesivamente al pivotar. D: costes iniciales de todas las variables en la función objetivo ( c (^) j ) E: costes marginales para cada iteración ( (^) c (^) j ) F: columna auxiliar con los costes iniciales en la función objetivo de las variables básicas actuales.
Algoritmo 2.
Paso 0:
Anular los costes de las variables básicas, o lo que es lo mismo, calcular los costes marginales, c (^) k − zk , ∀ k. Si todo c (^) k = ck − zk ≤ 0 , estamos en el óptimo. PARAR. Si algún c (^) k = ck − zk > 0 , ir al paso 1.
Paso 1:
Sea (^) J = { (^) j ∋ cj > 0 }, que será distinto del vacío, ya que en otro caso hubiera terminado el algoritmo en el paso 0.
∀ j ∈ J sea i (fila) tal que aij > 0. Calculamos los cocientes ij
i a
b (^) y elegimos el
mínimo de ellos. Sea:
= ∋ ij > 0 ij
i rj i
r (^) a a min b a
b
Seleccionamos el máximo de los productos de los mínimos anteriores para cada columna ( (^) j ∈ J ) por sus correspondientes costes marginales (^) c j. Sea s ∈ J la columna que da el máximo. Esto es: