Sei sulla pagina 1di 71

Programacin lineal

Problemas lineales (forma estndar)


min cTx s.a Ax = b x0

Estudiaremos sus propiedades especiales Mtodos especficos de solucin:

Mtodo Simplex Mtodos de puntos interiores

Programacin lineal
Propiedades especiales del problema

La regin factible es convexa


Toda solucin local es global Las condiciones necesarias de primer orden son suficientes

Propiedad de convexidad: x e y factibles, A (x +(1-)y ) = Ax + (1-)Ay = b + (1-)b = b x +(1-)y 0

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

Importancia de los vrtices:

Basta con buscar soluciones en vrtices (nmero finito) Probar vrtices eficientemente hasta encontrar la solucin 6

Mtodo Simplex:

Programacin lineal
Justificacin:

Resultado bsico (teor. de representacin)

Todo punto de un conjunto convexo puede expresarse como combinacin convexa de n+1 puntos extremos del conjunto

x = i i xi , i i = 1, i 0 cT x = i i cTxi mini cTxi

Programacin lineal
Caracterizacin algebraica de vrtices
Representacin grfica solo vlida si n 3 Caracterizacin general basada en la de otras partes de un politopo

Caras, aristas, etc.

Programacin lineal
Partes de un politopo, Ax b

Caras: subconjuntos de hiperplanos Vrtices:


Puntos interseccin de al menos n caras

Aristas:
Segmentos interseccin de n - 1 caras Comienzan y acaban en un vrtice

Vrtices contiguos:

unidos por una misma arista

Programacin lineal
Caracterizacin algebraica:

Caras:

{x | j ajTx = bj , Ax b } Ab An bb bn

Vrtices: existe una particin de A y b, A= b=

Ab nn, bb n, det(Ab ) 0, Ab x = bb , An x bn
10

Programacin lineal
Vrtices de
Ax = b, x 0, A mn

Siempre existen m restricciones activas,

Ax = b

Necesitamos n - m restricciones activas en

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

Comprobar si son vrtices:

( 1 1 2 1 1 )T , ( -3 4 0 0 -2 )T , ( 9/2 1/4 5/2 0 1/2 )T , ( 3 1 2 0 0 )T


12

Programacin lineal
Procedimiento bsico

Mtodo Simplex:
Suponemos conocido un vrtice factible Comprobamos si es solucin:

Comprobar condiciones necesarias y suficientes

Si no lo es, buscamos un vrtice contiguo mejor

Criterio de seleccin entre vrtices contiguos

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 1. Es un vrtice factible?


Es factible? Tiene al menos n - m variables iguales a cero? Condiciones de ptimo

Paso 2. Es solucin?

Signo de los multiplicadores

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

Se resuelve un sistema de dimensin m m 20

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

Signo de los multiplicadores

22

Programacin lineal

Clculo de los multiplicadores para ( 3 1 2 0 0 )T

1 2 -1 B= 2 4 1 1 4 1

N=

1 1 2 -1 -1 2

cB =

2 1 -1

cN =

3 0

B T = cb = ( 5/6 4/3 -3/2 )T

n = cn - NT = ( -2 7/2 )T

Como (n )1 < 0 , el punto no es solucin 23

Programacin lineal
Mtodo Simplex

Nos dan un vrtice factible


Si es solucin, se termina Si no lo es, buscar un nuevo vrtice

Clculo de un nuevo vrtice


Para alcanzar la solucin ms rpidamente, se calcula un vrtice mejor Para facilitar el clculo del nuevo vrtice, se elige un vrtice contiguo

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

El que resulte ms prometedor:

Vrtice contiguo en la arista con el mayor descenso en la funcin objetivo

26

Programacin lineal
Vrtice ms prometedor

27

Programacin lineal
Seleccin de vrtice contiguo

Clave: valor de los multiplicadores

Multiplicador: cambio en la funcin objetivo al alejarse de la restriccin


Supongamos que i < 0 Si aumenta xi , la funcin objetivo disminuye a un ritmo dado por i

Multiplicador ms negativo: decrecimiento ms rpido 28

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

Direccin p tal que a lo largo de x + p :


Aumente xi Las restricciones de igualdad se cumplan Las dems variables no bsicas sean cero

Clculo de componentes bsicas y no bsicas:


p= pb pn

30

Programacin lineal

Informacin de partida: vrtice factible x


x= xb xn , A x = b , x 0 , xn = 0

Condiciones que debe cumplir p :


Debe aumentar (xn)i (pn)i > 0 Dems variables no bsicas iguales a cero (pn)j = 0 j i

31

Programacin lineal

Condiciones que debe cumplir p :

Se deben cumplir las restricciones de igualdad

A x = b , A (x + p ) = b Ap = 0 Bpb + Npn = 0 Bpb = -Npn

Qu queda por determinar?


Componente no bsica a aumentar, i Valor de la componente (p ) n i

Se toma el valor 1

32

Programacin lineal
Resumen

Forma de p :
pn = ei , Bpb = -Nei

Qu i se selecciona?

Variable no bsica con (n)i ms negativo Justificacin:

cT (x + p ) = cTx + cTp cTp = cnTpn + cbTpb = ( cn + N TB -Tcb )T ei = (n )i


33

Programacin lineal
Clculo de p

Dado un vrtice factible no solucin

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

Componentes no bsicas: pn = e1 Componentes bsicas:

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

Se tiene ascenso en el vrtice a lo largo de todas las aristas?


Clculo de todas las aristas en un vrtice: pn = ei i , Bpb = -Npn Puntos a lo largo de la arista: x+p Descenso o ascenso? cT ( x + p ) - cT x = cT p cT p < 0 descenso, cT p > 0 ascenso

37

Programacin lineal
Justificacin de la condicin de ptimo
Expresin formal cT p = cnT pn + cbT pb = cnT ei + cbT (-B -1Nei )

= eiT ( cn - NTB -T cb ) = eiT n donde

n = cn - NTB -T cb

Se tiene una solucin (para minimizacin) si n 0 38

Programacin lineal
Clculo de la longitud de paso
xk+1 = xk + pk

Cmo interesara moverse?

A lo largo de pk la funcin objetivo decrece linealmente Moverse tan lejos como sea posible Unica limitacin:

Restricciones de cota de las variables bsicas

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

Solo existe una componente negativa en p = -3/(-3) = 1 , x = x + p = ( 0 2 2 1 0 )T


41

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

Las soluciones de un problema lineal lo son

Basta con encontrar un problema lineal con las propiedades adecuadas


42

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

min cTx s.a Ax = b x0

min eTw s.a Ax + w = b x ,w 0

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

Lado derecho mayor que cero:

46

Programacin lineal

Problema en forma estndar

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

min w1 + w2 s.a -x1 - x2 + x3 + x4 + s1 = 2 2x1 - x2 + 2x3 + x4 - s2 + w1 = 1 x1 - x2 - x3 + 2x4 + w2 = 2 x,s,w0

47

Programacin lineal
Ejemplo

Punto inicial del problema auxiliar:


s = ( 2 0 )T , s = ( 1 0 )T , w = ( 1 2 )T w = ( 0 0 )T

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. Obtener un vrtice factible inicial

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

Paso 1.2 Fase I


49

Programacin lineal

Paso 2.

Comprobar si el vrtice factible es solucin

BT = cb , n = cn - NT

n 0 ?

Paso 3.

Calcular la direccin de movimiento p

i = arg mink (n )k pn = ei , Bpb = -Nei


50

Programacin lineal

Paso 4.

Calcular la longitud de paso

= min { -xi /pi | pi < 0 }

Paso 5.

Obtener el nuevo vrtice

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

Paso 0. Poner en forma estndar


min s.a

52

Programacin lineal

Paso 1. Vrtice factible inicial

Problema auxiliar:
min s.a a x1 + x 3 - s1 +a=1 x1 + 2x2 + 2x3 + s2 =2 x,s,a0

Vrtice factible inicial:

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

Paso 2. Solucin del problema original


Variables bsicas: x1 , s2 Es solucin el vrtice?

= 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

pn = ( 1 0 0 )T , pb = -B -1Npn = ( -1 -1/2 )T , p = ( -1 -1/2 1 0 0 )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

Un problema lineal puede ser:

No factible No acotado max x1 + x2 s.a x0 Factible y acotado ptimo

57

Programacin lineal
Convergencia del mtodo Simplex

Si el problema no tiene solucin

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:

Si el problema no est acotado:


Programacin lineal
Si el problema es ptimo

En cada iteracin la funcin objetivo decrece


Descenso: cTp = (n )i < 0

Siempre que > 0 Se sigue descendiendo hasta que 0 n

Existe un nmero finito de vrtices El argumento solo puede fallar si = 0

59

Programacin lineal
Vrtices degenerados

Para que = 0 se debe tener que


i , (xb )i = 0 y (pb )i < 0

Puede suceder en vrtices degenerados Posibilidad de ciclos:

Intercambiar variables bsicas y no bsicas Sin modificar el valor de x

60

Programacin lineal
Cmo evitar ciclos:
Si no hay empate, no pueden existir ciclos En caso de empates: regla de Bland

Variable que entra en la base:

Primera con el menor valor del multiplicador Primera con el menor cociente para

Variable que sale de la base:

Orden de variables: cualquiera pero fijo

Ineficiencia en la prctica
61

Programacin lineal
Organizacin de los clculos
Para su aplicacin manual Se disponen los datos en una tabla,

cT A

0 b -cbTB -1b B -1b


62

En un vrtice, la tabla se reajusta como

cT - cbTB -1A B -1A

Programacin lineal
Qu informacin proporciona la tabla?
cT - cbTB -1A B -1A Multiplicadores Dir. de movimiento

-cbTB -1b B -1b Funcin objetivo Valores de variables

Cada vrtice corresponde a diferentes valores de B y cB

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

Una columna de B cambia por otra


B = ( b1 ... bk ... bm ) ( b1 ... bj ... bm ) = B

B = B + (bj - bk )ekT = B (I + ( B -1bj - ek )ekT ) = BE

64

Programacin lineal

La matriz de inters en la tabla es la inversa,


B -1 = E -1B -1 , E -1 = I - (1/ekTB -1bj )( B -1bj - ek )ekT N = B -1N , nj = B -1nj B -1A = B -1A - (1/ekTnj )(nj - ek )ekTB -1A

Operaciones sobre la tabla:

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:

Introducir en la base x3 y eliminar x1


0 -5 3 0 -1 26 0 2 -3 1 1 2 1 -1 1 0 -1 2 -3 -2 0 0 2 20 3 -1 0 1 -2 8 1 -1 1 0 -1 2

Propiedad de las columnas bsicas:

Matriz identidad ms ceros en la fila superior

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

Tablas para el problema auxiliar


1 -2 -1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 -1 0 1 1 1 2 2 0 1 0 2

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:

Columna multipl. ms negativo, fila cociente menor Se pivota sobre el valor 1

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

Nueva tabla es ptima para problema auxiliar


0 -2 -2 1 0 -1 1 0 1 -1 0 0 2 1 1 1 1 1

69

Programacin lineal

De vuelta al problema original:


0 -2 -2 1 0 -1 1 0 1 -1 0 0 2 1 1 1

0 0

-1

0 1 1/2

1 1

1 0 1 -1 0 0 1 1/2 1/2 1/2

Es solucin? No Siguiente vrtice:


0 0 -1 2 1 0 1 1/2 0 2 0 1 2 1 0 1 1 0 1 -1 0 0 1 1/2 1/2 1/2 1 -2 0 -2 -1 0 2 1 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

Potrebbero piacerti anche