Manual del estudiante de Ingeniería en Sistemas de UTN/Investigación Operativa/Programación Lineal

Método SimplexEditar

DescripciónEditar

Este método requiere contar con una solución básica factible inicial. A partir de este vértice se mueve a través de una secuencia de soluciones básicas factibles, que mejoran o mantienen el valor de la función objetivo anterior. En cada paso deben cumplirse las siguientes condiciones:

Condición de optimalidadEditar

Significa que debe garantizarse que durante el procedimiento, ninguna solución puede ser peor que la anterior.

Condición de factibilidadEditar

Significa que debe garantizarse que si se parte de una solución factible, sólo se hallarán soluciones factibles. El método requiere que el problema esté en su forma estándar.

 
S.a:
   
 


Proceso iterativoEditar

Para comenzar a trabajar, hace falta una solución básica factible. Si las restricciones son de menor o igual, una variable de holgura se sumará al lado izquierdo, ya que a ese lado, a lo sumo le sobrará algo para equiparar al derecho:

   
 
   

En este caso, una solución factible es  , de manera que:

 

 

Entonces:

 

De manera que se cumple la restricción de no negatividad, ya que

 

Si, en cambio, aparece una restricción de mayor o igual, una variable de holgura se restará al lado izquierdo, ya que a ese lado, a lo sumo le faltará algo para equiparar al derecho:

   
 
   

En este caso,   no es una solución factible, ya que:

 

 

Entonces:

 

De manera que no se cumple la restricción de no negatividad, entonces el punto resulta no factible.

Por último, si la restricción fuera de igualdad, no se agrega ninguna variable de holgura, por lo que   implicaría que  , lo cual resultaría inconsistente si  .

El vector de variables de decisión puede considerarse compuesto de dos vectores, uno de variables básicas y otro de variables no básicas, así como la matriz de coeficientes y el vector de costos.

     

El problema lineal puede escribirse

 
S.a:
   
 

El valor de las variables básicas puede obtenerse a partir de las restricciones:

 

Como las variables no básicas valen cero:

 

 

 

Simplex encuentra un nuevo vértice asignando un valor no negativo a una de las variables actualmente no básicas. Esta variable que ingresa a la base, debe elegirse de tal manera que al hacerlo mejore la función objetivo. Se busca poner el nuevo valor[1] de   en función del valor anterior. Para eso, usamos los vectores   y   , que representan a las mismas variables que en la iteración anterior, pero cuyo valor será ahora un valor nuevo. Tenemos entonces la siguiente igualdad:

 

Pero en este caso, las variables del vector   no tienen necesariamente valor 0, por lo tanto no se puede anular el término  , entonces:

 

 

Quedan así los valores nuevos de   en función de los valores de   en la iteración anterior [2] y de  .

Se puede expresar ahora el nuevo valor de la función objetivo   en función de estos vectores viejos con valores nuevos:

 

 

 

 

 

Representando el segundo término componente a componente [3]:

 

Donde:

 

Queda así expresado el nuevo valor de   en función del valor anterior:

 

Garantizar que el segundo término no empeore el nuevo valor significa garantizar que en la nueva iteración la función objetivo no empeore. Cambiando el valor de una sola variable (en realidad, vamos a controlar el valor de cada una por separado), se puede controlar el valor del término completo. Esto es así porque entre los nuevos valores de las variables no básicas de la iteración anterior, sólo uno de ellos será diferente de 0 en la iteración nueva, y como todos los valores deben ser positivos, se puede fijar un signo para el término   de tal manera que se garantice optimalidad.

Condición de optimalidadEditar

Para mejorar la función objetivo respecto del valor anterior, dado que

 , y ya que   será diferente de cero para un solo  , deberá buscarse el mejor valor de  , que será:

  •   si es un problema de minimización, ya que esto disminuirá el valor de la función objetivo.
  •   si es un problema de maximización, ya que esto aumentará el valor de la función objetivo.

Se elegirá el más positivo o el más negativo en cada caso, e ingresará la variable   a la base. Esto garantizará que la función objetivo no empeore al realizar este paso.

Condición de factibilidadEditar

Luego, una de las variables que estaban en la base debe salir. Las condiciones que deben cumplirse para la variable que sale de la base son:

  • Todas las variables que eran básicas en la iteración anterior deben permanecer con valores no negativos.
  • La variable saliente tomará el valor de 0.

Como habíamos caracterizado a   como el vector viejo con valores nuevos, la primera restricción puede representarse:

  [4]

En este punto,   ya está elegido, y es el único valor distinto de 0 en  , de manera que:

 

Tomando la condición elemento por elemento:

   

Este conjunto de condiciones limita el valor de  :

   

La condición que más limite el valor de   será la que en definitiva fije su valor. El elemento que debe salir de la base (hacerse 0), es aquel que fija el valor de  . Sea   la posición del elemento saliente dentro del vector  :

 

Siendo   el conjunto de variables básicas que restringen el valor de  , que son aquellas con índice   tal que  . Esto es así porque, como   es el valor anterior del vector de variables básicas en la posición  , es decir  , y por eso será siempre no-negativo, entonces, si  , la condición   se cumplirá en todo caso para ese   particular, de manera que la condición en dicha posición   no restringe el valor de  .

Si a   lo llamamos  , se puede expresar el valor del índice saliente como:

   



^  Es decir, el valor en el próximo punto, el de la siguiente iteración.

^   

^  Siendo VNB el conjunto de los índices correspondientes a las variables no-básicas.

^  Se utiliza esta nomenclatura para expresar que todos los elementos de   deberán ser mayores que cero.