viernes, 25 de junio de 2010

PROGRAMACIÓN LINAEL: Método Simplex

Es un procedimiento iterativo que permite ir mejorando la solución a cada paso. El proceso concluye cuando no es posible seguir mejorando más dicha solución.

Partiendo del valor de la función objetivo en un vértice cualquiera, el método consiste en buscar sucesivamente otro vértice que mejore al anterior. La búsqueda se hace siempre a través de los lados del polígono (o de las aristas del poliedro, si el número de variables es mayor). Cómo el número de vértices (y de aristas) es finito, siempre se podrá encontrar la solución.

El método del 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.

Vamos a resolver mediante el método del simplex el siguiente problema:

Maximizar

Z= f(x,y)= 3x + 2y

sujeto a:

2x + y menor o igual18


2x + 3y menor o igual 42


3x + y menor o 24


xmayor o igual 0 , y mayor o igual 0


Se consideran las siguientes fases:

1. Convertir las desigualdades en igualdades

Se introduce una variable de holgura por cada una de las restricciones, para convertirlas en igualdades, resultando el sistema de ecuaciones lineales:

2x + y + h = 18

2x + 3y + s = 42

3x +y + d = 24

2. Igualar la función objetivo a cero

- 3x - 2y + Z = 0

3. Escribir la tabla inicial simplex

En las columnas aparecerán todas las variables del problema y, en las filas, los coeficientes de las igualdades obtenidas, una fila para cada restricción y la última fila con los coeficientes de la función objetivo:

Tabla I . Iteración nº 1

Base

Variable de decisión

Variable de holgura

Valores solución


x

y

h

s

d


h

2

1

1

0

0

18

s

2

3

0

1

0

42

d

3

1

0

0

1

24

Z

-3

-2

0

0

0

0










4. Encontrar la variable de decisión que entra en la base y la variable de holgura que sale de la base

  1. Para escoger la variable de decisión que entra en la base, nos fijamos en la última fila, la de los coeficientes de la función objetivo y escogemos la variable con el coeficiente negativo mayor (en valor absoluto).
    En nuestro caso, la variable x de coeficiente - 3.

Si existiesen dos o más coeficientes iguales que cumplan la condición anterior, entonces se elige uno cualquiera de ellos.

Si en la última fila no existiese ningún coeficiente negativo, significa que se ha alcanzado la solución óptima. Por tanto, lo que va a determinar el final del proceso de aplicación del método del simplex, es que en la última fila no haya elementos negativos.

La columna de la variable que entra en la base se llama columna pivote (En color verde).

  1. Para encontrar la variable de holgura que tiene que salir de la base, se divide cada término de la última columna (valores solución) por el término correspondiente de la columna pivote, siempre que estos últimos sean mayores que cero. En nuestro caso:
    18/2 [=9] , 42/2 [=21] y 24/3 [=8]

Si hubiese algún elemento menor o igual que cero no se hace dicho cociente. En el caso de que todos los elementos fuesen menores o iguales a cero, entonces tendríamos una solución no acotada y no se puede seguir.

El término de la columna pivote que en la división anterior dé lugar al menor cociente positivo, el 3, ya 8 es el menor, indica la fila de la variable de holgura que sale de la base, d. Esta fila se llama fila pivote (En color verde).

Si al calcular los cocientes, dos o más son iguales, indica que cualquiera de las variables correspondientes pueden salir de la base.

  1. En la intersección de la fila pivote y columna pivote tenemos el elemento pivote operacional, 3.

5. Encontrar los coeficientes de la nueva tabla.

Los nuevos coeficientes de x se obtienen dividiendo todos los coeficientes de la fila d por el pivote operacional, 3, que es el que hay que convertir en 1.

A continuación mediante la reducción gaussiana hacemos ceros los restantes términos de su columna, con lo que obtenemos los nuevos coeficientes de las otras filas incluyendo los de la función objetivo Z.

También se puede hacer utilizando el siguiente esquema:

Fila del pivote:

Nueva fila del pivote= (Vieja fila del pivote) : (Pivote)

Resto de las filas:

Nueva fila= (Vieja fila) - (Coeficiente de la vieja fila en la columna de la variable entrante) X (Nueva fila del pivote)

Veámoslo con un ejemplo una vez calculada la fila del pivote (fila de x en la Tabla II):

Vieja fila de s

2

3

0

1

0

42


-

-

-

-

-

-

Coeficiente

2

2

2

2

2

2


x

x

x

x

x

x

Nueva fila pivote

1

1/3

0

0

1/3

8


=

=

=

=

=

=

Nueva fila de s

0

7/3

0

1

-2/3

26


Tabla II . Iteración nº 2

Base

Variable de decisión

Variable de holgura

Valores solución


x

y

h

s

d


h

0

1/3

1

0

-2/3

2

s

0

7/3

0

1

-2/3

26

x

1

1/3

0

0

1/3

8

Z

0

-1

0

0

1

24


Como en los elementos de la última fila hay uno negativo, -1, significa que no hemos llegado todavía a la solución óptima. Hay que repetir el proceso:

  1. La variable que entra en la base es y, por ser la variable que corresponde al coeficiente -1
  2. Para calcular la variable que sale, dividimos los términos de la última columna entre los términos correspondientes de la nueva columna pivote:
    2:1/3 [=6] , 26:7/3 [=78/7] y 8:1/3 [=8]
    y como el menor cociente positivo es 6, tenemos que la variable de holgura que sale es h.
  3. El elemento pivote, que ahora hay que hacer 1, es 1/3.

Operando de forma análoga a la anterior obtenemos la tabla:

Tabla III . Iteración nº 3

Base

Variable de decisión

Variable de holgura

Valores solución


x

y

h

s

d


y

0

1

3

0

-2

6

s

0

0

-7

0

4

12

x

1

0

-1

0

1

6

Z

0

0

3

0

-1

30

Como en los elementos de la última fila hay uno negativo, -1, significa que no hemos llegado todavía a la solución óptima. Hay que repetir el proceso:

  1. La variable que entra en la base es d, por ser la variable que corresponde al coeficiente -1
  2. Para calcular la variable que sale, dividimos los términos de la última columna entre los términos correspondientes de la nueva columna pivote:
    6/(-2) [=-3] , 12/4 [=3], y 6:1 [=6]

    y como el menor cociente positivo es 3, tenemos que la variable de holgura que sale es s.
  3. El elemento pivote, que ahora hay que hacer 1, es 4.

Obtenemos la tabla:

Tabla IV . Final del proceso

Base

Variable de decisión

Variable de holgura

Valores solución


x

y

h

s

d


y

0

1

-1/2

0

0

12

d

0

0

-7/4

0

1

3

x

1

0

-3/4

0

0

3

Z

0

0

5/4

0

0

33

Como todos los coeficientes de la fila de la función objetivo son positivos, hemos llegado a la solución óptima.

Interpretación geométrica del método del simplex

Las sucesivas tablas que hemos construido van proporcionando el valor de la función objetivo en los distintos vértices, ajustándose, a la vez, los coeficientes de las variables iniciales y de holgura.

En la primera iteración (Tabla I) han permanecido todos los coeficientes iguales, se ha calculado el valor de la función objetivo en el vértice A(0,0), siendo este 0.

A continuación se desplaza por la arista AB, calculando el valor de f , hasta llegar a B.
Este paso aporta la Tabla II.
En esta segunda iteración se ha calculado el valor que corresponde al vértice B(8,0): Z=f(8,0) = 24

Sigue por la arista BC, hasta llegar a C, donde se para y despliega los datos de la Tabla III.
En esta tercera iteración se ha calculado el valor que corresponde al vértice C(6,6) : Z=f(6,6)=30.

Continua haciendo cálculos a través de la arista CD, hasta llegar al vértice D. Los datos que se reflejan son los de la Tabla IV.
Concluye con esta tabla, advirtiendo que ha terminado (antes ha comprobado que la solución no mejora al desplazarse por la arista DE)
El valor máximo de la función objetivo es 33, y corresponde a x = 3 e y = 12 (vértice D).

Si calculas el valor de la función objetivo en el vértice E(0,14), su valor no supera el valor 33.