Вы находитесь на странице: 1из 23

Investigacion de Operaciones

Jaime Cerda Jacobo

2. El Metodo Simplex
Considere el siguiente problema

Maximize z = 3 x1 + 2 x2
x1,x2
s.t. 5 x1 + 10 x2 +s1 = 30
10 x1 + 5 x2 +s2 = 30
x1 + x2 +s3 = 3.5
Cuya representacion grafica es

x2
6

x1
1 2 3 4 5 6
2 simplex.nb

Las propiedades del metodo Simplex


Sea P un LP y sea X el conjunto de soluciones basicas de P. Podemos particionar X en dos conjuntos: XB el conjunto de soluciones basicas factibles, y
XNB el conjunto de soluciones no basicas factibles i.e X = XB Ü XNB , observa que XB Ý XNB = Æ. Definamos al politope de P, PP , como el conjunto de
aristas tales que sus vertices pertencen a las soluciones basicas factibles, i.e. PP = 9Ixi , x j M xi , x j œ XB =. Designemos Gxi como el conjunto de soluciones
basicas que son vecinas a xi i.e. Gxi = 9x j j ¹ i, $ Ixi , x j M}. Todas las BFS estan constituidas por una asignacion de valosres para cada uno de las variables
de problema. En cada solucion Supongamos que x0 Î XB existe y es nuestra solucion basica factible inicial. El metodo simplex es la mecanizacion del
metodo algebraico. Cuatro son las propiedades del metodo simplex
1. No debe evaluar soluciones que no sean factibles, i.e. xi Ï XNB
2. Conforme se mueve a traves del politope debe siempre mejorar la evaluacion de z, i.e. f Hxi+1 L > f Hxi L
3. Siempre se desplaza a soluciones basicas factibles vecinas, xi+1 Î Gxi
4. Debe ser capaz de identificar cuando ha alcanzado el optimo y terminar i.e ! xi+1 ' f Hxi+1 L > f Hxi L.

Veamos como podemos lograr los puntos anteriores basados en lo que ya hicimos con el metodo algebraico. Considere el siguiente problema:

Normal Normalizado
Maximize z = 3 x1 + 2 x2 Maximize z = 3 x1 + 2 x2
x1,x2 x1,x2
s.t. 5 x1 +10 x2 <= 30 s.t. 5 x1 +10 x2 +s1 = 30
10 x1 + 5 x2 <= 30 10 x1 + 5 x2 + s2 = 30
x1 + x2 <= 3.5 x1 + x2 + s3 = 3.5

Supongamos que nos encontramos en la solucion basica inicial xo . El metodo Simplex es una representacion tabular de P, analizemos cada una de las
partes de este tableau. Para esto colorearemos las diferentes partes que lo integran para despues dar una explicacion y si es necesario explicar como son
calculados.

Cj 3 2 0 0 0
CXB XB x1 x2 s1 s2 s3 RHS
0 s1 5 10 1 0 0 30
0 s2 10 5 0 1 0 30
0 s3 1 1 0 0 1 3.5
cj - zj 3 2 0 0 0 0

- Conjunto de variables de P,

- Coeficientes de las variables de P,

- Conjunto de variables basicas en la solucion basica xi Î XB ,

- Coeficientes de las variables basicas de xi ,

- Coefiecientes del lado izquierdo de las restricciones,

- Lado derecho de las restricciones,

- Valor reducido z j = < CXB , A j >

-Valor de - Z = - < CXB , An+1 >

Observa que en cada una de las columnas base hay solo un uno, es decir son columnas unitarias y por lo tanto, esta variable basica solo existe en esa
ecuacion. Esto quiere decir que cada una de las variables basicas pueden ser expresadas de manera directa en terminos de las variables no basicas. En este
caso en x0 , tenemos que las variables basicas son s1 , s2 , y s3 , mientras que x1 y x2 seran las variables no basicas. Es decir s1 , s2 , y s3 pueden ser expresados
en terminos de x1 y x2 . Comprobemoslo:

s1 = 30 - 5 x1 - 10 x2
s2 = 30 - 10 x1 - 5 x2
s3 = 3.5 - x1 - x2
Observa que solamente puede haber m variables basicas, y en nuestro caso tenemos n variables, y en este vaso n > m. Solo podemos resolver sistemas de
m ‰ m variables. El metodo Simplex se basa en una serie de iteraciones en las cuales esta viajando entre soluciones basicas contiguas hasta que ya no es
posible moverse. A cada una de estas soluciones basicas factibles le corresponde un tableau, recordemos el tableau inicial para este problema.
simplex.nb 3

Cj 3 2 0 0 0
XB x1 x2 s1 s2 s3 RHS
0 s1 5 10 1 0 0 30
HT0L
0 s2 10 5 0 1 0 30
0 s3 1 1 0 0 1 3.5
cj - zj 3 2 0 0 0 0

Necesitamos movernos a otra BFS. Para esto necesitamos entrar una nueva variable a la base y como solo podemos tener m variables, entonces necesitare-
mos sacar otra variable de la base. El criterio para determinar la variable que entra es encontrar el c j - z j positivo mayor si existe sino hemos terminado,
i.e. c j - z j > 0, c j - z j > ci - zi , i ¹ j. En este caso vemos que c1 - z1 = 3 es el que cumple tal condicion y por lo tanto la variable asociada a tal columna
es la que entra i.e. x1 . Por otro lado para saber cual es la variable que sale de la base, tenemos que ver cual es la restriccion que se violaria primero al
movernos en la direccion de la variable que entra, que en este caso es x1 . Este criterio lo evaluamos haciendo la division termino a termino de la columna
RHS entre la columna de la variable que entra, en este caso x1 , y saldra la variable que relacionada con el renglon donde resulte la menor razon. Esto es,
para nuestro caso:
30 5
30 30 3.5
argmax RHS  A1 = argmax 30 “ 10 = argmaxJ , , N = argmaxH6, 3, 3.5L = 2
5 10 1
3.5 1
Entra x1 y sale s2, como lo señ alan
las flechas

Cj 3 2 0 0 0
XB x1 x2 s1 s2 s3 RHS
0 s1 5 10 1 0 0 30
HT0L
0 s2 10 5 0 1 0 30 ™

0 s3 1 1 0 0 1 3.5
cj - zj 3 2 0 0 0 0

Ya hemos encontrado cual variable entra y cual variable sale. Entra la variable no basica asociada a la primera columna y sale la variable basica asociada a
la segunda columna, sin embargo como reconfiguramos el tableau con esta informacion? Lo que sabemos es que las columnas asociadas a las variables
basicas son unitarias, con el uno en el renglon asociado a esa variable. La solucion a este problema nos la da el procedimiento conocido como pivoteo
parcial, que consiste en transformar la columna asociada a la variable que entra en una columna unitaria aplicando la eliminacion Gaussiana. Reformamos
todos los renglones de acuerdo a la eliminacion, incluido el renglon c j - z j , para acelerar el proceso de calculo. Aplicando este procedimiento, llegamos al
tableau T1.

Cj 3 2 0 0 0
XB x1 x2 s1 s2 s3 RHS
15 1
0 s1 0 1 - 0 15
2 2
1 1
3 x1 1 0 0 3 (T1)
2 10

1 1
0 s3 0 0 - 1 0.5 ™
2 10

1 3
cj - zj 0 0 - 0 -9
2 10

Aplicando los criterios anteriormente mencionados, concluimos que entra x2 y sale s3, con lo cual el nuevo tableau sera el T2

Cj 3 2 0 0 0
XB x1 x2 s1 s2 s3 RHS
0 s1 0 0 1 1 -15 7.5
1
3 x1 1 0 0 -1 2.5 (T2)
5
1
2 x2 0 1 0 - 2 1.
5
1
cj - zj 0 0 0 - -1 -9.5
5

Como ya todas las entradas en el ultimo renglon son cero o negativas, entonces ya no hay mayor ganancia en cambiar la base. Esto es, hemos llegado a la
solucion optima. Veamos en forma grafica que paso en esta serie de pivoteos que realizamos.
4 simplex.nb

a
Cj 3 2 0 0 0
b XB x1 x2 s1 s2 s3 RHS
0 s1 5 10 1 0 0 30
f
HT0L
0 s2 10 5 0 1 0 30 ™

0 s3 1 1 0 0 1 3.5
x2 cj - zj 3 2 0 0 0 0
6
Cj 3 2 0 0 0
XB x1 x2 s1 s2 s3 RHS
15 1
5 0 s1 0 1 - 0 15
2 2
1 1
3 x1 1 0 0 3 HT1L
2 10
4 1 1
0 s3 0 0 - 1 0.5 ™
2 10

1 3
cj - zj 0 0 - 0 -9
3 2 10

Cj 3 2 0 0 0

2
XB x1 x2 s1 s2 s3 RHS
0 s1 0 0 1 1 -15 7.5
1
3 x1 1 0 0 -1 2.5 HT2L
5
1 T2 1
2 x2 0 1 0 - 2 1.
5
1
cj - zj 0 0 0 - -1 -9.5
T0 T1 5
x1
1 2 3 4 5 6

El algoritmo del Metodo Simplex


Las matrices y vectores que utilizaremos, para un problema de m restricciones y n variables de desicion, en la implentacion del metodo simplex son las
siguientes:
A Î Rm ‰ Rn (La matriz de coeficientes de las restricciones normalizadas)

A ' Î Rm ‰ Rn+m

rÎ Rm (El vector de terminos indepedientes i.e. rhs)

cÎ Rn (El vector renglon de coeficientes de la funcion objetivo original)

c'Î Rn+m (El vector renglon de coeficientes de la funcion objetivo original+slacks)

Entonce el algoritmo simplex es definido como

1 simplexPivot(A, r, c)
2 R ˜ Length[A];
3 C ˜ Length[A[[1]]];
A@@i,jDD A@@r,jDD A@@i,cDD
4 return TableBIf Bi Š r, , A@@i, jDD - F, 8i, R<, 8j, C<F
A@@r,cDD A@@r,cDD

1 Simplex(A, RHS, c)
2 A˜H A I L
3 c˜H c O L
A RHS
4 A'˜K O
c 0
5 zj = < cB ¬, Aj >
6 j ˜ greaterPositiveIcj - zj )
7 si no existe j valido SALIR con SOLUCION
8 i ˜ smallestRatioIRHS, Aj )
9 si no existe i SALIR SIN SOLUCION
10 A'˜simplexPivot(A',i,j)
11 ir a 5
simplex.nb 5

1 Simplex(A, RHS, c)
2 A˜H A I L
3 c˜H c O L
A RHS
4 A'˜K O
c 0
5 zj = < cB ¬, Aj >
6 j ˜ greaterPositiveIcj - zj )
7 si no existe j valido SALIR con SOLUCION
8 i ˜ smallestRatioIRHS, Aj )
9 si no existe i SALIR SIN SOLUCION
10 A'˜simplexPivot(A',i,j)
11 ir a 5

El metodo simplex aplicado a problemas de minimizacion


Cuando estamos tratando problemas de minimizacion, generalmente es posible resolverlos maximizando el negativo de la funcion a maximizar. Veamoslo
con nuestro ejemplo
Minimize z = 3 x1 + 2 x2 º Maximize z = -3 x1 - 2 x2
x1,x2 x1,x2

Inicializacion

Modifiquemos el problema para introducir desigualdades del tipo "≥".

Minimize z = 3 x1 + 2 x2
x1,x2
s.t. 5 x1 +10 x2 <= 30
10 x1 + 5 x2 <= 30
x1 + x2 <= 3.5
20 x1 + 4 x2 >= 20
4 x1 + 20 x2 >= 20
Graficamente, la region factible es mostrada en azul.
6 simplex.nb

x2
6

x1
1 2 3 4 5 6

Ya resolvimos el aspecto de como tratar problemas de Minimizacion con la metodologia hasta ahora desarrollada. Sin embargo, no tenemos una solucion
basica inicial explicita i.e. XB , asumiendo que no tenemos acceso a esta grafica. Como podemos hacer para empezar las iteraciones del Simplex? Recorde-
mos, que el simplex siempre parte de una solucion basica factible y de ahi empieza a recorrer BFSs que mejoran la funcion objetivo. Replanteemos nuestro
problema expresandolas en terminos de desigualdades del tipo "≤".
Maximize z = -3 x1 - 2 x2
x1,x2
s.t. 5 x1 +10 x2 +s1 = 30
10 x1 + 5 x2 + s2 = 30
x1 + x2 + s3 = 3.5
20 x1 + 4 x2 - e1 = 20
4 x1 + 20 x2 - e2 = 20
x1, x2, s1, s2, s3, e1, e2 ³ 0

El metodo de las dos fases


En el ejemplo anterior no es posible obtener una BFS ya que las variables de exceso i.e. ei son negativas, lo cual contradice el principio fundamental del
simplex. Añ adamos algunas variables artificiales para obtener una base inicial. Es importante aclarar que estas variables no tienen ninguna interpretacion
fisica con respecto al LP original.
Maximize z = -3 x1 - 2 x2
x1,x2
s.t. 5 x1 +10 x2 +s1 = 30
10 x1 + 5 x2 + s2 = 30
x1 + x2 + s3 = 3.5
20 x1 + 4 x2 - e1 = 20
4 x1 + 20 x2 - e2 = 20
x1, x2, s1, s2, s3, a1, a2 ³ 0
En el metodo de las dos fases, la primera fase introduce variables artificiales y se crea una nueva funcion objetivo basada en estas variables. El fin de la
primera fase es el de sacar de la base a las variables artificiales. Para nuestro caso, el problema que estamos tratando seria convertido al siguiente:
simplex.nb 7

En el metodo de las dos fases, la primera fase introduce variables artificiales y se crea una nueva funcion objetivo basada en estas variables. El fin de la
primera fase es el de sacar de la base a las variables artificiales. Para nuestro caso, el problema que estamos tratando seria convertido al siguiente:
Maximize z = -a1 - a2
x1, x2, a1,a2

s.t. 5 x1 +10 x2 +s1 = 30


10 x1 + 5 x2 + s2 = 30
x1 + x2 + s3 = 3.5
20 x1 + 4 x2 - e1 + a1 = 20
4 x1 + 20 x2 - e2 + a2 = 20
x1, x2, s1, s2, s3, a1, a2 ³ 0
En la segunda fase, las columnas correspondientes a las variables artificiales introducidas en la primera fase son eliminadas y la funcion objetivo original
es restablecida, sin embargo hemos logrado obtener una de las BFSs i.e. nos hemos montado al politope y el simplex se encargara de lo demas!! Empece-
mos pues con la primera fase.

Cj 0 0 0 0 0 0 0 -1 -1
XB x1 x2 s1 s2 s3 e1 e2 a1 a2 RHS
0 s1 5 10 1 0 0 0 0 0 0 30
0 s2 10 5 0 1 0 0 0 0 0 30
0 s3 1 1 0 0 1 0 0 0 0 3.5 T0
-1 a1 20 4 0 0 0 -1 0 1 0 20 ™

-1 a2 4 20 0 0 0 0 -1 0 1 20
cj - zj 24 24 0 0 0 -1 -1 0 0 -

Entrando a x1 a la base y sacando a a1 de la base llegamos al siguiente tableau

Cj 0 0 0 0 0 0 0 -1 -1
XB x1 x2 s1 s2 s3 e1 e2 a1 a2 RHS
1 1
0 s1 0 9 1 0 0 0 - 0 25
4 4
1 1
0 s2 0 3 0 1 0 0 - 0 20
2 2
4 1 1
0 s3 0 0 0 1 0 - 0 2.5 T1
5 20 20
1 1 1
0 x1 1 0 0 0 - 0 0 1
5 20 20

96 1 1
-1 a2 0 5
0 0 0 -1 - 1 16 ™
5 5

92 3 23
cj - zj 0 0 0 0 -1 - 0 -
5 20 20

Entrando a x2 a la base y sacando a a2 de la base llegamos al siguiente tableau

Cj 0 0 0 0 0 0 0 -1 -1
XB x1 x2 s1 s2 s3 e1 e2 a1 a2 RHS
5 15 5 15 35
0 s1 0 0 1 0 0 - -
32 32 32 32 2
15 5 15 5 35
0 s2 0 0 0 1 0 - -
32 32 32 32 2
1 1 1 1 T2
0 s3 0 0 0 0 1 - - 1.83333
24 24 24 24
5 1 5 1 5
0 x1 1 0 0 0 0 - -
96 96 96 96 6
1 5 1 5 5
0 x2 0 1 0 0 0 - -
96 96 96 96 6
1 1 23 23
cj - zj 0 0 0 0 0 - - - - -
24 24 24 24

Nota que ahora ya han salido de la base a1 y a2. Hemos completado la primera fase y ahora tenemos que aplicar el simplex normal ya que estamos con una
solucion basica factible en donde XB = 8x1 , x2 , s1 , s2 , s3 < y Xn = 8e1 , e2 <. Podemos olvidarnos entonces de las columnas pertenecientes a a1 y a2 y
restablecer nuestra funcion objetivo inicial en el encabezado. Con esto en mente nuestro nuevo tableau sera T3.
8 simplex.nb

Cj -3 -2 0 0 0 0 0
XB x1 x2 s1 s2 s3 e1 e2 RHS
5 15 35
0 s1 0 0 1 0 0
32 32 2
15 5 35
0 s2 0 0 0 1 0
32 32 2

0 s3 0 0 0 0 1
1 1
1.83333 T3
24 24
5 1 5
-3 x1 1 0 0 0 0 -
96 96 6
1 5 5
-2 x2 0 1 0 0 0 -
96 96 6
1 1 25
cj - zj 0 0 0 0 0 - - -
24 24 6

Observa que no hay ningun valor positivo en el ultimo renglon que nos indique que sea apropiado entrar una nueva variable. Podemos concluir entonces
que la primera fase nos ha llevado a la solucion optima. Este resultado es la excepcion y no la regla.

El metodo Big M
Sin embargo existe una alternativa a este metodo llamado el metodo de la M grande, debido a que utiliza una funcion objetivo modificada en la cual las
variables artificiales si tienen cierto peso en la funcion objetivo. Estos coeficientes son lo suficientemente grandes para hacer que el Simplex las considere
negativas para ser tratadas dentro de la funcion objetivo y las sacara de la base. Veamos que sucede con nuestro ejemplo, este puede ser replanteado como
Maximize z = -3 x1 - 2 x2 - M a1 - M a2
x1,x2
s.t. 5 x1 +10 x2 +s1 = 30
10 x1 + 5 x2 + s2 = 30
x1 + x2 + s3 = 3.5
20 x1 + 4 x2 - e1 + a1 = 20
4 x1 + 20 x2 - e2 + a2 = 20
En esta formulacion, M es un numero lo suficientemente grande que hara que sea rechazado como contribuyente en la funcion objetivo. Obtengamos el
tableau inicial:

Cj -3 -2 0 0 0 0 0 -M -M
XB x1 x2 s1 s2 s3 e1 e2 a1 a2 RHS
0 s1 5 10 1 0 0 0 0 0 0 30
0 s2 10 5 0 1 0 0 0 0 0 30
0 s3 1 1 0 0 1 0 0 0 0 3.5
-M a1 20 4 0 0 0 -1 0 1 0 20
-M a2 4 20 0 0 0 0 -1 0 1 20 ™

cj - zj 24 M - 3 24 M - 2 0 0 0 -M -M 0 0 -

La variable a entrar a la base es entonces x2, y la variable a salir es a2. Esto nos lleva al siguiente tableau.

Cj -3 -2 0 0 0 0 0 -M -M
XB x1 x2 s1 s2 s3 e1 e2 a1 a2 RHS
1 1
0 s1 3 0 1 0 0 0 0 - 20
2 2
1 1
0 s2 9 0 0 1 0 0 0 - 25
4 4
4 1 1
0 s3 0 0 0 1 0 0 - 2.5
5 20 20

96 1 1
-M a1 5
0 0 0 0 -1 1 - 16 ®
5 5

1 1 1
-2 x2 1 0 0 0 0 - 0 1
5 20 20
1 1 1
cj - zj H-13 + 96 ML 0 0 0 0 -M H-1 + 2 ML 0 H2 - 24 ML -
5 10 20

Nota que ahora a1 no ingresara a la base ya que el coeficiente en el ultimo renglon es muy negativo. La variable a entrar a la base es entonces x1, y la
variable a salir es a1. Esto nos lleva al siguiente tableau.
simplex.nb 9

Nota que ahora a1 no ingresara a la base ya que el coeficiente en el ultimo renglon es muy negativo. La variable a entrar a la base es entonces x1, y la
variable a salir es a1. Esto nos lleva al siguiente tableau.

Cj -3 -2 0 0 0 0 0 -M -M
XB x1 x2 s1 s2 s3 e1 e2 a1 a2 RHS
5 15 5 15 35
0 s1 0 0 1 0 0 - -
32 32 32 32 2
15 5 15 5 35
0 s2 0 0 0 1 0 - -
32 32 32 32 2
1 1 1 1
0 s3 0 0 0 0 1 - - 1.83333
24 24 24 24
5 1 5 1 5
-3 x1 1 0 0 0 0 - -
96 96 96 96 6
1 5 1 5 5
-2 x2 0 1 0 0 0 - -
96 96 96 96 6
13 7 1 7
cj - zj 0 0 0 0 0 - - H13 - 96 ML -M -
96 96 96 96

Nota que ahora a2 no ingresara a la base ya que el coeficiente en el ultimo renglon es muy negativo. Observa que ahora es imposible que las variables
artificiales entren a la base. Mas aun ninguna otra variable puede entrar a la base por lo cual podemos afirmar que hemos encontrado la BFS optima. Si no
fuera asi, entonces tendriamos que iniciar con el simplex estandard cuyo tableau inicial es:

Cj -3 -2 0 0 0 0 0
XB x1 x2 s1 s2 s3 e1 e2 RHS
5 15 35
0 s1 0 0 1 0 0
32 32 2
15 5 35
0 s2 0 0 0 1 0
32 32 2
1 1
0 s3 0 0 0 0 1 1.83333
24 24
5 1 5
-3 x1 1 0 0 0 0 -
96 96 6
1 5 5
-2 x2 0 1 0 0 0 -
96 96 6
13 7 25
cj - zj 0 0 0 0 0 - - -
96 96 6

Observa que ahora hemos especificado el valor de la funcion objetivo, ya que este debera ir mejorando conforme mas y mas iteraciones realize el Simplex.
Comprobemoslo con Mathematica
Minimize@3x1+2x2,
5 x1 + 10 x2 £ 30 &&
10 x1 + 5 x2 £ 30 &&
x1 + x2 £ 3.5 &&
20 x1 + 4 x2 ³ 20 &&
4 x1 + 20 x2 ³ 20,
8x1, x2<
D
84.16667, 8x1 ® 0.833333, x2 ® 0.833333<<

Justo lo que esperabamos.

Modifiquemos el problema cambiando la direccion de optimizacion convirtiendolo en un problema de Maximizacion restringido por la misma area
factible. Es decir, graficamente, la region factible sigue siendo la azul.

Maximize z = 3 x1 + 2 x2
x1,x2
s.t. 5 x1 +10 x2 <= 30
10 x1 + 5 x2 <= 30
x1 + x2 <= 3.5
20 x1 + 4 x2 >= 20
4 x1 + 20 x2 >= 20
Reformulemos el programa para aplicar la metodologia M grande
10 simplex.nb

Maximize z = 3 x1 + 2 x2 - M a1 - M a2
x1,x2
s.t. 5 x1 +10 x2 +s1 = 30
10 x1 + 5 x2 + s2 = 30
x1 + x2 + s3 = 3.5
20 x1 + 4 x2 - e1 + a1 = 20
4 x1 + 20 x2 - e2 + a2 = 20
En esta formulacion, M es un numero lo suficientemente grande que hara que sea rechazado como contribuyente en la funcion objetivo. Obtengamos el
tableau inicial:

Cj 3 2 0 0 0 0 0 -M -M
XB x1 x2 s1 s2 s3 e1 e2 a1 a2 RHS
0 s1 5 10 1 0 0 0 0 0 0 30
0 s2 10 5 0 1 0 0 0 0 0 30
0 s3 1 1 0 0 1 0 0 0 0 3.5
-M a1 20 4 0 0 0 -1 0 1 0 20 ™

-M a2 4 20 0 0 0 0 -1 0 1 20
cj - zj 24 M + 3 24 M + 2 0 0 0 -M -M 0 0 -

La variable a entrar a la base es entonces x1, y la variable a salir es a1. Esto nos lleva al siguiente tableau.

Cj 3 2 0 0 0 0 0 -M -M
XB x1 x2 s1 s2 s3 e1 e2 a1 a2 RHS
1 1
0 s1 0 9 1 0 0 0 - 0 25
4 4
1 1
0 s2 0 3 0 1 0 0 - 0 20
2 2
4 1 1
0 s3 0 0 0 1 0 - 0 2.5
5 20 20
1 1 1
3 x1 1 0 0 0 - 0 0 1
5 20 20

96 1 1
-M a2 0 5
0 0 0 -1 - 1 16 ™
5 5

1 1 3
cj - zj 0 H7 + 96 ML 0 0 0 H3 + 4 ML -M - H1 + 8 ML 0 -3 H1 + 8 ML
5 20 20

La variable a entrar a la base es entonces x2, y la variable a salir es a2. Esto nos lleva al siguiente tableau.

Cj 3 2 0 0 0 0 0 -M -M
XB x1 x2 s1 s2 s3 e1 e2 a1 a2 RHS
5 15 5 15 35
0 s1 0 0 1 0 0 - -
32 32 32 32 2
15 5 15 5 35
0 s2 0 0 0 1 0 - -
32 32 32 32 2
1 1 1 1
0 s3 0 0 0 0 1 - - 1.83333
24 24 24 24
5 1 5 1 5
3 x1 1 0 0 0 0 - -
96 96 96 96 6
1 5 1 5 5
2 x2 0 1 0 0 0 - -
96 96 96 96 6
13 7 13 7
cj - zj 0 0 0 0 0 - -M - -M -
96 96 96 96

Nota que ahora a2 no ingresara a la base ya que el coeficiente en el ultimo renglon es negativo. Mas aun, observa que ahora es imposible que las variables
artificiales entren a la base. Sin embargo, a diferencia del caso de minimizacion, e1 y e2 pueden entrar a la base. Entonces tenemos que seguir con el
simplex estandard cuyo tableau inicial es:
simplex.nb 11

Cj 3 2 0 0 0 0 0
XB x1 x2 s1 s2 s3 e1 e2 RHS
5 15 35
0 s1 0 0 1 0 0
32 32 2

15 5 35
0 s2 0 0 0 1 0 32
™
32 2

1 1
0 s3 0 0 0 0 1 1.83333
24 24
5 1 5
3 x1 1 0 0 0 0 -
96 96 6
1 5 5
2 x2 0 1 0 0 0 -
96 96 6
13 7 25
cj - zj 0 0 0 0 0
96 96 6

Entra e1 y sale s2

Cj 3 2 0 0 0 0 0
XB x1 x2 s1 s2 s3 e1 e2 RHS
1 5 35
0 s1 0 0 1 - 0 0
3 12 3
32 1 112
0 e1 0 0 0 0 1
15 3 3

4 1
0 s3 0 0 0 - 1 0 36
0.277778 ™
45

1 1 25
3 x1 1 0 0 0 0
9 36 9
1 1 4
2 x2 0 1 0 - 0 0 -
45 18 9
13 1 83
cj - zj 0 0 0 - 0 0
45 36 9

Entra e2 y sale s3

Cj 3 2 0 0 0 0 0 0
XB x1 x2 s1 s2 s3 e1 e2 RHS
0 s1 0 0 1 1 -15 0 0 7.5
16
0 e1 0 0 0 -12 1 0 34.
5
16
0 e2 0 0 0 - 36 0 1 10.
5
1
3 x1 1 0 0 -1 0 0 2.5
5
1
2 x2 0 1 0 - 2 0 0 1.
5
1
cj - zj 0 0 0 - -1 0 0 9.5
5

Dado que todos las entradas del renglon c j - z j son <= 0, entonces podemos decir que ya no hay variables que puedan mejorar el valor de la funcion
objetivo y hemos terminado con la solucion x* = {2.5, 1} y f(x*) = 9.5. Comprobemoslo con Mathematica
Maximize@3x1+2x2,
5 x1 + 10 x2 £ 30 &&
10 x1 + 5 x2 £ 30 &&
x1 + x2 £ 3.5 &&
20 x1 + 4 x2 ³ 20 &&
4 x1 + 20 x2 ³ 20,
8x1, x2<
D

89.5, 8x1 ® 2.5, x2 ® 1.<<

Justo el resultado derivado.

A estas alturas creo que ya apreciaras las bondades de los solvers al permitirte introducir los LPs en cualquier formato e.g. Min, Max, ≥, ≤, Š, …

Iteracion
12 simplex.nb

Iteracion
Durante esta etapa solo un aspecto debe ser considerado el cual es conocido como

Degeneracion
Maximize z = 3 x1 + 2 x2
x1,x2
s.t. 5 x1 +10 x2 £ 30
10 x1 + 5 x2 £ 60
El tableau inicial es el siguiente:

Cj 3 2 0 0
XB x1 x2 s1 s2 RHS
0 s1 5 10 1 0 30 ™ ?
0 s2 10 5 0 1 60 ™ ?
cj - zj 3 2 0 0 0

Es claro que en el problema anterior, debemos entrar a x1, sin embargo esto nos lleva a decidir entre sacar s1 o s2, ya que la razon entre el RHS y ellas es
la misma. Ya que hay un empate este lo resolveremos de manera arbitraria. Veamos que pasa, comenzemos sacando a s1

Cj 3 2 0 0
XB x1 x2 s1 s2 RHS
0 s1 5 10 1 0 30 ™

0 s2 10 5 0 1 60
cj - zj 3 2 0 0 0

Pivotendo llegamos se produce el siguiente tableau. Observa que el empate anterior produce un cero en la columna RHS asociado a la variable que no salio
(o no salieron si fue un empate multiple).

Cj 3 2 0 0
XB x1 x2 s1 s2 RHS
1
3 x1 1 2 0 6
5
0 s2 0 -15 -2 1 0
3
cj - zj 0 -4 - 0 -18
5

Ahora no hay opcion para entrar variables, ya que todas las entradas del ultimo renglon son negativas. La solucion sera x*={6,0} con un valor para la
funcion objetivo de f(x*)=18.Ahora veamos que habria pasado si hubiesemos optado por sacar primero a s2. Es decir nuestro tableau inicial seria.

Cj 3 2 0 0
XB x1 x2 s1 s2 RHS
0 s1 5 10 1 0 30
0 s2 10 5 0 1 60 ™

cj - zj 3 2 0 0 0

Pivoteando para sacar a s2 de la base llegamos al siguiente tableau

Cj 3 2 0 0
XB x1 x2 s1 s2 RHS
15 1
0 s1 0 1 - 0™
2 2

1 1
3 x1 1 0 6
2 10
1 3
cj - zj 0 0 - -18
2 10

Ahora podemos mejorar aun mas introduciendo x2 y sacando la variable s1.

Cj 3 2 0 0
XB x1 x2 s1 s2 RHS
2 1
0 x2 0 1 - 0
15 15
1 2
3 x1 1 0 - 6
15 15
1 4
cj - zj 0 0 - - -18
15 15
simplex.nb 13

Cj 3 2 0 0
XB x1 x2 s1 s2 RHS
2 1
0 x2 0 1 - 0
15 15
1 2
3 x1 1 0 - 6
15 15
1 4
cj - zj 0 0 - - -18
15 15

Nota que el ultimo paso fue solo para reafirmar que x2 tiene un valor de cero en la base, hecho que ya era evidente al no pertenecer a la base. Hemos
llegado al mismo resultado que la eleccion anterior, sin embargo hemos realizado una iteracion mas de las estrictamente necesarias. Simplex no fue capaz
de detectar la terminacion del mismo, sin embargo recuerda que esa es la filosofia del simplex: tratar de buscar soluciones no decrecientes como lo fue en
este caso.
Graficamente tenemos
x2
12

10

x1
1 2 3 4 5 6

Lo ocurrido previamente es lo que se conoce como degeneracion. Esta es una anomalia del Simplex el cual se refleja en iteraciones adicionales que no
añ adenvalor a la solucion del problema. Esta siempre se presentara cuando hay empates entre las variables candidatas a dejar la base, ya que eso asegura
que una de las variables de la base tendra un valor de cero. Por tal la razon, esta variable siempre sera candidata a salir ya que ∆i sera cero en ese caso.
Dado que esta sale, la funcion no mejorara. Esto es debido a que el incremento en el valor de la funcion objetivo esta expresado como ∆i Ic j - z j M. en donde
j es el indice de la columna de la variable que entra x j .Esto puede presentarse a la mitad del calculo cuando uno de los RHS se hace cero. Este fenomeno
ocurre durante las iteraciones, sin embargo, si el problema tiene un optimo, entonces Simplex terminara. Es decir, la degeneracion solo añ ade unas
iteraciones mas a la solucion, las cuales no aportan nada a la misma.

Terminacion
En esta seccion discutiremos tres aspectos a evaluar en la terminacion del Simplex los cuales son

Optimos alternados
Considere el siguiente LP

Maximize z = 2 x1 + x2
x1,x2
s.t. 5 x1 +10 x2 £ 30
10 x1 + 5 x2 £ 20
El tableau inicial a este problema (T0), es el siguiente

Cj 2 1 0 0
XB x1 x2 s1 s2 RHS
0 s1 5 10 1 0 30
(T0)
0 s2 10 5 0 1 20 ™

cj - zj 2 1 0 0 0
14 simplex.nb

Cj 2 1 0 0
XB x1 x2 s1 s2 RHS
0 s1 5 10 1 0 30
(T0)
0 s2 10 5 0 1 20 ™

cj - zj 2 1 0 0 0

Al entrar x1 a la base elegimos sacar a s2. Al hacer el pivoteo llegamos al siguiente tableau (T1)

Cj 2 1 0 0
XB x1 x2 s1 s2 RHS
15 1
0 s1 0 1 - 20 ™
2 2 (T1)
1 1
2 x1 1 0 2
2 10
1
cj - zj 0 0 0 - -4
5

Ahora tenemos tres ceros para escoger, sin embargo como x1 acaba de entrar escogemos a x2, por lo cual s1 es elegida para abandonar la base. Al hacer el
pivoteo llegamos al siguiente tableau (T2)

Cj 2 1 0 0
XB x1 x2 s1 s2 RHS
2 1 8
1 x2 0 1 - ™
15 15 3 (T2)
1 2 2
2 x1 1 0 -
15 15 3
1
cj - zj 0 0 0 - -4
5

En este tableau si metemos a s1 a la base, entonces x2 es el candidato a salir, con lo cual llegamos al siguiente tableau (T3).

Cj 2 1 0 0
XB x1 x2 s1 s2 RHS
15 1
0 s1 0 1 - 20
2 2 (T3)
1 1
2 x1 1 0 2
2 10
1
cj - zj 0 0 0 - -4
5

Como puedes observar T3=T1 i.e. el tableau de la iteracion previa, por lo cual empezariamos a tener optimos alternados. Como se puede apreciar
estariamos alternando soluciones mas no obtendriamos ninguna mejora para z* . Lo anterior quiere decir que Simplex esta detectando dos soluciones
optimas. En realidad hay una infinidad de soluciones. Veamoslo graficamente
simplex.nb 15

x2
6

x1
1 2 3 4 5 6

Para este caso la condicion de terminacion debe ser modificada. Esto es, si alguna de las variables no basicas tienen valor de cero y es introducida a la base,
entonces la funcion no mejorara. Sin embargo, es necesario calcular la otra solucion? En general es mejor calcularla ya que esto quiere decir que podemos
obtener la solucion optima con diferentes combinaciones.

No Acotamiento
Ya hemos visto el problema de no acotamiento en la seccion correspondiente. Este problema se presenta cuando el algoritmo es capaz de determinar la
variable que entra pero no la que sale. Esto se llama no acotamiento porque la variable escogida para entrar puede tomar cualquier valor sin que haya
alguna restriccion que lo limite i.e. todas las restricciones son factibles. Una posible razon para este comportamiento es el orden de eleccion de las variables
que entran el cual lo tenemos muy rigido c j - z j . Pudiesemos introducir algunas otras reglas para hacerlo mas flexible, algunas posibles son:

è El valor mas grande de c j - z j


è La regla del incremento mas grande
è El primer positivo c j - z j
è Aleatorio

Recordemos tambien que el no acotamiento depende de la funcion objetivo, ya que algunas de estas estaran acotadas y algunas otras no.

No Factibilidad
La no factibilidad se presenta cuando el problema no tiene solucion. Esto quiere decir que no hay soluciones factibles i.e. XB = 8<. La factibilidad o no de
un problema es reflejada por Simplex al no poder sacar variables artificiales de la base. Por ejemplo considere el siguiente problema:
Maximize z = 2 x1 + x2
x1,x2
s.t. 5 x1 +10 x2 ³ 30
10 x1 + 10 x2 £ 20
16 simplex.nb

El tableau inicial a este problema (T0), es el siguiente

Cj 2 1 0 0 -M
XB x1 x2 e1 s1 a1 RHS
-M a1 5 10 -1 0 1 30
0 s1 10 10 0 1 0 20 ™

cj - zj 5 M + 2 10 M + 1 -M 0 0 0

Al entrar x2 a la base elegimos sacar a s1. Al hacer el pivoteo llegamos al siguiente tableau (T1)

Cj 2 1 0 0 -M
XB x1 x2 e1 s1 a1 RHS
0 a1 -5 0 -1 -1 1 10
1
2 x2 1 1 0 0 2
10
1
cj - zj 1 - 5 M 0 -M - -M 0 -
10

Como puedes ver ahora ninguna de las variables no basicas puede entrar a la base, sin embargo la variable artificial a1 aun esta en la base. Simplex no ha
sido capaz de sacarla de la misma, por lo cual el problema no es factible. A proposito, puedes darle una interpretacion a a1=10? Parece que las variables
artificiales aportan informacion util en el caso de que el problema no sea factible.
Veamos esta problema graficamente:

x2
6

x1
1 2 3 4 5 6
simplex.nb 17

Resumen de las Condiciones de Terminacion


A continuacion se presenta un resumen de las condiciones de terminacion.

è Solucion Óptima : Todas las variables no basicas tienen valores negativos c j - z j . Estas deben ser variables de decision, slack u exceso. El
algoritmo termina con una solucion optima.
è Óptimos alternados: Todas las variables no basicas tienen c j - z j <= 0, pero al menos una de ellas tiene c j - z j = 0. Esto indica optimos
alternados, proceda a encontrar la otra BFS y termine.
è No Acotamiento: Las variables basicas son de decision o tipo slack. El algoritmo es capaz de encontrar la variable que entra pero no la que sale.
Esto indica no acotamiento y el algoritmo termina.
è Infactibilidad: Todas las variables no basicas tienen valores negativos i.e. c j - z j £ 0, pero aun existen variables artificiales en la base. Esto
indica infactibilidad y el algoritmo termina.

Ciclado
El ciclado es un fenomeno muy poco comun que ocurre al simplex en el cual las soluciones basicas factibles estan haciendo un ciclo en las iteraciones i.e.
despues de un determinado numero de iteraciones se llega a un tableau obtenido previamente. Esto hace que el Simplex nunca encuentre la solucion optima
ya que esta atrapado en el ciclo. De hecho, es dificil construir problemas que ciclen. Considere el siguiente ejemplo

3 1
Maximize z = - x1 + 150 x2 - x3 + 6 x4
x1,x2,x3,x4 4 50
1 1
s.t. x1 - 60 x2 - x3 + 9 x4 £ 0
4 25
1 1
x1 - 90 x2 - x3 + 3 x4 £ 0
2 50
x3 £ 0
El tableau inicial sera

3 1
Cj - 150 - 6 0 0 0
4 50
XB x1 x2 x3 x4 s1 s2 s3 RHS
1 1
0 s1 -60 - 9 1 0 0 0™
4 25
(T0)
1 1
0 s2 -90 - 3 0 1 0 0
2 50
0 s3 0 0 1 0 0 0 1 1
3 1
cj - zj - 150 - 6 0 0 0 0
4 50

El entrar a x1 en lugar de s1 nos lleva al tableau

3 1
Cj - 150 - 6 0 0 0
4 50
XB x1 x2 x3 x4 s1 s2 s3 RHS
4
0 x1 1 -240 - 36 4 0 0 0
25
3
(T1)
0 s2 0 30 -15 -2 1 0 0™
50

0 s3 0 0 1 0 0 0 1 1
7
cj - zj 0 -30 - 33 3 0 0 1
50

El entrar a x2 en lugar de s2 nos lleva al siguiente tableau

3 1
Cj - 150 - 6 0 0 0
4 50
XB x1 x2 x3 x4 s1 s2 s3 RHS
8
0 x1 1 0 25
-84 -12 8 0 0™
(T2)
1 1 1 1
0 x2 0 1 - - 0 0
500 2 15 30
0 s3 0 0 1 0 0 0 1 1
2
cj - zj 0 0 - 18 1 1 0 1
25
18 simplex.nb

3 1
Cj - 150 - 6 0 0 0
4 50
XB x1 x2 x3 x4 s1 s2 s3 RHS
8
0 x1 1 0 25
-84 -12 8 0 0™
(T2)
1 1 1 1
0 x2 0 1 - - 0 0
500 2 15 30
0 s3 0 0 1 0 0 0 1 1
2
cj - zj 0 0 - 18 1 1 0 1
25

El entrar a x3 en lugar de x1 nos lleva al siguiente tableau

3 1
Cj - 150 - 6 0 0 0
4 50
XB x1 x2 x3 x4 s1 s2 s3 RHS
25 525 75
0 x3 0 1 - - 25 0 0
8 2 2

1 1 1 1 (T3)
0 x2 - 1 0 40
- 0 0™
160 120 60

25 525 75
0 s3 - 0 0 -25 1 0
8 2 2
1
cj - zj 0 0 -3 -2 3 0 1
4

El entrar a x4 en lugar de x2 nos lleva al siguiente tableau

3 1
Cj - 150 - 6 0 0 0
4 50
XB x1 x2 x3 x4 s1 s2 s3 RHS
125
0 x3 - 10 500 1 0 50 -150 0 0™
2
1 1 2
(T4)
0 x4 - 40 0 1 - 0 0
4 3 3
125
0 s3 -10 500 0 0 -50 150 1 0
2
1
cj - zj - 120 0 0 -1 1 0 1
2

El entrar a s1 en lugar de x3 nos lleva al siguiente tableau

3 1
Cj - 150 - 6 0 0 0
4 50
XB x1 x2 x3 x4 s1 s2 s3 RHS
5 1
0 s1 - 210 0 1 -3 0 0
4 50

1 1 1
(T5)
0 x4 -30 - 1 0 3
0 0™
6 150

0 s3 0 0 1 0 0 0 1 0
7 1
cj - zj - 330 0 0 -2 0 1
4 50

El entrar a s2 en lugar de x4 nos lleva al siguiente tableau

3 1
Cj - 150 - 6 0 0 0
4 50
XB x1 x2 x3 x4 s1 s2 s3 RHS
1 1
0 s1 -60 - 9 1 0 0 0™
4 25
(T6)
1 1
0 s2 -90 - 3 0 1 0 0
2 50
0 s3 0 0 1 0 0 0 1 0
3 1
cj - zj - 150 - 6 0 0 0 1
4 50

Pero nota que T(6)=T(0), por lo cual llegamos al punto de donde partimos.

Hagamos otro ejemplo (Chvatal). Considere el siguiente problema


simplex.nb 19

Hagamos otro ejemplo (Chvatal). Considere el siguiente problema

Maximize z = 10 X1 - 57 X2 - 9 X3 - 24 X4
x1,x2,x3,x4
s.t. 0.5 X1 - 5.5 X2 - 2.5 X3 + 9 X4 £ 0
0.5 X1 - 1.5 X2 - 0.5 X3 + X4 £ 0
x1 £ 1
El tableau inicial es

Cj 10 -57 -9 -24 0 0 0
XB x1 x2 x3 x4 s1 s2 s3 RHS
1 11 5
0 s1 - - 9 1 0 0 0™
2 2 2
(T0)
1 3 1
0 s2 - - 1 0 1 0 0
2 2 2
0 s3 1 0 0 0 0 0 1 1
cj - zj 10 -57 -9 -24 0 0 0 0

Entra x1 y sale s1 lo cual lleva al siguiente tableau:

Cj 10 -57 -9 -24 0 0 0
XB x1 x2 x3 x4 s1 s2 s3 RHS
10 x1 1 -11 -5 18 2 0 0 0
(T1)
0 s2 0 4 2 -8 -1 1 0 0™

0 s3 0 11 5 -18 -2 0 1 1
cj - zj 0 53 41 -204 -20 0 0 0

Entra x2 y sale s2 lo cual lleva al siguiente tableau:

Cj 10 -57 -9 -24 0 0 0
XB x1 x2 x3 x4 s1 s2 s3 RHS
1 3 11
10 x1 1 0 -4 - 0 0™
2 4 4
(T2)
1 1 1
-57 x2 0 1 -2 - 0 0
2 4 4
1 3 11
0 s3 0 0 - 4 - 1 1
2 4 4
29 27 53
cj - zj 0 0 -98 - - 0 0
2 4 4

Entra x3 y sale x1 lo cual lleva al siguiente tableau:

Cj 10 -57 -9 -24 0 0 0
XB x1 x2 x3 x4 s1 s2 s3 RHS
3 11
-9 x3 2 0 1 -8 - 0 0
2 2
1 5
(T3)
-57 x2 -1 1 0 2 - 0 0™
2 2

0 s3 1 0 0 0 0 0 1 1
cj - zj -29 0 0 18 15 -93 0 0

Entra x4 y sale x2 lo cual lleva al siguiente tableau:

Cj 10 -57 -9 -24 0 0 0
XB x1 x2 x3 x4 s1 s2 s3 RHS
1 1 9
-9 x3 1 -2 - 0 - 0 0™
2 4 4
(T4)
1 1 1 1
-24 x4 0 - - 1 - 0 0
2 4 8 8
1 1 9
0 s3 0 2 0 - 1 1
2 4 4
11 51
cj - zj 0 -49 -10 0 - 0 0
2 2
20 simplex.nb

Cj 10 -57 -9 -24 0 0 0
XB x1 x2 x3 x4 s1 s2 s3 RHS
1 1 9
-9 x3 1 -2 - 0 - 0 0™
2 4 4
(T4)
1 1 1 1
-24 x4 0 - - 1 - 0 0
2 4 8 8
1 1 9
0 s3 0 2 0 - 1 1
2 4 4
11 51
cj - zj 0 -49 -10 0 - 0 0
2 2

Entra s1 y sale x3 lo cual lleva al siguiente tableau:

Cj 10 -57 -9 -24 0 0 0
XB x1 x2 x3 x4 s1 s2 s3 RHS
0 s1 -4 8 2 0 1 -9 0 0
1 3 1 (T5)
-24 x4 - - 1 0 1 0 0™
2 2 2

0 s3 1 0 0 0 0 0 1 1
cj - zj 22 -93 -21 0 0 24 0 0

Entra s2 y sale x4 lo cual lleva al siguiente tableau:

Cj 10 -57 -9 -24 0 0 0
XB x1 x2 x3 x4 s1 s2 s3 RHS
1 11 5
0 s1 - - 9 1 0 0 0
2 2 2
1 3 1
(T6)
0 s2 - - 1 0 1 0 0
2 2 2
0 s3 1 0 0 0 0 0 1 1
cj - zj 10 -57 -9 -24 0 0 0 0

Que es con el que comenzamos el simplex i.e. T(6)=T(0). Hemos completado un ciclo dentro del politope. Esto pudiese haber sido resuelto si se hubiese
modificado la manera en que se elige la variable que entra y si el problema fuese factible. Si seguimos aplicando el Simplex con la misma regla para la
entrada y salida de variables seguiremos el mismo camino y haremos otro ciclo. Vemos que dice mathematica acerca de este problema:
Maximize@10x1-57x2-9x3-24x4,
0.5x1-5.5x2-2.5x3+9x4£0&&
0.5x1-1.5x2-0.5x3+x4£0&&
x1£1&&
x1³ 0&&x2³ 0&&x3³ 0&&x4³ 0,8x1,x2,x3,x4<
D
81., 8x1 ® 1., x2 ® 0., x3 ® 1., x4 ® 0.<<

Teorema Fundamental de la Programacion Lineal


Todo programa en su forma estandard tiene las siguientes propiedades
1. Si no tiene solucion optima, entonces es infactible o no acotada
2. Si tiena al menos una solucion factible, entonces tiene una solucion basica factible
3. Si tiene una solucion optima, entonces tiene una solucion optima factible

Esto lleva al teorema fundamental del LP

Todo problema de LP es ya sea factible, no acotado o no factible. Si tiene un FS entonces tiene una BFS. Si tiene una solucion optima entonces tiene una
BFS optima.

Variables No Restringidas
Considere el siguiente problema
simplex.nb 21

Maximize z = 3 x1 + 2 x2
x1,x2
s.t. 5 x1 +10 x2 ³ 30
10 x1 + 10 x2 £ 20
x1 Î R, x2 ³ 0
Construyamos un problema equivalente basado en el anterior. Para esto hagamos x1=x3-x4, lo cual nos lleva al siguiente problema

Maximize z = 2 x2 + 3 x3 - 3 x4
x2, x3, x4
s.t. 5 x3 -5 x4 +10 x2 £ 30
10 x3 - 10 x4 + 5 x2 £ 30
x2, x3, x4 ³ 0
Hasta ahora hemos logrado salvar la restriccion de no negatividad de las variables. Resolvamos este problema. El tableau inicial sera:

Cj 2 3 -3 0 0
XB x2 x3 x4 s1 s2 RHS
0 s1 10 5 -5 1 0 30
0 s2 5 10 -10 0 1 30 ™

cj - zj 2 3 -3 0 0 0

Entra x3 y sale s2

Cj 2 3 -3 0 0
XB x2 x3 x4 s1 s2 RHS
15 1
0 s1 0 0 1 - 15 ™
2 2

1 1
3 x3 1 -1 0 3
2 10
1 3
cj - zj 0 0 0 - -9
2 10

Entra x2 y sale s1

Cj 2 3 -3 0 0
XB x2 x3 x4 s1 s2 RHS
2 1
2 x2 1 0 0 - 2
15 15
1 2
3 x3 0 1 -1 - 2
15 15
1 4
cj - zj 0 0 0 - - -10
15 15

x4 trata de entrar a la base, pero no es un movimiento legal ya que hay un cero en la columna correspondiente, lo cual elimina la posibilidad de que haya
optimos alternados. Es decir hemos llegado al optimo con valores x*=(2,2,0,0,0), para el problema modificado. Ahora necesitamos investigar si la variable
original, x1, pertenece a la base. Sabemos que x1=x3-x4, por lo cual x1=2-0=2. Como x1 es mayor de cero, entonces ahora podemos asegurar que
pertenece a la base. La solucion al problema original es x*=(2,2,0,0), con f(x*)=10.

Algunos Miscelaneos
De manera colateral, simplex puede ser usada como una herramienta para la solucion de otros problemas del Algebra Lineal. Aqui son presentados dos de
estos enfoques.

Solucion de SELs con valores positivos


Simplex puede ser usado para la solucion de SELs cuya solucion es positiva i.e. xi ³ 0. Considera el siguiente SEL.

Añ adamos variables artificiales y definamos una nueva funcion objetivo en terminos de estas tal como lo hicimos en el metodo de las dos fases. Entonces
el problema a resolver sera
22 simplex.nb

Maximize z = -a1 - a2
x1,x2
s.t. 10 x1 + 5 x2 +a1 = 30
5 x1 + 10 x2 + a2 = 30
x1, x2, a1, a2 ³ 0
El tableau inicial sera

Cj 0 0 -1 -1
XB x1 x2 a1 a2 RHS
-1 a1 10 5 1 0 30
-1 a2 5 10 0 1 30 ™

cj - zj 15 15 0 0 -

Entra x2 y sale a2 lo cual lleva al siguiente tableau:

Cj 0 0 -1 -1
XB x1 x2 a1 a2 RHS
15 1
-1 a1 0 1 - 15 ™
2 2

1 1
0 x2 1 0 3
2 10
15 3
cj - zj 0 0 - -
2 10

Entra x1 y sale a1 lo cual lleva al siguiente tableau:

Cj 0 0 -1 -1
XB x1 x2 a1 a2 RHS
2 1
0 x1 1 0 - 2
15 15
1 2
0 x2 0 1 - 2
15 15
cj - zj 0 0 -1 -1 -

Se ha terminado el proceso con una solucion x*=(2,2)

Detectando Dependencia Lineal


Simplex puede ser usado para la deteccion de dependencia lineal en SELs. Considera el siguiente SEL.

10 x1 + 5 x2 = 30
2 x1 + x2 = 30
Añ adamos variables artificiales y definamos una nueva funcion objetivo en terminos de estas tal como lo hicimos en el metodo de las dos fases. Entonces
el problema a resolver sera
Maximize z = -a1 - a2
x1,x2
s.t. 10 x1 + 5 x2 +a1 = 30
2 x1 + x2 + a2 = 30
x1, x2 £ 0
El tableau inicial sera

Cj 0 0 -1 -1
XB x1 x2 a1 a2 RHS
-1 a1 10 5 1 0 30 ™

-1 a2 2 1 0 1 30
cj - zj 12 6 0 0 -

Entra x1 y sale a1 lo cual lleva al siguiente tableau:


simplex.nb 23

Cj 0 0 -1 -1
XB x1 x2 a1 a2 RHS
1 1
0 x1 1 0 3™
2 10

1
-1 a2 0 0 - 1 24
5
6
cj - zj 0 0 - 0 -
5

Entra x2 y sale x1 lo cual lleva al siguiente tableau:

Cj 0 0 -1 -1
XB x1 x2 a1 a2 RHS
1
0 x2 2 1 0 6™
5
1
-1 a2 0 0 - 1 24
5
6
cj - zj 0 0 - 0 -24
5

Entra x1 y sale x2 pero nos dejaria exactamente en el tableau anterior, con lo cual concluimos que a2 no saldra de la base. Esto es una consecuencias de la
dependencia lineal de las columnas de la matriz.

Вам также может понравиться