Investigación de operaciones

Método Simplex

El Método Simplex es un método analítico de solución de problemas de programación lineal, capaz de resolver modelos más complejos que los resueltos mediante el método gráfico sin restricción en el número de variables.

El Método Simplex es un método iterativo que permite ir mejorando la solución en cada paso. La razón matemática de esta mejora radica en que el método consiste en caminar del vértice de un poliedro a un vértice vecino de manera que aumente o disminuya (según el contexto de la función objetivo, sea maximizar o minimizar), dado que el número de vértices que presenta un poliedro solución es finito siempre se hallará solución.

Este popular método fue creado en el año de 1947 por el estadounidense George Bernard Dantzig y el ruso Leonid Vitalievich Kantorovich, con el ánimo de crear un algoritmo capaz de solucionar problemas de m restricciones y n variables.

¿Qué es una matriz identidad?

Una matriz puede definirse como una ordenación rectangular de elementos, (o listado finito de elementos), los cuales pueden ser números reales o complejos, dispuestos en forma de filas y de columnas.

La matriz idéntica o identidad es una matriz cuadrada (que posee el mismo número tanto de columnas como de filas) de orden que tiene todos los elementos diagonales iguales a uno (1) y todos los demás componentes iguales a cero (0), se denomina matriz idéntica o identidad de orden n, y se denota por:

matriz identidad_ Simplex

La importancia de la teoría de matrices en el Método Simplex es fundamental, dado que el algoritmo se basa en dicha teoría para la resolución de sus problemas.


Consideraciones importantes al utilizar el Método Simplex

Variables de holgura y exceso

El Método Simplex trabaja basándose en ecuaciones y las restricciones iniciales que se modelan mediante programación lineal no lo son, para ello hay que convertir estas inecuaciones en ecuaciones utilizando unas variables denominadas de holgura y exceso relacionadas con el recurso al cual hace referencia la restricción y que en el tabulado final representa el «Slack or surplus»al que hacen referencia los famosos programas de resolución de investigación de operaciones, estas variables adquieren un gran valor en el análisis de sensibilidad y juegan un rol fundamental en la creación de la matriz identidad base del Simplex.

Estas variables suelen estar representadas por la letra «S», se suman si la restricción es de signo «<= » y se restan si la restricción es de signo «>=».

Variable artificial / Método de la «M»

Una variable artificial es un truco matemático para convertir inecuaciones «>=» en ecuaciones, o cuando aparecen igualdades en el problema original, la característica principal de estas variables es que no deben formar parte de la solución, dado que no representan recursos. El objetivo fundamental de estas variables es la formación de la matriz identidad.

Estas variables se representa por la letra «A», siempre se suman a las restricciones, su coeficiente es M (por esto se le denomina Método de la M grande, donde M significa un número demasiado grande muy poco atractivo para la función objetivo), y el signo en la función objetivo va en contra del sentido de la misma, es decir, en problemas de Maximización su signo es menos (-) y en problemas de Minimización su signo es (+), repetimos con el objetivo de que su valor en la solución sea cero (0).


Método Simplex paso a paso

El problema

La empresa el SAMÁN Ltda. Dedicada a la fabricación de muebles, ha ampliado su producción en dos líneas más. Por lo tanto actualmente fabrica mesas, sillas, camas y bibliotecas. Cada mesa requiere de 2 piezas rectangulares de 8 pines, y 2 piezas cuadradas de 4 pines. Cada silla requiere de 1 pieza rectangular de 8 pines y 2 piezas cuadradas de 4 pines, cada cama requiere de 1 pieza rectangular de 8 pines, 1 cuadrada de 4 pines y 2 bases trapezoidales de 2 pines y finalmente cada biblioteca requiere de 2 piezas rectangulares de 8 pines, 2 bases trapezoidales de 2 pines y 4 piezas rectangulares de 2 pines. Cada mesa cuesta producirla $10000 y se vende en $ 30000, cada silla cuesta producirla $ 8000 y se vende en $ 28000, cada cama cuesta producirla $ 20000 y se vende en $ 40000, cada biblioteca cuesta producirla $ 40000 y se vende en $ 60000. El objetivo de la fábrica es maximizar las utilidades.

 

Método simplex_Ejemplo

Paso 1: Modelación mediante programación lineal

Variables:

X1 = Cantidad de mesas a producir (unidades)

X2 = Cantidad de sillas a producir (unidades)

X3 = Cantidad de camas a producir (unidades)

X4 = Cantidad de bibliotecas a producir (unidades)

Restricciones:

2X1 + 1X2 + 1X3 + 2X4 <= 24

2X1 + 2X2 + 1X3 <= 20

2X3 + 2X4 <= 20

4X4 <= 16

Función Objetivo:

ZMAX = 20000X1 + 20000X2 + 20000X3 + 20000X4

Paso 2: Convertir las inecuaciones en ecuaciones

En este paso el objetivo es asignar a cada recurso una variable de Holgura, dado que todas las restricciones son «<=».

2X1 + 1X2 + 1X3 + 2X4 + 1S1 + 0S2 + 0S3 + 0S4 = 24

2X1 + 2X2 + 1X3 + 0X4 + 0S1 + 1S2 + 0S3 + 0S4 = 20

0X1 + 0X2 + 2X3 + 2X4 + 0S1 + 0S2 + 1S3 + 0S4 = 20

0X1 + 0X2 + 0X3 + 4X4 + 0S1 + 0S2 + 0S3 + 1S4 = 16

De esta manera podemos apreciar una matriz identidad (n = 4), formado por las variables de holgura las cuales solo tienen coeficiente 1 en su respectivo recurso, por el ejemplo la variable de holgura «S1» solo tiene coeficiente 1 en la restricción correspondiente a el recurso 1.

La función objetivo no sufre variaciones:

ZMAX = 20000X1 + 20000X2 + 20000X3 + 20000X4

Paso 3: Definir la solución básica inicial

El Método Simplex parte de una solución básica inicial para realizar todas sus iteraciones, esta solución básica inicial se forma con las variables de coeficiente diferente de cero (0) en la matriz identidad.

1S1 = 24

1S2  = 20

1S3 = 20

1S4  = 16

Solución: (segundo término)= En esta fila se consigna el segundo término de la solución, es decir las variables, lo más adecuado es que estas se consignen de manera ordenada, tal cual como se escribieron en la definición de restricciones.

Cj = La fila «Cj» hace referencia al coeficiente que tiene cada una de las variables de la fila «solución» en la función objetivo.

Variable Solución = En esta columna se consigna la solución básica inicial, y a partir de esta en cada iteración se van incluyendo las variables que formarán parte de la solución final.

Cb = En esta fila se consigna el valor que tiene la variable que se encuentra a su derecha «Variable solución» en la función objetivo.

Zj = En esta fila se consigna la contribución total, es decir la suma de los productos entre término y Cb.

Cj – Zj =  En esta fila se realiza la diferencia entre la fila Cj y la fila Zj, su significado es un «Shadow price», es decir, la utilidad que se deja de recibir por cada unidad de la variable correspondiente que no forme parte de la solución.

Solución inicial:

Solución inicial_ Método Simplex

Paso 5: Realizar las iteraciones necesarias

Este es el paso definitivo en la resolución por medio del Método Simplex, consiste en realizar intentos mientras el modelo va de un vértice del poliedro objetivo a otro.

El procedimiento a seguir es el siguiente:

1. Evaluar que variable entrará y cual saldrá de la solución óptima:

Simplex_Reglas

En nuestro caso de ejemplo, todos los Cj – Zj son iguales a 20000, por lo tanto, la decisión debe tomarse de forma arbitraria, es decir, puede elegirse cualquiera como variable de entrada. Elegiremos la variable X4.

Dado que X4 es la variable de entrada, los valores que se encuentran en su columna pasarán a ser A. Veamos:

Método Simplex 1

En el caso de la columna temporal cuando el valor es igual o menor que no se considera para el cálculo de B/A. Por ejemplo, en la fila #2 el valor de A era igual a 0, por lo tanto, no se considera para el cálculo de B/A.

Dado lo anterior, la elección de la fila saliente se da de acuerdo al menor valor de la columna temporal B/A, es decir, entre los valores 20 – 10 – 4. (Tal como observamos en la imagen anterior). Así entonces, la variable que sale será S4.

2. El hecho de que una variable distinta forme parte de las variables solución implica una serie de cambios en el tabulado Simplex, cambios que se explicarán a continuación.

El valor de la intersección entre la columna de la variable que entra y la fila de la variable que sale, se denomina a (minúscula). Veamos en este caso cuál es el a.

Método Simplex 2

A continuación, todos los valores de la fila de salida se dividen por a.

Variable que entra_Simplex

Como resultado tendremos los valores correspondientes a la nueva fila, en este caso la fila X4.

Variable que entra_Simplex2_

  • Lo siguiente corresponde a registrar los nuevos valores de cada fila.

Recordemos que el valor de depende de la intersección de la columna entrante y cada fila. En este caso vamos a registrar los nuevos valores de la fila # 1, correspondiente a la variable S1. Por lo tanto será equivalente a 2. Veamos:

valor de a_ SImplex

Uno de los pasos más confusos en Simplex es el que se detallará a continuación, sin embargo, es cuestión de prestar suma atención al procedimiento.

La fila de la nueva variable entrante:

Deberá multiplicarse por el valor de -a (Recordemos que el valor de para la fila #1 es 2). Es decir, -a es igual a -2. Como resultado tendremos una fila temporal, podemos denominarla – si así lo queremos – por la iteración y la fila, es decir, estamos en la primera iteración, y abordando la fila #1. Su nombre será fila temporal I1-f1 (Esto es algo que me he inventado, espero no complicarlo).

Estos valores, deben sumarse con los valores de la fila 1 que se encontraba en la tabla anterior (S1). Veamos:

Como resultado tendremos los valores correspondientes a la fila1 de la primera iteración, en este caso la fila S1.

En el caso de la fila 2, recordemos que el valor de corresponde a 0. Así que los valores pasan tal cual como se encontraban en la tabla anterior.

Veamos qué pasa con la tercera fila:

Veamos como queda la tabla:

Una vez registrados los valores de toda la tabla, podemos calcular el valor de Zj Cj – Zj.

Esta misma operación se efectúa para toda la tabla; es decir, cada columna deberá multiplicarse por Cb. Es recomendable utilizar otra tabla para registrar dichos valores. Al final, deberá sumar los sumar los valores de cada columna y totalizarlos en Zj. A esa tabla le llamaremos: Tabla de productos de Cb:

El objetivo de esta tabla anterior es determinar los valores de Zj (Sumatoria de columnas) y Cj-Zj (Diferencia entre la fila Cj y la fila Zj), si ya los tenemos, podemos regresar a nuestra tabla de variables:

iteracion1_SImplex

De esta manera se culmina la primera iteración, este paso se repetirá cuantas veces sea necesario y solo se dará por terminado el método según los siguientes criterios.

Maximizar Minimizar
Solución Óptima Cuando todos los Cj – Zj sean <= 0 Cuando todos los Cj – Zj sean >= 0
  • Continuamos con las iteraciones para lo cual tenemos que repetir los pasos anteriores.

Metodo Simplex

En esta última iteración podemos observar que se cumple con la consigna Cj – Zj <= 0, para ejercicios cuya función objetivo sea «Maximizar», por ende hemos llegado a la respuesta óptima.

X2 = 7

X3 = 6

X4 = 4

S1 = 3 (Cantidad de piezas rectangulares de 8 pines sin utilizar =3)

Función Objetivo: $ 340000

Sin embargo una vez finalizado el Método Simplex se debe observar una matriz identidad en el rectángulo determinado por las variables de decisión (líneas punteadas), el hecho de que en este caso no se muestre la matriz identidad significa que existe una solución óptima alterna.

simplex_solucion alternativa

La manera de llegar a la otra solución consiste en alterar el orden en que cada una de las variables entró a la solución básica, recordemos que el proceso fue decidido al azar debido a la igualdad en el Cj – Zj del tabulado inicial. Aquí les presentamos una de las maneras de llegar a la otra solución.

Simplex-tabla-10

Podemos observar como existe una solución óptima alternativa en la cual la combinación de variables es distinta y existe un menor consumo de recursos, dado que el hecho de que se encuentre la variable «S1» en la solución óptima con un coeficiente de «3» significa que se presenta una holgura de 3 unidades del recurso (pieza rectangular de 8 pines).

X1 = 3 (Cantidad de mesas a producir = 3)

X2 = 4 (Cantidad de sillas a producir = 4)

X3 = 6 (Cantidad de camas a producir = 6)

X4 = 4 (Cantidad de bibliotecas a producir = 4)

Con una utilidad de: $ 340000


Problemas de minimización con el Método Simplex

Para resolver problemas de minimización mediante el algoritmo simplex existen dos procedimientos que se emplean con regularidad.

  • El primero, que a mi juicio es el más recomendable se basa en un artificio aplicable al algoritmo fundamentado en la lógica matemática que dicta que «para cualquier función f(x), todo punto que minimice a f(x) maximizará también a – f(x)». Por lo tanto el procedimiento a aplicar es multiplicar por el factor negativo (-1) a toda la función objetivo.

A continuación se resuelve el algoritmo como un problema de maximización.

  • El segundo procedimiento, el cual pretende conservar la minimización consiste en aplicar los criterios de decisión que hemos esbozado con anterioridad, en los casos de la variable que entra, que sale y el caso en el que la solución óptima es encontrada. Aquí recordamos los procedimientos según el criterio dado el caso «minimizar».

Método simplex

Fuente
Applied Mathematical Programming, de Bradley, Hax, and Magnanti (Addison-Wesley, 1977), del MIT

Bryan Salazar López

Ingeniero Industrial, Magíster en Logística Integral, especializado en productividad, con interés y experiencia en el modelamiento de procesos bajo dimensiones de sostenibilidad, industria 4.0, transformación digital y modelos de optimización. Fundador de Ingenieriaindustrialonline.com, sitio donde se recogen las aportaciones de investigaciones, artículos y referencias.

8 comentarios

  1. Estimado BRYN
    Soy investigadora cientifica, estoy desarrollando un proyecto de investigacion e innovacion en un prototipo
    Me interesa comunicarme con usted, para desarrollar exitosamente mi proyecto.

  2. Buenas tardes, existe un error en la primera iteración entre S1 y X4, que no es 4; es 0 (la columna pivote siempre está conformada por 0 salvo el pivote, que es 1). De ahí que el resto del ejercicio no vaya a presentar el mismo resultado.
    Por lo demás, es el mejor desarrollo teórico y práctico de un Simplex que he visto, ya sea en fuentes científicas, manuales prácticos y otros documentos. He de felicitarlo por su labor, explicación y detalle.
    Muchas gracias por su labor y entrega.

    1. Hola Jose, agradecemos enormemente tu observación y tus comentarios. De acuerdo, teníamos un error de tipeo, por lo tanto aprovechamos para corregirlo, y consideramos que podíamos mejorar el método de explicación. Espero que el nuevo método utilizado les sea de mucha ayuda. Los invito a seguirnos en nuestras redes y a suscribirse a nuestras notificaciones.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Botón volver arriba
Nuestros partners recogerán datos y usarán cookies para ofrecerle anuncios personalizados y medir el rendimiento.    Ver Política de privacidad
Privacidad