Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Programacin lineal
Propiedades especiales del problema
Programacin lineal
Propiedades especiales del problema
La regin factible es un politopo : Figura limitada por hiperplanos Elementos de un politopo:
Caras, aristas, vrtices Algunos de estos elementos son importantes para el clculo de la solucin Cmo identificarlos: caracterizacin algebraica
Programacin lineal
Politopos
Programacin lineal
Soluciones
Programacin lineal
Teorema bsico:
Si existe una solucin del problema lineal, existe un vrtice solucin
Basta con buscar soluciones en vrtices (nmero finito) Probar vrtices eficientemente hasta encontrar la solucin 6
Mtodo Simplex:
Programacin lineal
Justificacin:
Todo punto de un conjunto convexo puede expresarse como combinacin convexa de n+1 puntos extremos del conjunto
Programacin lineal
Caracterizacin algebraica de vrtices
Representacin grfica solo vlida si n 3 Caracterizacin general basada en la de otras partes de un politopo
Programacin lineal
Partes de un politopo, Ax b
Aristas:
Segmentos interseccin de n - 1 caras Comienzan y acaban en un vrtice
Vrtices contiguos:
Programacin lineal
Caracterizacin algebraica:
Caras:
{x | j ajTx = bj , Ax b } Ab An bb bn
Ab nn, bb n, det(Ab ) 0, Ab x = bb , An x bn
10
Programacin lineal
Vrtices de
Ax = b, x 0, A mn
Ax = b
x0
En un vrtice al menos n - m variables deben ser iguales a cero: variables no bsicas Variables distintas de cero: variables bsicas
11
Programacin lineal
Ejemplo:
min 2x1 + x2 - x3 + 3x4 s.a x1 + 2x2 - x3 + x4 + x5 = 3 2x1 + 4x2 + x3 + 2x4 - x5 = 12 x1 + 4x2 + x3 - x4 + 2x5 = 9 x0
Programacin lineal
Procedimiento bsico
Mtodo Simplex:
Suponemos conocido un vrtice factible Comprobamos si es solucin:
13
Programacin lineal
Mtodo Simplex:
Aspectos bsicos:
Cmo podemos calcular un vrtice factible? Qu debemos comprobar para saber si un vrtice es solucin? Cmo podemos escoger un vrtice contiguo mejor?
14
Programacin lineal
Comprobar si un vrtice es ptimo:
Paso 2. Es solucin?
15
Programacin lineal
Condiciones de ptimo en un vrtice
Problema en forma estndar Versin ms eficiente de las condiciones
Sistema de ecuaciones de tamao reducido Basado en particin de variables para un vrtice factible
x=
xb xn
c=
cb cn
A=(B N )
16
Programacin lineal
Derivacin de condiciones de ptimo
Condiciones generales de extremo Condicin basada en ausencia de descenso
Estudiar las direcciones factibles en el vrtice Estudiar solo las aristas que salen del vrtice Determinar si la funcin objetivo decrece Vrtice solucin: si la f. objetivo no decrece a lo largo de ninguna arista
17
Programacin lineal
Condiciones necesarias y suficientes:
Ax = b , x 0 c = AT + 0 , T x = 0 Para comprobar si un punto es solucin:
Factibilidad Existencia de multiplicadores Signo de multiplicadores
18
Programacin lineal
Ejemplo:
min 2x1 + x2 - x3 + 3x4 s.a x1 + 2x2 - x3 + x4 + x5 = 3 2x1 + 4x2 + x3 + 2x4 - x5 = 12 x1 + 4x2 + x3 - x4 + 2x5 = 9 x0
Comprobar
solucin
si ( 3 1 2 0 0 )T es
19
Programacin lineal
Condiciones simplificadas:
cb cn
BT NT
n 0
Equivalentes a cb = BT , cn = NT + n , n 0 o bien
cn - NTB -T cb 0
Programacin lineal
Comprobacin de las condiciones:
Paso 1. Se resuelve el sistema de ecuaciones BT = cb Paso 2. Se calcula el multiplicador como n = cn - NT Paso 3. Se comprueba la condicin n 0
21
Programacin lineal
Condiciones de ptimo en un vrtice
Esfuerzo a realizar:
Factibilidad
Multiplicar matriz por vector Resolver un sistema de ecuaciones Dimensin n n Comparacin simple
Existencia de multiplicadores
22
Programacin lineal
1 2 -1 B= 2 4 1 1 4 1
N=
1 1 2 -1 -1 2
cB =
2 1 -1
cN =
3 0
n = cn - NT = ( -2 7/2 )T
Programacin lineal
Mtodo Simplex
24
Programacin lineal
Clculo del nuevo vrtice
Buscar entre vrtices contiguos Problema en forma estndar:
Un vrtice contiguo comparte n - 1 restricciones activas Un vrtice contiguo comparte n - m - 1 variables no bsicas Una variable no bsica diferente Existen n - m vrtices contiguos
25
Programacin lineal
Qu vrtice contiguo escoger?
El mejor:
Vrtice contiguo con el menor valor de la funcin objetivo Demasiado caro de calcular
26
Programacin lineal
Vrtice ms prometedor
27
Programacin lineal
Seleccin de vrtice contiguo
Supongamos que i < 0 Si aumenta xi , la funcin objetivo disminuye a un ritmo dado por i
Programacin lineal
Clculo del vrtice contiguo
Si el vrtice no es solucin, existe algn multiplicador negativo Seleccionar el multiplicador ms negativo Desplazarse a lo largo de la arista asociada Expresin de la arista: x + p , 0
p vector que representa la direccin de la arista escalar que indica distancia sobre la arista Cuanto mayor es , ms nos alejamos del vrtice
29
Programacin lineal
Clculo de direccin de movimiento, p
Aumente xi Las restricciones de igualdad se cumplan Las dems variables no bsicas sean cero
30
Programacin lineal
Debe aumentar (xn)i (pn)i > 0 Dems variables no bsicas iguales a cero (pn)j = 0 j i
31
Programacin lineal
Se toma el valor 1
32
Programacin lineal
Resumen
Forma de p :
pn = ei , Bpb = -Nei
Qu i se selecciona?
Programacin lineal
Clculo de p
Paso 1. Encontrar el multiplicador ms negativo, (n )i Paso 2. Definir pn como pn = ei Paso 3. Resolver el sistema de ecuaciones
Bpb = -Nei
34
Programacin lineal
Ejemplo:
min 2x1 + x2 - x3 + 3x4 s.a x1 + 2x2 - x3 + x4 + x5 = 3 2x1 + 4x2 + x3 + 2x4 - x5 = 12 x1 + 4x2 + x3 - x4 + 2x5 = 9 x0
Estudiar el punto ( 3 1 2 0 0 )T
n = cn - N B cb =
T -T
-2 7/2
35
Programacin lineal
Definicin de p
1 2 1 1 1 -1 -3 Bpb = -Ne1 2 4 1 pB = - 2 -1 e1 = -2 pB = 1 1 4 1 1 2 1 0
Direccin de movimiento:
p = ( -3 1 0 1 0 )T
36
Programacin lineal
Justificacin de la condicin de ptimo
37
Programacin lineal
Justificacin de la condicin de ptimo
Expresin formal cT p = cnT pn + cbT pb = cnT ei + cbT (-B -1Nei )
n = cn - NTB -T cb
Programacin lineal
Clculo de la longitud de paso
xk+1 = xk + pk
A lo largo de pk la funcin objetivo decrece linealmente Moverse tan lejos como sea posible Unica limitacin:
39
Programacin lineal
Clculo de la longitud de paso
Condicin: xi + pi 0 i B
Para cada componente i bsica calculamos el mayor paso factible, -xi /pi
El paso se define como el menor de los cocientes para los pasos positivos = min { -xi /pi | pi < 0 }
40
Programacin lineal
Ejemplo:
min 2x1 + x2 - x3 + 3x4 s.a x1 + 2x2 - x3 + x4 + x5 = 3 2x1 + 4x2 + x3 + 2x4 - x5 = 12 x1 + 4x2 + x3 - x4 + 2x5 = 9 x0
En ( 3 1 2 0 0 )T hemos obtenido
p = ( -3 1 0 1 0 )T
Programacin lineal
Clculo del vrtice factible inicial
Para aplicar el mtodo Simplex falta un vrtice inicial Pero el mtodo Simplex es capaz de generar vrtices factibles
Programacin lineal
Problema lineal auxiliar (fase I)
Problema lineal relacionado con el de partida, pero distinto de l Propiedades deseadas:
Debe tener un vrtice factible que se pueda calcular de forma trivial La solucin del problema auxiliar debe ser un vrtice factible del problema de partida
43
Programacin lineal
Supondremos que b 0 Problema auxiliar
Vrtice inicial: ( x , w ) = ( 0 , b ) Si la solucin del problema modificado resultase ser ( x , 0 ) , x sera un vrtice factible del problema original 44
Programacin lineal
Paso 1. Asegurar que b 0 Paso 2. Construir el problema modificado Paso 3. Resolver dicho problema partiendo de (0,b) Paso 4. Si en la solucin w = 0 , resolver el problema original desde x Paso 5. Si en la solucin w 0 , el problema original no es factible
45
Programacin lineal
Ejemplo:
max 2x1 - 3x2 - x3 + 2x4 s.a x1 + x2 - x3 - x4 -2 2x1 - x2 + 2x3 + x4 1 -x1 + x2 + x3 - 2x4 = -2 x0 max 2x1 - 3x2 - x3 + 2x4 s.a -x1 - x2 + x3 + x4 2 2x1 - x2 + 2x3 + x4 1 x1 - x2 - x3 + 2x4 = 2 x0
46
Programacin lineal
Problema auxiliar:
max 2x1 - 3x2 - x3 + 2x4 s.a -x1 - x2 + x3 + x4 + s1 = 2 2x1 - x2 + 2x3 + x4 - s2 = 1 x1 - x2 - x3 + 2x4 = 2 x,s0
47
Programacin lineal
Ejemplo
x = ( 0 0 0 0 )T ,
Punto solucin del problema auxiliar: Vrtice factible del problema inicial:
x = ( 0 0 0 1 )T
x = ( 0 0 0 1 )T ,
48
Programacin lineal
Los clculos del mtodo Simplex:
Paso 1.1
Asegurar que b 0 Aadir variables auxiliares Formar problema auxiliar Resolver el problema auxiliar Determinar un vrtice factible para el problema original
49
Programacin lineal
Paso 2.
BT = cb , n = cn - NT
n 0 ?
Paso 3.
Programacin lineal
Paso 4.
Paso 5.
x = x + p
51
Programacin lineal
Ejemplo
min s.a x1 - 2x2 - x3 x1 + x3 1 x1 + 2x2 + 2x3 2 x0 x1 - 2x2 - x3 x1 + x 3 - s1 =1 x1 + 2x2 + 2x3 + s2 = 2 x,s0
52
Programacin lineal
Problema auxiliar:
min s.a a x1 + x 3 - s1 +a=1 x1 + 2x2 + 2x3 + s2 =2 x,s,a0
x = ( 0 0 0 )T , s = ( 0 2 )T , a = 1
Solucin:
x = ( 1 0 0 )T , s = ( 0 1 )T , a = 0
53
Programacin lineal
= B -Tcb = ( 1 0 )T , n = cn - NT = ( -2 -2 1 )T
Direccin de movimiento: pn = ( 1 0 0 )T , pb = -B -1Npn = ( 0 -2 )T , p = ( 0 1 0 0 -2 )T Longitud de paso: = 1/2 Nuevo vrtice: x = ( 1 1/2 0 0 0 )T
54
Programacin lineal
Siguiente iteracin:
Variables bsicas: x1 , x2 Es solucin el vrtice? Direccin de movimiento: Longitud de paso: = min{ 1/1 , (1/2)/(1/2) } = 1 Nuevo vrtice: x = ( 0 0 1 0 0 )T 55
= B -Tcb = ( 2 -1 )T , n = cn - NT = ( -1 2 1 )T
Programacin lineal
Siguiente iteracin:
Variables bsicas: x1 , x3 Es solucin el vrtice? El vrtice es solucin Vrtice degenerado Qu habra sucedido si hubisemos considerado como variables bsicas x2 , x3 ? 56
= B -Tcb = ( 3 -2 )T , n = cn - NT = ( 2 3 2 )T
Programacin lineal
Convergencia del mtodo Simplex
57
Programacin lineal
Convergencia del mtodo Simplex
Basta con poder identificar la situacin La fase I acaba con una solucin w 0 El mtodo Simplex encuentra un paso = En alguna iteracin pb 0 58
Si el problema no es factible:
Programacin lineal
Si el problema es ptimo
59
Programacin lineal
Vrtices degenerados
60
Programacin lineal
Cmo evitar ciclos:
Si no hay empate, no pueden existir ciclos En caso de empates: regla de Bland
Primera con el menor valor del multiplicador Primera con el menor cociente para
Ineficiencia en la prctica
61
Programacin lineal
Organizacin de los clculos
Para su aplicacin manual Se disponen los datos en una tabla,
cT A
Programacin lineal
Qu informacin proporciona la tabla?
cT - cbTB -1A B -1A Multiplicadores Dir. de movimiento
63
Programacin lineal
Cmo actualizar la tabla al cambiar B ?
Cambio de B
Variable no bsica bsica: multiplicador Variable bsica no bsica: longitud de paso
64
Programacin lineal
A cada fila i se le resta la fila k multiplicada por nij /nkj Se pivota sobre el elemento kj 65
Programacin lineal
La misma operacin de pivotaje se aplica al lado derecho y a la fila superior Ejemplo:
66
Programacin lineal
Ejemplo
min s.a x1 - 2x2 - x3 x1 + x3 1 x1 + 2x2 + 2x3 2 x0
Problema auxiliar:
min s.a a x1 + x 3 - s1 +a=1 x1 + 2x2 + 2x3 + s2 =2 x,s,a0
67
Programacin lineal
1 -2 -1 0 0 0 0 -1 0 -1 1 0 0 -1 1 0 1 -1 0 1 1 2 2 0 1 0 1 2
Paso 2.1. Son positivos los multiplicadores? Paso 2.2. Dir. de movimiento y long. de paso:
68
Programacin lineal
Nueva tabla:
1 -2 -1 0 0 0 0 0 -2 -2 1 0 -1 -1 0 0 0 0 0 1 1 0 1 -1 0 1 0 2 1 1 1 -1 0 1 1 -1 0 -1 1 0 0 -1 1 0 1 -1 0 1 1 1 2 2 0 1 0
69
Programacin lineal
0 0
-1
0 1 1/2
1 1
70
Programacin lineal
Resumen:
En la tabla se selecciona:
Columna del multiplicador ms negativo Fila con menor cociente b /n para n > 0 ik ik ik
Se pivota sobre el elemento nik El proceso se repite hasta que los multiplicadores tienen el signo correcto
71