Está en la página 1de 78

Tema 2:

Optimización lineal
Jaime Bustos G. jbustos@ufro.cl
Departamento de Ingeniería de
Sistemas
Universidad de La Frontera

Fuente: apuntes Ezequiel López Rubio, U Málaga


Método del simplex
 Sistema de m ecuaciones y n variables
 Infinitas soluciones
 Vértice
 n-m variables nulas
(no básicas)
 m variables por
conocer (básicas)
 Inicial: A (0,0), z=0
 Otros vértices?
Introducción
 El método del simplex es un algoritmo
general para resolver problemas de PL
 Admite cualquier número de variables
 Es un método iterativo que nos conduce
progresivamente hasta la solución final
 En cada iteración examina un punto extremo de la
región factible S
 Si el punto no es óptimo se mueve a otro
 Antes de usarlo es preciso pasar el problema a la
llamada forma estándar
Forma estándar
 Definición: Un problema de programación lineal
está en forma estándar sii está expresado como:
Notación escalar Notación matricial

Maximizar c1 x1  ...  cn xn Maximizar cT x


Sujeto a : Sujeto a :
a11 x1  ...  a1n xn  b1 Ax  b
... x0
am1 x1  ...  amn xn  bm
x1 ,..., xn  0
Paso a la forma estándar
Las dificultades que podemos encontrar para pasar
un problema a forma estándar, y las soluciones
correspondientes son:
 Aparece una inecuación del tipo aiTxbi.
 añadimos una nueva variable de exceso, si, con si 0
 la inecuación se convierte en aiTx–si=bi.
 La nueva variable aparece con coeficiente cero en la
función objetivo.
Paso a la forma estándar
 Aparece una inecuación del tipo aiTxbi.
 añadimos una nueva variable de holgura, si, con si0
 la inecuación se convierte en la ecuación aiTx+si=bi.
 La nueva variable aparece con coeficiente cero en la
función objetivo.
 Aparece una variable xi que no tiene restricción de no
negatividad.
 sustituimos xi en todas las restricciones y en la función
objetivo por la diferencia de dos variables nuevas xn+1 - xn+2,
 Ambas variables son no negativas: xn+10, xn+20.
Paso a la forma estándar
 El problema es de minimizar, y no de maximizar
 minimizar una función objetivo F es lo mismo que
maximizar la función objetivo –F.
 Por tanto, basta con multiplicar por –1 la función objetivo.
 Min F = - max (-F)
Ejemplos de paso a la forma
estándar
Maximizar x1 + 2x2
Sujeto a:
–1/2 x1 + x2 1
x1 + x2 2
x1, x2  0
Ejemplos de paso a la forma
estándar
Maximizar x1 + 2x2 Maximizar x1 + 2x2 + 0x3
Sujeto a: Sujeto a:
–1/2 x1 + x2 1 –1/2 x1 + x2 +x3 = 1
x1 + x2 2 x1 + x2 2
x1, x2  0 x1, x2 , x3  0

Maximizar x1 + 2x2 + 0x3 + 0x4


Sujeto a:
–1/2 x1 + x2 +x3 =1
x1 + x2 +x4 = 2
x1, x2 , x3 , x4  0
Ejemplos de paso a la forma
estándar
Maximizar 7x1 – 9x2
Sujeto a:
–4 x1 + 8x2 2
3x1 + x2 8
x1, x2  0
Ejemplos de paso a la forma
estándar
Maximizar 7x1 – 9x2 Maximizar 7x1 – 9x2 + 0x3
Sujeto a: Sujeto a:
–4 x1 + 8x2 2 –4 x1 + 8x2 –x3 = 2
3x1 + x2 8 3x1 + x2 8
x1, x2  0 x1, x2 , x3  0

Maximizar 7x1 – 9x2 + 0x3 + 0x4


Sujeto a:
–4 x1 + 8x2 – x3 =2
3x1 + x2 +x4 = 8
x1, x2 , x3 , x4  0
Ejemplos de paso a la forma
estándar
Maximizar 3x1 – 5x2
Sujeto a:
10 x1 + 18x2 =7
4x1 + 5x2 9
x1  0
Ejemplos de paso a la forma
estándar
Maximizar 3x1 – 5x2 Maximizar 3x1 – 5x3 + 5x4
Sujeto a: Sujeto a:
10 x1 + 18x2 =7 10 x1 +18x3 – 18x4 = 7
4x1 + 5x2 9 4x1 + 5x3 – 5x4  9
x1  0 x1, x3 , x4  0

Maximizar 3x1 – 5x3 + 5x4 + 0x5


Sujeto a:
10 x1 +18x3 – 18x4 =7
4x1 + 5x3 – 5x4 +x5 = 9
x1, x3 , x4 , x5  0
Ejemplos de paso a la forma
estándar
Minimizar 7x1 – 4x2
Sujeto a:
8 x1 + 2x2  1
– x1 + 5x2 = 6
x1, x2  0
Ejemplos de paso a la forma
estándar
Minimizar 7x1 – 4x2 Maximizar – 7x1 + 4x2
Sujeto a: Sujeto a:
8 x1 + 2x2  1 8 x1 + 2x2  1
– x1 + 5x2 = 6 – x1 + 5x2 = 6
x1, x2  0 x1, x2  0

Maximizar – 7x1 + 4x2 + 0x3


Sujeto a:
8 x1 + 2x2 + x3 = 1
– x1 + 5x2 =6
x1, x2 , x3  0
Situación inicial para aplicar el
método simplex
 Partimos de un problema de programación lineal, con m
ecuaciones y n incógnitas (o variables de decisión) expresado
en forma estándar:
Maximizar c1 x1  ...  cn xn
Sujeto a :
a11 x1  ...  a1n xn  b1
...
am1 x1  ...  amn xn  bm
x1 ,..., xn  0
 Además el método simplex exige que bi0 i{1, ..., m}
Versión básica del algoritmo simplex
 1. Construir la primera tabla
 2. Mientras (CondiciónParada=Falso) hacer
 2.1. Elegir variable que sale
 2.2. Elegir variable que entra
 2.3. Actualizar tabla
 3. Dar resultado
Construcción de la primera tabla
 Dado el problema en forma estandar, se debe localizar un
conjunto de m variables cuyas columnas formen la matriz
identidad.
 Estas m variables formarán la primera base, y la solución
del sistema de ecuaciones se que obtendría con esos
cambios es una solución básica factible (SBF).
 Variables básicas: s1, s2, s3, s4
 Variables no básicas (cero): x1, x2
 Coeficientes en la función objetivo
 Nombre: Costo reducido
 - cambio en z si la variable se convierte en básica
 Condición de optimalidad
 Ninguna variable no básica produciría mejoras en la
solución al hacerse básica
 Es decir, los costos reducidos de todas las variables no
básicas deben ser POSITIVOS
 Variable candidata a hacerse básica
 Produciría la mayor mejora (costo reducido más
negativo): x1
Pivoteo (cambio de solución básica)
 Debe salir una variable de la base
 La primera en hacerse cero cuando aumente la
variable no básica entrante
 Mínima razón b/a, con a>0
Cambio de base
(pivoteo de Gauss-Jordan)

 Se debe dejar:
 un coeficiente 1 en la columna de la variable que entra
y en la fila de la variable que sale.
 Cero en los coeficientes del resto de la columna de la
variable que entra
 Condición de optimalidad: entra x2
 Sale: s2
 ¿Es óptima?
Información adicional
 Estado de recursos (escaso/abundante)
 Valor de la holgura asociada a la restricción del recurso
 Valor por unidad (precios duales)
 Costo reducido de las variables (asociadas a las
restricciones) que originalmente estaban en la base
 Datos para análisis de sensibilidad
Ejemplos
 Problema:
Maximizar x1 + 2x2 sujeto a:
-1/2 x1 + x2  1
x1 + x2  2
x 1, x 2  0
Ejemplos
Tabla 1

Base x1 x2 h3 h4 b
-1 -2 0 0 0
h3 -1/2 1 1 0 1
h4 1 1 0 1 2

Criterio de entrada: mín { -1, -2 } = -2, luego entra x2

Criterio de salida: mín { 1, 2 } = 1, luego sale x3


Ejemplos
Tabla 2

Base x1 x2 h3 h4 b
-2 0 2 0 2
x2 -1/2 1 1 0 1
h4 3/2 0 -1 1 1

Criterio de entrada: mín { -2 } = -2, luego entra x1

Criterio de salida: mín { 2/3 } = 2/3, luego sale x4


Ejemplos
Tabla 3

Base x1 x2 h3 h4 b
0 0 2/3 4/3 10/3
x2 0 1 2/3 1/3 4/3
x1 1 0 -2/3 2/3 2/3

Se cumple la condición de parada. Valor óptimo: 10/3

Solución óptima: (2/3, 4/3, 0, 0)T


Ejemplos
 Problema:
Maximizar x1 + 6x2 sujeto a:
-2x1 + x2  4
-x1 + x2  1
2x1 + x2  6
x 1, x 2  0
Ejemplos
Tabla 1

Base x1 x2 h3 h4 h5 b
-1 -6 0 0 0 0
h3 -2 1 1 0 0 4
h4 -1 1 0 1 0 1
h5 2 1 0 0 1 6

Criterio de entrada: mín { -1, -6 } = -6, luego entra x2

Criterio de salida: mín { 4, 1, 6 } = 1, luego sale x4


Ejemplos
Tabla 2

Base x1 x2 h3 h4 h5 b
-7 0 0 6 0 6
h3 -1 0 1 -1 0 3
x2 -1 1 0 1 0 1
h5 3 0 0 -1 1 5

Criterio de entrada: mín { -7 } = -7, luego entra x1

Criterio de salida: mín { 5/3 } = 5/3, luego sale x5


Ejemplos
Tabla 3

Base x1 x2 h3 h4 h5 b
0 0 0 11/3 7/3 53/3
h3 0 0 1 -4/3 1/3 14/3
x2 0 1 0 2/3 1/3 8/3
h5 1 0 0 -1/3 1/3 5/3

Se cumple la condición de parada. Valor óptimo: 53/3

Solución óptima: (5/3, 8/3, 14/3, 0, 0)T


Ejemplos
 Problema:
Maximizar 5x1 + 4x2 sujeto a:
3x1 + 3x2  10
12x1 + 6x2  24
x 1, x 2  0 Base x1 x2 h2 h3 b
z -5 -4 0 0 0
h2 3 3 1 0 10
h3 12 6 0 1 24
Ejemplos
Tabla 1

Base x1 x2 h2 h3 b
z -5 -4 0 0 0
h2 3 3 1 0 10
h3 12 6 0 1 24

Criterio de entrada: mín { -5, -4 } = -5, luego entra x1

Criterio de salida: mín { 10/3, 2 } = 2, luego sale x4


Ejemplos
Tabla 2

Base x1 x2 h2 h3 b
z 0 -3/2 0 5/12 10
h2 0 3/2 1 -1/4 4
x1 1 1/2 0 1/12 2

Criterio de entrada: mín { -3/2 } = -3/2, luego entra x2

Criterio de salida: mín { 8/3, 4 } = 8/3, luego sale h2


Ejemplos
Tabla 3

Base x1 x2 h2 h3 b
z 0 0 1 1/6 14
x2 0 1 2/3 -1/6 8/3
x1 1 0 -1/3 1/6 2/3

Se cumple la condición de parada. Valor óptimo: 14

Solución óptima: (2/3, 8/3, 0, 0)T


Ejemplos
 Problema:
Maximizar 20x1 + 24x2 sujeto a:
3x1 + 6x2  60
4x1 + 2x2  32
x1 + 2x2  16
x 1, x 2  0
Ejemplos
Tabla 1
Base x1 x2 h2 h3 h4 b
-20 -24 0 0 0 0
h2 3 6 1 0 0 60
h3 4 2 0 1 0 32
h4 1 2 0 0 1 16

Criterio de entrada: mín { -20, -24 } = -24, luego entra x2

Criterio de salida: mín { 10, 16, 8 } = 8, luego sale h4


Ejemplos
Tabla 2
Base x1 x2 h2 h3 h4 b
-8 0 0 0 12 192
h2 0 0 1 0 -3 12
h3 3 0 0 1 -1 16
x2 1/2 1 0 0 1/2 8

Criterio de entrada: mín { -8 } = -8, luego entra x1

Criterio de salida: mín { 16/3, 16 } = 16/3, luego sale h3


Ejemplos
Tabla 3
Base x1 x2 h2 h3 h4 b
0 0 0 8/3 28/3 704/3
h2 0 0 1 0 -3 12
x1 1 0 0 1/3 -1/3 16/3
x2 0 1 0 -1/6 2/3 16/3

Se cumple la condición de parada. Valor óptimo: 704/3

Solución óptima: (16/3, 16/3, 12, 0, 0)T


Ejercicio: resuelva el siguiente
modelo usando Simplex
 Max 2 x1 + x2 – 3 x3 + 5 x4
S.a.
x1 + 2 x2 - 2 x3 + 4 x4 < 40
2 x1 – x 2 + x 3 + 2 x 4 < 8
4 x1 – 2 x2 + x3 – x4 < 10
x 1, x 2, x 3, x 4 > 0
Casos anómalos
Situaciones especiales
Problemas con infinitas
soluciones
 En la tabla final hay algún costo reducido en valor
nulo correspondiente a una variable que no está en la
base.
 En tal caso, podríamos introducir dicha variable en la
base, y nos saldría otra base que daría también el valor
óptimo.
 El problema tiene infinitas soluciones, todas ellas con el
mismo valor óptimo de la función objetivo: un par de
vértices y todos los puntos sobre la recta que los une
Ejemplos
 Problema:
Maximizar 6x1 + 3x2 sujeto a:
-x1 + x2  1
2x1 + x2  6
x1, x2  0
Base x1 x2 h3 h4 b
-6 -3 0 0 0
h3 -1 1 1 0 1
h4 2 1 0 1 6
Ejemplos
Tabla 1

Base x1 x2 h3 h4 b
-6 -3 0 0 0
h3 -1 1 1 0 1
h4 2 1 0 1 6

Criterio de entrada: mín { -6, -3 } = -6, luego entra x1

Criterio de salida: mín { 3 } = 3, luego sale x4


Ejemplos
Tabla 2

Base x1 x2 h3 h4 b
0 0 0 3 18
h3 0 3/2 1 1/2 4
x1 1 1/2 0 1/2 3

Se cumple la condición de parada. Valor óptimo: 18.


Primera solución óptima: xA=(3, 0, 4, 0)T
En la primera fila, el cero que no está en la base indica otra
solución óptima. Para hallarla, hacemos entrar a x2
Ejemplos
Tabla 3

Base x1 x2 h3 h4 b
0 0 0 3 18
x2 0 1 2/3 1/3 8/3
x1 1 0 -1/3 1/3 5/3

Segunda solución óptima: xB=(5/3, 8/3, 0, 0)T. También son


soluciones óptimas todos los puntos del segmento
AxA+BxB, con A , B  0, A + B = 1.
Problemas con solución ilimitada (no
acotada)
 Al intentar elegir la variable que sale, nos
podemos encontrar con que la columna j que
tenía que entrar tiene todos sus elementos
negativos o nulos.
 En tal caso el problema tiene solución ilimitada,
es decir, se puede hacer crecer el valor de la
función objetivo tanto como se quiera sin violar
ninguna restricción.
 Para ello, bastaría con hacer crecer
ilimitadamente la variable que tenía que entrar en
la base.
Ejemplos
 Problema:
Maximizar x1 + x2 sujeto a:
5x1 - x2  0
x1 - 4 x2  0
x 1, x 2  0 Base x1 x2 h3 h4 b
-1 -1 0 0 0
h3 -5 1 1 0 0
h4 1 -4 0 1 0
Ejemplos
Tabla 1

Base x1 x2 h3 h4 b
-1 -1 0 0 0
h3 -5 1 1 0 0
h4 1 -4 0 1 0

Criterio de entrada: mín { -1, -1 } = -1, y elegimos que entre


x1
Criterio de salida: mín { 0/1 } = 0, luego sale h4
Ejemplos
Tabla 2

Base x1 x2 h3 h4 b
0 -5 0 1 0
h3 0 -19 1 5 0
x1 1 -4 0 1 0

Criterio de entrada: mín { -5 } = -5, luego entra x2


Criterio de salida: No hay fracciones con denominador
estrictamente positivo, luego el problema tiene solución
ilimitada
Problema infactible
 El coeficiente del lado derecho (bj) de una fila j es
negativo y ningún coeficiente (aij) de la fila es
negativo
Solución degenerada
 Ocurre cuando en la solución óptima (o
intermedia) un valor del lado derecho es nulo.
 Es decir, una variable básica toma el valor cero
Búsqueda de la solución
básica inicial
Método de la gran M (penalización)
Método de las dos fases
Método de la gran M
 Por cada restricción que no cuente con una
variable de holgura agregue una variable artificial
Ri
 Penalice cada variable artificial Ri en la función
objetivo con un coeficiente +/- M
 Si está maximizando use –M
 Si está minimizando use +M
 La optimización forzará las Ri a ser cero
Note los coeficientes no nulos (-M) de las
variables básicas R1 y R2 en la fila de la
función objetivo
Restaurando la base

Y pivoteando:
 Luego de dos iteraciones adicionales se alcanza la solución
óptima
 X1 = 2/5 X2 = 9/5 z = 17/5
 R1 = 0 R2 = 0

 Si las variables artificiales fueran no nulas en la solución final


significa que el problema es infactible.

 En la práctica (cálculos computacionales) M>>0 debe tomar un


valor suficientemente grande para funcionar como
penalización
Método de las dos fases
Introducción
 Si al intentar aplicar el método simplex nos
encontramos con que no es posible encontrar una
solución básica factible (SBF) inicial, es preciso
usar el método de las dos fases.
 Para ello, usamos el siguiente algoritmo:
 1. Añadir variables artificiales al problema
 2. Fase I.
 3. Fase II.
Adición de variables artificiales
 Se trata de añadir al problema tantas variables
como sean necesarias para construir una SBF. Sus
coeficientes en las ecuaciones serán los que
convengan para nuestro propósito.
 Por consiguiente, tendremos que cada variable
artificial tendrá coeficiente 1 en una ecuación y
coeficiente 0 en todas las demás
Fase I
 Se trata de aplicar el método simplex para resolver un
problema auxiliar de minimizar la suma de las variables
artificiales.
 Para que la tabla óptima aparezca lo antes posible conviene
que, en caso de empate en el criterio de salida y que una de
las variables empatadas sea artificial, saquemos la artificial.
 Una vez resuelto este problema auxiliar, caben dos
posibilidades
 El valor óptimo de la función objetivo es distinto de cero. En
tal caso el problema original no tenía solución.
 El valor óptimo de la función objetivo es cero. En tal caso
podemos pasar a la Fase II.
Fase II
 Consiste en aplicar el método simplex, usando la
función objetivo del problema original, pero
empezando con una primera tabla que se obtiene
quitando de la última tabla de la Fase I las
columnas de las variables artificiales
 La solución obtenida en la Fase II será la solución
del problema original (téngase en cuenta que en
la Fase II no aparecen variables artificiales)
Ejemplo
 Se debe eliminar los (-1) en la fila r para R1 y R2
 Luego se debe chequear optimalidad en r y pivotear
 Tabla resultante (final fase I):

 R1 y R2 no están en la base, se eliminan del


problema y se pasa a Fase II
 x1, x2 y x4 son básicas en la solución inicial
 El problema al inicio de la Fase II se ve:
 Reconstruyendo la base

 Solución óptima
Como se está minimizando, x3 debe entrar a la solución.
Lectura complementaria
 http://www.angelfire.com/ak5/invo1_escom/clase12.pdf
 http://www.angelfire.com/ak5/invo1_escom/clase13.pdf
 http://www.angelfire.com/ak5/invo1_escom/clase14.pdf (WinQSB)
 http://www.angelfire.com/ak5/invo1_escom/clase15.pdf
 http://www.angelfire.com/ak5/bustosfarias/16_MINIMIZACION.pdf

También podría gustarte