03/02/2026
El algoritmo Simplex es una de las temáticas fundamentales y recurrentes en cualquier curso de investigación de operaciones. Su comprensión es clave para abordar la optimización de recursos y la toma de decisiones en diversos campos. En este artículo, desglosaremos cómo encontrar la solución óptima de un problema de programación lineal utilizando el método Simplex, detallando cada paso y abordando tanto problemas de maximización como de minimización.

- ¿Qué es el Método Simplex?
- Pasos Detallados del Método Simplex
- 1. Definir el Problema en la Forma Estándar y Generar la Matriz
- 2. Determinar la Solución Básica Inicial
- 3. Seleccionar la Variable de Entrada (Condición de Optimalidad)
- 4. Seleccionar la Variable de Salida (Condición de Factibilidad)
- 5. Actualizar la Matriz (Operaciones de Gauss-Jordan)
- Iteración Continua: Volver al Paso 3
- Ejemplos Prácticos de Aplicación del Método Simplex
- Preguntas Frecuentes (FAQ) sobre el Método Simplex
- ¿Qué sucede si un problema tiene solución ilimitada?
- ¿Qué ocurre si hay un empate al seleccionar la variable de entrada o salida?
- ¿Cuál es la diferencia entre variables de holgura y variables de exceso?
- ¿Cuándo se utilizan los métodos de las Dos Fases o la M Grande?
- ¿Por qué es tan importante el Método Simplex en la Investigación de Operaciones?
- Reflexión Final
¿Qué es el Método Simplex?
El método Simplex es un procedimiento iterativo desarrollado en 1947 por el matemático estadounidense George Dantzig, diseñado para resolver problemas de programación lineal. Su objetivo principal es encontrar la solución óptima de una función objetivo, sujeta a un conjunto de restricciones lineales. Es decir, busca el mejor valor (máximo o mínimo) que puede tomar una función, sin violar las limitaciones impuestas por las restricciones.
Este algoritmo se basa en dos afirmaciones cruciales para la programación lineal:
- El conjunto de todas las soluciones posibles, conocido como conjunto factible, de cualquier problema de programación lineal puede ser representado geométricamente como un poliedro convexo.
- Si un problema de programación lineal posee una solución óptima y finita, esta siempre se encontrará en uno de los vértices de este poliedro convexo.
El algoritmo Simplex inicia su búsqueda en uno de los vértices de este poliedro. A partir de ahí, evalúa si dicho vértice representa la solución óptima. Si no es así, procede a moverse a un vértice adyacente que mejore el valor de la función objetivo. Este proceso se repite, iteración tras iteración, hasta que se alcanza el vértice que corresponde a la solución óptima.
Pasos Detallados del Método Simplex
Para aplicar el método Simplex, se sigue una secuencia lógica de pasos que nos guían desde la formulación inicial del problema hasta la identificación de la solución óptima. A continuación, detallamos cada uno de ellos:
1. Definir el Problema en la Forma Estándar y Generar la Matriz
Un problema de programación lineal se presenta típicamente con una función objetivo (a maximizar o minimizar) y un conjunto de restricciones. Antes de aplicar el Simplex, es fundamental transformar el modelo a su forma estándar.
Condiciones de la Forma Estándar:
- Todas las restricciones deben ser ecuaciones de igualdad.
- Todos los lados derechos de las restricciones (términos independientes) deben ser no negativos (b_i ≥ 0).
- Todas las variables deben ser no negativas (x_j ≥ 0).
Si el lado derecho de una restricción es negativo, se debe multiplicar toda la restricción por -1. Esto también invertirá el signo de la desigualdad (por ejemplo, ≥ se convierte en ≤, y viceversa). Si es una igualdad, el signo se mantiene.
Conversión de Restricciones en Igualdades:
Restricciones de tipo "menor o igual" (≤): Se introduce una variable de holgura (S_i) no negativa, que representa la cantidad "no utilizada" de un recurso. Sumar esta variable convierte la desigualdad en igualdad. Por ejemplo, si tenemos
X1 + 2X2 ≤ 35, se convierte enX1 + 2X2 + S1 = 35.Restricciones de tipo "mayor o igual" (≥): Se resta una variable de exceso (E_i) para representar la cantidad "excedente" sobre el mínimo requerido, y se suma una variable artificial (A_i). Las variables artificiales son auxiliares y se utilizan en métodos como el de las Dos Fases o la M Grande, que no son el enfoque principal de este artículo. Por ejemplo, si
3X1 + 2X2 ≥ 18se convierte en3X1 + 2X2 - E1 + A1 = 18.Restricciones de tipo "igualdad" (=): Se introduce directamente una variable artificial (A_i). Por ejemplo,
2X1 + 3X2 = 26se convierte en2X1 + 3X2 + A1 = 26.
Es importante destacar que el método Simplex "básico" o "tradicional" que explicamos aquí se aplica directamente a problemas donde todas las restricciones son del tipo "menor o igual" (≤), ya que esto evita el uso de variables artificiales. Para problemas con restricciones de tipo "mayor o igual" (≥) o "igualdad" (=), se suelen emplear los métodos de las Dos Fases o la M Grande, que son extensiones del Simplex.
Generación de la Matriz (Tabla Simplex):
Una vez que el problema está en la forma estándar, se construye la matriz Simplex o "tableau". Esta matriz organiza toda la información del problema de manera sistemática:
- Vector de Costes (Cj): Contiene los coeficientes de todas las variables (originales y de holgura/exceso) en la función objetivo.
- Vector Solución (Cb y Base): La columna 'Base' indica las variables que actualmente forman la solución básica, y 'Cb' sus coeficientes en la función objetivo. La columna 'R' (Recursos) muestra los valores actuales de las variables básicas. Inicialmente, las variables de holgura suelen ser las variables básicas.
- Coeficientes de Restricciones: Son los coeficientes de las variables en las ecuaciones de restricción.
- Vector de Costes Reducidos (Zj - Cj): También conocidos como precios sombra. Se calculan como la suma de (Cb * Coeficiente de la variable en la fila) - Cj. Para el caso sin variables artificiales, en la primera tabla, este vector es simplemente el negativo de los coeficientes de la función objetivo.
Consideremos el siguiente ejemplo para ilustrar los pasos. Supongamos que tenemos un problema de maximización, y tras convertirlo a la forma estándar, obtenemos la siguiente matriz inicial:
| Cb | Base | X1 | X2 | S1 | S2 | S3 | R |
|---|---|---|---|---|---|---|---|
| 0 | S1 | 1 | 2 | 1 | 0 | 0 | 35 |
| 0 | S2 | 3 | 2 | 0 | 1 | 0 | 18 |
| 0 | S3 | 2 | 3 | 0 | 0 | 1 | 26 |
| Z | -3 | -4 | 0 | 0 | 0 | 0 |
2. Determinar la Solución Básica Inicial
La matriz inicial nos proporciona la primera solución básica factible. Las variables en la columna 'Base' son las variables básicas, y su valor es el correspondiente en la columna 'R'. Las variables que no están en la base (variables no básicas) tienen un valor de 0. En nuestro ejemplo, la solución inicial es S1=35, S2=18, S3=26, y Z=0. Las variables no básicas son X1=0 y X2=0.
3. Seleccionar la Variable de Entrada (Condición de Optimalidad)
Este paso determina si la solución actual es la óptima o si podemos mejorarla. Se examina el vector de costes reducidos (fila Z).
Para problemas de Maximización: Si todos los coeficientes en el vector de costes reducidos (fila Z) son mayores o iguales que cero (≥ 0), la solución actual es óptima y el algoritmo termina.
Para problemas de Minimización: Si todos los coeficientes en el vector de costes reducidos (fila Z) son menores o iguales que cero (≤ 0), la solución actual es óptima y el algoritmo termina.
Si la solución no es óptima, se selecciona la variable de entrada (la variable no básica que ingresará a la base):
Para Maximización: Se elige la variable no básica con el coeficiente más negativo en el vector de costes reducidos.
Para Minimización: Se elige la variable no básica con el coeficiente más positivo en el vector de costes reducidos.
La columna donde se encuentra esta variable seleccionada se denomina columna pivote. En nuestro ejemplo (maximización), el valor más negativo en la fila Z es -4, correspondiente a X2. Sin embargo, en el ejemplo detallado del texto original, se selecciona X1 (-3) primero. Vamos a seguir el ejemplo original para consistencia: el valor más negativo es -4, pero siguiendo el ejemplo provisto, se selecciona X1 (-3) como la primera variable de entrada. Esto puede ocurrir si hay un empate o si se elige una convención diferente (por ejemplo, la primera columna con un coeficiente negativo). Siguiendo el ejemplo proporcionado, el valor más negativo es -4 (X2), pero el texto indica que se elige X1 (-3) como variable de entrada, lo cual puede ser una simplificación o una elección arbitraria si hay varios negativos. Para mantener la coherencia con el ejemplo del texto, tomaremos X1 como la variable de entrada, ya que es el primer ejemplo detallado.
4. Seleccionar la Variable de Salida (Condición de Factibilidad)
Una vez identificada la variable de entrada, debemos determinar qué variable básica saldrá de la base. Esto se hace mediante la condición de factibilidad:
- Se divide cada valor de la columna 'R' por el coeficiente correspondiente en la columna pivote (la columna de la variable de entrada). Esta división solo se realiza si el coeficiente en la columna pivote es estrictamente positivo (> 0).
- La variable de salida es aquella cuya fila produce el menor cociente positivo.
Si no hay coeficientes positivos en la columna pivote, significa que el problema tiene una solución ilimitada no acotada. La fila que contiene la variable de salida se conoce como fila pivote, y el elemento en la intersección de la fila pivote y la columna pivote es el elemento pivote.
Retomando nuestro ejemplo, si X1 es la variable de entrada:
- Para S1: 35 / 1 = 35
- Para S2: 18 / 3 = 6
- Para S3: 26 / 2 = 13
El menor cociente positivo es 6, que corresponde a la fila de S2. Por lo tanto, S2 es la variable de salida. El elemento pivote es 3 (intersección de X1 y S2).
5. Actualizar la Matriz (Operaciones de Gauss-Jordan)
Una vez determinado el elemento pivote, se realizan operaciones de fila (similares a las de Gauss-Jordan) para transformar el elemento pivote en 1 y todos los demás elementos de su columna en 0. Esto crea una columna de la matriz identidad para la nueva variable básica.
Fila Pivote: Se divide toda la fila pivote por el elemento pivote. Nuevo Valor Fila Pivote = Valor Actual Fila Pivote / Elemento Pivote.
Otras Filas: Para cada otra fila, el nuevo valor se calcula restando del valor actual, la multiplicación del elemento de esa fila que se encuentra en la columna pivote por el nuevo valor de la fila pivote. Nuevo Valor = Valor Actual – (Elemento Fila Columna Pivote * Nuevo Valor Fila Pivote).

Sé que la TI nspire y la HP Prime se pueden conectar a wifi. Tengo ambas. También tengo la TI 84 (un modelo antiguo, las nuevas son mucho mejores). Puedes descargar todo tipo de contenido sin conexión.
Aplicando estas operaciones a nuestro ejemplo, la matriz después de la primera iteración quedaría así (X1 entra, S2 sale):
| Cb | Base | X1 | X2 | S1 | S2 | S3 | R |
|---|---|---|---|---|---|---|---|
| 0 | S1 | 0 | 4/3 | 1 | -1/3 | 0 | 29 |
| 3 | X1 | 1 | 2/3 | 0 | 1/3 | 0 | 6 |
| 0 | S3 | 0 | 5/3 | 0 | -2/3 | 1 | 14 |
| Z | 0 | -2 | 0 | 1 | 0 | 18 |
Iteración Continua: Volver al Paso 3
Con la matriz actualizada, se vuelve al paso 3 para verificar la condición de optimalidad. Si aún existen valores que indican que la solución no es óptima (negativos en fila Z para maximización, positivos para minimización), se repiten los pasos 3, 4 y 5 hasta alcanzar la solución óptima.
En nuestro ejemplo, la fila Z aún tiene un valor negativo (-2 en X2). Por lo tanto, X2 es la nueva variable de entrada.
- Ratios para la variable de salida (X2 entra):
- S1: 29 / (4/3) = 87/4 = 21.75
- X1: 6 / (2/3) = 18/2 = 9
- S3: 14 / (5/3) = 42/5 = 8.4
El menor cociente positivo es 8.4, correspondiente a la fila de S3. Por lo tanto, S3 es la variable de salida. El elemento pivote es 5/3.
Realizando las operaciones de Gauss-Jordan nuevamente, la matriz final sería:
| Cb | Base | X1 | X2 | S1 | S2 | S3 | R |
|---|---|---|---|---|---|---|---|
| 0 | S1 | 0 | 0 | 1 | 1/5 | -4/5 | 23/5 |
| 3 | X1 | 1 | 0 | 0 | 3/5 | -2/5 | 31/5 |
| 4 | X2 | 0 | 1 | 0 | -2/5 | 3/5 | 42/5 |
| Z | 0 | 0 | 0 | 7/5 | 4/5 | 154/5 |
En esta última matriz, todos los valores del vector de costes reducidos (fila Z) son mayores o iguales a cero (0, 0, 0, 7/5, 4/5), lo que indica que hemos alcanzado la solución óptima para un problema de maximización.
La solución óptima es: X1 = 31/5, X2 = 42/5, S1 = 23/5, S2 = 0, S3 = 0, y el valor máximo de la función objetivo Z = 154/5.
Ejemplos Prácticos de Aplicación del Método Simplex
Para consolidar la comprensión del método Simplex, veamos un par de ejemplos más, uno de maximización y otro de minimización, con sus respectivas matrices iniciales y soluciones finales.
Ejemplo 1: Problema de Maximización
Función Objetivo:
Maximizar: Z = 2X1 + 5X2
Sujeto a:
X1 + 6X2 ≤ 20
X1 + X2 ≤ 60
X1 ≤ 40
X1, X2 ≥ 0
Solución:
Primero, convertimos el problema a la forma estándar añadiendo variables de holgura (S1, S2, S3) a cada restricción:
- X1 + 6X2 + S1 = 20
- X1 + X2 + S2 = 60
- X1 + S3 = 40
La función objetivo en la fila Z del tableau será: Z - 2X1 - 5X2 - 0S1 - 0S2 - 0S3 = 0.
La matriz Simplex inicial es:
| Cb | Base | X1 | X2 | S1 | S2 | S3 | R |
|---|---|---|---|---|---|---|---|
| 0 | S1 | 1 | 6 | 1 | 0 | 0 | 20 |
| 0 | S2 | 1 | 1 | 0 | 1 | 0 | 60 |
| 0 | S3 | 1 | 0 | 0 | 0 | 1 | 40 |
| Z | -2 | -5 | 0 | 0 | 0 | 0 |
Iteraciones:
1. Primera Iteración: La variable de entrada es X2 (coeficiente más negativo en Z: -5). Los cocientes para la variable de salida son: 20/6 (para S1), 60/1 (para S2). La fila con el menor cociente es la de S1 (20/6). Por lo tanto, S1 sale de la base y X2 entra. El elemento pivote es 6.
Después de realizar las operaciones de Gauss-Jordan, la matriz resultante (que en el ejemplo original se presenta como la final) es:
| Cb | Base | X1 | X2 | S1 | S2 | S3 | R |
|---|---|---|---|---|---|---|---|
| 5 | X2 | 1/6 | 1 | 1/6 | 0 | 0 | 10/3 |
| 0 | S2 | 5/6 | 0 | -1/6 | 1 | 0 | 170/3 |
| 0 | S3 | 1 | 0 | 0 | 0 | 1 | 40 |
| Z | -7/6 | 0 | 5/6 | 0 | 0 | 50/3 |
Observamos que en esta matriz aún tenemos un valor negativo en la fila Z (-7/6 para X1). Esto significa que aún no hemos alcanzado la solución óptima. El proceso debería continuar.
2. Segunda Iteración (continuación del ejemplo): X1 entra (por ser el único negativo en Z: -7/6). Los cocientes para la variable de salida son: (10/3) / (1/6) = 20 (para X2), (170/3) / (5/6) = 68 (para S2), 40 / 1 = 40 (para S3). El menor cociente es 20, por lo que X2 sale de la base y X1 entra. El elemento pivote es 1/6.
Después de esta iteración, la matriz final (óptima) sería la siguiente:
| Cb | Base | X1 | X2 | S1 | S2 | S3 | R |
|---|---|---|---|---|---|---|---|
| 2 | X1 | 1 | 6 | 1 | 0 | 0 | 20 |
| 0 | S2 | 0 | -5 | -1 | 1 | 0 | 40 |
| 0 | S3 | 0 | -6 | -1 | 0 | 1 | 20 |
| Z | 0 | 7 | 2 | 0 | 0 | 40 |
En esta matriz final, todos los valores en la fila Z son positivos (0, 7, 2, 0, 0), indicando que hemos alcanzado la solución óptima para la maximización.
Solución Óptima:
Z = 40
X1 = 20
X2 = 0
S1 = 0
S2 = 40
S3 = 20
Ejemplo 2: Problema de Minimización
Función Objetivo:
Minimizar: Z = 3X1 - 2X2
Sujeto a:
2X1 + X2 ≤ 18
2X1 + 3X2 ≤ 42
3X1 - 2X2 ≤ 5
X1, X2 ≥ 0
Solución:
Convertimos el problema a la forma estándar añadiendo variables de holgura (S1, S2, S3):
- 2X1 + X2 + S1 = 18
- 2X1 + 3X2 + S2 = 42
- 3X1 - 2X2 + S3 = 5
La función objetivo en la fila Z del tableau, para minimización, se convierte en: Z - 3X1 + 2X2 - 0S1 - 0S2 - 0S3 = 0.
La matriz Simplex inicial es:
| Cb | Base | X1 | X2 | S1 | S2 | S3 | R |
|---|---|---|---|---|---|---|---|
| 0 | S1 | 2 | 1 | 1 | 0 | 0 | 18 |
| 0 | S2 | 2 | 3 | 0 | 1 | 0 | 42 |
| 0 | S3 | 3 | -2 | 0 | 0 | 1 | 5 |
| Z | -3 | 2 | 0 | 0 | 0 | 0 |
Iteraciones:
1. Primera Iteración: Para minimización, la variable de entrada es X2 (coeficiente más positivo en Z: 2). Los cocientes para la variable de salida son: 18/1 = 18 (para S1), 42/3 = 14 (para S2). La última fila (S3) no se considera porque su coeficiente en la columna X2 es negativo (-2). La fila con el menor cociente es la de S2 (14). Por lo tanto, S2 sale de la base y X2 entra. El elemento pivote es 3.
Después de realizar las operaciones de Gauss-Jordan, la matriz resultante (que en el ejemplo original se presenta como la final) es:
| Cb | Base | X1 | X2 | S1 | S2 | S3 | R |
|---|---|---|---|---|---|---|---|
| 0 | S1 | 4/3 | 0 | 1 | -1/3 | 0 | 4 |
| -2 | X2 | 2/3 | 1 | 0 | 1/3 | 0 | 14 |
| 0 | S3 | 13/3 | 0 | 0 | 2/3 | 1 | 33 |
| Z | -13/3 | 0 | 0 | -2/3 | 0 | -28 |
En esta matriz, todos los valores en la fila Z son menores o iguales a cero (-13/3, 0, 0, -2/3, 0), indicando que hemos alcanzado la solución óptima para la minimización.
Solución Óptima:
Z = -28
X1 = 0
X2 = 14
S1 = 4
S2 = 0
S3 = 33
Preguntas Frecuentes (FAQ) sobre el Método Simplex
¿Qué sucede si un problema tiene solución ilimitada?
Una solución es ilimitada cuando, al intentar seleccionar la variable de salida, todos los coeficientes en la columna pivote (correspondientes a la variable de entrada) son negativos o cero. En este caso, no se puede realizar el test del cociente mínimo, lo que indica que la función objetivo puede crecer (o decrecer, en minimización) indefinidamente sin violar las restricciones.
¿Qué ocurre si hay un empate al seleccionar la variable de entrada o salida?
Si hay un empate en la selección de la variable de entrada (por ejemplo, dos variables con el mismo coeficiente más negativo en maximización), se puede elegir cualquiera de ellas. Esto no afecta la optimalidad de la solución final, aunque podría influir en el número de iteraciones necesarias. Si el empate ocurre al seleccionar la variable de salida (dos o más filas producen el mismo cociente mínimo), elegir una u otra puede llevar a una solución degenerada, donde una variable básica tiene un valor de cero. Esto puede causar un "ciclo" en el algoritmo, aunque es raro en la práctica y existen reglas para romper empates y evitarlo.
¿Cuál es la diferencia entre variables de holgura y variables de exceso?
Las variables de holgura (slack variables) se añaden a las restricciones de tipo "menor o igual" (≤) para convertirlas en igualdades. Representan la cantidad de recurso no utilizado. Siempre son no negativas. Las variables de exceso (surplus variables) se restan de las restricciones de tipo "mayor o igual" (≥) para convertirlas en igualdades. Representan la cantidad en que se excede un requisito mínimo. También son no negativas.
¿Cuándo se utilizan los métodos de las Dos Fases o la M Grande?
Estos métodos son extensiones del Simplex tradicional y se utilizan cuando el problema de programación lineal incluye restricciones de tipo "mayor o igual" (≥) o "igualdad" (=). En estos casos, se introducen variables artificiales que no tienen un significado físico real, pero son necesarias para obtener una solución básica factible inicial. La M Grande penaliza las variables artificiales en la función objetivo, mientras que el método de las Dos Fases resuelve el problema en dos etapas: primero, eliminando las variables artificiales de la base, y luego, resolviendo el problema original.
¿Por qué es tan importante el Método Simplex en la Investigación de Operaciones?
El método Simplex es fundamental porque proporciona una metodología sistemática y eficiente para resolver una amplia variedad de problemas de optimización en el mundo real. Desde la planificación de la producción y la asignación de recursos hasta la logística y las finanzas, el Simplex permite a las organizaciones tomar decisiones informadas para maximizar beneficios o minimizar costos, incluso frente a múltiples restricciones complejas. Su naturaleza iterativa y su base en la geometría de los poliedros lo hacen una herramienta robusta y adaptable.
Reflexión Final
El método Simplex es una herramienta indispensable en el ámbito de la programación lineal y la investigación de operaciones. Conocer a fondo sus pasos y principios te permitirá abordar una gran variedad de problemas de optimización, especialmente aquellos donde las restricciones son del tipo "menor o igual". La práctica constante y la comprensión de cada iteración son clave para dominarlo. Recuerda que existen calculadoras online que te pueden ayudar a verificar tus resultados y a entender mejor el flujo del algoritmo.
Esperamos que esta guía detallada te haya sido de gran utilidad. La capacidad de resolver problemas de optimización es una habilidad valiosa en el mundo actual, y el Simplex es tu primer gran paso para lograrlo. ¡Sigue aprendiendo, creciendo y mejorando!
Si quieres conocer otros artículos parecidos a Dominando el Método Simplex: Guía Completa puedes visitar la categoría Cálculos.
