Sei sulla pagina 1di 64

* MTODO DEL

SIMPLEX

Ing. Wili Nelson TARMA VIVAS

*Introduccin
* El

mtodo del simplex es un algoritmo general para resolver


cualquier problema de programacin lineal

* Admite cualquier nmero de variables.


* Es un mtodo iterativo que nos conduce

progresivamente hasta

la solucin final.
* En cada iteracin examina un punto extremo de la regin
factible S.
* Antes de usarlo es preciso pasar el problema a la llamada forma
estndar, que estudiaremos a continuacin.

*Forma estndar
*Definicin:

Un problema de programacin
lineal est en forma estndar si est
expresado como:
NOTACIN ESCALAR

NOTACIN MATRICIAL

Maximizar c1 x1 ... cn x n

Maximizar c T x

Sujeto a :
a11x1 ... a1n xn b1

Sujeto a :

...
am1 x1 ... amn xn bm
x1 ,..., x n 0

Ax b
x0

*PASO A LA FORMA
ESTNDAR

* Las

dificultades que podemos encontrar para pasar un


problema a forma estndar, y las soluciones correspondientes
son:

* Si aparece una inecuacin del tipo aiTx bi.


* En tal caso, aadimos una nueva variable, llamada

variable de
exceso, si, con la restriccin si 0, de tal manera que la
inecuacin se convierte en la ecuacin aiTx si = bi.

* La

nueva variable aparece con coeficiente cero en la funcin


objetivo.

*PASO A LA FORMA

ESTNDAR
*Si aparece una inecuacin del tipo a

x bi.

*En

tal caso, aadimos una nueva variable, llamada


variable de holgura, si, con la restriccin si 0, de tal
manera que la inecuacin se convierte en la ecuacin
aiTx + si = bi.

*La

nueva variable aparece con coeficiente cero en la


funcin objetivo.
*Aparece una variable xi que no tiene restriccin de no
negatividad.
*En este caso, sustituimos xi en todas las restricciones y
en la funcin objetivo por la diferencia de dos variables
nuevas xn+1 y xn+2, que s tienen restriccin de no
negatividad: xn+1 0, xn+2 0.

*PASO A LA FORMA
ESTNDAR

*El problema es de minimizar, y no de maximizar.


*En este caso, tendremos en cuenta que minimizar

una
funcin objetivo F es lo mismo que maximizar la funcin
objetivo F.
*Por tanto, basta con multiplicar por 1 la funcin objetivo.

*Siguiendo

estas guas podemos pasar cualquier


problema de programacin lineal a la forma estndar.
Debemos tener en cuenta que las nuevas variables que
se insertan para resolver un inconveniente no pueden
reutilizarse para resolver otro

*Ejemplos de paso a la forma


estndar

Maximizar Z = x1 + 2x2

Maximizar Z = x1 + 2x2 + 0x3

Sujeto a:
1/2 x1 + x2 1

Sujeto a:
1/2 x1 + x2 +x3 = 1

x1

+ x2 2

x1 + x2 2

x1, x2 0

x1, x2 , x3 0

Maximizar Z = x1 + 2x2 + 0x3 + 0x4


Sujeto a:
1/2 x1 + x2 +x3
x1 + x2

+x4 = 2

x1, x2 , x3 , x4 0

=1

*Ejemplos de paso a la forma


estndar

Maximizar Z = 7x1 9x2

Maximizar Z = 7x1 9x2 + 0x3

Sujeto a:
4 x1 + 8x2 2

Sujeto a:
4 x1 + 8x2 x3

3x1 + x2

3x1 + x2

x1, x2 0

=2

x1, x2 , x3 0

Maximizar Z = 7x1 9x2 + 0x3 + 0x4


Sujeto a:
4 x1 + 8x2 x3
3x1

+ x2

=2
+x4 = 8

x1, x2 , x3 , x4 0

*Ejemplos de paso a la forma


estndar
Maximizar 3x1 5x2

Maximizar 3x1 5x3 + 5x4

Sujeto a:
10 x1 + 18x2 = 7

Sujeto a:
10 x1 +18x3 18x4 = 2

4x1 + 5x3 5x4 9

4x1 + 5x2
x1 0

x1, x3 , x4 0

Maximizar 3x1 5x3 + 5x4 + 0x5


Sujeto a:
10 x1 +18x3 18x4
4x1 + 5x3 5x4
x1, x3 , x4 , x5 0

=2
+x5 = 9

*Ejemplos de paso a la
forma estndar

Minimizar 7x1 4x2

Maximizar 7x1 + 4x2

Sujeto a:
8 x1 + 2x2 1

Sujeto a:
8 x1 + 2x2 1

x1 + 5x2 = 6

x1 + 5x2 = 6

x1, x2 0

x1, x2 0

Maximizar 7x1 + 4x2 + 0x3


Sujeto a:
8 x1 + 2x2 + x3 = 1
x1 + 5x2
x1, x2 , x3 0

=6

* SITUACIN INICIAL PARA APLICAR


EL MTODO SIMPLEX

*Partimos de un problema de programacin lineal, con m


ecuaciones y n incgnitas (o variables de decisin)
expresado en forma estndar:
Maximizar c1 x1 ... cn x n
Sujeto a :
a11x1 ... a1n x n b1
...
am1 x1 ... amn xn bm
x1 ,..., xn 0

Adems el mtodo simplex exige que bi 0 i{1, ...,


m}

*VERSIN BSICA DEL

ALGORITMO SIMPLEX

*1. Construir la primera tabla


*2. Mientras Condicin Parada = Falso hacer
*2.1. Elegir variable que sale
*2.2. Elegir variable que entra
*2.3. Actualizar tabla
*3. Dar resultado

*CONSTRUCCIN DE LA
PRIMERA TABLA

*Dado el problema tal como se explica en Situacin

inicial, lo primero que hay que hacer es localizar


un conjunto de m variables de tal manera que si
eliminramos las dems y reorganizsemos las
ecuaciones, nos quedara la matriz de coeficientes
del sistema de ecuaciones convertida en la matriz
identidad.
*Estas m variables formarn la primera base, y la
solucin del sistema de ecuaciones se que obtendra
con esos cambios es una solucin bsica factible
(SBF).

*CONSTRUCCIN DE LA
PRIMERA TABLA

*Llamaremos

i1, i2,..., im a los ndices de las m


variables de la base, de tal manera que la variable
ij es la que tiene un uno de coeficiente en la
ecuacin nmero j.
*En las tablas aparecen los valores zi, que pueden
calcularse mediante la siguiente ecuacin: z j=cBTPj,
donde T indica trasposicin de vectores.
*Construimos la primera tabla de esta manera (lo
que va en negrita son rtulos que se ponen tal
cual):

*MODELO DE TABLA
c1

c2

...

cn

Base

cB

P0

P1

P2

Pn

Pi1

ci1

bi1

a11

a12

a1n

Pi2

ci2

bi2

a21

a22

a2n

...

Pim

cim

bim

am1

am2

amn

z0

z 1 c 1

z2 c2

zn cn

*CONDICIN DE PARADA.
CRITERIO DE ENTRADA

*Condicin de parada: El bucle se detiene cuando la

tabla actual es tal que en su ltima fila no aparece


ningn valor estrictamente negativo
*Eleccin de la variable que entra: En caso de que
el algoritmo no se haya detenido, hay que elegir
qu variable, de entre las que no estn en la base,
va a entrar en dicha base.
*Para ello nos fijamos en los valores estrictamente
negativos que haya en la ltima fila.
*Escogeremos la variable j correspondiente al ms
negativo (es decir, mayor valor absoluto) de estos
valores.

*CRITERIO DE SALIDA
*Eleccin

de la variable que sale: Una vez elegida


la variable j que entra, nos fijamos en la columna
cuyo ttulo es Pj.

*Dividimos

el vector P0 entre el Pj, componente a


componente.
*De entre las fracciones con denominador
estrictamente positivo que resulten (es decir, las
correspondientes a componentes estrictamente
positivas de Pj), escogemos la mnima.

*La fila donde hemos

obtenido este valor mnimo es


la de la variable de la base que sale.

* ACTUALIZACIN DE LA TABLA
* Construimos una tabla nueva, en la que las dos primeras filas

son las mismas que en la antigua (son los ci y los rtulos). Las
columnas con ttulos cB y Base slo se ven alteradas en un
elemento cada una: el elemento de la fila correspondiente a
la variable que ha cambiado en la base.
* La subtabla formada por los ajk y los biz debe ser alterada de
tal modo que en cada una de sus filas haya un uno en el
elemento de la columna de la variable de la base que
corresponde a esa fila, y un cero en los elementos de las
columnas de las dems variables de la base.
* Esto debe hacerse usando siempre transformaciones
elementales (es decir, las que se usan para resolver sistemas
de ecuaciones lineales por Gauss-Jordan).

* ACTUALIZACIN DE LA TABLA
* Tras

haber hecho esto, la ltima fila de la tabla global se


actualiza recalculando sus valores con las frmulas que se
usaron para la construccin de la primera tabla.
* Ntese que, como lo nico que hacemos son transformaciones
elementales, en realidad lo que estamos haciendo en cada
iteracin del mtodo simplex es expresar el sistema de
ecuaciones de otra manera.

*RESULTADO DEL MTODO


* Los

valores ptimos de las variables que forman la base


vienen dados por la columna P0 de la ltima tabla.

* El resto de las variables tienen valor ptimo cero.


* El valor ptimo de la funcin objetivo (funcin que estbamos
maximizando) es el z0 de la ltima tabla.

*Ejemplos
*Problema:
Maximizar Z= x1 + 2x2 sujeto a:
-1/2 x1 + x2 1
x1

+ x2 2

x1, x2 0

*Ejemplos
Tabla 1

Maximizar Z = x1 + 2x2 sujeto a:


-1/2 x1 + x2 1
x1 + x2 2
x1, x2 0

Base

cB

P0

P1

P2

P3

P4

P3

-1/2

P4

-1

-2

Criterio de entrada: mn { -1, -2 } = -2, luego entra x2


Criterio de salida: mn { 1, 2 } = 1, luego sale x3

*Ejemplos
Tabla 2
1

Base

cB

P0

P1

P2

P3

P4

P2

-1/2

P4

3/2

-1

-2

Criterio de entrada: mn { -2 } = -2, luego entra x1


Criterio de salida: mn { 2/3 } = 2/3, luego sale x4

*Ejemplos
Tabla 3
1

Base

cB

P0

P1

P2

P3

P4

P2

4/3

2/3

1/3

P1

2/3

-2/3

2/3

10/3

2/3

4/3

Se cumple la condicin de parada. Valor ptimo: 10/3


Solucin ptima: (2/3, 4/3, 0, 0)T

*Ejemplos
* Problema:
Maximizar Z = x1 + 6x2 sujeto a:
-2x1 + x2 4
-x1

+ x2 1

2x1 + x2 6
x1, x2 0

*Ejemplos

Maximizar
-2x1 + x2
-x1 + x2
2x1 + x2
x1, x2 0

Tabla 1

Z = x1 + 6x2 sujeto a:
4
1
6

Base

cB

P0

P1

P2

P3

P4

P5

P3

-2

P4

-1

P5

0
-1
-6
0
0
0
Criterio de entrada: mn { -1, -6 } = -6, luego entra x2
Criterio de salida: mn { 4, 1, 6 } = 1, luego sale x4

*Ejemplos
Tabla 2
1

Base

cB

P0

P1

P2

P3

P4

P5

P3

-1

-1

P2

-1

P5

-1

-7

Criterio de entrada: mn { -7 } = -7, luego entra x1


Criterio de salida: mn { 5/3 } = 5/3, luego sale x5

*Ejemplos
Tabla 3
1

Base

cB

P0

P1

P2

P3

P4

P5

P3

14/3

-4/3

1/3

P2

8/3

2/3

1/3

P1

5/3

-1/3

1/3

53/3

11/3

7/3

Se cumple la condicin de parada. Valor ptimo: 53/3


Solucin ptima: (5/3, 8/3, 14/3, 0, 0) T

*Ejemplos
* Problema:
Maximizar Z = 5x1 + 4x2 sujeto a:
3x1 + 3x2

10

12x1 + 6x2

24

x1, x2 0

*Ejemplos
Tabla 1

Maximizar Z = 5x1 + 4x2 sujeto


a:
3x1 + 3x2 10
12x1 + 6x2 24
x1, x2 0
5
4
0
0

Base

cB

P0

P1

P2

P3

P4

P3

10

P4

24

12

-5

-4

Criterio de entrada: mn { -5, -4 } = -5, luego entra x1


Criterio de salida: mn { 10/3, 2 } = 2, luego sale x4

*Ejemplos
Tabla 2
5

Base

cB

P0

P1

P2

P3

P4

P3

3/2

-1/4

P1

1/2

1/12

10

-3/2

5/12

Criterio de entrada: mn { -3/2 } = -3/2, luego entra x2


Criterio de salida: mn { 8/3, 4 } = 8/3, luego sale x3

*Ejemplos
Tabla 3
5

Base

cB

P0

P1

P2

P3

P4

P2

8/3

2/3

-1/6

P1

2/3

-1/3

1/6

14

1/6

Se cumple la condicin de parada. Valor ptimo: 14


Solucin ptima: (2/3, 8/3, 0, 0)T

*Ejemplos
* Problema:
Maximizar Z = 20x1 + 24x2 sujeto a:
3x1 + 6x2

60

4x1 + 2x2

32

x1

16

+ 2x2

x1, x2 0

*Ejemplos

Maximizar Z =
3x1 + 6x2

4x1 + 2x2

x1 + 2x2

x 1, x 2 0

Tabla 1

20x1 + 24x2 sujeto a:


60
32
16

20

24

Base

cB

P0

P1

P2

P3

P4

P5

P3

60

P4

32

P5

16

0
-20
-24
0
0
0
Criterio de entrada: mn { -20, -24 } = -24, luego entra x2
Criterio de salida: mn { 10, 16, 8 } = 8, luego sale x5

*Ejemplos
Tabla 2
20

24

Base

cB

P0

P1

P2

P3

P4

P5

P3

12

-3

P4

16

-1

P2

24

1/2

1/2

192

-8

12

Criterio de entrada: mn { -8 } = -8, luego entra x1


Criterio de salida: mn { 16/3, 16 } = 16/3, luego sale x4

*Ejemplos
Tabla 3
Base

cB

P0

20
P1

24
P2

0
P3

0
P4

0
P5

P3

12

-3

P1

20

16/3

1/3

-1/3

P2

24

16/3

-1/6

2/3

704/3

8/3

28/3

Se cumple la condicin de parada. Valor ptimo: 704/3


Solucin ptima: (16/3, 16/3, 12, 0, 0)T

* CASOS ANMALOS

* PROBLEMAS CON INFINITAS SOLUCIONES


*En la tabla final hay algn valor nulo en la ltima fila, que

corresponde a una variable que no est en la base.


*En tal caso, podramos introducir dicha variable en la
base, y nos saldra otra base que dara tambin el valor
ptimo.
*Esto quiere decir que el problema tiene infinitas
soluciones, todas ellas con el mismo valor ptimo de la
funcin objetivo.
*Sea K el nmero de vectores solucin obtenidos de esta
manera (habiendo K1 ceros extra), y sean dichos
vectores x1, x2, ..., xK.
*Entonces las infinitas soluciones del problema sern:
K

i 1

i 1

i x i , donde i 0,1, i 1

*Ejemplos
* Problema:
Maximizar Z = 6x1 + 3x2 sujeto a:
-x1

+ x2 1

2x1 + x2 6
x1, x2 0

*Ejemplos
Tabla 1

Maximizar Z = 6x1 + 3x2 sujeto


a:
-x1 + x2
1
2x1 + x2
6
x1, x2 0
6

Base

cB

P0

P1

P2

P3

P4

P3

-1

P4

-6

-3

Criterio de entrada: mn { -6, -3 } = -6, luego entra x1


Criterio de salida: mn { 3 } = 3, luego sale x4

*Ejemplos
Tabla 2
6

Base

cB

P0

P1

P2

P3

P4

P3

3/2

1/2

P1

1/2

1/2

18

Se cumple la condicin de parada. Valor ptimo: 18.


Primera solucin ptima: xA=(3, 0, 4, 0)T
En la ltima fila, el cero que no est en la base indica otra
solucin ptima. Para hallarla, hacemos entrar a x2

*Ejemplos
Tabla 3
6

Base

cB

P0

P1

P2

P3

P4

P2

8/3

2/3

1/3

P1

5/3

-1/3

1/3

18

Segunda solucin ptima: xB=(5/3, 8/3, 0, 0)T. Tambin


son soluciones ptimas todos los puntos del segmento
AxA+BxB, con A , B 0, A + B = 1.

*PROBLEMAS CON

SOLUCIN ILIMITADA
*Al

intentar elegir la variable que sale, nos


podemos encontrar con que la columna Pj de la
variable j que tena que entrar tiene todos sus
elementos negativos o nulos.
*En tal caso el problema tiene solucin ilimitada,
es decir, se puede hacer crecer el valor de la
funcin objetivo tanto como se quiera sin violar
ninguna restriccin.
*Para ello, bastara con hacer crecer
ilimitadamente la variable que tena que entrar
en la base.

*Ejemplos
* Problema:
Maximizar Z = x1 + x2 sujeto a:
5x1 - x2

x1

- 4 x2

x1, x2 0

*Ejemplos
Tabla 1

Maximizar Z = x1 + x2 sujeto a:
5x1 - x2 0
x1 - 4 x2 0
x1, x2 0
1

Base

cB

P0

P1

P2

P3

P4

P3

-5

P4

-4

-1

-1

Criterio de entrada: mn { -1, -1 } = -1, y elegimos que


entre x1
Criterio de salida: mn { 0/1 } = 0, luego sale x4

*Ejemplos
Tabla 2
1

Base

cB

P0

P1

P2

P3

P4

P3

-19

P1

-4

-5

Criterio de entrada: mn { -5 } = -5, luego entra x2


Criterio de salida: No hay fracciones con denominador
estrictamente positivo, luego el problema tiene
solucin ilimitada

* MTODO DE LAS
DOS FASES

*INTRODUCCIN
*Si

al intentar aplicar el mtodo simplex nos


encontramos con que no es posible encontrar
una solucin bsica factible (SBF) inicial, es
preciso usar el mtodo de las dos fases.
*Para ello, usamos el siguiente algoritmo:
1. Aadir variables artificiales al
problema
2. Fase I.
3. Fase II.

*ADICIN DE VARIABLES
ARTIFICIALES

*Se

trata de aadir al problema tantas


variables como sean necesarias para
construir una SBF.
*Sus coeficientes en las ecuaciones sern los
que convengan para nuestro propsito.
*Por consiguiente, tendremos que cada
variable artificial tendr coeficiente 1 en una
ecuacin y coeficiente 0 en todas las dems

*Fase I
*Se

trata de aplicar el mtodo simplex para resolver un


problema auxiliar que consiste en minimizar la suma de las
variables artificiales.
*Para que la tabla ptima aparezca lo antes posible conviene
que, en caso de empate en el criterio de salida y que una
de las variables empatadas sea artificial, saquemos la
artificial.
*Una vez resuelto este problema auxiliar, caben dos
posibilidades:

El

valor ptimo de la funcin objetivo es


distinto de cero. En tal caso el problema original
no tena solucin.
El valor ptimo de la funcin objetivo es cero.
En tal caso podemos pasar a la Fase II.

*Fase II
*Consiste

en aplicar el mtodo simplex,


usando la funcin objetivo del problema
original, pero empezando con una primera
tabla que se obtiene quitando de la ltima
tabla de la Fase I las columnas de las
variables artificiales
*La solucin obtenida en la Fase II ser la
solucin del problema original (tngase en
cuenta que en la Fase II no aparecen
variables artificiales)

*Ejemplos
*Problema:
Maximizar Z = 6x1 + x2
sujeto a:
-x1 + x2 1
2x1 + x2 6
x 1, x 2 0

*Ejemplos
Tabla 1 de la Fase I

Maximizar Z = 6x1 + x2
sujeto a:
-x1 + x2 1
2x1 + x2
6
x1, x2 0
0
0
0
-1
P2
P3
P4
P5

Base

cB

P0

0
P1

P5

-1

-1

-1

P4

-1
1
-1
1
0
Criterio de entrada: mn { -1 } = -1, luego entra x2
Criterio de salida: mn { 1, 6 } = 1, luego sale x5

*Ejemplos
Tabla 2 de la Fase I
Base

cB

P0

0
P1

0
P2

0
P3

0
P4

-1
P5

P2

-1

-1

P4

-1

Se cumple la condicin de parada. Valor ptimo: 0 (el


problema tiene solucin).
Construimos la primera tabla de la Fase II quitando la
variable artificial x5

*Ejemplos
Tabla 1 de la Fase II
6

Base

cB

P0

P1

P2

P3

P4

P2

-1

-1

P4

-7

-1

Criterio de entrada: mn { -7, -1 } = -7, luego entra x1


Criterio de salida: mn { 5/3 } = 5/3, luego sale x4

*Ejemplos
Tabla 2 de la Fase II
6

Base

cB

P0

P1

P2

P3

P4

P2

8/3

-2/3

1/3

P1

5/3

1/3

1/3

38/3

4/3

7/3

Se cumple la condicin de parada. Valor ptimo: 38/3


Solucin ptima: (5/3, 8/3, 0, 0)T

*Ejemplos
*Problema:
Maximizar Z = 4x1 + x2 + 6x3
sujeto a:
-2x1 - x2 + 2x3 1
x1 + x2 + x3
6
x1, x2 , x3 0

*Ejemplos

Maximizar Z = 4x1 + x2 + 6x3


sujeto a:
-2x1 - x2+ 2x3 1
x1 + x2 + x3 6
x1, x2 , x3 0

Tabla 1 de la Fase I

Base

cB

P0

0
P1

0
P2

0
P3

0
P4

0
P5

-1
P6

-1
P7

P6

-1

-2

-1

-1

P7

-1

-1

-7 1
0
-3
1
1
0
Criterio de entrada: mn { -3 } = -3, luego entra x3

Criterio de salida: mn { 1/2, 6 } = 1/2, luego sale x6

*Ejemplos
Tabla 2 de la Fase I
Base

cB

P0

0
P1

0
P2

0
P3

0
P4

0
P5

-1
P6

-1
P7

P3

1/2

-1 -1/2

-1/2

1/2

P7

-1 11/2

3/2

1/2

-1

-1/2

-11/2 -2 -3/2

-1/2

3/2

Criterio de entrada: mn { -2, -3/2, -1/2 } = -2, luego


entra x1
Criterio de salida: mn { 11/3 } = 11/3, luego sale x7

*Ejemplos
Tabla 3 de la Fase I
0
Base cB P0
P1

0
P2

0
P3

0
P4

0
P5

-1
P6

-1
P7
1/2

P3

13/4

1/4

-1/4 -1/2 1/4

P1

11/4

3/4

1/4 -1/2 -1/4 1/2

Se cumple la condicin de parada. Valor ptimo: 0 (el


problema tiene solucin).
Construimos la primera tabla de la Fase II quitando las
variables artificiales x6 y x7

*Ejemplos
Tabla 1 de la Fase II
4

Base

cB

P0

P1

P2

P3

P4

P5

P3

13/4

1/4

-1/4

-1/2

P1

11/4

3/4

1/4

-1/2

61/2

7/2

-1/2

-5

Criterio de entrada: mn { -1/2, -5 } = -5, luego entra x5


Criterio de salida: No hay fracciones con denominador
estrictamente positivo, luego el problema tiene solucin
ilimitada

*Ejemplos
*Problema:
Maximizar Z = x1 + x2
sujeto a:
x1 - x2 6
2x1 - 2 x2 10
x1, x2 0

*Ejemplos
Tabla 1 de la Fase I
0

Maximizar Z = x1 + x2
sujeto a:
x1 - x2 6
2x1 - 2 x2 10
x1, x2 0
0
0
0

-1

Base

cB

P0

P1

P2

P3

P4

P5

P5

-1

-1

-1

P4

10

-2

-6

-1

Criterio de entrada: mn { -1 } = -1, luego entra x1


Criterio de salida: mn { 6, 5 } = 5, luego sale x4

*Ejemplos
Tabla 2 de la Fase I
0

-1

Base

cB

P0

P1

P2

P3

P4

P5

P5

-1

-1

-1/2

P1

-1

1/2

-1

1/2

Se cumple la condicin de parada. Valor ptimo: -1.


Como no resulta valor ptimo 0, el problema original
no tiene solucin.

Potrebbero piacerti anche