soluciones b´asicas factibles y v´ertices introducci´on al
TRANSCRIPT
Soluciones basicas factibles y vertices
Introduccion al metodo sımplex
Prof. Jose Nino Mora
Investigacion Operativa, Grado en Estadıstica y Empresa, 2011/12
Esquema
• PLs en formato estandar
• Vertices y soluciones basicas factibles
• Idea del metodo sımplex
• Tablas sımplex y eliminacion gaussiana: un ejemplo
Caso general: region factible
• En general, la region factible P de un PL con variables
de decision x = (x1, . . . , xn) es un poliedro convexo en Rn
• Un poliedro convexo en Rn es una region de puntos
x = (x1, . . . , xn) que satisfacen un conjunto de desigualdades
lineales
• Hemos visto en los ejemplos que la solucion optima se
alcanza en un vertice de P .
• Teorema fundamental de la PL: Si un PL tiene
solucion optima, entonces esta se alcanza en un vertice
• Pero ¿Que son vertices en Rn ?
Reformulacion en formato estandar
• Trabajaremos con PLs en formato estandar: con (1)
variables no-negativas; (2) objetivo de tipo “max”; y (3)
solo con restricciones de igualdad y no-negatividad; ademas,
con las constantes del Lado Derecho no-negativas
• Podemos reformular cualquier PL en formato estandar
• Variables de holgura:
x1 + x2 ≤ 24 ⇐⇒⎧⎨⎩x1 + x2 + s1 = 24
s1 ≥ 0
• Variables de exceso (“surplus”):
x1 + x2 ≥ 800 ⇐⇒⎧⎨⎩x1 + x2 − s2 = 800
s2 ≥ 0
Estructura de las soluciones de un PL
• ¿Cual es la estructura de las soluciones optimas?
• Consideremos un PL en formato estandar (con los
bi ≥ 0 ):
z∗ =max c1x1 + · · ·+ cnxn
sujeto a:
ai1x1 + · · ·+ ainxn = bi, i = 1, . . . ,m
x1, . . . , xn ≥ 0,
• Supondremos que m < n , y que el rango de la matriz de
coeficientes A = (aij) es m , i.e. sus m filas son
linealmente independientes (l.i.). ¿Y si no?
Soluciones basicas (factibles)
• Para x = (x1, x2)T , las soluciones optimas se alcanzan en
vertices. ¿Que es un vertice cuando x = (x1, . . . , xn)T ?
• Notacion matricial: aj = (aij)mi=1 (columna j ),
b = (bi)mi=1 , x = (xj)nj=1 , c = (cj)nj=1 , A =[a1 · · · an
]
• Escribimos las restricciones como Ax = b , i.e.
a1x1 + · · ·+ anxn = b
• Elegimos una base de A , i.e. un conjunto de m
columnas l.i.:
B =[aj1 · · · ajm
]
• Las variables xj1 , . . . , xjm son basicas; las demas son
no-basicas
Soluciones basicas (factibles)
• La correspondiente solucion basica xB = (xBj )
nj=1 tiene
las variables no-basicas iguales a cero. Los valores de las
variables basicas se calculan resolviendo el sistema de
ecuaciones m×m :
aj1xj1 + · · ·+ ajmxjm = b
• Def: xB es una solucion basica factible si xB ≥ 0
• Los vertices son las soluciones basicas factibles (SBF)
• Por el Teorema fundamental, para encontrar una solucion
optima solo tenemos que buscar entre los vertices (SBF)
• ¿Cuantos vertices puede haber?
Ejemplo
• Consideremos el PL con ( n = 3 variables, m = 2
restricciones):
z∗ =max 5x1 + 12x2 + 4x3
sujeto a
x1 + 2x2 + x3 = 10
2x1 − x2 + 3x3 = 8
x1, x2, x3 ≥ 0
• Tomemos como variables basicas x1, x2 , i.e. la base es:
B =[a1 a2
]
• La correspondiente solucion basica es: x{1,2} = (265, 12
5, 0) ,
que es factible: es un vertice
Ejemplo
• Tomemos como variables basicas x1, x3 , i.e. la base es:
B =[a1 a3
]
• La correspondiente solucion basica es: x{1,3} = (22, 0,−12) ,
que no es factible: no es un vertice
• Tomemos como variables basicas x2, x3 , i.e. la base es:
B =[a2 a3
]
• La correspondiente solucion basica es: x{2,3} = (0, 227, 26
7) ,
que es factible: es un vertice
Ejemplo: determinacion del vertice optimo
• El PL tiene dos vertices:
• Vertice 1: x{1,2} = (265, 12
5, 0)
• Vertice 2: x{2,3} = (0, 227, 26
7)
• Calculamos el valor del objetivo en cada vertice:
• Vertice 1: z{1,2} = 2745
• Vertice 2: z{2,3} = 3687
• Como z{1,2} > z{2,3} , el mejor vertice es x{1,2}
• Por el Teorema fundamental, si el PL tiene solucion
optima, esta ha de ser x{1,2}
Necesidad de un metodo eficiente
• ¿Como resolver un PL en formato estandar, de tamano
m× n ?
• Por el Teorema Fundamental, basta buscar la solucion
optima entre los vertices
• ¿Cuantos vertices puede haber?
• El numero de vertices no puede superar(nm
)
• Ej:(10050
) ≈ 1029
• Incluso en PLs no muy grandes, el numero de vertices es
inmenso: no es posible evaluarlos todos
El metodo sımplex
• Algoritmo mas importante de la Investigacion Operativa
• Inventado por G.B. Dantzig en 1947
• Esquema del metodo sımplex:
1. Inicializacion: encontrar un vertice (SBF) inicial
2. Bucle: Intentar encontrar un vertice adyacente mejor
3. Si se encuentra, volver a 2.
4. Si no, parar.
• Utiliza el metodo de eliminacion gaussiana para resolver
ecuaciones lineales
PL ejemplo
• Ilustraremos las ideas del metodo sımplex mediante un
ejemplo
• Consideremos el PL
z∗ =max 4x1 + 3x2
sujeto a
2x1 + x2 ≤ 40
x1 + x2 ≤ 30
x1 ≤ 15
x1, x2 ≥ 0
Ej: reformulacion en formato estandar
• Reformulamos el PL en formato estandar (con el Lado
Derecho no-negativo):
z∗ =max 4x1 + 3x2
sujeto a
2x1 + x2 + x3 = 40
x1 + x2 + x4 = 30
x1 + x5 = 15
x1, x2, x3, x4, x5 ≥ 0
• Consideramos la ecuacion auxiliar para el objetivo z :
z − 4x1 − 3x2 = 0
Ej: Sistema de ecuaciones y base inicial
• Nos fijamos en el sistema de ecuaciones, que
representamos de forma de tabla:
x1 x2 x3 x4 x5 LD
2 1 1 0 0 40
1 1 0 1 0 30
1 0 0 0 1 15
z −4 −3 0 0 0 0 e
• Seleccionamos una base inicial: lo mas sencillo es tomar
como variables basicas x3, x4, x5
• La SBF (i.e. el vertice) correspondiente es
x{3,4,5} = (0, 0, 0, 40, 30, 15)T , con valor z{3,4,5} = 0e . ¿Por
que?
Ej: Cambiando la base: pivotaje
• Ampliamos la tabla con una columna que nos indica
cuales son las variables basicas:
VB x1 x2 x3 x4 x5 LD
x3 2 1 1 0 0 40
x4 1 1 0 1 0 30
x5 1 0 0 0 1 15
z −4 −3 0 0 0 0 e
• Supongamos que queremos modificar la base actual, p. ej.
sacando la variable x4 y poniendo en su lugar x2
• Esta operacion de pivotaje corresponde a obtener un
vertice adyacente
• ¿Como construimos la nueva tabla?
Ej: Cambiando la base: pivotaje
• Aplicaremos el metodo de eliminacion gaussiana
• Identificamos el coeficiente pivote:
VB x1 x2 x3 x4 x5 LD
x3 2 1 1 0 0 40
x4 1 1 0 1 0 30
x5 1 0 0 0 1 15
z −4 −3 0 0 0 0 e
Ej: Cambiando la base: pivotaje
VB x1 x2 x3 x4 x5 LD
x3 2 1 1 0 0 40
x4 1 1 0 1 0 30
x5 1 0 0 0 1 15
z −4 −3 0 0 0 0 e
VB x1 x2 x3 x4 x5 LD
x3 1 0 1 −1 0 10
x2 1 1 0 1 0 30
x5 1 0 0 0 1 15
z −1 0 0 3 0 90 e
Ej: Metodo sımplex
• Consideremos el PL anterior, con tabla sımplex inicial:
VB x1 x2 x3 x4 x5 LD
x3 2 1 1 0 0 40
x4 1 1 0 1 0 30
x5 1 0 0 0 1 15
z −4 −3 0 0 0 0 e
• ¿Que variable no-basica ponemos en la base?
• Aplicamos la Regla del Mınimo Coste Reducido
Negativo: ponemos x1
• ¿Que variable basica sacamos de la base?
Ej: Primer Pivotaje
VB x1 x2 x3 x4 x5 LD
x3 2 1 1 0 0 40
x4 1 1 0 1 0 30
x5 1 0 0 0 1 15
z −4 −3 0 0 0 0 e
VB x1 x2 x3 x4 x5 LD
x3 0 1 1 0 −2 10
x4 0 1 0 1 −1 15
x1 1 0 0 0 1 15
z 0 −3 0 0 4 60 e
Ej: Metodo sımplex (cont.)
• La tabla sımplex actual es:
VB x1 x2 x3 x4 x5 LD
x3 0 1 1 0 −2 10
x4 0 1 0 1 −1 15
x1 1 0 0 0 1 15
z 0 −3 0 0 4 60 e
• ¿Que variable no-basica ponemos en la base?
• Aplicamos la Regla MCRN: ponemos x2
• ¿Que variable basica sacamos de la base?
• Aplicamos la Regla del Cociente Mınimo: como101= mın
{101, 15
1
}, sacamos x3
Ej: Segundo Pivotaje
VB x1 x2 x3 x4 x5 LD
x3 0 1 1 0 −2 10
x4 0 1 0 1 −1 15
x1 1 0 0 0 1 15
z 0 −3 0 0 4 60 e
VB x1 x2 x3 x4 x5 LD
x2 0 1 1 0 −2 10
x4 0 0 −1 1 1 5
x1 1 0 0 0 1 15
z 0 0 3 0 −2 90 e
Ej: Metodo sımplex (cont.)
• La tabla sımplex actual es:
VB x1 x2 x3 x4 x5 LD
x2 0 1 1 0 −2 10
x4 0 0 −1 1 1 5
x1 1 0 0 0 1 15
z 0 0 3 0 −2 90 e
• ¿Que variable no-basica ponemos en la base?
• Aplicamos la Regla MCRN: ponemos x5
• ¿Que variable basica sacamos de la base?
• Aplicamos la Regla del Cociente Mınimo: como51= mın
{51, 15
1
}, sacamos x4
Ej: Tercer Pivotaje
VB x1 x2 x3 x4 x5 LD
x2 0 1 1 0 −2 10
x4 0 0 −1 1 1 5
x1 1 0 0 0 1 15
z 0 0 3 0 −2 90 e
VB x1 x2 x3 x4 x5 LD
x2 0 1 −1 2 0 20
x5 0 0 −1 1 1 5
x1 1 0 1 −1 0 10
z 0 0 1 2 0 100 e
Ej: Metodo sımplex (cont.)
• La tabla sımplex actual es:
VB x1 x2 x3 x4 x5 LD
x2 0 1 −1 2 0 20
x5 0 0 −1 1 1 5
x1 1 0 1 −1 0 10
z 0 0 1 2 0 100 e
• Todos los costes reducidos son no-negativos
• Por tanto, terminamos: la SBF actual es optima
(maxima)