Anda di halaman 1dari 64

*

Ing. Wili Nelson TARMA VIVAS

*
* 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.

*
*Definicin:

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

Maximizar c1 x1 ... cn xn
Sujeto a :
a11 x1 ... a1n xn b1
...
am1 x1 ... amn xn bm
x1 ,..., xn 0

NOTACIN MATRICIAL

Maximizar cT x
Sujeto a :
Ax b
x0

*
* 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.

*
*Si aparece una inecuacin del tipo aiTx 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.

*
*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

*
Maximizar Z = x1 + 2x2
Sujeto a:
1/2 x1 + x2
1
x1
+ x2
2
x1, x2 0

Maximizar Z = x1 + 2x2 + 0x3


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

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


Sujeto a:
1/2 x1 + x2 +x3
=1
x1
+ x2
+x4 = 2
x1, x2 , x3 , x4 0

*
Maximizar Z = 7x1 9x2
Sujeto a:
4 x1 + 8x2
2
3x1 + x2
8
x1, x2 0

Maximizar Z = 7x1 9x2 + 0x3


Sujeto a:
4 x1 + 8x2 x3 = 2
3x1 + x2
8
x1, x2 , x3 0

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


Sujeto a:
4 x1 + 8x2 x3
=2
3x1 + x2
+x4 = 8
x1, x2 , x3 , x4 0

*
Maximizar 3x1 5x2
Sujeto a:
10 x1 + 18x2
=7
4x1 + 5x2
9
x1 0

Maximizar 3x1 5x3 + 5x4


Sujeto a:
10 x1 +18x3 18x4 = 2
4x1 + 5x3 5x4 9
x1, x3 , x4 0

Maximizar 3x1 5x3 + 5x4 + 0x5


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

*
Minimizar 7x1 4x2
Sujeto a:
8 x1 + 2x2 1
x1 + 5x2 = 6
x1, x2 0

Maximizar 7x1 + 4x2


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

Maximizar 7x1 + 4x2 + 0x3


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

*
*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 xn
Sujeto a :
a11 x1 ... a1n xn b1
...
am1 x1 ... amn xn bm
x1 ,..., xn 0

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


m}

*
*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

*
*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).

*
*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: zj=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):

*
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

z1 c1

z2 c 2

zn cn

*
*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.

*
*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.

*
* 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).

*
* 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.

*
* 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.

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

x1

+ x2 2

x1, x2 0

Maximizar Z = x1 + 2x2 sujeto a:


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

Tabla 1

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

*
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

*
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

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

-2x1

+ x2

-x1

+ x2

2x1

+ x2

x 1, x 2 0

Maximizar Z = x1 + 6x2 sujeto a:


-2x1
+ x2

4
-x1
+ x2

1
2x1
+ x2

6
x1, x2 0

Tabla 1
1

Base
P3
P4

cB
0
0

P0
4
1

P1
-2
-1

P2
1
1

P3
1
0

P4
0
1

P5
0
0

P5

6
0

2
-1

1
-6

0
0

0
0

1
0

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


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

*
Tabla 2
1

Base
P3

cB
0

P0
3

P1
-1

P2
0

P3
1

P4
-1

P5
0

P2

-1

P5

5
6

3
-7

0
0

0
0

-1
6

1
0

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


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

*
Tabla 3
Base
P3

cB
0

P0
14/3

P2
P1

6
1

8/3
5/3
53/3

1
P1
0
0
1
0

6
P2
0
1
0
0

0
P3
1
0
0
0

0
P4
-4/3
2/3
-1/3
11/3

0
P5
1/3
1/3
1/3
7/3

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


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

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

3x1

+ 3x2

10

12x1

+ 6x2

24

x 1, x 2 0

Maximizar Z = 5x1 + 4x2 sujeto a:


3x1
+ 3x2

10
12x1
+ 6x2

24
x1, x2 0

Tabla 1

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

*
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

*
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

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

3x1

+ 6x2

60

4x1

+ 2x2

32

+ 2x2

x1

x 1, x 2 0

16

Maximizar Z = 20x1 + 24x2 sujeto a:


3x1
+ 6x2

60
4x1
+ 2x2

32
x1
+ 2x2

16
x1, x2 0

Tabla 1
20

24

Base
P3
P4

cB
0
0

P0
60
32

P1
3
4

P2
6
2

P3
1
0

P4
0
1

P5
0
0

P5

16
0

1
-20

2
-24

0
0

0
0

1
0

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


Criterio de salida: mn { 10, 16, 8 } = 8, luego sale x5

*
Tabla 2
Base
P3

cB
0

P0
12

P4
P2

0
24

16
8
192

20
P1
0
3
1/2
-8

24
P2
0
0
1
0

0
P3
1
0
0
0

0
P4
0
1
0
0

0
P5
-3
-1
1/2
12

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


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

*
Tabla 3
Base
P3

cB
0

P0
12

P1
P2

20
24

16/3
16/3
704/3

20
P1
0
1
0
0

24
P2
0
0
1
0

0
P3
1
0
0
0

0
P4
0
1/3
-1/6
8/3

0
P5
-3
-1/3
2/3
28/3

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


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

*
*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 xi , donde i 0,1, i 1

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

-x1

+ x2

2x1

+ x2

x 1, x 2 0

Maximizar Z = 6x1 + 3x2 sujeto a:


-x1
+ x2

1
2x1
+ x2

6
x1, x2 0

Tabla 1

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

*
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

*
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.

*
*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.

*
* Problema:
Maximizar Z = x1 + x2 sujeto a:

5x1

- x2

x1
x 1, x 2 0

- 4 x2

Maximizar Z = x1 + x2 sujeto a:
5x1
- x2

0
x1
- 4 x2

x1, x2 0

Tabla 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

*
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

*
* 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.

*
*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

*
*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.

*
*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)

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

+ x2

2x1

+ x2

x1, x2 0

Maximizar Z = 6x1 + x2 sujeto a:


-x1
+ x2

1
2x1
+ x2

6
x1, x2 0

Tabla 1 de la Fase I
0

-1

Base

cB

P0

P1

P2

P3

P4

P5

P5

-1

-1

-1

P4

-1

-1

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


Criterio de salida: mn { 1, 6 } = 1, luego sale x5

*
Tabla 2 de la Fase I
0

-1

Base

cB

P0

P1

P2

P3

P4

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

*
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

*
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

*
* Problema:
Maximizar Z = 4x1 + x2 + 6x3 sujeto a:

-2x1

- x2

x1
x 1, x 2 , x 3 0

+ 2x3
+ x2

+ x3

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
0

-1

-1

Base

cB

P0

P1

P2

P3

P4

P5

P6

P7

P6

-1

-2

-1

-1

P7

-1

-1

-7

-3

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


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

*
Tabla 2 de la Fase I

Base cB

-1

-1

P0

P1

P2

P3

P4

P5

P6

P7

1/2

-1 -1/2

-1/2

1/2

3/2

1/2

-1

-1/2

-11/2 -2 -3/2

-1/2

3/2

P3

P7

-1 11/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

*
Tabla 3 de la Fase I
Base cB

-1

-1

P0

P1

P2

P3

P4

P5

P6

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

*
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

*
* Problema:
Maximizar Z = x1 + x2 sujeto a:

x1
2x1

- 2 x2

x 1, x 2 0

- x2

10

Maximizar Z = x1 + x2 sujeto a:
x1
- x2

2x1
- 2 x2

10
x1, x2 0

Tabla 1 de la Fase I
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

*
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.

Anda mungkin juga menyukai