menu icon shown in narrow screens to bring the side navigation and scores panel into view

Tutorial: El método simplex: Solucionar problemas general de programación lineal

Versión juego adaptivo

⊠

(Se puede encontrar este tema en la Sección 6.4 en el libro Matemáticas finitas y cálculo aplicado)

¿Qué es un tutorial juego adaptivo?  ▶

No me gusta este tutorial. ¡Llévame de vuelta a la versión antigua!

Recursos

Herramienta pivotar Gauss-Jordan Herramienta pivotar Gauss-Jordan Excel Herramienta método simplex
Problemas de maximización no estándar; variables de holgura y excendente

%%Note Necesita saber cómo hacer problemas de maximización estándar para poder seguir este tutorial, así que vuelva a %%lpstd si es necesario.

En el %%lpstd aprendimos que un problema de maximización estándar es un problema de PL donde:
  1. Necesitamos hallar el valor máximo (no mínimo) de la función objetiva.
  2. Todos las variables $x_1, x_2, ..., x_n$ son restringidas a ser no negativas.
  3. Cada restricción adicional tiene la forma $bx_1 + bx_2 + ... + bx_n \bold{\color{#b50b0b}{\leq}} c$ (y no $\geq c$), y $c$ no puede ser negativa.
Un problema general de maximización es casi lo mismo, excepto que eliminamos el último requisito anterior:

Problema maximización general
Un problema de maximización general es un problema de PL que satisface (1) y (2) anteriores, pero donde las restricciones adicionales pueden tener la forma
$bx_1 + bx_2 + ... + bx_n \bold{\color{#b50b0b}{{}\leq{}} c$
con $c$ no negativo en problemas estándares de mazimización, o también
$bx_1 + bx_2 + ... + bx_n \bold{\color{#b50b0b}{{}\geq{}} c$
con $c$ positivo. (Si $c = 0$ multiplicamos por $-1$ para convertirlo en una desigualdad ${}\leq 0$ como lo haríamos con los problemas estándar de mazimización).
%%Examples
1. #[The following is a general maximization problem:][El siguiente es un problema de maximización general:]#
#[Maximize][Maximizar]# \t $p = 2x - 3y + z$ \\ #[subject to][sujeto a]# \t $3y + z \leq 0$ \\ \t $2x + y - z \geq 10$ \\ \t $x \geq 0, y \geq 0, z \geq 0$.

2. El siguiente problema de PL se puede reescribirse como un problema de maximización estándar:
#[Maximize][Maximizar]# \t $p = 3x-3y-8z$ \\ #[subject to][sujeto a]# \t $x-z = 5$ \\ \t $3y+5z \geq 3$ \\ \t $9x-2z \geq 0$ \\ \t $x \geq 0, y \geq 0, z \geq 0$.
Mira la primera restricción: decir que $x-z$ es igual a 5 es lo mismo que decir que $x-z$ es simultáneamente $\geq 5$ y $\leq 5$. Por lo tanto, podemos reemplazar la restricción de igualdad por dos restricciones de desigualdad:
#[Maximize][Maximizar]# \t $p = 3x-3y-8z$ \\ #[subject to][sujeto a]# \t $x-z \geq 5$ \\ \t $x-z \leq 5$ \\ \t $3y+5z \geq 3$ \\ \t $9x-2z \geq 0$ \\ \t $x \geq 0, y \geq 0, z \geq 0$.
Finalmente, convertimos las restricciones de ${}\geq 0$ en restricciones de ${}\leq 0$ al multiplicar ambos lados por $-1$, lo que nos deja con un problema general de maximización:
#[Maximize][Maximizar]# \t $p = 3x-3y-8z$ \\ #[subject to][sujeto a]# \t $x-z \geq 5$ \\ \t $x-z \leq 5$ \\ \t $3y+5z \geq 3$ \\ \t $-9x+2z \leq 0$ \\ \t $x \geq 0, y \geq 0, z \geq 0$.

Al igual que con el método símplex para problemas estándar de maximización, el primer paso es reescribir el problema como un sistema de ecuaciones lineales. La única diferencia aquí es cómo tratamos las restricciones $/geq$:

Convertir a forma de ecuación
Si, por ejemplo, tenemos la restricción $3x-y+z \geq 8$, entonces para obtener una ecuación, necesitamos restar una cualidad no negativa, llamada excedente del lado izquierdo:
$3x-y+z - s = 8 \qquad$ \t #[s is a nonnegative quantity called a surplus variable.][s es una cantidad no negativa llamada una variable de excendente.]#
%%Example A
#[Consider the following general LP maximization problem.][Vamos a considerar el siguente problema PL de maximización:]#
#[Maximize][Maximizar]# \t $p = 2x + 3y + z$ \\ #[subject to][sujeto a]# \t $x + y + z \leq 40$ \\ \t $-y + z \geq 10$ \\ \t $2x + y - z \geq 10$ \\ \t $x \geq 0, y \geq 0, z \geq 0$.
Luego, convertimos todas las restricciones excepto las de la última línea en ecuaciones utilizando variables de holgura y excendente (una para cada desigualdad):
$x + y + z + s = 40$ \t $s$ es ina variable de holgura. \\ $-y + z - t = 10$ \t $t$ es ina variable de excendente. \\ $2x + y - z - u = 10$ \t $u$ es ina variable de excendente. \\ $-2x - 3y - z + p = 0$ \t Función objetiva

Uno para ti
Una vez que hemos convertido el problema en forma de ecuación, configuramos la primera tabla y leer la primera solución básica. Aquí está la primer tabla del Ejemplo A:
%%Q ¿Por qué se marcó con estrella la segunda y la tercera fila?
%%A Los valores actuales de $t$ y $u$ son ambos negativos, lo que indica que la solución básica actual con $x = y = z = 0$ no es factible:
$0 + 0 + 0 \leq 40 \qquad$ \t ✔ \\ $-0 + 0 \geq 10$ \t ✘ \\ $2(0) + 0 - 0 \geq 10$ \t ✘
En el método simplex, ninguna de las variables de decisión puede ser negativa. Si una variable de holgura o excedente es negativa, eso indicaría que la desigualdad asociada no se satisface, como vemos arriba. Por lo tanto,
En cada tabla siempre marcamos con estrellas todas las filas cuyas variables de decisión son negativas para indicar que la solución actual no es factible.
Fase 1: Deshacerse de las estrellas

Para motivar lo que haremos, hacemos la siguiente observación: como las reglas de "razón de prueba" para seleccionar un pivote en una columna dada garantizan que la variable de decisión entrante no sea negativa (y la saliente será cero) y así no se pueden crear nuevas estrellas, se sigue que si un pivote está en una fila marcada con estrella, ¡esa estrella desaparecerá para siempre! Por lo tanto, en la Fase 1, hacemos todo lo posible para encontrar pivotes que estén en las filas destacadas, independientemente de lo que esté sucediendo en la fila. fila inferior, usando la siguiente regla:

Cómo elegir los pivotes en la Fase 1
Al igual que con el método simplex para problemas de maximización estándar, primero escogeremos una columna, y luego una entrada espicífica en esa columna.

Columna pivote La regla para escoger una columna pivote is la siguiente: Mira todos los números en la primera fila marcada con estrella, excluyendo la última entrada a la derecha (en la columna Resultado). Entre aquellos, escoge el número positivo con el valor más grande; su columna es entonces la columna pivote. Si hay dos o más candidatos, escoge alguno de aquellos. Si no hay números positivos para elegir, eso indica que la región factible está vacía, por lo que el problema de PL no tiene solución.
%%Example
En la tabla inicial del problema PL demonstración, la entrada positiva más grande en la primera fila marcada con estrella es el 1, así seleccionamos la columna-z como la columna pivote. El pivote en sí estará en alguna parte de esta columna.
Seleccionar el pivote Usamos las mismas reglas que usamos para los problemas de maximización estándar para decidir qué entrada usar como pivote en la columna pivote, pero con una regla de desempate diferente:
  1. El pivote debe ser positivo (números negativos o ceros no son permitidos como pivotes).
  2. Para cada entrada positiva $b$ en la columna pivote, calcule la razón $a/b$, donde $a$ es el número en la columna más a la derecha de esa fila. A esto lo llamamos razón de prueba.
  3. Entre estas razones, escoge la más pequeña. La entrada correspondiente $b$ es el pivote.
  4. Regla de desempate: Si las razones de prueba para dos o más entradas en la columna pivote califican como las más pequeñas, elija una que esté en una fila destacada si sea posible.
Eliminando estrellas Una vez que haz pivotado, entonces si el pivote estaba en una fila marcada con estrella, la variable entrante para esa fila tendrá un valor positivo, por lo que se debe eliminar esa estrella.

Eliminando estrellas adicionales Si, además, las variables activas asociadas con otras filas marcadas con estrella se vuelven cero después de pivotar, esas estrellas también deben eliminarse (ya que las variables excedentes asociadas ya no son negativas) y la fila debe multiplicarse por $-1$ (para evitar esa fila de tener que volverse una estrella en el futuro). Haz esto solo con filas marcadas con estrella cuyas variables activas asociadas sean cero.
%%Example
#[In the demonstration example we are working with, the pivot will be one of the 1s in the z-column. Here are the test ratios for these candidates:][En el ejemplo demonstración con el que estamos trabajando, el pivote será uno de los 1 en la columna-z. Aquí están las razones de prueba para estos candidatos:]# Ya que la razón de prueba más pequeña ocurre en fila 2, nuestro pivote será la 1 resaltada como mostrado.

#[Because the pivot is in a starred row, pivoting there will result in the star being (permanently) removed from that row becuase the entering variable ($z$) is non nogative:][Debido a que el pivote está en una fila marcada con estrella, pivotar allí hará que la estrella se elimine (permanentemente) de esa fila porque la variable entrante ($z$) no es negativa:]# Si el pivote no hubiera estado en una de las filas marcadas con estrella, ambas estrellas habrían permanecido por el momento, pero eventualmente el proceso descrito aquí da como resultado que se eliminen todos las estrellas.

Como comentamos, el pivoteo repetido en la Fase 1 finalmente elimina todos los estrellas, momento en el cual se completa la Fase 1, y así pasamos a la Fase 2:

Fase 2: proceder como con el problema de maximización estándar.

Una vez que hemos eliminado las estrellas, seleccionamos el pivote como es habitual en la columna de una variable de decisión con la entrada más negativa y así avanzamos hasta que se resuelva el problema.

El método simplex para problemas mximización general: de principio a fin

Pasos en la solución de un problema de maximización general
  1. Convierte el problema en la forma de ecuación usando variables de holgura y excendente. (Elimine decimales y fracciones si es posible, ya sea multiplicando ambos lados de las restricciones por enteros positivos adecuados, o multiplicando ambos lados de las ecuaciones resultantes por enteros positivos adecuados.)
  2. Configura la primera tabla, donde las variables activas son las variables de holgura y excendente. Marca on estrellas todas las vvariables activas cuyas valores son negativos. En la primera tabla, estas van a ser las variables de excedente.
  3. Fase 1: deshacerse de las estrellas Si hay filas marcadas con estrellas, seleccione una columna de una variable de decisión cuya entrada en la primera fila marcada con estrella sea la más positiva.
  4. En aquella columna, selecciona un pivote cuya razón de prueba es lo maás baja entre otras tales entradas.
  5. Pivota sobre la entrada seleccionada usando operaciones de fila del tipo específico descrito en %%gjtutB, recordando indicar también la variable activa entrante en la fila del pivote.
  6. Si el pivote estaba en una fila marcada con estrella, la nueva entrante variable activa es positiva, por lo que se debe quitar la estrella. Si, además, otras variables activas en filas destacadas se vuelven cero, elimina esas estrellas también, pero multiplica esas filas por $-1$.
  7. Repite los pasos 3 a 6 hasta que no quedan filas marcadas con esrellas.
  8. Fase 2: Continúa pivoteando como en el método símplex para problemas de maximización estándar hasta que no haya indicadores negativos en la fila inferior. La solución básica en ese punto da una solución al problema de PL.
%%Example
#[Here is the complete solution to the LP problem we looked at above in Example A.][Aquí está la solución completa al problema de LP que vimos arriba en Ejemplo 1]#
#[Maximize][Maximizar]# \t $p = 2x + 3y + z$ \\ #[subject to][sujeto a]# \t $x + y + z \leq 40$ \\ \t $-y + z \geq 10$ \\ \t $2x + y - z \geq 10$ \\ \t $x \geq 0, y \geq 0, z \geq 0$.
  1. Convierte el problema en la forma de ecuación usando variables de holgura y excendente.
    $x + y + z + s = 40$ \\ $-y + z - t = 10$ \\ $2x + y - z - u = 10$ \\ $-2x - 3y - z + p = 0$.
  2. Configura la primera tabla, donde las variables activas son las variables de holgura y excendente. Marca on estrellas todas las vvariables activas cuyas valores son negativos.
  3. Fase 1: deshacerse de las estrellas Si hay filas marcadas con estrellas, seleccione una columna de una variable de decisión cuya entrada en la primera fila marcada con estrella sea la más positiva.
  4. #[Here, the first starred row is the $t$ row and its largest positive entry apart from the answer column is the $1$ as indicated.][Aquí, la primera fila marcada con estrella es la fila $t$ y su entrada positiva más grande aparte de la columna de respuesta es $1$ como se indica.]#
     
  5. En aquella columna, selecciona un pivote cuya razón de prueba es lo maás baja entre otras tales entradas.
  6. Pivota sobre la entrada seleccionada usando operaciones de fila del tipo específico descrito en %%gjtutB, recordando indicar también la variable activa entrante en la fila del pivote.
    ↓
  7. Si el pivote estaba en una fila marcada con estrella, la nueva entrante variable activa es positiva, por lo que se debe quitar la estrella. Si, además, otras variables activas en filas destacadas se vuelven cero, elimina esas estrellas también, pero multiplica esas filas por $-1$.
  8. #[Here, the star is removed from Row 2. No other stars can be removed.][Aquí, la estrella se elimina de la Fila 2. No se pueden eliminar otras estrellas.]#
     
  9. Repite los pasos 3 a 6 hasta que no quedan filas marcadas con esrellas.
    Como todavía hay una fila marcada con estrella, escogemos su valor más positivo y necesitamos pivotar en esa columna:
    ↓

    #[Therefore we pivot on the boxed 1.][Por lo tanto, pivotamos en la 1 encajada.]#

    ↓

Ya que no quedan ningunas filas marcadas de estrellas, hemos completada la Fase 1, y así pasamos a la Fase 2:

#[The most negative indicator in the bottom row is the $-4$ in the $y$-column, and the only possible pivot we can use is the $4$ in the first row:][El indicador más negativo en la fila inferior es $-4$ en la columna $y$, y el único pivote posible que podemos usar es $4$ en la primera fila:]#
↓
Como no hay más entradas negativas en la fila inferior debajo de las variables de decisión, hemos terminado, por lo que la solución al problema de PL es la solución básica actual:
$x = 20/2 = 10$; \t $y = 40/4 = 10$ \\ $z = 80/4 = 20$; \t $s = 0$; (#[inactive][inactiva]#) \\ $t = 0$; (#[inactive][inactiva]#); \t $u = 0$; (#[inactive][inactiva]#) \\ $p = 70/1 = 70$; \t (#[Maximum value of $p$][Valor má'ximo de $p$]#)

Tu tarea principal en este tutorial es hacer un cálculo completo de principio a fin para un problema de PL no estándar:

Problemas PL generales de minimización

#[You might wonder why we have concentrated on maximization problems so much. What about minimization problems?][Quizás te preguntes por qué nos hemos concentrado tanto en los problemas de maximización. ¿Qué pasa con los problemas de minimización?]#

Solucionar problemas PL generales de minimización
Tratamos los problemas de minimización simplemente convirtiéndolos en problemas de maximización, como se ilustra en el siguiente ejemplo:
%%Example
#[Here is a general LP minimization problem.][Aquí está un problema PL de minimización:]#
#[Minimize][Minimizar]# \t $c = 2x - 3y + 4z + w$ \\ #[subject to][sujeto a]# \t $4x + 2y + w \leq 10$ \\ \t $4x - 3y + z + w \geq 3$ \\ \t $2x + y - z \leq 10$ \\ \t $x \geq 0, y \geq 0, z \geq 0$.
#[In general, the minimum value of $c$ would be the maximum vaue of its negative, we can instead maximize the negative of $c$, which we will call $p$:][En general, el valor mínimo de $c$ sería el valor máximo de su negativo, en su lugar podemos maximizar el negativo de $c$, que llamaremos $p$:]#
#[Maximize][Maximizar]# \t $p = -2x + 3y - 4z - w$ \\ #[subject to][sujeto a]# \t $4x + 2y + w \leq 10$ \\ \t $4x - 3y + z + w \geq 3$ \\ \t $2x + y - z \leq 10$ \\ \t $x \geq 0, y \geq 0, z \geq 0$,
#[which we can now solve according to the instructions for general maximization problems.][que ahora podemos resolver de acuerdo con las instrucciones para problemas generales de maximización.]#

#[If you want to see the tableaus in solving this problem, simply copy and paste the following text in the][Si deseas ver los cuadros para resolver este problema, simplemente copie y pegue el siguiente texto en la]# Herramienta pivotar Gauss-Jordan. Maximize p = -2x + 3y - 4z - w subject to 4x + 2y + w <= 10 4x - 3y + z + w >= 3 2x + y - z <= 10

Ahora prueba algunos de los ejercicios en la Sección 6.4 en el libro Matemáticas finitas y cálculo aplicado.
Última actualización: julio 2022
Derechos de autor © 2020 Stefan Waner y Steven R. Costenoble

 

 

 

← Anterior    Siguiente →
Versión no juego
Todos tutoriales
Página principal
Todo para cálculo
Todo para mat.finitas
Todo
English
Ocultar panel