UNIDAD 3 MÉTODO SIMPLEX Fundamentos del método - Unefa-io

Anuncio
UNIDAD 3
MÉTODO SIMPLEX
Fundamentos del método simplex
Teoría
Este método busca la solución, en cada paso, de forma mejorada hasta que no pueda
seguir mejorando dicha solución. Al comienzo el vértice principal es un vértice cualquiera,
hasta que va mejorando, comparándolo con el vértice anterior, en los pasos de la ecuación.
El método Simplex se basa en la siguiente propiedad: si la función objetivo, f, no
toma su valor máximo en el vértice A, entonces hay una arista que parte de A, a lo largo de
la cual f aumenta. Deberá tenerse en cuenta que este método sólo trabaja para restricciones
que tengan un tipo de desigualdad "≤" y coeficientes independientes mayores o iguales a 0,
y habrá que estandarizar las mismas para el algoritmo. En caso de que después de éste
proceso, aparezcan (o no varíen) restricciones del tipo "≥" o "=" habrá que emplear otros
métodos, siendo el más común el método de las Dos Fases.
Resumen del método simplex.
Paso 1 Convertir el LP a suma forma estándar.
Paso 2 Encontrar una solución básica factible. Si todas las restricciones son de tipo =<se
pueden usar las variables de holgura si para cada la i.
Paso 3 Si todas las variables no básicas tienen un coeficiente no negativo en la 0, la bfs
actuales optima. Si hay variables en la 0 con coeficientes negativos, se debe escoger la que
acompañe al coeficiente más negativo en la 0 para entrar a la base. Esta variable se
denomina la variable entrante.
Paso 4 Emplear el pivoteo para hacer que la variable entrante ingrese a la base en la que
restringido su valor. Una vez obtenida la base, volver al paso 3, empleando la forma
canoníca actual.
Solución factible
Una solución basal de (2.3) en el cual todas las variables son no negativas es una
Solución basal factible o bfs. Los siguientes dos teoremas explican la importancia de
concepto de solución basal factible en LP.
Teorema 1 La región factible para cualquier problema de programación lineal es un
conjunto convexo. Además, si un LP tiene solución óptima, el óptimo debe ser un punto
extremo de la región factible. La justificación del Teorema 1 fue discutida intuitivamente
cuando se estudio la resolución grafica de LP de dos variables, además en dos variables
también se vio que el ¶optimo corresponde un punto extremo.
Teorema 2 Para cualquier LP, existe un único punto extremo de la región factible
correspondiente a cada solución basal factible. Además, existe a los menos una bfs
correspondiente a cada punto extremo de la región factible.
Solución básica factible
Siempre se debe incorporar una variable entrante en la que controla su valor
máximo. En el ejemplo, para hacer que x1 sea la variable basal en la 3 se debe emplear
operaciones las elementales para conseguir que x1 tenga coeficiente 1 en dicha la y 0 en las
otras las. El procedimiento se denomina pivoteo en la 3. El resultado es que x1 reemplace a
s3 como variable básica de la 3. Los pasos a seguir son los siguientes:
Paso 1 Se crea un coeficiente 1 para x1 en la 3 multiplicando la completa por ½. El
resultante de la operación es:
x1 + 0;75x2 + 0;25x3 + 0;5s3 = 4
Paso 2 Se crea un coeficiente 0 para la variables x1 en la 0. Para ello basta multiplicar por
60 (3.12) y sumarla a la 0 actual:
z + 15x2 ¡ 5x3 + 30s3 = 240
Paso 3 Para fabricar un coeficiente 0 para la variables x1 en la 1 se multiplica por ¡8 (3.12)
y se suma a la 1 actual:
¡x3 + s1 ¡ 4s3 = 16
Paso 4 Creamos un coeficiente 0 para la variables x1 en la ¯la 2 multiplicando por ¡4 (3.12)
y sumándosela a la ¯la 2 actual:
¡x2 + 0;5x3 + s2 ¡ 2s3 = 4
Debido a que en la 4 no aparece la variable x1, no es necesario aplicar operaciones las para
eliminar x1 de la. Luego, la 4 queda igual que antes:
x2 + s4 = 5
Efectuando todas las medicaciones descritas se completa el Cuadro 3.3.
Las variables basales y no basales en este caso definen los siguientes conjuntos:
BV = fz; s1; s2; x1; s4g NBV = fs3; x2; x3g
Variable entrante:
Se puede comenzar a desarrollar con cualquier variable solo que según la que tome
se realizaran más o menos iteraciones. Se recomienda usar las variables básicas, ya que
estas serán la base en la solución en estos métodos.
Variable saliente
Igualmente se puede comenzar con cualquiera de ellas, aunque se puede dar el caso
corrido de caer en un ciclo repetitivo. Para que no ocurran estos casos de repetición no se
tomaran en cuenta las variables básicas haciendo que siempre estén en la base. En caso de
igualdad de las variables se, en el segundo método, se tomara las variables artificiales.
Método de las dos faces
Trata, en diferencia del método simplex, en que primero hay que resolver el
problema auxiliar tratando de minimizar la suma las variables artificiales. Una vez
resolvido el problema se ordena la tabla final y comenzamos con el método simplex
normal.
Fase 1
En esta primera fase, se realiza todo de igual manera que en el método Simplex
normal, excepto la construcción de la primera tabla, la condición de parada y la preparación
de la tabla que pasará a la fase 2
- Construcción de la primera tabla: Se hace de la misma forma que la tabla inicial
del método Simplex, pero con algunas diferencias. La fila de la función objetivo cambia
para la primera fase, ya que cambia la función objetivo, por lo tanto aparecerán todos los
términos a cero excepto aquellos que sean variables artificiales, que tendrán valor "-1"
debido a que se está minimizando la suma de dichas variables (recuerde que minimizar F es
igual que maximizar F·(-1)).
La otra diferencia para la primera tabla radica en la forma de calcular la fila Z. Ahora
tendremos que hacer el cálculo de la siguiente forma: Se sumarán los productos Cb·Pj para
todas las filas y al resultado se le restará el valor que aparezca (según la columna que se
éste haciendo) en la fila de la función objetivo.
- Condición de parada: La condición de parada es la misma que en el método
Simplex normal. La diferencia estriba en que pueden ocurrir dos casos cuando se produce
la parada: la función toma un valor 0, que significa que el problema original tiene solución,
o que tome un valor distinto, indicando que nuestro modelo no tiene solución.
- Eliminar Columna de variables artificiales: Si hemos llegado a la conclusión de
que el problema original tiene solución, debemos preparar nuestra tabla para la segunda
fase. Deberemos eliminar las columnas de las variables artificiales, modificar la fila de la
función objetivo por la original, y calcular la fila Z de la misma forma que en la primera
tabla de la fase 1.
Método simplex revisado
Procedimiento de cálculo
Resolver el siguiente problema mediante el método simplex revisado.
max z = −2x2 + x3
s/a
x1 − 2x2 + x3 >= −4
x1 + x2 + x3 <= 9
2x1 − x2 − x3 <= 5
x1, x2, x3 >= 0
Preliminares. Lo primero que debemos hacer es convertir el problema a su forma estándar.
En nuestro caso,
max z = −2x2 + x3
s/a
−x1 + 2x2 − x3 + x4 = 4
x1 + x2 + x3 + x5 = 9
2x1 − x2 − x3 + x6 = 5
x1, x2, x3 >= 0
Matricialmente,
max z = c.x
s/a
A.x = b
x >= 0
Donde,
y c = (0,−2, 1, 0, 0, 0). Estos vectores/matrices van a permanecer constantes a lo largo del
ejercicio. No obstante, cuando introduzcamos B, N, xB, xN, cB y cN, estos últimos van a
variar según la base establecida en cada iteración. Búsqueda primer solución factible. El
problema es origen factible, así que no tenemos necesidad de utilizar el método de las dos
fases. Simplemente, Podemos comenzar con la base B = (a4, a5, a6). Obviamente,
N = (a1, a2, a3).
Test de optimalidad. Recordemos la forma general del diccionario,
xB = B−1.b − B−1.N.xN
z = cB.B−1.b + (cN − cB.B−1.N).xN
Debemos investigar los coeficientes de la función objetivo (i.e.cN−cB.B−1.N).
Llamemos w al vector que resulta del producto cB.B−1. Utilizando la primera solución
factible hallada, cB resulta ser el vector nulo, as´ı que también
w = (0, 0, 0).
Lo siguiente es evaluar los coeficientes de la función objetivo (correspondientes a
las variables no básicas) hasta encontrar uno que sea estrictamente positivo:
c1 − w.a1 = 0,
c2 − w.a2 = −2,
c3 − w.a3 = 1, por lo tanto entra x3 a la base.
Test de factibilidad. Ahora tenemos que hallar la variable saliente que más restricción
impone, cuando x3 comienza a crecer. De la forma general del diccionario, veamos que
xB = B−1.b − B−1.N.xN = b − N.xN = b − a3.x3,
Pues B−1 = I y x3 dejara de ser cero, pero no así las otras variables no básicas (x1 = x2 = 0).
En resumen,
x4 = 4 + x3, que no impone restricción,
x5 = 9 − x3, que impone la restricción x3 _ 9,
x6 = 5 + x3, que no impone restricción.
La variable que más restricción impone es x5 y, por lo tanto, sale de la base.
Actualización. Para poder pasar a la próxima iteración (la cual comienza con el test de
optimalidad) debemos actualizar la base, y con ella, los vectores/matrices B, N, xB, xN, cB y
cN. Todas ellas se hallan mediante un reordenamiento de sus componentes (donde estaba
antes la columna/valor correspondiente a la variable entrante, ahora estará la de la variable
saliente y viceversa). Es decir,
B = (a4, a3, a6), N = (a1, a2, a5), xB = (x4, x3, x6)T , xN = (x1, x2, x5)T , cB = (0, 1, 0) y cN
= (0,−2, 0).
Cabe destacar que también podemos aprovechar a calcular la nueva B −1 de una manera
eficiente, a partir de la B−1 previa. Llamemos B1 a la matriz B antes de iterar y B2 a la matriz
luego de iterar. Observemos que B2 = (a4, a3, a6) = (a4, a5, a6).T = B1.T,
T es una identidad modificada, en donde se ha cambiado su columna del medio por la
columna correspondiente a x3 en el resultado B−1.N ya calculado en el paso anterior (dicha
columna había resultado ser simplemente a3).
Luego,
B−12 = (B1.T )−1 = T−1.B−11 = T−1.I = T−1
En general, T−1 es también una identidad, salvo que la columna cambiada k (en nuestro
caso, es la del medio, k = 2) está formada por la columna (−t 1k/tkk,−t2k/tkk, · · · , 1/tkk, · · · )T
Obsérvese que la fila k de esta columna se calcula de una manera diferente al resto.
Test de optimalidad. Nuevamente, volvemos a calcular los coeficientes de la función
objetivo correspondiente a las nuevas variables no básicas. En primer lugar, w = cB.B−1 =
(0, 1, 0).
c1 − w.a1 = −1,
c2 − w.a2 = −3,
c5 − w.a5 = −1.
Como todos los coeficientes no son estrictamente positivos, hemos alcanzado el óptimo.
Resultado. Para conocer los valores de x_ y z_, volvemos a recordar la forma general del
diccionario, y hacemos
x*B = B−1.b, x* N = 0, z* = cB.B*1.b = w.b.
Nos queda x*B = (13, 9, 14) y z_ = 9. En particular, las slacks no nos interesan y podemos
descartarlas, dejando
X1 = x_
x2 = 0 y x_
x3 = 9.
Realizado por los creadores del sitio:
http://www.unefa-io.webnode.es
Correspondiente a la unidad 3.
Investigación de Operaciones
Descargar