El algoritmo “Simplex”.
Es un procedimiento iterativo que permite ir mejorando la solución a cada paso. El proceso concluye cuando no es posible seguir mejorando más dicha solución. Partiendo del valor de la función objetivo en un vértice cualquiera, el método consiste en buscar sucesivamente otro vértice que mejore al anterior. La búsqueda se hace siempre a través de los lados del polígono(o de las aristas del poliedro, si el número de variables es mayor). Cómo el número de vértices y de aristas) es finito, siempre se podrá encontrar la solución.
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
Método simplex
1. INSTITUTO TECNOLOGICO SUPERIOR DE MASCOTA
UNIDAD I
METODO SIMPLEX
ASESOR: IIA BRENDA YERANIA ORTEGA FLORES
MATERIA: INVESTIGACION DE IPERACIONES
ALUMNO: ISRAEL RIVAS ALVAREZ
Mascota, Jalisco, México.
Fecha 16 de Octubre del 2013
1
Ing. Israel Rivas Alvarez
2. El algoritmo “Simplex”.
Es un procedimiento iterativo que permite ir mejorando la solución a cada paso. El
proceso concluye cuando no es posible seguir mejorando más dicha solución. Partiendo
del valor de la función objetivo en un vértice cualquiera, el método consiste en buscar
sucesivamente otro vértice que mejore al anterior. La búsqueda se hace siempre a
través de los lados del polígono(o de las aristas del poliedro, si el número de variables
es mayor). Cómo el número de vértices y de aristas) es finito, siempre se podrá
encontrar la solución.
El método del simplex se basa en la siguiente propiedad: si la función objetivo, f, no
toma su valor máximo en el vértice A, entonces hay una arista que parte de A, a lo largo
de la cual f aumenta.
El método del simplex se utiliza, sobre todo, para resolver problemas de programación
lineal en los que intervienen tres o más variables.
El álgebra matricial y el proceso de eliminación de Gauss-Jordan para resolver un
sistema de ecuaciones lineales constituyen la base del método simplex.
Fue desarrollado en 1947 por el Doctor George B. Dantzig.
Mediante su aplicación es posible resolver problemas lineales con n variables y n
restricciones.
Se aplica a problemas tanto de Maximización como de Minimización.
El algoritmo Simplex inicia en el origen y se desplaza por los bordes del área de
soluciones factibles evaluando cada esquina de esta, hasta encontrar la solución
óptima.
Actualmente existe en el mercado múltiple software para la solución de problemas
de programación lineal que aplica este algoritmo, como QSA, QSB, STORM, LINGO,
TORA, AMPL, AB:POM, etc.
En 1984 Narendra Karmarkar creó un nuevo método alternativo para la solución de
problemas de programación lineal, conocido como el algoritmo de Karmarkar o del
punto central.
Este algoritmo inicia situándose en el punto central del área de soluciones factibles,
desde donde evalúa cada esquina de esta, hasta encontrar la solución óptima.
2
Ing. Israel Rivas Alvarez
3.
Ya existe software en el mercado que utiliza este algoritmo, ya que es relativamente
más veloz y de mayor capacidad para manejar más variables y restricciones que el
algoritmo Simplex.
Aplicación del algoritmo Simplex:
Problemas solo con restricciones
del tipo “≤”
Método Simplex convencional
Problemas con restricciones de
los tipos “=” y/o “≥”
Método de la “Gran M”
Método de las “2 Fases”
Desarrollo del algoritmo Simplex.
Para resolver un problema de programación lineal por medio del algoritmo Simplex, se
deben desarrollar los tres pasos descritos a continuación:
1
Obtener la
forma “SIMPLEX ESTÁNDAR” del
modelo de programación lineal
2
Colocar la forma “SIMPLEX
ESTÁNDAR” del modelo en la
TABLA SIMPLEX
3
Aplicar el
ALGORITMO SIMPLEX
1. Obtención de la forma “SIMPLEX ESTÁNDAR”.
a) Convertir las restricciones a ecuaciones:
A todas y cada una de las restricciones del tipo “≤” se les suma una variable de
“holgura” ( Si ).
A todas y cada una de las restricciones del tipo “=” se les suma una variable
“artificial” ( Ri ).
A todas y cada una de las restricciones del tipo “≥” se les resta una variable de
“exceso” ( Si ) y además se les suma una variable “artificial” ( Ri ).
3
Ing. Israel Rivas Alvarez
4. b) Todas las variables de “holgura” y de “exceso” se suman a la Función Objetivo con
coeficiente cero.
c) Todas las variables de “artificiales” ( Ri ) se suman a la Función Objetivo con un
coeficiente diferente de cero (métodos de la gran M y de las 2 fases).
2. La TABLA SIMPLEX.
Renglón Cj
Coeficiente
C1
Recursos
R1
……….
Sn
Variables de la Función Objetivo
Coeficientes de las variables de las restricciones
……….
S1
……….
Variables
Básicas
Coeficientes de las variables de la Función Objetivo
Cn
Rn
Renglón Zj
Valor de Z
Renglón Cj - Zj
Nota: Este formato de la tabla SIMPLEX, puede variar de un libro a otro y de un software a otro; ya que
cada autor utiliza el formato que más se le facilita.
3. Algoritmo SIMPLEX.
a) Calcular el renglón Zj, multiplicando los coeficientes de las variables básicas por los
coeficientes de cada variable de las restricciones y sumando algebraicamente por
columna.
b) Calcular el renglón Cj-Zj, restando cada valor del renglón Cj al valor del renglón Zj
de su columna respectiva.
c) Determinar cual es la variable que entra a la solución:
Maximización
Minimización
Variable con el coeficiente más positivo en renglón Cj-Zj.
Maximizar Z = 2X1 +4X2 - 3X3
Variable con el coeficiente más negativo en renglón Cj-Zj.
Minimizar Z = 2X1 + 4X2 -3X3, o bien:
Maximizar - Z = - 2X1 - 4X2 +3X3
La columna donde se encuentra la variable que entra, se llama “columna pivote”.
4
Ing. Israel Rivas Alvarez
5. d) Determinar cuál es la variable que sale de la solución; la cual será la que tenga la
“razón mínima” con denominador estrictamente positivo (condición de factibilidad).
|La “razón mínima” resulta de dividir el segundo miembro de cada ecuación
(recursos), entre el coeficiente correspondiente de la “columna pivote”.
El renglón en el cual se encuentra la variable que sale y donde se situará la
variable que entra, se conoce como “renglón pivote”.
A la intersección de la “columna pivote” con el “renglón pivote”, se le llama
“número pivote”.
e) Calcular los nuevos valores que tendrá el “renglón pivote” (renglón nuevo),
dividiendo cada número del renglón entre el “número pivote”.
f) Calcular los nuevos valores para los renglones restantes, mediante la siguiente
fórmula:
Números
del renglón
nuevo
=
Números
del renglón
antiguo
-
Número del renglón
antiguo ubicado en
la columna del
número pivote
X
Números del
renglón nuevo
obtenido en el
paso 5
g) Regresar al inciso a.
El algoritmo Simplex termina cuando:
Problemas de Maximización: En el renglón Cj - Zj todos los valores son ceros o
negativos.
Problemas de Minimización: En el renglón Cj - Zj todos los valores son ceros o
positivos.
Con miras a conocer la metodología que se aplica en el Método SIMPLEX, vamos a
resolver el siguiente problema:
Maximizar Z= f(x,y)= 3x + 2y
sujeto a: 2x + y ≤18
2x + 3y ≤42
3x + y ≤24
x0 , y 0
Se consideran las siguientes fases:
1. Convertir las desigualdades en igualdades
5
Ing. Israel Rivas Alvarez
6. Se introduce una variable de holgura por cada una de las restricciones, para
convertirlas en igualdades, resultando el sistema de ecuaciones lineales:
2x + y + h = 18
2x + 3y + s = 42
3x +y + d = 24
2. Igualar la función objetivo a cero: - 3x - 2y + Z = 0
Métodos alternativos.
Para solucionar modelos lineales que contengan restricciones del tipo “=” o “≥”, se
utilizan los métodos descritos a continuación.
Método de la gran “M” (método de la penalización).
Obtener la forma simplex estándar del modelo convirtiendo las restricciones en
ecuaciones, de acuerdo a lo siguiente:
1. A todas las restricciones del tipo “≤”, sumar una variable de “holgura” (Si).
2. A todas las restricciones del tipo “≥”, restar una variable de “exceso” (Si).
3. A las ecuaciones que no cuenten con una variable que desempeñe la función de
“holgura”, se les suma una “variable artificial” (Ri).
4. Todas las variables de “holgura” y de “exceso”, se suman a la función objetivo
con coeficiente cero.
5. Todas las “variables artificiales” también se suman a la función objetivo y se
penalizan asignándoles un coeficiente muy grande (M), que se suma en
problemas de minimización y se resta en problemas de maximización.
Una variable artificial (Ri) no tiene ningún significado en términos de programación
lineal; solo permite iniciar el algoritmo simplex, por lo cual los valores que pueda tomar
en la solución final son difíciles de interpretar.
Método de las 2 fases.
Obtener la forma simplex estándar del modelo convirtiendo las restricciones en
ecuaciones, de acuerdo a los pasos 1, 2 y 3 del método anterior.
6
Ing. Israel Rivas Alvarez
7. Fase 1:
Plantear una nueva función objetivo, donde se minimice la suma de las
variables artificiales ( r = R1 + R2 +…..+ Rn ).
Encontrar una solución factible mediante la tabla inicial y el algoritmo
simplex, tratando de sacar a las variables artificiales de la solución inicial.
Fase 2:
A partir de la solución factible obtenida en el paso anterior, plantear una
nueva tabla inicial simplex con la función objetivo original y sin considerar
las variables artificiales; mediante el algoritmo simplex obtener la solución
óptima del modelo.
Otra información relevante que podemos obtener de la
tabla óptima simplex.
Además de los valores óptimos para cada variable original y básica incluida en el
problema, así como el valor obtenido por la función objetivo con esos valores (Z), la
tabla final del algoritmo Simplex en la cual se muestran estos valores, también muestra
más información que es útil al analista para la correcta toma de decisiones; esta
información es referente a:
El estado de los recursos (lados derechos de las restricciones).
Los precios duales (costo por unidad adicional de recurso).
El costo de oportunidad para las variables originales (Xi).
El estado de los recursos.
Las variables de “holgura” y de “exceso” (Si) que se agregan a las restricciones para
convertirlas en ecuaciones, están asociadas a los recursos (lados derechos de cada
restricción); cuando en la solución óptima del problema alguna de estas variables tiene
valor positivo, se dice que es un “recurso abundante”; si alguna de estas tiene valor
cero, se dice que es un “recurso escaso”.
Los precios duales.
Están representados por los valores negativos (maximización) o positivos
(minimización) en el renglón (Cj-Zj), para las variables de “holgura” y de “exceso” con
valor cero en la solución óptima; representan el costo por cada unidad adicional de
ese recursos que se desee adquirir.
El costo de oportunidad.
Para las variables originales (Xi) que tienen valor cero en la solución óptima, también
están representados por sus valores correspondientes en el renglón (Cj-Zj) y significan
lo que se debe aumentar (maximización) o disminuir (minimización) su coeficiente
en la función objetivo, para que puedan entrar en la solución.
Ejemplo:
7
Ing. Israel Rivas Alvarez
8. Dos productos se elaboran al pasar en forma sucesiva por tres máquinas, el tiempo por
máquina asignado a los dos productos está limitado a 600 horas por mes, el tiempo de
producción y la ganancia por unidad de cada producto son:
PRODUCTO
MINUTOS POR UNIDAD
MAQUINA 1
MAQUINA 2
MAQUINA 3
GANANCIA
10
5
6
20
8
15
$ 2.00
$ 3.00
1
2
El planteamiento del modelo de programación lineal es:
Maximizar Z = 2x1 + 3x2
s.a.
≤ 600
≤ 600
≤ 600
≥0
10x1 + 5x2
6x1 + 20x2
8x1 + 15x2
x1, x2
La forma simplex estándar es:
Maximizar Z = 2x1 + 3x2 + 0s1 + 0s2 + 0s3
s.a. 10x1 + 5x2 + s1
6x1 + 20x2
+ s2
8x1 + 15x2
+ s3
x1, x2, s1, s2, s3
= 600
= 600
= 600
≥0
La tabla óptima simplex (solución final), es:
Cj
2
3
0
0
0
Var. Bas.
Coef.
X1
X2
S1
S2
S3
Recursos
S2
X2
X1
0
3
2
Zj
Cj - Zj
0
0
1
2
0
0
1
0
3
0
0.636
-0.073
0.136
0.053
-0.053
1
0
0
0
0
-1.55
0.091
-0.045
0.183
-0.183
54.55
10.91
54.55
141.82
La asociación de las variables de “holgura“, son:
S1 representa el tiempo en la máquina 1
S2 representa el tiempo en la máquina 2
S3 representa el tiempo en la máquina 3
Observando la tabla final simplex, conteste las siguientes preguntas:
¿Cuál es el estado que guardan los recursos?
¿Cuáles son sus precios duales o precios sombra?
¿Cuáles son los costos de oportunidad para los coeficientes de la función objetivo?
Soluciones particulares en el algoritmo SIMPLEX.
8
Ing. Israel Rivas Alvarez
9. El algoritmo Simplex permite en la tabla final del procedimiento (óptima), identificar
algunas de las soluciones particulares a las que se puede llegar; a continuación se
muestra esta tabla y su interpretación para problemas de maximización.
Caso 1
DEGENERACION
Se produce cuando alguna de las variables básicas toma un valor de cero en la
solución óptima.
Cuando en la condición de factibilidad para determinar la variable que sale se
produce un empate entre 2 renglones, esto indica que se tendrá una solución óptima
degenerada en la próxima iteración.
Este tipo de soluciones son características en problemas donde el número de
restricciones es mayor que el de variables.
Solución óptima degenerada ( problema de maximización )
Cj
Var. Bas. Coefic.FO
X2
40
S2
0
X1
50
Zj
Cj - Zj
Caso 2
50
X1
0
0
1
50
0
40
X2
1
0
0
40
0
0
S1
8/25
-8/25
-5/25
70/25
-70/25
0
S2
0
1
0
0
0
0
S3
-3/25
3/25
5/25
130/25
-130/25
Recursos
20
0
25
2,050
SOLUCIONES MULTIPLES
Ocurre cuando en la solución final óptima el valor para una o mas variables no
básicas es igual a cero en el último renglón de la tabla ( Cj - Zj ).
Solución óptima múltiple ( problema de maximización )
Cj
Var. Bas. Coefic.FO
X2
50
S2
0
X1
30
Zj
Cj - Zj
Caso 3
30
X1
0
0
1
30
0
50
X2
1
0
0
50
0
0
S1
8/25
-8/25
-5/25
10
-1
SOLUCION NO ACOTADA
9
Ing. Israel Rivas Alvarez
0
S2
0
1
0
0
0
0
S3
-3/25
3/25
5/25
0
0
Recursos
12
8
30
1,500
10.
Se produce en alguna iteración del algoritmo sin haber llegado a la solución final
óptima, cuando la condición de factibilidad para determinar la variable que sale no
se cumple.
Ocurre cuando un valor de la función objetivo puede crecer indefinidamente,
satisfaciendo todas las restricciones.
Solución no acotada ( problema de maximización )
Cj
Var. Bas. Coefic.FO
X1
20
S2
0
Zj
Cj - Zj
Caso 4
20
X1
1
0
20
0
10
X2
0
1
0
10
0
S1
-1
0
-20
20
0
S2
0
1
0
0
-M
R1
1
0
20
-M-20
Recursos
2
5
40
SOLUCION NO FACTIBLE
Ocurre cuando en la solución óptima, alguna de las variables artificiales (R i), se
encuentran en la solución con valor positivo (de hecho, alguna de las variables
artificiales del problema nunca sale de la solución durante el procedimiento).
El valor final de la función objetivo se ve afectado o está en función de la variable
artificial (Ri) que se encuentra en la solución óptima.
Solución no factible ( problema de maximización )
Cj
50
40
0
0
0
0
-M
Var.Bas. Coefic.FO
X1
X2
S1
S2
S3
S4
R1
Recursos
X2
40
0
1
8/25
0
-3/25
0
0
12
S2
0
0
0
-8/25
1
3/25
0
0
8
X1
50
1
0
-5/25
0
5/25
0
0
30
R1
-M
0
0
-3/25
0
-2/25
-1
1
8
Zj
50
40
70+3M/25
0
130+2M/25
M
-M
1980-8M
Cj - Zj
0
0
-70-3M/25
0
-130-2M/25
-M
0
Una variable artificial (Ri) no tiene ningún significado en términos de programación
lineal, solo permite iniciar el algoritmo Simplex; por lo cual los valores que pueda tomar
en la solución final son difíciles de interpretar.
10
Ing. Israel Rivas Alvarez
11. Método dos Fases
Fase Uno:
Minimizar la suma de las variables artificiales del modelo. Si el valor de la Z óptima es cero, se puede
proseguir a la Fase Dos, de lo contrario el problema no tiene solución.
Fase Dos:
Con base en la tabla óptima de la fase uno, se elimina de las restricciones las variables artificiales, y se
reemplaza la función objetivo, por la función objetivo original y se resuelve a partir de ahí, con el método
Simplex tradicional.
Ejercicio:
Primera Fase:
Se reemplaza la función objetivo del programa lineal a solucionar por la minimización de
la suma de las variables artificiales encontradas en la normalización del modelo y se
resuelve. Si en la minimización Z = 0 entonces se puede proceder a la Segunda Fase, de
lo contrario el problema no es factible, por lo tanto, no tiene solución.
Segunda Fase:
Se inicia con base en el tablero final de la Primera Fase, se retoma la función objetivo
del programa, haciendo todas las variables artificiales iguales a cero y eliminándolas
de las restricciones.
Ejemplo:
Min Z = 2X1 + X2 + 3X3
Sujeto a:
3X1 + X2 + 2X3
X1 - 2X2 + 3X3
2X1 + 3X2 - X3
X1 + X2 + 2X3
≤
≥
≤
=
10
6
9
7
1. Convertir al Modelo Estándar:
Cada restricción debe ser convertida de inecuación a una igualdad, agregando variables
11
Ing. Israel Rivas Alvarez
12. como se requiera. Con las restricciones de tipo <=, es supremamente fácil.
Simplemente se agrega una en cada restricción con coeficiente 1 en la misma restricción
y con coeficiente cero en la función objetivo. Por ejemplo:
3X1 + X2 + 2X3 ≤ 10 queda:
3X1 + X2 + 2X3 + S1 = 10
X1 - 2X2 + 3X3 - S2 + A1 = 6
2X1 + 3X2 - X3 + S3 =
9
X1 + X2 +2X3 + A2 =
7
Recordemos: las variables de holgura quedan con coeficiente 0 en la función objetivo y
las variables artificiales con coeficiente M. Positiva si es minimizando o negativa si es
maximizando.
En resumen el modelo queda de la siguiente manera:
Min Z = 2X1 +
X2
+ 3X3 + 0S1 + 0S2 + MA1 + 0S3 + MA2
Sujeto a:
3X1 + X2 + 2X3 + S1
= 10
X1 - 2X2 + 3X3
- S2 + A1
= 6
2X1+ 3X2 - X3
+ S3
= 9
X1+ X2 + 2X3
+ A2 = 7
C.N.N (Condición de No Negatividad)
Inicio del Método de las Dos Fases:
Min Z = A1 + A2
Sujeto a:
3X1 +X2 + 2X3 + S1
X1 -2X2+ 3X3 - S2 + A1
2X1+3X2- X3
+ S3
X1+ X2+ 2X3
+ A2
C.N.N (Condición de No Negatividad)
=
=
=
=
10
6
9
7
12
Ing. Israel Rivas Alvarez
13. FASE 1
En la siguiente figura encontramos la tabla simplex clásica. En la primera fila los nombres de las variables
de decisión, y justo abajo de ellas, los coeficientes de estas variables en la función objetivo. Cómo en la
primera fase minimizamos la suma de las variables artificiales, por eso sólo encontramos un valor de 1
abajo de A1 (variable artificial 1) y de A2 (variable artificial 2). En la segunda columna encontramos las
variables que estan en la base al inicio. Como es costumbre, para escogerlas preferimos si sólo hay
variables de decisión y de holgura, escogemos la de holgura para estar en la base (aqui las llamamos S) y
si hay de decision, de holgura y artificiales, preferimos la artificial. Por eso, las variables que se escogen
para la base son: S1, A1, S3, A2.
A la izquierda de esta columna, como es usual, se coloca los
coeficientes en la función objetivo, de las variables que estan en la base.
Luego vienen los coeficientes de las restricciones, y debajo del título RHS (Right Hand Side), o "lado
derecho" de la restricción, colocamos las disponibilidades o requerimientos. En otros libros de texto a
esta columna tambien la llaman Bi, lo importante es que usted entienda que todos los diferentes formatos
de tablas, realmente son lo mismo, lo único que cambia es el orden, la forma de llamar a las columnas,
etc.
Bueno, sin dar tantas vueltas: En la primera iteración se calcula Z y C - Z, y por lo tanto la variable que
entra, como estamos minimizando, entra la más negativa: X3 y entra la que mas restringe: A1. Eso hace
que la celda pivote este en el valor 3, que lo coloqué con verde en todas las figuras. Y se aplica
eliminación gaussiana: Se divide toda esa fila por tres, y luego con la fila convertida, elimino por encima y
por debajo de la celda pivote multiplicando por el valor opuesto al que quiero eliminar la fila pivote y
sumandosela componente a componente a la fila que deseo eliminar. Bueno, en estos momentos del
partido, creo que usted ya debe saber bien como hacer la eliminación gaussiana (Y si no, coloquelo en los
comentarios abajo, para ampliar la explicación!) .
13
Ing. Israel Rivas Alvarez
14. El valor de la función objetivo, en cada itereación la he colocado en azul claro, para que vaya viendo el
progreso: 13 -> 3 -> 0.
Al terminar en cero, el semaforo nos da luz verde para seguir con la siguiente fase.
FASE 2
En la FASE 2, fijese que cambiamos la fila de la función objetivo y dejamos la del programa original, pero
como en la fase 1 nos aseguramos de eliminar las variables artificiales, en la fase 2, nos podemos dar el
lujo y el gusto de eliminarlas. También, como es lógico, las borramos de las restricciones. Ahora , sin
estorbos, sin constantes M, o variables artificiales que nos retracen el paso, por que vamos de prisa,
realizamos la iteración,. y para el colmo de nuestra suerte, en sólo una iteración acabamos.
Encontramos el valor de Z. He escogido el mismo programa para resolverlo por la Gran M que por el
método de las dos fases. Compárelo a ver cuál le gusta más... a mi me gustaba más el método de la
Gran M, pero ahora me esta gustando más el método de las Dos Fases... aunque la verdad, en la
práctica, en la vida real, nunca he resuelto a mano un programa lineal, si no que siempre he usado un
software... mi jefe no me paga más, por más iteraciones que calculé, si no por que le entregue una
respuesta rápida y exacta de lo que se necesita: Si. Lo sé. A veces, la vida es triste :)
14
Ing. Israel Rivas Alvarez