El método Símplex, desarrollado por George Dantzig en 1947, se utiliza para resolver problemas de programación lineal continua, de forma eficiente.

Una vez planteado el problema con las inecuaciones, el modelo deberá transformar las inecuaciones en igualdades utilizando las variables slack.

Modelo Matemático

Algebraicamente, nuestros modelos transformados tendrán la siguiente forma:

Se definen las variables:

  • Son los coeficientes asociados a las variables . Las variables slack también serán tenidas en cuenta.
  • El coeficiente de la variable en la restricción
  • El término independientes de la restricción

Matricialmente, podremos reescribir el modelo,

Análogamente, definimos, siendo la cantidad de variables, y la cantidad de restricciones:

  • Vector de coeficientes de las variables en el funcional.
  • Vector de variables del problema.
  • Matriz de coeficientes de las variables en las restricciones.
  • Vector de términos independientes de las restricciones.

Teoremas

Debido a que el funcional es una función lineal, hallaremos el máximo (o el mínimo) en uno de los vértices del poliedro de soluciones factibles. Para reconocer un vértice, sabemos que la cantidad máxima de variables que pueden ser distintas de cero en un vértice es igual a la cantidad de restricciones que tiene el problema (en nuestro caso hay tres restricciones).

Para desarrollar el método, Dantzig se basó en varios teoremas:

Teorema 1

El conjunto de todas las soluciones factibles a un problema de programación lineal es un conjunto convexo (poliedro convexo).

A partir de este teorema, podemos concluir que cuando encontramos un óptimo local (su funcional es mayor al de todos sus vértices adyacentes), entonces estamos también ante un óptimo global.

Teorema 2

La función objetivo alcanza su mínimo (o máximo) en un punto extremo del conjunto convexo de soluciones factibles del problema de programación lineal. Si alcanza ese mínimo (máximo) en más de un punto extremo, entonces la función objetivo tiene el mismo valor para cualquier combinación convexa de esos puntos extremos.

Teorema 3

Si se puede encontrar en la matriz del problema un conjunto de vectores linealmente independientes y tal que y todos los . Entonces este es un punto extremo del conjunto convexo de soluciones posibles.

es un vector -dimensional cuyos últimos elementos son cero.

Para encontrarse en un extremo, deben intersecar restricciones, por cada restricción, su variable slack debe ser 0, entonces hay por lo menos variables que valen cero. Luego a lo sumo tendremos variables con valor positivo.

Teorema 4

Si es un punto extremo del poliedro, entonces los vectores asociados con las componentes que son mayores que cero forman un conjunto linealmente independiente.

Teorema 5

es un punto extremo del poliedro si y solo si las componentes que son mayores que cero están asociadas con vectores linealmente independientes de en

Consecuencia

Como consecuencia, se deduce que:

  1. Existe un punto extremo del poliedro de soluciones factibles en el cual la función objetivo alcanza su máximo (mínimo).
  2. Cada solución factible básica corresponde a un punto extremo del poliedro solución
  3. Cada punto extremo de tiene asociados, al vectores linealmente independientes del conjunto dado de vectores asociados con él. Estos corresponderán a los asociados a las variables positivas. Las restantes variables tendrán valores nulos.

Resolución

Se plantea un esquema de tabla por cada vértice, de la siguiente forma:

El significado de las columnas será, para un vértice dado:

  • Coeficiente que tienen en el funcional las variables distintas positivas.
  • Nombre de las variables que son positivas.
  • Valor que toman las variables que son distintas de cero.
  • Columna de la matriz

El método símplex elige comenzar por el vértice en el cual las variables reales son cero. Esto tiene la ventaja de que los vectores de las variables positivos son canónicos distintos y, por lo tanto, linealmente independientes:

¿Cómo sabemos si el vértice hallado es óptimo?

Siendo la matriz de la tabla, se define como la reducción de la variable por cada unidad de que aumento. Entonces equivale a la reducción del funcional esperada por cada unidad de que me fuerzo a producir, sin tener en cuenta la mejora de funcional que obtengo tras agregar la unidad.

Debemos calcular, para cada columna , el valor de , siendo . Este será el desmejoro unidad total si se introduce la variable a la base. Para cada tabla, se calcula el próximo funcional como

Teorema A

Si existe alguna columna de la matriz para la cual (para un problema de máximo) entonces puede construirse un conjunto de soluciones posibles tal que su es mejor que el actual, donde el límite superior de puede ser finito o infinito.

Teorema B

Dado un de máximo, si para una solución básica factible las condiciones se cumplen para todas las , entonces es una solución factible máxima.

¿Cómo encontramos el próximo vértice?

Para hallar el nuevo vértice, un vector debe salir de la base, y otro debe entrar. Para determinar cuál vector ingresa, elegimos alguno cuyo sea negativo.

Para determinar que vector sale de la base, debemos calcular el coeficiente para cada vector de la base. Siendo el vector entrante a la base, se calculará como , para todas las filas de la tabla con coeficiente positivo:

  • Si el coeficiente es negativo, entonces la variable saliente aumentara, por lo que nunca se podrá llegar a cero (no podremos sacar a esta variable).
  • Si el coeficiente es cero, nuevamente no podremos sacar la variable, ya que esto indicaría que son independientes ambas variables (al aumentar una, la otra permanece constante).
  • Si el coeficiente es positivo, entonces el valor indica cuanto debo utilizar de la variable entrante para reducir la variable saliente a cero.

Tendremos que elegir el menor de los tres cocientes (se toman los casos inválidos como infinito), ya que elegir uno mayor causará que las variables que tenían cocientes menores tomen valores negativos.

¿Cómo construimos la siguiente tabla?

Inicialmente, planteamos la tabla con los valores ya conocidos. Los coeficientes y las variables a tomar valor. Además, las columnas de las variables de la base deben tener la base canónica. El vector entrante deberá ser reemplazado por el vector saliente.

En definitivamente, estaremos realizando un cambio de base para que los vectores canónicos le correspondan a los elementos que estarán en la base.

Para calcular el resto de valores, utilizamos la técnica del pivote. Se llama pivote de una tabla al elemento que está en la intersección de la columna de la variable que entra y la fila de la variable que sale. El pivote lo tomaremos de la tabla anterior.

  1. Dividimos todos los elementos de la fila de la variable que ingresa por el valor del pivote
  2. Para cada valor restante, se forma un cuadrilátero con las esquinas en el pivote y el valor anterior de la posición que queremos calcular. El nuevo valor se calculará como, la resta entre el valor anterior de la posición que queremos calcular, y el producto de las diagonales del rectángulo dividido por el pivote.

Finalización

Esta secuencia de pasos se repite hasta que lleguemos a una solución óptima.

Problemas de Minimización

Si lo que queremos es disminuir el valor del funcional, entonces las variables que entraran a la base serán las que tendrán un valor positivo de . Hallaremos el mínimo si son todos negativos.

Restricciones de Mayor Igual

Supongamos la siguiente restricción:

Luego de agregar las variables slack, tendremos:

Para resolverlo por el método Símplex, agregamos una nueva variable

En el funcional, agregamos

Si nos encontramos por debajo de la restricción de mayor o igual, entonces la variable tomará valor. Forzaremos a que esta variable no tome valor con agregarla en el funcional. El método nunca le dará valor a esta variable debido a su alto peso en el funcional.

La razón por la que debemos agregar la variable ficticia es para permitirnos comenzar desde el eje de coordenadas. De otra forma deberíamos encontrar inicialmente un vértice que cumpla las restricciones.

Restricciones de Igualdad

También debemos agregar variables ficticias para que el funcional la haga valer cero

De la misma forma que antes, permitimos utilizar el vértice inicial como punto de comienzo.

Casos Particulares

Soluciones Alternativas Óptimas

Cuando el , para una variable que no se encuentra en la base, entonces estaremos ante una solución alternativa. Si cambiamos la variable, veremos que en la siguiente tabla, tendremos una variable (la que acabamos de sacar de la base) con .

Punto Degenerado

Tendremos un punto donde habrá dos mínimos, uno de los valores de las variables ingresadas será cero. En este caso, la próxima tabla será la de un punto degenerado. Una vez en la nueva tabla, se puede observar que en la base, hay una variable con valor cero.

El coeficiente de la variable con valor cero no deberá ser calculado si el coeficiente para el vector que voy a entrar próximamente es negativo (estaría realizando un paso hacia atrás algorítmicamente). En otro caso, si lo debo calcular y tendrá un valor de cero.

En un punto degenerado, dos tablas diferentes muestran el mismo vértice. Hay casos donde puedo llegar a alcanzar un ciclo donde llego a una tabla donde ya estuve. Para salir del ciclo, debo buscar en alguna de las tablas y descartar uno de los , eligiendo otro vértice.

Poliedro Abierto

Ocurre cuando una variable quiere entrar a la base, pero ninguna puede salir (no habrá ningún válido). Hay soluciones, pero ninguna es la óptima.

Problema Incompatible

Ocurre cuando se halla una solución óptima, pero una variable artificial se encuentra en la base. Esto indica que la supuesta solución óptima es, en realidad, incompatible.