x1
+x2
+x3
+x4
x1
+x2
+x3
+x4
x1
+x2
+x3
+x4
x1
+x2
+x3
+x4
x1
+x2
+x3
+x4
a
b
c
d
x
y
z
AC
i
Randomize
Acerca de la calculadora del método símplex
Resuelva problemas de programación lineal con el método símplex en línea. Maximice o minimice una función objetivo bajo restricciones lineales con iteraciones paso a paso y el método de la gran M. con descripción completa y detallada paso a paso de las soluciones, que resuelve problemas de programación lineal de hasta 20×20 con coeficientes de tipo: números decimales y fracciones.
Para iniciar el cálculo, primero hay que introducir las dimensiones del problema en los campos de entrada en la parte superior de la pantalla y elegir la operación deseada en el menú lateral.
Un poco más abajo encontrará una ventana de entrada donde se deben ingresar los coeficientes, las restricciones y los valores del lado derecho usando el teclado. Aquí también se encuentra el panel de control de entrada, que simplifica el trabajo con los problemas de PL y contiene los siguientes elementos de control:
- El primer elemento permite expandir la ventana de entrada. Esto puede ser especialmente útil cuando la tabla no cabe completamente en la pantalla. Si la tabla aún no es totalmente visible después de expandir la ventana, puede cambiar la escala con los botones + / -;
- El segundo elemento copia los datos de entrada del problema actual al búfer de memoria. Esto puede ser útil cuando se resuelve con frecuencia el mismo problema de PL o se necesita transferir datos entre operaciones;
- Y el último elemento pega los datos de entrada copiados anteriormente, lo que permite restaurar los datos del problema en pocos clics en lugar de volver a ingresarlos manualmente;
Y más abajo encontrará una barra de herramientas que permite personalizar la calculadora y facilitar su uso. Está dividida visualmente en tres partes, cada una de las cuales se encarga de la siguiente funcionalidad:
- La primera parte permite seleccionar el formato numérico utilizado al mostrar el resultado de la solución. También puede desactivar los comentarios paso a paso si ya conoce el método y solo necesita verificar sus propios cálculos, u ocultar la solución paso a paso por completo si solo necesita la respuesta final;
- La segunda parte contiene botones que permiten modificar las dimensiones de la tabla de entrada, borrar coeficientes individuales o toda la entrada, y el botón principal con el signo igual que lleva a la pantalla de solución. Todos estos botones tienen atajos de teclado. Pase el cursor sobre un botón para ver la tecla correspondiente en un tooltip. También puede usar las teclas de flecha para mover el cursor entre los campos de entrada;
- Y la última parte permite elegir el número de dígitos después del punto decimal para redondear resultados no enteros. Una vista previa en tiempo real muestra cómo aparecerán los valores redondeados;
¿Qué es el método símplex?
El método símplex es un algoritmo para resolver problemas de programación lineal que buscan maximizar o minimizar una función objetivo lineal sujeta a restricciones de desigualdad e igualdad lineales, con todas las variables de decisión no negativas. Funciona desplazándose por los vértices del polítopo factible desde una solución básica factible hasta una adyacente con mejor valor objetivo. Las restricciones de tipo ≥ o de igualdad se manejan introduciendo variables artificiales penalizadas con el centinela de la gran M.
¿Cómo resolver un problema de programación lineal con el método símplex?
Primero, convierta el PL a la forma estándar (tabular) añadiendo variables de holgura, excedente y artificiales para transformar todas las restricciones en igualdades y establecer una base inicial. En cada iteración, aplique la regla de pivote: seleccione el coeficiente de costo reducido más negativo en la fila objetivo como variable entrante y use la prueba de razón mínima para elegir la variable saliente. Realice la operación de pivote para actualizar el tableau. Repita hasta que todos los costos reducidos sean no negativos, momento en el que la solución básica factible actual es óptima.
Ejemplo de resolución de un problema de programación lineal con el método símplex
La etapa preliminar comienza con la necesidad de eliminar los valores negativos en la parte derecha de las restricciones. Para ello, las restricciones correspondientes se multiplican por -1. Tras esta operación, el signo de la desigualdad se invierte.
A continuación, hay que eliminar las desigualdades, para lo cual introducimos variables de holgura en el lado izquierdo de las desigualdades. Si la desigualdad es de la forma ≤, la variable de holgura lleva signo +; si la desigualdad es de la forma ≥, la variable de holgura lleva signo -. Las variables de holgura se incluyen en la función objetivo del problema con coeficiente cero.
Ahora, en el sistema de restricciones, es necesario encontrar un número suficiente de variables básicas. Cada restricción debe tener una variable básica. Una variable básica es aquella que tiene coeficiente 1 y aparece en una sola restricción. Si en alguna restricción no hay variables básicas, las añadimos artificialmente; las variables artificiales entran en la función objetivo con coeficiente -M si la función objetivo tiende a max, y M si tiende a min.
| B | Cb | P | x1 | x2↓ | x3 | x4 | x5 | x6 | x7 | x8 | x9 | Q |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3 | 4 | 0 | 0 | 0 | 0 | 0 | -M | -M | ||||
| x3 | 0 | 600 | 2 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 600 |
| x4 | 0 | 225 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | ∞ |
| x5 | 0 | 1000 | 5 | 4 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 250 |
| x8← | -M | 150 | 0 | 2 | 0 | 0 | 0 | -1 | 0 | 1 | 0 | 75 |
| x9 | -M | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | 1 | ∞ |
| max | -150M | -3 | -2M-4 | 0 | 0 | 0 | M | M | 0 | 0 | ||
Elementos de la columna base (B)
Trasladamos a la tabla los elementos básicos identificados en la etapa preliminar:
B1 = x3;
B2 = x4;
B3 = x5;
B4 = x8;
B5 = x9;
Elementos de la columna Cb
Cada celda de esta columna es igual al coeficiente que corresponde a la variable básica de la fila correspondiente.
Cb1 = 0;
Cb2 = 0;
Cb3 = 0;
Cb4 = -M;
Cb5 = -M;
Valores de las variables y columna P
En esta etapa no se realizan cálculos; simplemente se transfieren los valores de la etapa preliminar a las celdas de la tabla correspondientes:
P1 = 600;
P2 = 225;
P3 = 1000;
P4 = 150;
P5 = 0;
x1,1 = 2;
x1,2 = 1;
x1,3 = 1;
x1,4 = 0;
x1,5 = 0;
x1,6 = 0;
x1,7 = 0;
x1,8 = 0;
x1,9 = 0;
x2,1 = 0;
x2,2 = 0;
x2,3 = 0;
x2,4 = 1;
x2,5 = 0;
x2,6 = 0;
x2,7 = 0;
x2,8 = 0;
x2,9 = 0;
x3,1 = 5;
x3,2 = 4;
x3,3 = 0;
x3,4 = 0;
x3,5 = 1;
x3,6 = 0;
x3,7 = 0;
x3,8 = 0;
x3,9 = 0;
x4,1 = 0;
x4,2 = 2;
x4,3 = 0;
x4,4 = 0;
x4,5 = 0;
x4,6 = -1;
x4,7 = 0;
x4,8 = 1;
x4,9 = 0;
x5,1 = 0;
x5,2 = 0;
x5,3 = 0;
x5,4 = 0;
x5,5 = 0;
x5,6 = 0;
x5,7 = -1;
x5,8 = 0;
x5,9 = 1;
Valor de la función objetivo
Calculamos el valor de la función objetivo multiplicando elemento a elemento la columna Cb por la columna P y sumando los productos.
MaxP = (Cb1 * P1) + (Cb2 * P2) + (Cb3 * P3) + (Cb4 * P4) + (Cb5 * P5) = (0 * 600) + (0 * 225) + (0 * 1000) + (-M * 150) + (-M * 0) = -150M;
Estimaciones de las variables controladas
Calculamos las estimaciones para cada variable controlada multiplicando elemento a elemento el valor de la columna de la variable por el valor de la columna Cb, sumando los productos y restando el coeficiente de la función objetivo para esa variable.
Maxx1 = ((Cb1 * x1,1) + (Cb2 * x2,1) + (Cb3 * x3,1) + (Cb4 * x4,1) + (Cb5 * x5,1)) - kx1 = ((0 * 2) + (0 * 0) + (0 * 5) + (-M * 0) + (-M * 0)) - 3 = -3;
Maxx2 = ((Cb1 * x1,2) + (Cb2 * x2,2) + (Cb3 * x3,2) + (Cb4 * x4,2) + (Cb5 * x5,2)) - kx2 = ((0 * 1) + (0 * 0) + (0 * 4) + (-M * 2) + (-M * 0)) - 4 = -2M-4;
Maxx3 = ((Cb1 * x1,3) + (Cb2 * x2,3) + (Cb3 * x3,3) + (Cb4 * x4,3) + (Cb5 * x5,3)) - kx3 = ((0 * 1) + (0 * 0) + (0 * 0) + (-M * 0) + (-M * 0)) - 0 = 0;
Maxx4 = ((Cb1 * x1,4) + (Cb2 * x2,4) + (Cb3 * x3,4) + (Cb4 * x4,4) + (Cb5 * x5,4)) - kx4 = ((0 * 0) + (0 * 1) + (0 * 0) + (-M * 0) + (-M * 0)) - 0 = 0;
Maxx5 = ((Cb1 * x1,5) + (Cb2 * x2,5) + (Cb3 * x3,5) + (Cb4 * x4,5) + (Cb5 * x5,5)) - kx5 = ((0 * 0) + (0 * 0) + (0 * 1) + (-M * 0) + (-M * 0)) - 0 = 0;
Maxx6 = ((Cb1 * x1,6) + (Cb2 * x2,6) + (Cb3 * x3,6) + (Cb4 * x4,6) + (Cb5 * x5,6)) - kx6 = ((0 * 0) + (0 * 0) + (0 * 0) + (-M * -1) + (-M * 0)) - 0 = M;
Maxx7 = ((Cb1 * x1,7) + (Cb2 * x2,7) + (Cb3 * x3,7) + (Cb4 * x4,7) + (Cb5 * x5,7)) - kx7 = ((0 * 0) + (0 * 0) + (0 * 0) + (-M * 0) + (-M * -1)) - 0 = M;
Maxx8 = ((Cb1 * x1,8) + (Cb2 * x2,8) + (Cb3 * x3,8) + (Cb4 * x4,8) + (Cb5 * x5,8)) - kx8 = ((0 * 0) + (0 * 0) + (0 * 0) + (-M * 1) + (-M * 0)) - -M = 0;
Maxx9 = ((Cb1 * x1,9) + (Cb2 * x2,9) + (Cb3 * x3,9) + (Cb4 * x4,9) + (Cb5 * x5,9)) - kx9 = ((0 * 0) + (0 * 0) + (0 * 0) + (-M * 0) + (-M * 1)) - -M = 0;
Elementos de la columna Q
Como hay valores negativos entre las estimaciones de las variables controladas, la tabla actual aún no tiene solución óptima. Por lo tanto, introducimos en la base la variable con la estimación negativa más pequeña.
El número de variables en la base es siempre constante, por lo que es necesario elegir qué variable sacar de la base, para lo cual calculamos Q.
Los elementos de la columna Q se calculan dividiendo los valores de la columna P entre el valor de la columna correspondiente a la variable que entra a la base:
Q1 = P1x1,2 = 6001 = 600;
Q2 = P2x2,2 = 2250 = ∞;
Q3 = P3x3,2 = 10004 = 250;
Q4 = P4x4,2 = 1502 = 75;
Q5 = P5x5,2 = 00 = ∞;
Sacamos de la base la variable con el valor positivo más pequeño de Q.
En la intersección de la fila que corresponde a la variable que sale de la base y la columna que corresponde a la variable que entra a la base se encuentra el elemento resolutivo.
Este elemento nos permitirá calcular los elementos de la tabla de la siguiente iteración.
| B | Cb | P | x1↓ | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | Q |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3 | 4 | 0 | 0 | 0 | 0 | 0 | -M | -M | ||||
| x3 | 0 | 525 | 2 | 0 | 1 | 0 | 0 | 12 | 0 | -12 | 0 | 26212 |
| x4 | 0 | 225 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | ∞ |
| x5← | 0 | 700 | 5 | 0 | 0 | 0 | 1 | 2 | 0 | -2 | 0 | 140 |
| x2 | 4 | 75 | 0 | 1 | 0 | 0 | 0 | -12 | 0 | 12 | 0 | ∞ |
| x9 | -M | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | 1 | ∞ |
| max | 300 | -3 | 0 | 0 | 0 | 0 | -2 | M | M+2 | 0 | ||
Elementos de la columna base (B)
Con los resultados de los cálculos de la iteración anterior, extraemos de la base la variable x8 y en su lugar introducimos x2. El resto de las celdas permanece sin cambios.
Elementos de la columna Cb
Cada celda de esta columna es igual al coeficiente que corresponde a la variable básica de la fila correspondiente.
Cb1 = 0;
Cb2 = 0;
Cb3 = 0;
Cb4 = 4;
Cb5 = -M;
Valores de las variables y columna P
(Los datos de la iteración anterior se toman como datos iniciales)
Llenamos con ceros todas las celdas correspondientes a la variable que acaba de entrar a la base:
(El elemento resolutivo permanece sin cambios)
x1,2 = 0;
x2,2 = 0;
x3,2 = 0;
x5,2 = 0;
Trasladamos la fila con el elemento resolutivo de la tabla anterior a la tabla actual, dividiendo elemento a elemento sus valores entre el elemento resolutivo:
x4,1 = x4,1x4,2 = 02 = 0;
x4,2 = x4,2x4,2 = 22 = 1;
x4,3 = x4,3x4,2 = 02 = 0;
x4,4 = x4,4x4,2 = 02 = 0;
x4,5 = x4,5x4,2 = 02 = 0;
x4,6 = x4,6x4,2 = -12 = -12;
x4,7 = x4,7x4,2 = 02 = 0;
x4,8 = x4,8x4,2 = 12 = 12;
x4,9 = x4,9x4,2 = 02 = 0;
P4 = P4x4,2 = 1502 = 75;
Las celdas vacías restantes, excepto la fila de estimaciones y la columna Q, se calculan usando el método del rectángulo respecto al elemento resolutivo:
x1,1 = (x1,1 * x4,2) - (x1,2 * x4,1)x4,2 = (2 * 2) - (1 * 0)2 = 2;
x1,3 = (x1,3 * x4,2) - (x1,2 * x4,3)x4,2 = (1 * 2) - (1 * 0)2 = 1;
x1,4 = (x1,4 * x4,2) - (x1,2 * x4,4)x4,2 = (0 * 2) - (1 * 0)2 = 0;
x1,5 = (x1,5 * x4,2) - (x1,2 * x4,5)x4,2 = (0 * 2) - (1 * 0)2 = 0;
x1,6 = (x1,6 * x4,2) - (x1,2 * x4,6)x4,2 = (0 * 2) - (1 * -1)2 = 12;
x1,7 = (x1,7 * x4,2) - (x1,2 * x4,7)x4,2 = (0 * 2) - (1 * 0)2 = 0;
x1,8 = (x1,8 * x4,2) - (x1,2 * x4,8)x4,2 = (0 * 2) - (1 * 1)2 = -12;
x1,9 = (x1,9 * x4,2) - (x1,2 * x4,9)x4,2 = (0 * 2) - (1 * 0)2 = 0;
P1 = (P1 * x4,2) - (x1,2 * P4)x4,2 = (600 * 2) - (1 * 150)2 = 525;
x2,1 = (x2,1 * x4,2) - (x2,2 * x4,1)x4,2 = (0 * 2) - (0 * 0)2 = 0;
x2,3 = (x2,3 * x4,2) - (x2,2 * x4,3)x4,2 = (0 * 2) - (0 * 0)2 = 0;
x2,4 = (x2,4 * x4,2) - (x2,2 * x4,4)x4,2 = (1 * 2) - (0 * 0)2 = 1;
x2,5 = (x2,5 * x4,2) - (x2,2 * x4,5)x4,2 = (0 * 2) - (0 * 0)2 = 0;
x2,6 = (x2,6 * x4,2) - (x2,2 * x4,6)x4,2 = (0 * 2) - (0 * -1)2 = 0;
x2,7 = (x2,7 * x4,2) - (x2,2 * x4,7)x4,2 = (0 * 2) - (0 * 0)2 = 0;
x2,8 = (x2,8 * x4,2) - (x2,2 * x4,8)x4,2 = (0 * 2) - (0 * 1)2 = 0;
x2,9 = (x2,9 * x4,2) - (x2,2 * x4,9)x4,2 = (0 * 2) - (0 * 0)2 = 0;
P2 = (P2 * x4,2) - (x2,2 * P4)x4,2 = (225 * 2) - (0 * 150)2 = 225;
x3,1 = (x3,1 * x4,2) - (x3,2 * x4,1)x4,2 = (5 * 2) - (4 * 0)2 = 5;
x3,3 = (x3,3 * x4,2) - (x3,2 * x4,3)x4,2 = (0 * 2) - (4 * 0)2 = 0;
x3,4 = (x3,4 * x4,2) - (x3,2 * x4,4)x4,2 = (0 * 2) - (4 * 0)2 = 0;
x3,5 = (x3,5 * x4,2) - (x3,2 * x4,5)x4,2 = (1 * 2) - (4 * 0)2 = 1;
x3,6 = (x3,6 * x4,2) - (x3,2 * x4,6)x4,2 = (0 * 2) - (4 * -1)2 = 2;
x3,7 = (x3,7 * x4,2) - (x3,2 * x4,7)x4,2 = (0 * 2) - (4 * 0)2 = 0;
x3,8 = (x3,8 * x4,2) - (x3,2 * x4,8)x4,2 = (0 * 2) - (4 * 1)2 = -2;
x3,9 = (x3,9 * x4,2) - (x3,2 * x4,9)x4,2 = (0 * 2) - (4 * 0)2 = 0;
P3 = (P3 * x4,2) - (x3,2 * P4)x4,2 = (1000 * 2) - (4 * 150)2 = 700;
x5,1 = (x5,1 * x4,2) - (x5,2 * x4,1)x4,2 = (0 * 2) - (0 * 0)2 = 0;
x5,3 = (x5,3 * x4,2) - (x5,2 * x4,3)x4,2 = (0 * 2) - (0 * 0)2 = 0;
x5,4 = (x5,4 * x4,2) - (x5,2 * x4,4)x4,2 = (0 * 2) - (0 * 0)2 = 0;
x5,5 = (x5,5 * x4,2) - (x5,2 * x4,5)x4,2 = (0 * 2) - (0 * 0)2 = 0;
x5,6 = (x5,6 * x4,2) - (x5,2 * x4,6)x4,2 = (0 * 2) - (0 * -1)2 = 0;
x5,7 = (x5,7 * x4,2) - (x5,2 * x4,7)x4,2 = (-1 * 2) - (0 * 0)2 = -1;
x5,8 = (x5,8 * x4,2) - (x5,2 * x4,8)x4,2 = (0 * 2) - (0 * 1)2 = 0;
x5,9 = (x5,9 * x4,2) - (x5,2 * x4,9)x4,2 = (1 * 2) - (0 * 0)2 = 1;
P5 = (P5 * x4,2) - (x5,2 * P4)x4,2 = (0 * 2) - (0 * 150)2 = 0;
Valor de la función objetivo
Calculamos el valor de la función objetivo multiplicando elemento a elemento la columna Cb por la columna P y sumando los productos.
MaxP = (Cb1 * P1) + (Cb2 * P2) + (Cb3 * P3) + (Cb4 * P4) + (Cb5 * P5) = (0 * 525) + (0 * 225) + (0 * 700) + (4 * 75) + (-M * 0) = 300;
Estimaciones de las variables controladas
Calculamos las estimaciones para cada variable controlada multiplicando elemento a elemento el valor de la columna de la variable por el valor de la columna Cb, sumando los productos y restando el coeficiente de la función objetivo para esa variable.
Maxx1 = ((Cb1 * x1,1) + (Cb2 * x2,1) + (Cb3 * x3,1) + (Cb4 * x4,1) + (Cb5 * x5,1)) - kx1 = ((0 * 2) + (0 * 0) + (0 * 5) + (4 * 0) + (-M * 0)) - 3 = -3;
Maxx2 = ((Cb1 * x1,2) + (Cb2 * x2,2) + (Cb3 * x3,2) + (Cb4 * x4,2) + (Cb5 * x5,2)) - kx2 = ((0 * 0) + (0 * 0) + (0 * 0) + (4 * 1) + (-M * 0)) - 4 = 0;
Maxx3 = ((Cb1 * x1,3) + (Cb2 * x2,3) + (Cb3 * x3,3) + (Cb4 * x4,3) + (Cb5 * x5,3)) - kx3 = ((0 * 1) + (0 * 0) + (0 * 0) + (4 * 0) + (-M * 0)) - 0 = 0;
Maxx4 = ((Cb1 * x1,4) + (Cb2 * x2,4) + (Cb3 * x3,4) + (Cb4 * x4,4) + (Cb5 * x5,4)) - kx4 = ((0 * 0) + (0 * 1) + (0 * 0) + (4 * 0) + (-M * 0)) - 0 = 0;
Maxx5 = ((Cb1 * x1,5) + (Cb2 * x2,5) + (Cb3 * x3,5) + (Cb4 * x4,5) + (Cb5 * x5,5)) - kx5 = ((0 * 0) + (0 * 0) + (0 * 1) + (4 * 0) + (-M * 0)) - 0 = 0;
Maxx6 = ((Cb1 * x1,6) + (Cb2 * x2,6) + (Cb3 * x3,6) + (Cb4 * x4,6) + (Cb5 * x5,6)) - kx6 = ((0 * 12) + (0 * 0) + (0 * 2) + (4 * -12) + (-M * 0)) - 0 = -2;
Maxx7 = ((Cb1 * x1,7) + (Cb2 * x2,7) + (Cb3 * x3,7) + (Cb4 * x4,7) + (Cb5 * x5,7)) - kx7 = ((0 * 0) + (0 * 0) + (0 * 0) + (4 * 0) + (-M * -1)) - 0 = M;
Maxx8 = ((Cb1 * x1,8) + (Cb2 * x2,8) + (Cb3 * x3,8) + (Cb4 * x4,8) + (Cb5 * x5,8)) - kx8 = ((0 * -12) + (0 * 0) + (0 * -2) + (4 * 12) + (-M * 0)) - -M = M+2;
Maxx9 = ((Cb1 * x1,9) + (Cb2 * x2,9) + (Cb3 * x3,9) + (Cb4 * x4,9) + (Cb5 * x5,9)) - kx9 = ((0 * 0) + (0 * 0) + (0 * 0) + (4 * 0) + (-M * 1)) - -M = 0;
Elementos de la columna Q
Como hay valores negativos entre las estimaciones de las variables controladas, la tabla actual aún no tiene solución óptima. Por lo tanto, introducimos en la base la variable con la estimación negativa más pequeña.
El número de variables en la base es siempre constante, por lo que es necesario elegir qué variable sacar de la base, para lo cual calculamos Q.
Los elementos de la columna Q se calculan dividiendo los valores de la columna P entre el valor de la columna correspondiente a la variable que entra a la base:
Q1 = P1x1,1 = 5252 = 26212;
Q2 = P2x2,1 = 2250 = ∞;
Q3 = P3x3,1 = 7005 = 140;
Q4 = P4x4,1 = 750 = ∞;
Q5 = P5x5,1 = 00 = ∞;
Sacamos de la base la variable con el valor positivo más pequeño de Q.
En la intersección de la fila que corresponde a la variable que sale de la base y la columna que corresponde a la variable que entra a la base se encuentra el elemento resolutivo.
Este elemento nos permitirá calcular los elementos de la tabla de la siguiente iteración.
| B | Cb | P | x1 | x2 | x3 | x4 | x5 | x6↓ | x7 | x8 | x9 | Q |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3 | 4 | 0 | 0 | 0 | 0 | 0 | -M | -M | ||||
| x3 | 0 | 245 | 0 | 0 | 1 | 0 | -25 | -310 | 0 | 310 | 0 | ∞ |
| x4 | 0 | 225 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | ∞ |
| x1← | 3 | 140 | 1 | 0 | 0 | 0 | 15 | 25 | 0 | -25 | 0 | 350 |
| x2 | 4 | 75 | 0 | 1 | 0 | 0 | 0 | -12 | 0 | 12 | 0 | ∞ |
| x9 | -M | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | 1 | ∞ |
| max | 720 | 0 | 0 | 0 | 0 | 35 | -45 | M | M+45 | 0 | ||
Elementos de la columna base (B)
Con los resultados de los cálculos de la iteración anterior, extraemos de la base la variable x5 y en su lugar introducimos x1. El resto de las celdas permanece sin cambios.
Elementos de la columna Cb
Cada celda de esta columna es igual al coeficiente que corresponde a la variable básica de la fila correspondiente.
Cb1 = 0;
Cb2 = 0;
Cb3 = 3;
Cb4 = 4;
Cb5 = -M;
Valores de las variables y columna P
(Los datos de la iteración anterior se toman como datos iniciales)
Llenamos con ceros todas las celdas correspondientes a la variable que acaba de entrar a la base:
(El elemento resolutivo permanece sin cambios)
x1,1 = 0;
x2,1 = 0;
x4,1 = 0;
x5,1 = 0;
Trasladamos la fila con el elemento resolutivo de la tabla anterior a la tabla actual, dividiendo elemento a elemento sus valores entre el elemento resolutivo:
x3,1 = x3,1x3,1 = 55 = 1;
x3,2 = x3,2x3,1 = 05 = 0;
x3,3 = x3,3x3,1 = 05 = 0;
x3,4 = x3,4x3,1 = 05 = 0;
x3,5 = x3,5x3,1 = 15 = 15;
x3,6 = x3,6x3,1 = 25 = 25;
x3,7 = x3,7x3,1 = 05 = 0;
x3,8 = x3,8x3,1 = -25 = -25;
x3,9 = x3,9x3,1 = 05 = 0;
P3 = P3x3,1 = 7005 = 140;
Las celdas vacías restantes, excepto la fila de estimaciones y la columna Q, se calculan usando el método del rectángulo respecto al elemento resolutivo:
x1,2 = (x1,2 * x3,1) - (x1,1 * x3,2)x3,1 = (0 * 5) - (2 * 0)5 = 0;
x1,3 = (x1,3 * x3,1) - (x1,1 * x3,3)x3,1 = (1 * 5) - (2 * 0)5 = 1;
x1,4 = (x1,4 * x3,1) - (x1,1 * x3,4)x3,1 = (0 * 5) - (2 * 0)5 = 0;
x1,5 = (x1,5 * x3,1) - (x1,1 * x3,5)x3,1 = (0 * 5) - (2 * 1)5 = -25;
x1,6 = (x1,6 * x3,1) - (x1,1 * x3,6)x3,1 = (12 * 5) - (2 * 2)5 = -310;
x1,7 = (x1,7 * x3,1) - (x1,1 * x3,7)x3,1 = (0 * 5) - (2 * 0)5 = 0;
x1,8 = (x1,8 * x3,1) - (x1,1 * x3,8)x3,1 = (-12 * 5) - (2 * -2)5 = 310;
x1,9 = (x1,9 * x3,1) - (x1,1 * x3,9)x3,1 = (0 * 5) - (2 * 0)5 = 0;
P1 = (P1 * x3,1) - (x1,1 * P3)x3,1 = (525 * 5) - (2 * 700)5 = 245;
x2,2 = (x2,2 * x3,1) - (x2,1 * x3,2)x3,1 = (0 * 5) - (0 * 0)5 = 0;
x2,3 = (x2,3 * x3,1) - (x2,1 * x3,3)x3,1 = (0 * 5) - (0 * 0)5 = 0;
x2,4 = (x2,4 * x3,1) - (x2,1 * x3,4)x3,1 = (1 * 5) - (0 * 0)5 = 1;
x2,5 = (x2,5 * x3,1) - (x2,1 * x3,5)x3,1 = (0 * 5) - (0 * 1)5 = 0;
x2,6 = (x2,6 * x3,1) - (x2,1 * x3,6)x3,1 = (0 * 5) - (0 * 2)5 = 0;
x2,7 = (x2,7 * x3,1) - (x2,1 * x3,7)x3,1 = (0 * 5) - (0 * 0)5 = 0;
x2,8 = (x2,8 * x3,1) - (x2,1 * x3,8)x3,1 = (0 * 5) - (0 * -2)5 = 0;
x2,9 = (x2,9 * x3,1) - (x2,1 * x3,9)x3,1 = (0 * 5) - (0 * 0)5 = 0;
P2 = (P2 * x3,1) - (x2,1 * P3)x3,1 = (225 * 5) - (0 * 700)5 = 225;
x4,2 = (x4,2 * x3,1) - (x4,1 * x3,2)x3,1 = (1 * 5) - (0 * 0)5 = 1;
x4,3 = (x4,3 * x3,1) - (x4,1 * x3,3)x3,1 = (0 * 5) - (0 * 0)5 = 0;
x4,4 = (x4,4 * x3,1) - (x4,1 * x3,4)x3,1 = (0 * 5) - (0 * 0)5 = 0;
x4,5 = (x4,5 * x3,1) - (x4,1 * x3,5)x3,1 = (0 * 5) - (0 * 1)5 = 0;
x4,6 = (x4,6 * x3,1) - (x4,1 * x3,6)x3,1 = (-12 * 5) - (0 * 2)5 = -12;
x4,7 = (x4,7 * x3,1) - (x4,1 * x3,7)x3,1 = (0 * 5) - (0 * 0)5 = 0;
x4,8 = (x4,8 * x3,1) - (x4,1 * x3,8)x3,1 = (12 * 5) - (0 * -2)5 = 12;
x4,9 = (x4,9 * x3,1) - (x4,1 * x3,9)x3,1 = (0 * 5) - (0 * 0)5 = 0;
P4 = (P4 * x3,1) - (x4,1 * P3)x3,1 = (75 * 5) - (0 * 700)5 = 75;
x5,2 = (x5,2 * x3,1) - (x5,1 * x3,2)x3,1 = (0 * 5) - (0 * 0)5 = 0;
x5,3 = (x5,3 * x3,1) - (x5,1 * x3,3)x3,1 = (0 * 5) - (0 * 0)5 = 0;
x5,4 = (x5,4 * x3,1) - (x5,1 * x3,4)x3,1 = (0 * 5) - (0 * 0)5 = 0;
x5,5 = (x5,5 * x3,1) - (x5,1 * x3,5)x3,1 = (0 * 5) - (0 * 1)5 = 0;
x5,6 = (x5,6 * x3,1) - (x5,1 * x3,6)x3,1 = (0 * 5) - (0 * 2)5 = 0;
x5,7 = (x5,7 * x3,1) - (x5,1 * x3,7)x3,1 = (-1 * 5) - (0 * 0)5 = -1;
x5,8 = (x5,8 * x3,1) - (x5,1 * x3,8)x3,1 = (0 * 5) - (0 * -2)5 = 0;
x5,9 = (x5,9 * x3,1) - (x5,1 * x3,9)x3,1 = (1 * 5) - (0 * 0)5 = 1;
P5 = (P5 * x3,1) - (x5,1 * P3)x3,1 = (0 * 5) - (0 * 700)5 = 0;
Valor de la función objetivo
Calculamos el valor de la función objetivo multiplicando elemento a elemento la columna Cb por la columna P y sumando los productos.
MaxP = (Cb1 * P1) + (Cb2 * P2) + (Cb3 * P3) + (Cb4 * P4) + (Cb5 * P5) = (0 * 245) + (0 * 225) + (3 * 140) + (4 * 75) + (-M * 0) = 720;
Estimaciones de las variables controladas
Calculamos las estimaciones para cada variable controlada multiplicando elemento a elemento el valor de la columna de la variable por el valor de la columna Cb, sumando los productos y restando el coeficiente de la función objetivo para esa variable.
Maxx1 = ((Cb1 * x1,1) + (Cb2 * x2,1) + (Cb3 * x3,1) + (Cb4 * x4,1) + (Cb5 * x5,1)) - kx1 = ((0 * 0) + (0 * 0) + (3 * 1) + (4 * 0) + (-M * 0)) - 3 = 0;
Maxx2 = ((Cb1 * x1,2) + (Cb2 * x2,2) + (Cb3 * x3,2) + (Cb4 * x4,2) + (Cb5 * x5,2)) - kx2 = ((0 * 0) + (0 * 0) + (3 * 0) + (4 * 1) + (-M * 0)) - 4 = 0;
Maxx3 = ((Cb1 * x1,3) + (Cb2 * x2,3) + (Cb3 * x3,3) + (Cb4 * x4,3) + (Cb5 * x5,3)) - kx3 = ((0 * 1) + (0 * 0) + (3 * 0) + (4 * 0) + (-M * 0)) - 0 = 0;
Maxx4 = ((Cb1 * x1,4) + (Cb2 * x2,4) + (Cb3 * x3,4) + (Cb4 * x4,4) + (Cb5 * x5,4)) - kx4 = ((0 * 0) + (0 * 1) + (3 * 0) + (4 * 0) + (-M * 0)) - 0 = 0;
Maxx5 = ((Cb1 * x1,5) + (Cb2 * x2,5) + (Cb3 * x3,5) + (Cb4 * x4,5) + (Cb5 * x5,5)) - kx5 = ((0 * -25) + (0 * 0) + (3 * 15) + (4 * 0) + (-M * 0)) - 0 = 35;
Maxx6 = ((Cb1 * x1,6) + (Cb2 * x2,6) + (Cb3 * x3,6) + (Cb4 * x4,6) + (Cb5 * x5,6)) - kx6 = ((0 * -310) + (0 * 0) + (3 * 25) + (4 * -12) + (-M * 0)) - 0 = -45;
Maxx7 = ((Cb1 * x1,7) + (Cb2 * x2,7) + (Cb3 * x3,7) + (Cb4 * x4,7) + (Cb5 * x5,7)) - kx7 = ((0 * 0) + (0 * 0) + (3 * 0) + (4 * 0) + (-M * -1)) - 0 = M;
Maxx8 = ((Cb1 * x1,8) + (Cb2 * x2,8) + (Cb3 * x3,8) + (Cb4 * x4,8) + (Cb5 * x5,8)) - kx8 = ((0 * 310) + (0 * 0) + (3 * -25) + (4 * 12) + (-M * 0)) - -M = M+45;
Maxx9 = ((Cb1 * x1,9) + (Cb2 * x2,9) + (Cb3 * x3,9) + (Cb4 * x4,9) + (Cb5 * x5,9)) - kx9 = ((0 * 0) + (0 * 0) + (3 * 0) + (4 * 0) + (-M * 1)) - -M = 0;
Elementos de la columna Q
Como hay valores negativos entre las estimaciones de las variables controladas, la tabla actual aún no tiene solución óptima. Por lo tanto, introducimos en la base la variable con la estimación negativa más pequeña.
El número de variables en la base es siempre constante, por lo que es necesario elegir qué variable sacar de la base, para lo cual calculamos Q.
Los elementos de la columna Q se calculan dividiendo los valores de la columna P entre el valor de la columna correspondiente a la variable que entra a la base:
Q1 = P1x1,6 = 245-310 = ∞;
Q2 = P2x2,6 = 2250 = ∞;
Q3 = P3x3,6 = 14025 = 350;
Q4 = P4x4,6 = 75-12 = ∞;
Q5 = P5x5,6 = 00 = ∞;
Sacamos de la base la variable con el valor positivo más pequeño de Q.
En la intersección de la fila que corresponde a la variable que sale de la base y la columna que corresponde a la variable que entra a la base se encuentra el elemento resolutivo.
Este elemento nos permitirá calcular los elementos de la tabla de la siguiente iteración.
| B | Cb | P | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | Q |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3 | 4 | 0 | 0 | 0 | 0 | 0 | -M | -M | ||||
| x3 | 0 | 350 | 34 | 0 | 1 | 0 | -14 | 0 | 0 | 0 | 0 | |
| x4 | 0 | 225 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | |
| x6 | 0 | 350 | 212 | 0 | 0 | 0 | 12 | 1 | 0 | -1 | 0 | |
| x2 | 4 | 250 | 114 | 1 | 0 | 0 | 14 | 0 | 0 | 0 | 0 | |
| x9 | -M | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -1 | 0 | 1 | |
| max | 1000 | 2 | 0 | 0 | 0 | 1 | 0 | M | M | 0 | ||
Elementos de la columna base (B)
Con los resultados de los cálculos de la iteración anterior, extraemos de la base la variable x1 y en su lugar introducimos x6. El resto de las celdas permanece sin cambios.
Elementos de la columna Cb
Cada celda de esta columna es igual al coeficiente que corresponde a la variable básica de la fila correspondiente.
Cb1 = 0;
Cb2 = 0;
Cb3 = 0;
Cb4 = 4;
Cb5 = -M;
Valores de las variables y columna P
(Los datos de la iteración anterior se toman como datos iniciales)
Llenamos con ceros todas las celdas correspondientes a la variable que acaba de entrar a la base:
(El elemento resolutivo permanece sin cambios)
x1,6 = 0;
x2,6 = 0;
x4,6 = 0;
x5,6 = 0;
Trasladamos la fila con el elemento resolutivo de la tabla anterior a la tabla actual, dividiendo elemento a elemento sus valores entre el elemento resolutivo:
x3,1 = x3,1x3,6 = 125 = 212;
x3,2 = x3,2x3,6 = 025 = 0;
x3,3 = x3,3x3,6 = 025 = 0;
x3,4 = x3,4x3,6 = 025 = 0;
x3,5 = x3,5x3,6 = 1525 = 12;
x3,6 = x3,6x3,6 = 2525 = 1;
x3,7 = x3,7x3,6 = 025 = 0;
x3,8 = x3,8x3,6 = -2525 = -1;
x3,9 = x3,9x3,6 = 025 = 0;
P3 = P3x3,6 = 14025 = 350;
Las celdas vacías restantes, excepto la fila de estimaciones y la columna Q, se calculan usando el método del rectángulo respecto al elemento resolutivo:
x1,1 = (x1,1 * x3,6) - (x1,6 * x3,1)x3,6 = (0 * 25) - (-310 * 1)25 = 34;
x1,2 = (x1,2 * x3,6) - (x1,6 * x3,2)x3,6 = (0 * 25) - (-310 * 0)25 = 0;
x1,3 = (x1,3 * x3,6) - (x1,6 * x3,3)x3,6 = (1 * 25) - (-310 * 0)25 = 1;
x1,4 = (x1,4 * x3,6) - (x1,6 * x3,4)x3,6 = (0 * 25) - (-310 * 0)25 = 0;
x1,5 = (x1,5 * x3,6) - (x1,6 * x3,5)x3,6 = (-25 * 25) - (-310 * 15)25 = -14;
x1,7 = (x1,7 * x3,6) - (x1,6 * x3,7)x3,6 = (0 * 25) - (-310 * 0)25 = 0;
x1,8 = (x1,8 * x3,6) - (x1,6 * x3,8)x3,6 = (310 * 25) - (-310 * -25)25 = 0;
x1,9 = (x1,9 * x3,6) - (x1,6 * x3,9)x3,6 = (0 * 25) - (-310 * 0)25 = 0;
P1 = (P1 * x3,6) - (x1,6 * P3)x3,6 = (245 * 25) - (-310 * 140)25 = 350;
x2,1 = (x2,1 * x3,6) - (x2,6 * x3,1)x3,6 = (0 * 25) - (0 * 1)25 = 0;
x2,2 = (x2,2 * x3,6) - (x2,6 * x3,2)x3,6 = (0 * 25) - (0 * 0)25 = 0;
x2,3 = (x2,3 * x3,6) - (x2,6 * x3,3)x3,6 = (0 * 25) - (0 * 0)25 = 0;
x2,4 = (x2,4 * x3,6) - (x2,6 * x3,4)x3,6 = (1 * 25) - (0 * 0)25 = 1;
x2,5 = (x2,5 * x3,6) - (x2,6 * x3,5)x3,6 = (0 * 25) - (0 * 15)25 = 0;
x2,7 = (x2,7 * x3,6) - (x2,6 * x3,7)x3,6 = (0 * 25) - (0 * 0)25 = 0;
x2,8 = (x2,8 * x3,6) - (x2,6 * x3,8)x3,6 = (0 * 25) - (0 * -25)25 = 0;
x2,9 = (x2,9 * x3,6) - (x2,6 * x3,9)x3,6 = (0 * 25) - (0 * 0)25 = 0;
P2 = (P2 * x3,6) - (x2,6 * P3)x3,6 = (225 * 25) - (0 * 140)25 = 225;
x4,1 = (x4,1 * x3,6) - (x4,6 * x3,1)x3,6 = (0 * 25) - (-12 * 1)25 = 114;
x4,2 = (x4,2 * x3,6) - (x4,6 * x3,2)x3,6 = (1 * 25) - (-12 * 0)25 = 1;
x4,3 = (x4,3 * x3,6) - (x4,6 * x3,3)x3,6 = (0 * 25) - (-12 * 0)25 = 0;
x4,4 = (x4,4 * x3,6) - (x4,6 * x3,4)x3,6 = (0 * 25) - (-12 * 0)25 = 0;
x4,5 = (x4,5 * x3,6) - (x4,6 * x3,5)x3,6 = (0 * 25) - (-12 * 15)25 = 14;
x4,7 = (x4,7 * x3,6) - (x4,6 * x3,7)x3,6 = (0 * 25) - (-12 * 0)25 = 0;
x4,8 = (x4,8 * x3,6) - (x4,6 * x3,8)x3,6 = (12 * 25) - (-12 * -25)25 = 0;
x4,9 = (x4,9 * x3,6) - (x4,6 * x3,9)x3,6 = (0 * 25) - (-12 * 0)25 = 0;
P4 = (P4 * x3,6) - (x4,6 * P3)x3,6 = (75 * 25) - (-12 * 140)25 = 250;
x5,1 = (x5,1 * x3,6) - (x5,6 * x3,1)x3,6 = (0 * 25) - (0 * 1)25 = 0;
x5,2 = (x5,2 * x3,6) - (x5,6 * x3,2)x3,6 = (0 * 25) - (0 * 0)25 = 0;
x5,3 = (x5,3 * x3,6) - (x5,6 * x3,3)x3,6 = (0 * 25) - (0 * 0)25 = 0;
x5,4 = (x5,4 * x3,6) - (x5,6 * x3,4)x3,6 = (0 * 25) - (0 * 0)25 = 0;
x5,5 = (x5,5 * x3,6) - (x5,6 * x3,5)x3,6 = (0 * 25) - (0 * 15)25 = 0;
x5,7 = (x5,7 * x3,6) - (x5,6 * x3,7)x3,6 = (-1 * 25) - (0 * 0)25 = -1;
x5,8 = (x5,8 * x3,6) - (x5,6 * x3,8)x3,6 = (0 * 25) - (0 * -25)25 = 0;
x5,9 = (x5,9 * x3,6) - (x5,6 * x3,9)x3,6 = (1 * 25) - (0 * 0)25 = 1;
P5 = (P5 * x3,6) - (x5,6 * P3)x3,6 = (0 * 25) - (0 * 140)25 = 0;
Valor de la función objetivo
Calculamos el valor de la función objetivo multiplicando elemento a elemento la columna Cb por la columna P y sumando los productos.
MaxP = (Cb1 * P1) + (Cb2 * P2) + (Cb3 * P3) + (Cb4 * P4) + (Cb5 * P5) = (0 * 350) + (0 * 225) + (0 * 350) + (4 * 250) + (-M * 0) = 1000;
Estimaciones de las variables controladas
Calculamos las estimaciones para cada variable controlada multiplicando elemento a elemento el valor de la columna de la variable por el valor de la columna Cb, sumando los productos y restando el coeficiente de la función objetivo para esa variable.
Maxx1 = ((Cb1 * x1,1) + (Cb2 * x2,1) + (Cb3 * x3,1) + (Cb4 * x4,1) + (Cb5 * x5,1)) - kx1 = ((0 * 34) + (0 * 0) + (0 * 212) + (4 * 114) + (-M * 0)) - 3 = 2;
Maxx2 = ((Cb1 * x1,2) + (Cb2 * x2,2) + (Cb3 * x3,2) + (Cb4 * x4,2) + (Cb5 * x5,2)) - kx2 = ((0 * 0) + (0 * 0) + (0 * 0) + (4 * 1) + (-M * 0)) - 4 = 0;
Maxx3 = ((Cb1 * x1,3) + (Cb2 * x2,3) + (Cb3 * x3,3) + (Cb4 * x4,3) + (Cb5 * x5,3)) - kx3 = ((0 * 1) + (0 * 0) + (0 * 0) + (4 * 0) + (-M * 0)) - 0 = 0;
Maxx4 = ((Cb1 * x1,4) + (Cb2 * x2,4) + (Cb3 * x3,4) + (Cb4 * x4,4) + (Cb5 * x5,4)) - kx4 = ((0 * 0) + (0 * 1) + (0 * 0) + (4 * 0) + (-M * 0)) - 0 = 0;
Maxx5 = ((Cb1 * x1,5) + (Cb2 * x2,5) + (Cb3 * x3,5) + (Cb4 * x4,5) + (Cb5 * x5,5)) - kx5 = ((0 * -14) + (0 * 0) + (0 * 12) + (4 * 14) + (-M * 0)) - 0 = 1;
Maxx6 = ((Cb1 * x1,6) + (Cb2 * x2,6) + (Cb3 * x3,6) + (Cb4 * x4,6) + (Cb5 * x5,6)) - kx6 = ((0 * 0) + (0 * 0) + (0 * 1) + (4 * 0) + (-M * 0)) - 0 = 0;
Maxx7 = ((Cb1 * x1,7) + (Cb2 * x2,7) + (Cb3 * x3,7) + (Cb4 * x4,7) + (Cb5 * x5,7)) - kx7 = ((0 * 0) + (0 * 0) + (0 * 0) + (4 * 0) + (-M * -1)) - 0 = M;
Maxx8 = ((Cb1 * x1,8) + (Cb2 * x2,8) + (Cb3 * x3,8) + (Cb4 * x4,8) + (Cb5 * x5,8)) - kx8 = ((0 * 0) + (0 * 0) + (0 * -1) + (4 * 0) + (-M * 0)) - -M = M;
Maxx9 = ((Cb1 * x1,9) + (Cb2 * x2,9) + (Cb3 * x3,9) + (Cb4 * x4,9) + (Cb5 * x5,9)) - kx9 = ((0 * 0) + (0 * 0) + (0 * 0) + (4 * 0) + (-M * 1)) - -M = 0;
Respuesta
Como no hay valores negativos entre las estimaciones de las variables controladas, la tabla actual tiene una solución óptima.
El valor de la función objetivo:
F* = 1000;
Las variables presentes en la base son iguales a las celdas correspondientes de la columna P; todas las demás variables son iguales a cero:
x1 = 0;
x2 = 250;
Preguntas frecuentes
¿Para qué se utiliza el método símplex?
El método símplex resuelve problemas de programación lineal: maximizar o minimizar una función objetivo lineal sujeta a restricciones lineales de desigualdad o igualdad. Se desplaza entre los vértices de la región factible, mejorando el objetivo en cada paso hasta alcanzar el óptimo.
¿Cómo gestiona esta calculadora la maximización frente a la minimización?
Elige «máx» o «mín» encima de la fila del objetivo. La minimización se resuelve internamente negando el objetivo y maximizando, de modo que el óptimo reportado siempre coincide con la dirección que seleccionaste.
¿Qué significan los resultados «no factible» y «no acotado»?
«No factible» significa que ningún punto satisface todas las restricciones a la vez, por lo que no hay solución. «No acotado» significa que el objetivo puede crecer sin límite dentro de la región factible, por lo que no existe un óptimo finito. La calculadora reporta estos casos en lugar de un óptimo numérico.
¿Por qué se utilizan variables artificiales y una M grande?
Las restricciones de tipo ≥ o = no tienen una solución básica factible inicial evidente, por lo que el método añade variables artificiales y las penaliza con una constante grande M en el objetivo. Esta penalización de la M grande lleva las variables artificiales a cero, recuperando una solución válida del problema original.