Introducción a la programación lineal y lineal entera EMALCA 2007 Universidad Nacional Autónoma...

154
Introducción a la programación lineal y lineal entera EMALCA 2007 Universidad Nacional Autónoma de Nicaragua- León León, Nicaragua, 19 de febrero al 2 de marzo de 2007 Irene Loiseau Departamento de Computación Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires [email protected]

Transcript of Introducción a la programación lineal y lineal entera EMALCA 2007 Universidad Nacional Autónoma...

  • Introduccin a la programacin lineal y lineal entera

    EMALCA 2007Universidad Nacional Autnoma de Nicaragua- LenLen, Nicaragua, 19 de febrero al 2 de marzo de 2007

    Irene LoiseauDepartamento de ComputacinFacultad de Ciencias Exactas y NaturalesUniversidad de Buenos [email protected]

  • De qu trata este curso?

    Estudiar mtodos que sirven para resolver problemas que pueden modelarse como problemas de programacin lineal o lineal entera.

  • Qu significa formular y usar un modelos matemticos para resolver problemas reales?.

    Qu etapas incluye esta tarea?.

    Cundo sirve un modelo matemtico?

  • Qu problemas vamos a modelar y resolver en este curso?.

    Qu es Programacin lineal?. Qu es optimizacin?.Porqu se llama programacin lineal?. Dantzig, Kantorovich, el premio Nobel de economa de 1975..

    Qu temas se estudian en Investigacin Operativa (Operations Research)?.

    De todos los temas que abarca la Investigacin Operativa en este curso estudiaremos SOLO problemas de programacin lineal y lineal entera (con tenemos algunos mtodos para resolver algunos problemas de Optimizacin Combinatoria)

  • Bibliografa:

    Bazaraa,M., Jarvis,J., Sherali,H.,Linear Programming and Networks Flows, John Willey & Sons, 1990.

    Chvatal, V., Linear Programming, Freeman, 1983.

    Cook, W., Cunningham, Pulleyblank, Schrijver, A., Combinatorial Optimization, John Willey &.Sons, 1998.

    Williams, H.P., Model Building in Mathematical Programming, John Willey &.Sons, 1999.

    Winston,W., Operations Research, Applications and Algorithms, Duxbury Press, 1994.

    Wolsey,L., Integer Programming, John Willey &.Sons, 1998.

  • El material distribuido en castellano corresponde al libro:Castillo, E., Conejo,A., pedregal, P., Graca, R., Alguacil, N. Formulacin y resolucin de modelos de programacin matemtica en ingeniera y ciencias.disponible por internet.

    Algunos de los libros clsicos de Investigacin Operativa estn traducidos al castellano.

  • Problema de la dietaAna quiere saber cuanto es el mnimo que puede gastar para alimentarse saludablemente, y obtener las 2000 kcal, 55 grs de protenas y 800 mg de calcio que necesita cada da (no est tomando en cuenta la necesidad de hierro ni de vitaminas!!). Para eso ella quiere elegir entre las siguientes comidas, cuyos datos aparecen en la siguiente tabla:

  • Por otro lado Ana quiere tener una alimentacin variada. No quiere comer todos los das lo mismo, cmo mximo quiere comer:

    4 porciones de cereal3 porciones de pollo4 huevos8 porciones de leche2 porciones de pastel2 porciones de cerdo con porotos

    Cmo podemos modelar matemticamente este problema?

    Este problema tiene aplicaciones reales por ejemplo en la fabricacin de alimentos balanceados para pollos o ganado

  • Planificacin de la produccin

    Formular un modelo para optimizar los costos de produccin de una empresa que produce listones de madera en 4 medidas: chico, mediano, grande y extragrande. Estos listones pueden producirse en tres mquinas: A, B y C. Cada mquina puede ser usada 50 horas semanales y el costo operativo por hora de cada una es $30, $50 y $80 respectivamente. Se necesita producir 10000, 8000, 6000 y 4000 metros de cada tipo de listones por semana.

    La cantidad de metros que puede producir por hora cada mquina est dada en la siguiente tabla:

  • Optimizando beneficiosUna compaia petroqumica procesa petrleo para producir combustible para aviones y aceite de mquina. Cuesta $40 comprar 1000 barriles de petrleo, que luego destilados producen 500 barriles de combustible para aviones y 500 barriles de aceite. Lo que se obtiene de la destilacin puede ser vendido directamente o ser procesado nuevamente con un fraccionador cataltico. Si se vende sin el segundo proceso, el combustible para aviones se vende a $60 por 1000 barriles y el aceite para calentar se vende a $40 por 1000 barriles. Lleva 1 hora procesar 1000 barriles de combustible para aviones en el fraccionador cataltico, y esos 1000 barriles se venden a $130.El mismo proceso demora 45 minutos para 1000 barriles de aceite para calentar, y esos 1000 barriles se venden a $90. Cada da, se pueden comprar a lo sumo 20000 barriles de petrleo, y se tienen disponibles 8 horas del fraccionador cataltico.

    Formular un modelo matemtico que maximice los beneficios de la empresa.

  • Problema de programacin lineal (PL)maximizar c1 x1+ c2 x2 + + cn xn

    sujeto aa11 x1 + a12 x2 + + a1n xn b1a21 x1 + a22 x2 + + a2n xn b2...am1 x1 + am2 x2 + + amn xn bm

    xj 0 para j = 1,..n

    (forma standard de un problema de PL)

  • Cuando hablamos de Programacin Lineal (PL) suponemos que las variables xj son variables continuas, es decir xj R+ para todo j.

    Cuando se requiere que las variables sean enteras es decir xj Z+ tendremos problemas de programacin lineal entera (PLE) y cuando sean binarias tendremos problemas de programacin lineal binarios ( 0-1).

    Empezaremos viendo como resolver problemas de Programacin Lineal con variables continuas (PL)

  • El problema de PL se puede escribir tambin como:

    Max j cj xjsujeto a j aij xj bi i = 1,..m

    xj 0 para j = 1,..n

    :

  • O en forma matricial:

    Max c xsujeto aAx bx 0

    donde x es el vector columna de las n variables xj, b es el vector columna de m componentes bi y A es una matriz de m filas y n columnas con los coeficientes de las desigualdades.

  • Los problemas de programacin lineal pueden ser de maximizacin o minimizacin, y pueden tener restricciones por desigualdad en cualquiera de los dos sentidos, o restricciones de igualdad. Las variables pueden o no ser nonegativas y/o acotadas.

    Llamaremos forma standard de un problema de programacin lineal de maximizacin cuando el mismo est expresado usando desigualdades por y forma cannica cuando slo se usan igualdades (est notacin no es uniforme en los libros!!!).

  • Nomenclatura:

    Funcin objetivoCoeficientes de la funcin objetivoVariables o variables de decisinRestriccionesCoeficientes tecnolgicos: los coeficientes de la matriz A.Restricciones de nonegatividad.Termino de la derecha (right-hand-side)Solucin factibleConjunto de soluciones factibles o regin factible

  • Algunas aplicaciones de programacin lineal y programacin lineal entera

    Problemas de mezcla, fabrica de comestiblesPlanificacin de la produccinManejo de stock Planificacin de mantenimiento Planificacin de recursos de mano de obraOptimizacin de refinerasDiseo de componentes de VLSI Determinar tarifas de electricidadTransporte de mercaderasMinimizacin de desperdicio en el corte de materialesRuteo de vehculosAsignacin de tareasAsignacin de tripulaciones en empresas de transporte areo

  • Planificacin en economaFlujo ptimo en redesDiseo de redes de comunicacionesAsignacin de frecuencias en telefona celularPlanificacin de campaas publicitarias en TVPlanificacin de semforosSecuenciamiento de ADNDoblado de protenas Otros problemas de biologa computacionalEtc., etc.

  • Cmo representamos la regin factible del siguiente problema?

    Maximizar 2 x1 + 5 x2

    sujeto a x1 + x2 6 x1 + 2 x2 18 x1 ,x2 0

  • Solucin GeomtricaCmo podemos aprovechar la representacin de la regin factible para resolver geomtricamente un problema de PL de dos variables? . Cmo resolver el problema anterior?.

    Cmo podemos resolver el siguiente problema?:

    Maximizar x1 + 3 x2sujeto a x1 + x2 6 - x1 + 2 x2 8 x1 ,x2 0

  • Cul es la solucin del siguiente problema?

    Minimizar - 2x1 + 3 x2sujeto a - x1 + 2 x2 2 2 x1 - x2 3x2 4 x1 ,x2 0

    Qu significa en un modelo de un problema real que tengamos una regin factible cmo esta?.

  • Vemos que si el PL tiene una solucin ptima finita la misma est en uno de los vrtices del poliedro que describe la regin factible. (demostraremos formalmente esto ms adelante)

    Este mtodo es apropiado slo para problemas pequeos de dos o tres variables, pero es importante para entender los problemas de programacin lineal en general

  • Cuntas soluciones ptimas tiene un problema de PL ?. Cmo se ve esto en la representacin geomtrica de la regin factible?.

    Una nica solucin ptimaInfinitas solucines ptimas (regin factible acotada o no acotada)Ninguna solucin ptima: la regin factible es vaca.Ninguna solucin ptima: la regin factible y la solucin ptima son no-acotadas.

    Qu significa en un modelo de un problema real que se produzcan cada una de estas situaciones ?

  • Mtodo SimplexPresentado por Dantzig en 1947 (publicado en 1949)Uno de los (o l) mtodo de matemtica ms usados para resolver problemas reales.Se usa tambin como importante herramienta para resolver otros problemas de optimizacin, en particular problemas de programacin lineal entera.Tamao de los problemas que resolva entonces y ahora.

  • Presentaremos en primer lugar con un ejemplo las ideas bsicas para un problema de PL en la forma standard

    Maximizar 5 x1 + 4 x2 + 3 x3Sujeto a 2 x1 + 3 x2 + x3 5 4 x1 + x2 + 2 x3 11 (1)3 x1 + 4 x2 + 2 x3 8 x1 , x2 , x3 0

  • El mtodo consiste en mejorar iterativamente el valor de la funcin objetivo, revisando sistemas de inecuaciones equivalentes al sistema original (1) de desigualdades que describe la regin factible.

  • En primer lugar definimos 3 variables nonegativas x4, x5, x6 llamadas variables de holgura (slacks) que nos transforman el sistema de desigualdades en un sistema de igualdades

    2 x1 + 3 x2 + x3 + x4 = 5 4 x1 + x2 + 2 x3 + x5 = 113 x1 + 4 x2 + 2 x3 + x6 = 8

    Y definimos una variable z que representa el valor de la funcin objetivoz = 5 x1 + 4 x2 + 3 x3

  • Despejamos las variables de holgura y reescribimos nuestro sistema:

    x4 = 5 - 2 x1 - 3 x2 - x3 x5 = 11 - 4 x1 - x2 - 2 x3 (2) x6 = 8 - 3 x1 - 4 x2 - 2 x3-------------------------------------------------------------------------- z = 5 x1 + 4 x2 + 3 x3

  • Entonces nuestro problema se puede reformular como

    Maximizar z Sujeto a x1 , x2 , x3 , x4 , x5 , x6 0

    Cada solucin de problema original determina una nica solucin de este nuevo problema (2).Cada solucin de (2) se puede restringir a una solucin de (1) si no consideramos las variables de holgura.Entonces esta correspondencia entre las soluciones bsicas de ambos sistemas establece tambin una correspondencia entre soluciones ptimas.

  • Cmo obtenemos de este ltimo sistema (2 )una solucin factible del problema?.

    Por ejemplo si ponemos todas las variables de decisin en 0, tenemos:

    X1 = 0, X2 = 0, X3 = 0, X4 = 5, X5 = 6, X6 = 8

    Cul es el valor de la funcin objetivo en esta solucin?

    z = 0

    Cmo podemos obtener una solucin mejor a partir de ac?.

  • Miremos de nuevo el sistema (2). Cmo podemos hacer crecer z?.

    x4 = 5 - 2 x1 - 3 x2 - x3 x5 = 11 - 4 x1 - x2 - 2 x3 x6 = 8 - 3 x1 - 4 x2 - 2 x3 ---------------------------------------------------------------z = 5 x1 + 4 x2 + 3 x3

    Si dejamos x2 y x3 fijos en 0 cunto puede crecer x1 sin que la solucin deje de ser factible o sea sin que ninguna de las variables x4 ,, x5 y x6 dejen de ser positivas?.

    Cul es la variable que ms limita el crecimiento de x1?.

  • Si x1 crece lo ms posible manteniendo la factibilidad, o sea hasta tomar el valor 5/2, la nueva solucin queda:

    x1 = 5/2 , x2 = 0 x3 = 0 , x4 = 0 x1 = 1 , x6 =

    Qu valores toma la funcin objetivo en este punto?.

    z = 25/2

    Cmo seguimos a partir de ac para ver si podemos hacer crecer este valor?

    Vamos a tratar de obtener un sistema similar al sistema (2), es decir un sistema donde la variables que valen 0 sean las nicas que figuren en la ecuacin de z.

  • Para eso vamos a cambiar la variable x1 por la variable x4 que es la que limita el crecimiento de x1.

    Si despejamos x1 de la primera ecuacin de (2) queda:

    x1 = 5/2 3/2 x2 x 3 - x4

    Si reemplazamos esta ecuacin en las otras dos ecuaciones del sistema (2) obtenemos un nuevo sistema

  • x1 = 5/2 3/2 x2 1/2 x3 -1/2 x4 x5 = 1 + 5 x2 + 2 x4 (3)x6 = 1/2 + 1/2 x2 1/2 x3 + 3/2 x4 ---------------------------------------------------------------z = 25/2 7/2 x2 + 1/2 x3 - 5/2 x4

    Es posible que el valor de z siga creciendo?. O sea, cmo podemos hacer para ver si hay alguna otra solucin factible que tenga un valor mayor que 25/2? . Hay alguna de las variables de las que aparecen en la expresin de z, (o sea que tienen valor 0) que pueda aumentar de valor (sin que las otras variables que aparecen en la expresin de z cambien)?Mirando la ltima fila vemos que la nica variable que puede aumentar de valor para que aumente el valor de z es x3. Hasta cuanto podemos aumentar el valor de x3 ?.

  • Para que el sistema siga siendo factible o sea para que las todas la variables sigan siendo nongativas lo mximo que puede crecer x3 es 1.

    Si reemplazamos este valor en (3) obtenemos una nueva solucin factible:

    x1 = 2 , x2 = 0 x3 = 1 , x4 = 0 x5 = 1 , x6 = 0

    y vemos que el valor de la funcin objetivo en esta solucin esZ = 13

    Podemos aumentar el valor de la funcin objetivo an ms?.

  • Para ver esto repetimos el procedimiento anterior. Es decir vamos a escribir las ecuaciones de modo de tener un sistema donde la variables que figuren en la ecuacin de z valgan todas 0.

    Para esto, como hicimos antes, despejamos x3 de la ecuacin de la variable que limit su crecimiento, en este caso x6. Obtenemos:

    x3 = 1 + x2 + 3 x 4 - 2 x6

  • Si reemplazamos x3 por esta expresin en el sistema (3) obtenemos un nuevo sistema:

    x3 = 1 + x2 + 3 x 4 - 2 x6x1 = 2 - 2 x2 - 2 x4 + x6 (4)x5 = 1 + 5 x2 + 2 x4 ---------------------------------------------------------------z = 13 3 x2 - x4 - x6

    Podemos hacer crecer ms el valor de z o sea de la funcin objetivo?.Qu nos garantiza que esta solucin es la ptima?.

  • Que hemos pasado de un sistema de ecuaciones a otro equivalente sucesivamente, y que entonces TODAS las soluciones factibles de nuestro problema original tienen que satisfacer (4).

  • En el caso general si tenemos el problema

    Max j cj xjsujeto a j aij xj bi i = 1,..mxj 0 para j = 1,..n

    (con los bi todos positivos)introducimos las variables slacks xn+1, xn+2, xn+3 xn+m , llamamos z a la funin objetivo y escribimos el sistema equivalente:

    xn+i = bi - j aij xj z = j cj xj

  • Asociamos a este sistema una solucin factible que se obtiene asignando valor 0 a las variables originales del problema.xj = 0 para j = 1,..nx n+ i = bi para i= 1, .m

    Iterativamente pasaremos de un sistema como este a otro hasta obtener una solucin ptima.

    Las variables que aparecen en el miembro de la izquierda de las ecuaciones de cada sistema se llaman bsicas, las que aparecen a la derecha se llaman variables no-bsicas. Las variables bsicas no aparecen en la expresin de la funcin objetivo.

    Para cada uno de estos sistemas obtenemos una solucin factible bsica del problema asignando valor 0 a las variables no bsicas.

  • Resumen del mtodo:A partir del primer sistema, iterativamente, mientras el valor de la funcin objetivo pueda mejorar:

    Elegir alguna variable no-bsica cuyo valor pueda crecer ( o sea que figura con signo ms en la funcin objetivo). (variable de entrada)Determinar la ( o una de las) variable bsica que limita ms el crecimiento de la variable elegida en el paso anterior. (variable de salida).Despejar la variable no bsica elegida de la ecuacin correspondiente a la variable bsica.Reemplazar en el sistema anterior y obtener un nuevo sistema. Asignar valor 0 a la nueva variable no-bsica, obtenemos una nueva solucin factible del problema original (estas soluciones se llaman soluciones bsicas).

    No todas las soluciones factibles son soluciones bsicas!

  • En los programas computacionales el mtodo se implementa usando matrices (lo veremos ms adelante).

    Formato Tableau: muchas veces este mtodo se presenta usando un formato tableau, o sea realizando las operaciones sobre una tabla que incluye slo los coeficientes del sistema.

  • Qu son geomtricamente las soluciones bsicas?.

    Ejemplo:Representar grficamente el conjunto de soluciones factibles del siguiente problema. Resolver, eligiendo en cada paso la variable no-bsica de mayor coeficiente y representar cada solucin bsica factible obtenida. Maximizar 3 x1 + 2 x2 + 5 x3Sujeto a 2 x1 + x2 4 x3 5 x1 , x2 , x3 0

  • EjerciciosResolver los siguientes problemas por el mtodo simplex:

    1- Maximizar x1 + 4 x2 + 3 x3Sujeto a x1 + 3 x2 + x3 3 - x1 3 x3 2 2 x1 - x2 + 2 x3 42 x1 + 3 x2 - x3 2 x1 , x2 , x3 0

  • 2 - Maximizar 3 x1 + 2 x2 + 4 x3Sujeto a x1 + x2 + 2 x3 4 2 x1 3 x3 5 2 x1 + x2 + 3 x3 7x1 , x2 , x3 0

    3 - Maximizar 5x1 + 6 x2 + 9 x3 + 8 x4Sujeto a x1 + 2 x2 + 3 x3 + x4 5 x1 + x2 + 2 x3 + 3 x4 3 x1 , x2 , x3 ,x4 0

  • Qu problemas pueden aparecer al aplicar el mtodo simplex y cmo resolverlos:

    Siempre podemos encontrar una variable de entrada en la base y una de salida?.

    El mtodo termina siempre, no podra ser que realice un nmero infinito de pasos?.

    Siempre podemos obtener una solucin inicial?. Qu pasa si los bi no son positivos?.

    Cunto tarda el mtodo simplex en resolver un problema

  • Siempre podemos encontrar una variable de entrada en la base y una de salida?.

    La variable de entrada es una variable no-bsica con coeficiente positivo en la funcin objetivo z. Puede haber varias para elegir, en cuyo caso da lo mismo elegir cualquiera o ninguna, en cuyo caso estamos en el ptimo.La variable de salida es la variable bsica cuya restriccin de ser no-negativa es la que ms limita el crecimiento de la variable de entrada. Puede haber varias candidatas o ninguna. Veamos ambas posibilidades.

  • Qu significa que no haya ninguna variable bsica que pueda salir?. Veamos el siguiente ejemplo..

    x2 = 5 + x3 - x 4 - 3 x1x5 = 7 - 3 x4 - 4 x1 ----------------------------------------------------z = 5 + x3 - x4 - x1

    Si no hay ninguna variable que limita el crecimiento de la variable de entrada el problema es no acotado.

  • Qu puede ocurrir si hay ms de una variable bsica que pueda salir?. Podemos elegir cualquiera de ellas para salir.

    Pero puede ocurrir lo siguiente, veamos un ejemplo:

    x4 = 1 - 2 x3x5 = 3 - 2 x1 - 4 x2 - 6 x3x6 = 2 + x1 - 3 x2 - 4 x3 ---------------------------------------------------------------z = 2 x1 - x2 + 8 x3

    Elegimos x3 como variable de entrada. Las tres variables bsicas pueden ser variables de salida. Supongamos que elegimos x4

  • x3 = 0.5 - 0.5 x4x5 = - 2 x1 - 4 x2 + 3 x4x6 = x1 - 3 x2 - 4 x4---------------------------------------------------- -----------z = 4 + 2 x1 - x2 - 4 x4

    Qu pasa si elegimos x1 como variable de entrada?. Cunto puede crecer?. La variable de salida tiene que ser x5.

    x1 = - 2 x2 + 1.5 x4 -0.5 x5 x3 = 0.5 - 0.5 x4x6 = - x2 + 3.5 x4 - 0.5x5---------------------------------------------------------------z = 4 + 3 x2 - x4 - x5

    Se puede ver que la funcin objetivo no creci en este caso. Porqu ?.

  • Las soluciones bsicas que tienen una o ms variables bsicas con valor 0 se llaman degeneradas. Esta situacin se presenta con frecuencia en problemas de PL derivados de aplicaciones reales, y en general no trae ningn problema..como podemos ver si seguimos resolviendo el ejemplo anterior .. despus de dos iteraciones ms se llega al ptimo. (ejercicio)

    Pero tambin puede ocurrir que el mtodo simplex, cmo lo estamos presentando hasta ahora siga realizando una cantidad infinita de iteraciones (ciclado)

  • Ejemplo:Resolvemos el siguiente ejemplo con las siguientes reglas (arbitrarias) de entrada y salida de variables:

    Elegimos la variable de entrada como la que tiene el coeficiente ms grande entre las posibles candidatas.En caso de empate elegimos la variable de salida que tiene menor ndice.

  • Maximizar 10 x1 - 57 x2 - 9 x3 - 24 x4 sujeto a- 0.5 x1 + 5.5 x2+ 2.5 x3 - 9 x4 0 - 0.5 x1 + 1.5 x2+ 0.5 x3 - x4 0 x1 1 x1 , x2 , x3 , x4 0

    Despus de agregar las variables de holgura tenemos el primer sistema:

    x5 = - 0.5 x1 + 5.5 x2+ 2.5 x3 - 9 x4x6 = - 0.5 x1 + 1.5 x2+ 0.5 x3 - x4 x7 = 1 - x1---------------------------------------------------- -----------z = 10 x1 - 57 x2 - 9 x3 - 24 x4

  • Obtenemos los siguientes sistemas.

    x1 = 11 x2 + 5 x3 -18 x4 - 2 x5x6 = - 4 x2 - 2 x3 + 8 x4 + x5x7 = 1 - 11 x2 - 5 x3 + 18 x4 + 2 x5--------------------------------------------- --------------------------------------------------z = 53 x2 + 41 x3 - 204 x4 - 20 x5

    x2 = - 0.5 x3 + 2 x4+ 0.25 x5 0.25 x6x1 = - 0.5 x3 + 4 x4+ 0.75 x5 - 2.75x6x7 = 1 + 0.5 x3 - 4 x4 -0.75 x5 + 2.75 x6---------------------------------------------------- -------------------------------------------z = 14.5 x3 - 98 x4 - 6.75 x5 - 13.25 x6

  • x3 = 8 x4 + 1.5 x5 5.5 x6 2 x1x2 = - 2 x4 - 0.5 x5+ 2.5 x6 + x1x7 = 1 x1---------------------------------------------------- -------------------------------------------z = 18 x4 + 15 x5 - 93 x6 - 29 x1

    x4 = - 0.25 x5 + 1.25 x6+ 0.5 x1 0.5 x2x6 = - 0.5 x5 + 4.5 x6 + 2 x1 - 4 x2 x7 = 1 - x1---------------------------------------------------- -------------------------------------------z = 10.5 x5 - 70.5 x6 - 20x1 - 9 x2

  • x5 = - 9 x6 + 4 x1 - 8 x2 2 x3x4 = - x6 - 0.5 x1 + 1.5 x2 + 0.5 x3 x7 = 1 - x1---------------------------------------------------- -------------------------------------------z = 24 x6 + 22 x1 - 93 x2 - 21 x3

    X5 = - 0.5 x1 + 1.5 x2+ 0.5 x3 - x4x6 = - 0.5 x1 + 5.5 x2+ 2.5 x3 - 9 x4 x7 = 1 - x1---------------------------------------------------- --------------------------------------------z = 10 x1 - 57 x2 - 9 x3 - 24 x4

  • Este ltimo sistema es igual al primero (y por lo tanto la ltima solucin es igual a la primera), o sea si seguimos iterando vamos a ciclar permanentemente entre estas soluciones y el mtodo no va a parar nunca..

  • Puede ser que el mtodo cicle a partir de una solucion que no sea degenerada?. NO porque cuando cicla el valor de la funcin objetivo no aumenta (no podra volver a una solucin anterior si aumentara).

    Es muy poco frecuente que haya problemas donde el mtodo simplex cicle. Es difcil construir ejemplos donde esto pase.

    Teorema: Si el mtodo simplex no termina es porque cicla.Demostracin resumida:Hay un nmero finito de soluciones bsicas (se obtienen eligiendo m variables entre n+m posibles), por lo tanto si hay infinitas iteraciones, se tienen que repetir las soluciones bsicas, y los correspondientes sistemas de ecuaciones.

  • Hay varias formas de evitar que el mtodo simplex cicle. Una de ellas est dada por es la siguiente:

    Teorema: Si en caso de empate se eligen como variable de entrada o salida la que tiene el menor subndice entonces el mtodo termina. (o sea no cicla).Dem: ver por ejemplo libro de Chvatal o de Bazaraa et all.

  • Qu pasa si los bi son negativos?. Podemos aplicar el mtodo al siguiente problema?:

    Maximizar x1 - x2 + x3 sujeto a2 x1 - x2 + 2 x3 4 2 x1 - 3 x2+ x3 - 5x1 + x2 - 2 x3 -1x1 , x2 , x3 0

    Cmo obtenemos una solucin bsica factible inicial?

  • Cmo conseguimos una solucin y un sistema de donde empezar?.

    Hay varias formas de plantear un problema auxiliar para hacer esto. Una de ellas es:

    Si tenemos nuestro problema original:

    Max j cj xjsujeto a j aij xj bi i = 1,..mxj 0 para j = 1,..n planteamos un nuevo problema de programacin lineal, llamado problema auxiliar o fase 1.

  • Min x0sujeto a j aij xj - x0 bi i = 1,..mxj 0 para j = 0, 1,..n

    Para qu nos sirve resolver este nuevo problema?. Es ms fcil resolver este problema que el original? El primer sistema para este problema quedara agregando las variables de holgura:

    x n+i = bi - j aij xj + x0 i = 1,..m ------------------------------ w = - x0

  • Ejemplo:Maximizar x1 - x2 + x3 sujeto a2 x1 - x2 + 2 x3 4 2 x1 - 3 x2+ x3 - 5x1 + x2 - 2 x3 -1x1 , x2 , x3 0

    El problema auxiliar es:Minimizar x0 sujeto a2 x1 - x2 + 2 x3 - x0 4 2 x1 - 3 x2+ x3 - x0 - 5x1 + x2 - 2 x3 - x0 -1 x0 , x1 , x2 , x3 0

  • Si agregamos las variables de holgura tenemos el primer sistema:x4 = 4 - 2 x1 + x2 - 2 x3 + x0 x5 = - 5 - 2 x1 + 3 x2 - x3 + x0 x6 = -1 + x1 - x2 + 2 x3 + x0-----------------------------------------------------------w = - x0

    Podemos obtener una solucin factible de este sistema?

    No, pero si hacemos entrar x0 y hacemos salir la variable ms infactible, o sea la variable negativa con menor valor, obtenemos un sistema factible para el problema auxiliar. En este caso hacemos salir a x5.

  • x0 = 5 + 2 x1 -3 x2 + x3 + x5 x4 = 9 - 2 x2 - x3 + x5 x6 = 4 + 3 x1 - 4 x2 + 3 x3 + x5-----------------------------------------------------------w = - 5 - 2 x1 + 3 x2 - x3 - x5

    Si aplicamos el mtodo simplex a partir de ac, haciendo entrar a la variable x2 y salir a x6 obtenemos:

    x2 = 1 + 0.75 x1 + 0.75 x3 + 0.25 x5 -0.25 x6 x0 = 2 - 0.25 x1 - 1.25 x3 + 0.25 x5 - 0.75 x6 x4 = 7 - 1.5 x1 - 2.5 x3 + 0.5 x5 + 0.5 x6 -------------------------------------------------------------------------------------w = 2 + 0.25 x1 + 1. 25 x3 - 0.25 x5 - 0.75 x6

  • x3 = 1.6 0.2 x1 + 0.2 x5 + 0.6 x6 -0.8 x0 x2 = 2.2 + 0.6 x1 + 0.4 x5 0.2 x6 - 0.6 x0 x4 = 3 - x1 - x6 + 2 x0----------------------------------------------------------------------------------------w = - x0

    Esta es la solucin ptima del problema auxiliar?. Qu nos indica?. Cmo pasamos de este sistema a un sistema para resolver el problema original? .

    Para obtener un sistema del problema original borramos x0 y calculamos el valor de la funcin objetivo z en funcin de las variables no-bsicas x1, x5 y x6 .

  • Obtenemos un sistema y una solucin factible del problema original a partir del cual aplicamos el mtodo simplex.

    x3 = 1.6 0.2 x1 + 0.2 x5 + 0.6 x6x2 = 2.2 + 0.6 x1 + 0.4 x5 0.2 x6x4 = 3 - x1 - x6----------------------------------------------------------------------------------------z = -0.6 + 0.2 x1 - 0.2 x5 + 0.8 x6

    Ejercicio: terminar de resolver a partir de ac el problema original.

    Volviendo al caso general:Qu posibles soluciones puede tener el problema auxiliar?. Qu significa cada una de ellas?

  • Cunto tarda el mtodo simplex en resolver un problema?.

    En el peor caso (ejemplo de Klee y Minty, 1972) puede realizar una cantidad exponencial de pasos, o sea revisar una cantidad exponencial de soluciones bsicas ( o vrtices del poliedro)

    En la prctica sin embargo consigue resolver problemas muy grandes de miles de variable en un tiempo razonable: tpicamente el nmero de iteraciones crece proporcionalmente a m (2m o 3m) y muy lentamente con n.

  • Dualidad

    Supongamos que queremos obtener cotas inferiores y superiores a la solucin ptima del siguiente problema:

    Maximizar 4 x1 + x2 + 5 x3 + 3 x4 sujeto a x1 - x2 - x3 + 3 x4 1 5 x1 + x2+ 3 x3 + 8 x4 55 (5)x1 + 2 x2 + 3 x3 - 5x4 3x1 , x2 , x3 ,x4 0

  • Para encontrar cotas inferiores del ptimo z*, es suficiente con tomar cualquier solucin factible, bsica o no, y calcular el correspondiente valor de la funcin z.

    Por ejemplo si en el problema anterior tomamos la solucin factible z = (2,1,1,1/3) sabemos que el ptimo tiene que ser mayor que el valor de la funcin objetivo en este punto que es z= 15. O sea z* 15.

  • Cmo hacemos si queremos encontrar cotas superiores de este problema?. Recordemos que todos los xi son positivos, entonces:

    Por ejemplo podramos si multiplicamos la segunda ecuacin por 5/3 tenemos 25/3 x1 + 5/3 x2 + 5 x3 + 40/3 x4 275/3y podemos ver que: 4 x1 + x2 + 5 x3 + 3 x4 25/3 x1 + x2 + 5 x3 + 3 x4 275/3y entonces resulta z* 275/3

    Si sumamos la segunda y la tercera ecuacin obtenemos4 x1 + 3 x2 + 6 x3 + 3 x4 58y entonces vemos que 4 x1 + x2 + 5 x3 + 3 x4 4 x1 + 3 x2 + 6 x3 + 3 x4 58 y por lo tanto z* 58

  • Hagamos esto de manera ms sistemtica:

    Construyamos una combinacin lineal de las restricciones, multiplicando la primera por una variable y1, la segunda por y2 y la tercera por y3 (todas positivas) , obtenemos:

    y1( x1 - x2 - x3 + 3 x4) + y2 ( 5 x1 + x2+ 3 x3 + 8 x4 y1) +y3 ( - x1 + 2 x2 + 3 x3 - 5x4) y1 + 55 y2 + 3 y3

    Reescribimos esto como:

  • (y1 + 5y2 - y3 ) x1 + (- y1 + y2 + 2 y3 ) x2 + (- y1 + 3y2 +3 y3 ) x3 + (3 y1 + 8y2 - 5 y3 ) x4 y1 + 55y2 + 3 y3

    Para obtener una cota superior de la funcin objetivo z tenemos que tener entonces que:

    y1 + 5y2 - y3 4- y1 + y2 + 2 y3 1- y1 + 3y2 +3 y3 53 y1 + 8y2 - 5 y3 3

  • Si y1 , y2 ,y3 verifican estas ecuaciones entonces para cualquier solucin factible x1 , x2 , x3 , x4 del primal se verifica que:

    4 x1 + x2 + 5 x3 + 3 x4 y1 + 55y2 + 3 y3

    Entonces para obtener la cota lo ms prxima posible a z* tenemos que resolver el siguiente problema:

    Minimizar y1 + 55y2 + 3 y3Sujeto ay1 + 5y2 - y3 4- y1 + y2 + 2 y3 1- y1 + 3y2 +3 y3 53 y1 + 8y2 - 5 y3 3

    Este problema se llama el problema dual del problema original de maximizacin (5)

  • En general si tenemos el problema (que llamaremos primal)

    Maximizar j cj xjsujeto a j aij xj bi i = 1,..m (6)xj 0 para j = 1,..n

    Definimos el problema dual como:

    Minimizar i bi yisujeto a i aij yi cj j = 1,..n (7)yi 0 para i = 1,..n

  • Proposicin: Si (x1 , x2 , xn ) es solucin factible del problema primal (6) y (y1 , y2 ym) es una solucin factible del problema dual (7) entonces

    j cj xj i bi yi

    Dem: resumen, usar las definiciones de ambos problemas.

    Qu significa esto desde el punto de vista prctico?

  • Corolario (certificado de optimalidad):

    Si (x*1 , x*2 , x*n ) es una solucin factible del problema primal (6) y (y*1 , y*2 y*m) es solucin factible del problema dual (7) y se verifica que j cj x*j = i bi y*i

    entonces (x*1 , x*2 , x*n ) es solucin ptima del primal y (y*1 , y*2 y*m) es solucin ptima del problema dual.

    Para que sirve este resultado?Por ejemplo en el problema (5) si x1 = 0, x2 = 14, , x3 = 0, x4 = 5, y y1 = 11, y2 = 0, y3 = 6 calculando los valores de las funciones objetivo del primal y del dual podemos certificar que ambas soluciones son ptimas.

  • Teorema de dualidadSi el problema primal (6) tiene una solucin ptima x* = (x*1 , x*2 , x*n ) entonces el problema dual (7) tiene una solucin ptima y* = (y*1 , y*2 y*m) y se verifica que

    j cj x*j = i bi y*i

    Dem: ver libros de Chvatal o Bazaraa o cualquier otro libro de programacin lineal.

  • Resumen de la dem.: hay que fabricar una solucin ptima del dual (y*1 , y*2 y*m). Si el sistema ptimo del dual tena en la ltima filaz = z* + k=1n+m ck xk

    entonces se define yi* = - cn+i y se demuestra que esta es una solucin factible del problema dual, y que el valor objetivo de esta solucin es igual a la del primal. (o sea tomamos el coeficiente de la variable n+i de holgura en el ltimo sistema como valor de la variable dual yi)

  • Ejemplo: en el caso del problema (5) si lo resolvemos por el mtodo simplex vemos que el ltimo sistema es:

    x2 = 14 2 x1 - 4 x3 - 5 x5 - 3 x7x4 = 5 - x1 - x3 2 x5 - x7x6 = 1 + 5 x1 + 9 x3 + 21 x5 + 11 x7----------------------------------------------------------------------------------------z = 29 - x1 - 2 x3 - 11 x5 - 6x7

    Vemos entonces que ah tenemos la solucin ptima del problema primal:

    x1 = 0, x2 = 14, , x3 = 0, x4 = 5y del dual y1 = 11, y2 = 0, y3 = 6

    (correspondientes a los coeficientes de las variables de holgura x5, x6 , y x7 en la fila de la funcin objetivo)

  • Cmo formulamos el problema dual de un problema de minimizacin?.

    El dual del problema dual es el primal.

    Por lo tanto del teorema de dualidad se deducen los siguientes resultados:

    el problema primal tiene una solucin ptima si y slo si el problema dual tiene una solucin ptima.

  • Si el problema primal es no acotado entonces el dual es nofactible. (se demuestra usando la proposicin que ya vimos que dice que si (x1 , x2 , xn ) es solucin factible del problema primal y (y1 , y2 ym) es una solucin factible del problema dual entonces j cj xj i bi yi).

    Si el problema primal es no factible entonces el problema dual es no acotado. (se demuestra en forma similar a ii)

    Veamos cuales son todas las posibilidades en el siguiente cuadro:

  • Posibles situaciones del primal y el dual

  • Teorema de holgura complementaria

    Si x* es una solucin factible del primal y y* es una solucin factible del dual, entonces x* e y* son soluciones ptimas del primal y del dual respectivamente, si y slo si se verifica

    i bi y*i = cj x*j = 0 para j=1,nj cj x*j = y*i = 0 para b i =1,m

    Dem, resumen: Usar que las soluciones x* e y* son factibles en ambos problemas y el teorema de dualidad.

    Porqu este teorema tiene este nombre?.

  • Otra forma de presentar este mismo resultado:

    Corolario: una solucin factible del problema primal x* es ptima si y slo si existen valores y*1 , y*2 y*m que verifican que:

    i aij y*i = cj cuando x*j > 0y*i = 0 cuando j aij x*j < bi

    i aij y*i cj para j = 1,n y*i 0 para i= 1,..m

    Dem: ejercicio, usar teorema de dualidad y holgura complementaria.

  • Cul es la importancia prctica de la teora de dualidad?

    Puede ser ms fcil resolver el dual que el primal. Cundo?

    Provee un certificado de optimalidad.

    Veremos que es una herramienta fundamental para resolver problemas de programacin lineal entera, (cuando las variables del problema tienen que tomar valores enteros).

  • Significado econmico de las variables dualesLas variables duales se llaman tambin precios sombra o valores marginales.

    Supongamos que tenemos un problema de maximizar el beneficio en una fabrica de muebles (por ejemplo el problema (5 ) podra serlo):

    cada xj mide cuanto vamos a producir de cada producto (sillas, camas, escritorios). cada bi especifica la cantidad disponible de recursos (madera, metal, mano de obra).

    los coeficientes aij miden cuanto se requiere del recurso i para producir el producto j (coeficientes tecnolgicos)

  • Cada cj es el beneficio de producir una unidad del producto j, supongamos que se mide en dlares.

    Para que el anlisis de unidades sea correcto vemos que las variables yi miden entonces dlares por unidad de recurso i, entonces asumimos que cada yi mide el valor unitario de cada recurso.

    Se puede demostrar el siguiente teorema (no daremos la demostracin en este curso puede verse en un libro de programacin lineal):

  • Teorema: Si el problema de PL tiene al menos una solucin bsica no degenerada entonces existe un valor positivo de > 0 con la siguiente propiedad: si | ti | para todo i=1,m entonces el problemaMaximizar j cj xjsujeto a j aij xj bi + ti i = 1,..mxj 0 para j = 1,..n

    tiene una solucin ptimaz* = z* + i y*i tidonde z* es el valor ptimo del PL y (y*1 , y*2 y*m) es una solucin ptima del dual. .Qu dice este teorema?. Qu nos dice del significado de las variables duales?

  • Ejemplo:Un empresario maderero tiene un terreno de 100 acres plantado con lamos. Cortar los rboles y dejar que regeneren tiene un costo de 10$ por acre y produce un beneficio de 50$ por acre. El empresario puede tambin cortar los lamos y plantar pinos. En este caso tiene un costo de 50$ y un beneficio de 120$ por acre. El empresario dispone de 4000 $ y quiere saber cul es la estrategia que ms le conviene.

    Cmo podemos formular este problema como un problema de programacin lineal?

  • Maximizar 40 x1 + 70 x2 sujeto a x1 + x2 100 10 x1 + 50 x2 4000 x1 , x2 0

    Si resolvemos e problema por el mtodo simplex vemos que la solucin ptima es x*1 = 25 y x*2 = 75 y la solucin ptima del dual es y*1 = 32.5 y y*2 = 0.75

  • El empresario podra plantearse las siguientes preguntas:

    Le conviene pedir un prestamos de 100$ ms por el cual tendr que devolver 180 $?.

    Cul es el inters mximo que le conviene pagar?.

    Le conviene derivar fondos hacia otros emprendimientos?. Qu beneficio tendran que brindar?

    Cmo puede hacer para analizar rpidamente si le conviene considerar una nueva posibilidad de plantar otras especies?

  • Notacin MatricialEl problema de PL , si ya agregamos las variables de holgura, puede escribirse como:

    Max c xsujeto aAx = bx 0

    Si tenemos una solucin bsica x# de este sistema con variables bsicas x#B, podemos separar al vector x en dos partes, las variables bsicas xB y las no bsicas xn . Reordenando las variables podemos poner:x = (xB, xN)Reordenando de la misma forma las columnas de A, podemos poner A = [ AB AN ]

  • Entonces podemos escribir nuestro sistema de ecuaciones cmo:AB xB + AN xN = b

    Se puede demostrar que la matriz AB es inversible viendo que AB xB = b tiene una solucin nica correspondiente a la variables bsicas x#B. Entonces podemos escribir:xB = AB-1 b - AB-1 AN xN

    Si escribimos tambin c = (cB, cN) la funcin objetivo queda: Z = c x = cB xB + cN xN

    Reemplazando ac la expresin de xB queda: z = cB (AB-1 b - AB-1 AN xN )+ cN xN == cB AB-1 b + (cN - cB AB-1 AN) xN

  • Y por lo tanto el sistema de ecuaciones que usamos para resolver el simplex se puede escribir como:

    xB = AB-1 b - AB-1 AN xN----------------------------------------------------------------------z = cB AB-1 b + (cN - cB AB-1 AN) xN

    Se acostumbra llamar B = AB , entonces ponemos:

    xB = B-1 b - B-1 AN xN----------------------------------------------------------------------z = cB B-1 b + (cN - cB B-1 AN) xN

    Notar que x#B = B-1b y que z = cB B-1 b es el valor de la funcin objetivo en esta solucin bsica .

  • Por ejemplo cuando resolvamos el sistema (1),

    Maximizar 5 x1 + 4 x2 + 3 x3Sujeto a 2 x1 + 3 x2 + x3 5 4 x1 + x2 + 2 x3 113 x1 + 4 x2 + 2 x3 8 x1 , x2 , x3 0

    Cul es la matriz A del problema, una vez agregadas las slacks?. Cules son el vector b y el el vector c?.

  • En una de las iteraciones de simplex para este problema tenamos la siguiente solucin bsica:

    x1 = 5/2 3/2 x2 1/2 x3 -1/2 x4 x5 = 1 + 5 x2 + 2 x4x6 = 1/2 + 1/2 x2 1/2 x3 + 3/2 x4 ---------------------------------------------------------------z = 25/2 7/2 x2 + 1/2 x3 - 5/2 x4

    Cul es la matriz B que corresponde a esta solucin bsica?. Cules son los vectores cB y cN?.

    Calcular B-1 b,, B-1 AN,, cB B-1 b y (cN - cB B-1 AN) para esta solucin bsica y comparar con el sistema de arriba.

  • La matriz B se llama matriz bsica o base.

    A cada submatriz inversible de A le corresponde una solucin bsica.

    El mtodo simplex se puede reescribir en funcin de esta notacin realizando las operaciones de forma un poco diferente a la que las venamos haciendo.

  • Una iteracin del mtodo Simplex RevisadoDada una solucin bsica x#, sea B la matriz bsica:Resolver el sistema yB = cBElegir la columna de entrada, como una columna aj de AN tal que yaj < cj . Si no existe la solucin actual es ptima.Resolver el sistema B d = ajEncontrar el mayor valor de t para el cual x#B - t d 0. Si no existe tal t, entonces el problema es no-acotado. En otro caso hay al menos una variable x#k bsica tal que x#k - t dk = 0. Elegir xk para salir de la base.Asignar a xj (la variable de entrada) el valor t y al resto de las variables bsicas de x#B los valores x#B = x#B - t d. Reemplazar en B la columna de salida aj por la de entrada ak, y actualizar el indicador de columnas bsicas.

  • Ejercicio: resolver el problema (1) usando el mtodo simplex revisado.

    Qu diferencia hay entre la matriz bsica de una iteracin y la de la siguiente?Cmo slo cambia una columna, hay mtodos de factorizacin de matrices que permiten resolver los sistemas de los pasos 1 y 3 con un nmero relativamente pequeo de operaciones. No hay que resolver los sistemas completos cada vez.

    En el cuidado con que se hagan estas operaciones (y en la velocidad cada vez mayor de las computadoras, claro) reside el factor que hace que se puedan resolver cada vez problemas ms grandes.

  • En la mayora de los problemas que se encuentran en la prctica las matrices son bastante esparsas, y entonces el mtodo simplex revisado implementado de esta forma requiere menos operaciones que el mtodo simplex estandar.

    La mayora de los programas de programacin lineal implementan el mtodo simplex revisado.

    Hay mucho trabajo computacional envuelto para poder tener programas cada vez ms eficientes.

  • Analisis de sensibilidadEn la mayora de los problemas reales podra ser que los datos no se conozcan exactamente o puede haber cambios imprevistos en la informacin, por ejemplo en los costos o precios. Tambin a veces se quieren analizar los efectos de aumentar los recursos, de cambiar los coeficientes tecnolgicos, etc.

    Cmo podemos ver cun sensible a los cambios en los datos es la solucin ptima que obtuvimos?

    Cmo podemos analizar como cambiara la solucin sin resolver de nuevo el problema?.

    Cmo seguimos optimizando si la solucin actual no es ptima para los nuevos datos?

  • Supongamos que tenemos el PL , (ya agregamos las variables de holgura):

    Max c xsujeto aAx = bx 0

    y tenemos el sistema y la solucin ptima:

    x*B = B-1 b - B-1 AN x*N----------------------------------------------------------------------z = cB B-1 b + (cN - cB B-1 AN) x*N

  • Qu podemos decir si:

    Cambia el valor de un ck de una variable xk no bsica?. Cmo podemos calcular cunto puede cambiar sin que cambie la solucin ptima?.

    Cambia el valor de un ck de una variable xk bsica?. Cmo podemos calcular cunto puede cambiar sin que cambie la solucin ptima?.

    Cambia uno de los trminos de la derecha, o sea un bi.?.

    Agregamos una restriccin?.

    Agregamos una nueva columna?.

  • Ejemplo: supongamos que tenemos el sistema ptimo del problema (5):

    x2 = 14 2 x1 - 4 x3 - 5 x5 - 3 x7x4 = 5 - x1 - x3 2 x5 - x7x6 = 1 + 5 x1 + 9 x3 + 21 x5 + 11 x7----------------------------------------------------------------------------------------z = 29 - x1 - 2 x3 - 11 x5 - 6x7

    Cmo contestamos las preguntas anteriores?

  • EjemploUna compaa que fabrica muebles quiere tener un plan de produccin que maximice sus beneficios, con las siguientes condiciones:Una biblioteca requiere 3 horas de trabajo, 1 unidad de metal y 4 de madera y da un beneficio neto de 19$.Un escritorio requiere 2 horas de trabajo, 1 unidad de metal, 3 de madera y da un beneficio de 13$.Una silla requiere 1 hora de trabajo, 1 unidades de metal, 3 unidades de madera y da un beneficio de 12$Una cama requiere 2 horas de trabajo, 1 unidad de metal, y 4 unidades de madera, y da un beneficio de 17$.Se dispone de 225 horas de mano de obra, 117 unidades de metal y 420 unidades de madera por da.Se supone que podemos vender todo lo que se produce.

    Cmo formulamos esto como un problema de programacin lineal?. Cul es el plan de produccin ptimo?

  • Maximizar 19 B + 13 E + 12 S + 17 CSujeto a 3B + 2 E + S + 2 C 225B + E + S + C 1174 B + 3 E + 3 S + 4 C 420B, E, S, C 0

    Ver la solucin de este problema en LINDO u otro programa de PL, y ver que informacin adicional proveen.

  • Una vez que tenemos el resultado del problema podramos plantearnos las siguientes preguntas:Qu pasara si el beneficio de fabricar escritorios crece de 13$ a 15$.Qu pasara si la disponibilidad de metal aumenta de 117 a 125 unidades por da?Como analizaramos la conveniencia de la compaa de producir mesas de caf que requieren 3 horas de trabajo, una unidad de metal, 2 unidades de madera y dan un beneficio de 14$?Cmo obtenemos la nueva solucin si se requiere que el nmero de sillas sea 5 veces el nmero de mesas.?La demanda de madera por silla crece de 3 a 4 unidades?

  • Forma general de CUALQUIER problema de programacin lineal

    Maximizar j cj xjsujeto a j aij xj bi i Ij aij xj = bi i Exj 0 para j R

    El problema dual se define como:

    Minimizar i bi yisujeto a i aij yi cj j Ri aij yi = cj j Ryi 0 i I

  • Algunos programas de programacin lineal y lineal entera:LINDO: tiene versin para estudiantes que se puede bajar libremente de http://www.lindo.com. Recomiendo hacer los ejercicios del prctico de modelos con este programa. Es muy fcil de usar y si quieren pueden bajarlo tambin de la pgina de nuestra materia Investigacin Operativa http://www-2.dc.uba.ar/materias/io/lnd61.exe.

    CPLEX : es el mejor programa comercial y acadmico de programacin lineal y lineal entera. Es el standard en la literatura acadmica y para las empresas. Su primera versin fue puesta en pblico en 1988 y desde entonces siguen mejorndolo. Se puede bajar una demo de http://www.ilog.com. Es tambin muy fcil de usar.

  • GAMS: es un programa que usan mucho los economistas, trae muchos ejemplos de aplicaciones. Se puede bajar una versin limitada que sirve para estudiantes de http://www.gams.de

    XPRESS: es otro programa del tipo del CPLEX, pero que tiene un poco menos de difusin, y aparentemente no tan eficiente en problemas difciles. http://www.dashoptimization.com

    LP- Solve programa de acceso libre.

  • Programacin lineal entera (PLE)Qu es un problema de programacin lineal entera?:

    Max c xsujeto aAx bx Z+

    Qu es un problema de programacin lineal entera mixta (PLEM)?Algunas variables son continuas y otras tienen que tomar valores enteros.

    Qu es un problema de programacin lineal binario (PLB)?Las variables toman valor 0 o 1, o sea x {0,1} n ..

  • Qu es un problema de optimizacin combinatoria?

    Dado un conjunto finito N = {1,.n} con pesos cj asignados a cada j N y F una familia de conjuntos factibles de N, entonces queremos encontrar el elemento de F de peso mnimo:MinS { jS cj / S F }

    (tambin podra ser un problema de maximizacin).

    Muchos problemas de optimizacin combinatoria se pueden formular como problemas de programacin lineal entera.

  • Cmo resolvemos un problema de programacin lineal entera?. Se parecen a los problemas de programacin lineal?. Sirve redondear?.

    Ejemplo: Max 1.00 x1 + 0.64 x2 Sujeto a 50 x1 + 31 x2 250 3 x1 - 2x2 -4x1 , x2 0, x1 , x2 entera

    Se puede ver que la solucin entera es (5,0), si no pedimos que las variables sean enteras la solucin del problema de programacin lineal es (376/193, 950/193). Graficar.

  • En el caso de programacin binaria la situacin puede ser peor, por ejemplo una solucin del problema continuo PL que sea (0.5,0.5,.0.5) no nos da informacin sobre cual puede ser la solucin del problema binario.

  • Ejemplos: escribir modelos de PLE para los siguientes casos:

    Problema de asignacin: Tenemos n personas para realizar n trabajos. Cada persona puede hacer un solo trabajo. Se asigna un costo cij a la asignacin de la persona i para hacer el trabajo j de acuerdo a la capacidad de cada uno para realizar cada trabajo. Se quiere encontrar la asignacin que minimice los costos.

    Problema de la mochila (Knapsack problem) Se tiene un presupuesto de b pesos disponible para invertir en algunos de n posibles proyectos para el prximo ao. Sea aj la inversin que requiere el proyecto j y cj el retorno que produce dicho proyecto. Se quiere maximizar las ganancias (slo se puede invertir en el proyecto completo).

  • Problema de cubrimiento (Set Covering): se quieren cubrir un cierto nmero de regiones con centros de emergencia (por ejemplo estaciones de bomberos o de ambulancias) con un costo mnimo. Se conocen los costos de instalar un centro en cada regin y que regiones pueden ser servidas desde el mismo.

    Problema del viajante de comercio (Traveling Salesman Problem, TSP): (es el problema ms famoso de Optimizacin Combinatoria y el ms estudiado.) Un viajante de comercio quiere visitar n ciudades y volver al lugar de partida en el menor tiempo posible (o al menor costo).

  • Los problemas que acabamos de ver son problemas de optimizacin combinatoria, donde hay que buscar el subconjunto ptimo entre una familia de subconjuntos. Uno podra pensar en enumerar todos estos conjuntos y elegir el mejor (algoritmo de fuerza bruta).

    Sirve este procedimiento?.

    Por ejemplo en el caso del viajante de comercio, si suponemos que podemos ir de cualquier ciudad a cualquier otra, tendramos que revisar (n-1)! recorridos posibles. Por ejemplo para un problema con n= 101 ciudades hay 9.33 x 10 157 circuitos (recorridos) posibles que habra que revisar.

  • Vamos a presentar algoritmos mejores que estos que permiten resolver problemas bastante grandes.

    Sin embargo muchos problemas de optimizacin combinatoria como por ejemplo el TSP se consideran problemas abiertos o no resueltos desde el punto de vista de la investigacin. A pesar de que se resuelven cada vez problemas mayores, no conocemos mtodos buenos que resuelvan estos problemas en un tiempo razonable, o sea slo conocemos algoritmos que requieren un nmero de operaciones que crece en forma exponencial cuando aumenta el tamao del problema.

    No se conocen tampoco mtodos que resuelvan cualquier problema de programacin lineal entera en un tiempo que crezca en forma polinomial respecto del tamao del problema.

  • Otros ejemplos:Problema de localizacin: dadas n posibles ubicaciones para poner depsitos y un conjunto de m clientes, supongamos que hay un costo fijo fj de instalar un depsito en el lugar j, y un costo de llevar la mercadera que requiere el cliente i desde el depsito j Se quiere instalar los depsitos de forma a minimizar los costos.

    Este problema se puede modelar como un problema de programacin entera mixta si consideramos que las variables que definen que fraccin de la demanda del cliente i es llevada al depsito j, no necesitan ser enteras.

  • Problema de planificacin de la produccin: Se quiere hacer un plan de produccin de un slo producto, para un horizonte de n periodos, con el objetivo de satisfacer la demanda en cada perodo minimizando costos. Tenemos los siguientes datos:ft costo fijo de producir en el perodo tpt costo por unidad producida en el perodo tht costo de almacenamiento por unidad en el periodo tdt demanda del periodo t.

    Este problema se puede modelar como un problema de programacin entera mixta si consideramos que las variables que definen cuanto producir no necesitan ser enteras.

  • Puede haber varias formulaciones para un mismo problema.

    Cul sera la formulacin ideal para un problema de programacin lineal entera?

    Si la formulacin es una descripcin de la cpsula convexa del conjunto de soluciones enteras entonces podemos resolver el problema como un problema de programacin lineal (continua, por ejemplo con el mtodo simplex). Todos los vrtices del poliedro sern enteros y por lo tanto el ptimo de PL ser entero.En la mayora de los casos es muy difcil encontrar la cpsula convexa del conjunto de soluciones enteras, y adems muchas veces la descripcin de la cpsula convexa requiere de un nmero exponencial de desigualdades.

  • Ejemplo: Dibujar dos descripciones diferentes de la cpsula convexa de los siguientes puntos:X = { (1,1),(2,1), (3,1), (1,2),(2,2),(3,2),(2,3)}

    Ejemplo: Sea X = {(0,0,0,0},(1,0,0,0),(0,1,0,0),(0,0,1,0), (0,0,0,1),(0,1,0,1),(0,0,1,1)}

    Las siguientes son 3 formulaciones diferentes para X

    P1 = { x R4, 0 x 1, 83 x1 + 61 x2 + 49 x3 + 20 x4 100}

    P2 = { x R4, 0 x 1, 4 x1 + 3 x2 + 2 x3 + x4 4}

    P3 = { x R4, 0 x 1, 4 x1 + 3 x2 + 2 x3 + x4 4 x1 + x2 + x3 1 x1 + x4 1}

    Se puede probar fcilmente a partir de estas ecuaciones que P1 P2 P3 y P3 = conv(X)

  • Cotas y relajacionesSea el problema de PLE

    z = max { cx / x X Zn}

    Dada una solucin factible x, cmo podemos probar que es ptima?.

    Querramos por ejemplo encontrar una cota inferior z_ de z y una cota superior z-- tal que z_ =z--.

    O sea nos servira por ejemplo tener un algoritmo que vaya generando una sucesin creciente de valores de z_ y una sucesin decreciente de valores z-- y esto es lo que tratan de hacer los mtodos que se usan para resolver problemas de IP.

  • Cmo hacer para obtener cotas inferiores (cotas primales) de z*?.

    Cualquier solucin factible, x X , nos provee de una cota inferior cx z*.

    A veces obtener una solucin factible es tan difcil como resolver el problema de optimizacin.

    Para obtener soluciones factibles en la prctica se usan lo que se llama algoritmos heursticos. Estos algoritmos tratan de obtener las mejores soluciones posibles pero no garantizan obtener el ptimo.

  • Cmo hacer para obtener cotas superiores (cotas duales) de z*?

    Relajacin: reemplazar el problema IP por uno ms simple que sabemos resolver, por ejemplo:

    agrandar el conjunto de soluciones factibles, o reemplazar la funcin objetivo por una cuyo valor sea mayor o igual a cx en todas las soluciones factibles.

  • Relajacin lineal: Si PLE es z* = max { cx / Ax b, x Z+n}

    la relajacin lineal RLP de PLE se define como:

    zLP = max { cx / Ax b, x R+n}

    Queremos tener la mejor formulacin del PLE posible.

    Prop: i) si RLP es no factible, entonces PLE es nofactibleii) Si x* es ptimo para RLP y x* X entonces x* es la solucin ptima de PLE.

    Estas ideas se pueden aplicar tambin a otras relajaciones diferentes de PLE.

  • Relajaciones combinatorias:

    Problemas que podemos resolver ms fcilmente que PLE, se obtienen por ejemplo eliminando algunas de las restricciones de PLE.

    Por ejemplo si tenemos el problema del viajante de comercio TSP asimtrico, el problema de asignacin es una relajacin del TSP.

    Si tenemos el problema de la mochila, tenemosX = {x X Z+n / j aj xj b}Obtenemos una relajacin reemplazando X por

    X = {x X Z+n / j aj xj b}

  • Dualidad:

    En el caso de programacin lineal entera NO se verifica el mismo resultado de dualidad que vimos en PL. O sea no es cierto que si formulamos el problema dual en forma similar , el ptimo del primal y el dual sean iguales.

    Se dice en este caso que se cumple una condicin de dualidad dbil cuando el ptimo del primal es menor o igual al del dual, y de dualidad fuerte cuando como en el caso de PL los ptimos del primal y el dual son iguales.

  • Por ejemplo si tenemos el PLE

    z = max { cx / Ax b, x Z+n}

    podemos decir que el problema siguiente

    wLP = min { yb / yA c, y R+n}

    es un dual dbil porque cx wy para todo par de soluciones x,y, y por lo tanto tambin z wLP

  • Problemas fciles o bien resueltosSea z = max { cx / Ax b, x Z+n}

    Decimos que una matriz A es totalmente unimodular si el determinante de A y de todas sus submatrices cuadradas es 1, -1, 0.

    Prop: Si A es totalmente unimodular entonces las soluciones bsicas del la relajacin lineal RLP del PLE son enteras, y por lo tanto el ptimo de RLP es igual a el ptimo z* del PLE.Dem: usar la regla de Cramer para resolver sistemas lineales y ver el simplex revisado.

  • Cul es la importancia de este resultado?.

    Si la matriz del PLE es totalmente unimodular entonces podemos obtener las solucin resolviendo su relajacin lineal, por ejemplo usando el mtodo Simplex.

    Ejemplos de problemas fciles:

    Problema de transporte (el conocido mtodo para resolver este problema es una adaptacin del mtodo simplex).Problema de asignacinProblema de encontrar el flujo mximo en una red

  • Mtodos exactos para resolver problemas de PLEBranch and bound (ramificacin y poda)

    Mtodos de cortes o de planos de corte

    Mtodos Branch and Cut: (combinan las ideas de los dos anteriores y son los que han permitido resolver los problemas de programacin lineal entera u optimizacin combinatoria ms grandes).

    Mtodos de generacin de columnas (se usan cuando tenemos un nmero muy grande de variables, que nos impide tener guardadas en la memoria de la computadora todas las columnas de A).

  • Para obtener el ptimo estos mtodos pueden requerir un nmero muy grande de iteraciones, (el nmero de operaciones crece exponencialmente con el tamao del problema a resolver).

  • Branch and boundTenemos el PLE z = max { cx / x X Zn}Queremos dividir el problema en problemas ms pequeos que sean ms fciles de resolver.

    O sea poner X = X1 . Xh, entonces si

    zk = max { cx / x Xk}

    tendremos que z = maxk {zk }

    Para construir un mtodo de branch and bound usamos estas ideas en forma iterativa.

    Usamos un rbol de enumeracin para representar el algoritmo branch and bound. En cada nodo resolvemos un problema menor de optimizacin.

  • Ejemplo:

    Ac X = X1 X2 , X1 = X11 X12, etc.XX1X2X22X11X12X21

  • Cmo hacemos para no tener que recorrer el rbol completo?.

    Prop.: Si tenemos una descomposicin del conjunto de soluciones factibles X = = X1 . Xh, y zk = max { cx / x Xk}, y si zk es una cota superior de zk y zk_ es una cota inferior de zk, entonces z = maxk zk es una cota superior de z* y z_ = maxk zk_ es una cota inferior de z*.

    En la mayora de los casos se resuelve en cada nodo del rbol la relajacin lineal del problema zk, usando el mtodo simplex.

  • Criterios de poda:

    por optimalidadpor valor de las cotasPor infactibilidad.

  • Ejemplo:Max 4 x1 x2Sujeto a7 x1 2 x2 14x2 32 x1 2 x2 3x Z2+

  • Resolviendo la relajacin lineal del problema original tenemos la solucin x= (20/7,3) con un valor de z = 59/7.

    En este caso tenemos una sla variable, x1 que es fracionaria., Dividimos el problema entonces agregando para un lado la restriccin x1 2 y para el otro x1 3. O sea S1= S {x / x1 2} y S2= S {x / x1 3 }

    Elegimos ahora resolver S1. Agregamos la nueva restriccin que es slo una cota de una variable, x1 2 y resolvemos usando el mtodo simplex a partir de la ltima solucin bsica. Obtenemos la solucin ptima de S1 x = (2,1/2) con valor z1 = 15/2.

  • Tenemos de nuevo una sola variable que no es entera. Partimos S1 usando las restricciones x2 0 y x2 1 y tenemos dos nuevos nodos

    S11 = S {x / x1 2 y x2 = 0 } yS12 = S {x / x1 2 y x2 1}

    Tenemos ahora tres nodos abiertos para continuar: S2 S11 y S12 . Elegimos.arbitrariamente resolver el problema lineal correspondiente a S2 y vemos que es un problema no factible.

  • Elegimos ahora S12 = S {x / x1 2 y x2 1} y obtenemos una solucin x= ( 2,1) con valor z12 = 7. Esta es la mejor solucin entera hasta el momento y tenemos entonces una cota inferior z_ = 7 . Por esta rama no tenemos que abrir ms nodos.

    Elegimos el nico nodo que nos queda, S11 = S {x / x1 2 y x2 = 0 }. Al resolverlo obtenemos x = (3/2, 0) con valor z = 6. Como ya tenamos una cota z_ = 7, podemos podar esta rama tambin y la solucin ptima es (2,1) con valor 7.

  • Qu trabajo requiere desarrollar un programa de un mtodo tipo Branch and Bound?.

    Obtener las mejores cotas posiblesReglas de branchingReglas para decidir que nodo procesar.Cmo resolver el problema de PL en cada nodo?.

    Si la cantidad de nodos abiertos en el algoritmo de branch and bound es muy grande podemos tener problemas de falta de memoria en la computadora.

    Los programas comerciales tambin incluyen una etapa inicial de preprocesamiento donde se intenta detectar rpidamente si se pueden eliminar restricciones o variables que sean redundantes.

  • Mtodos de planos de corteTenemos el problema de PLE z = max { cx / Ax b x Z+n }

    Sea X = { x / Ax b x Z+n }La cpsula convexa del conjunto de soluciones X, conv(X) = { x / A x b, x 0 }, es un poliedro.Una desigualdad x 0 es una desigualdad vlida para X si para todo x X se verifica que x 0 .

    Los mtodos de corte buscan buenas desigualdades vlidas para agregar a la relajacin lineal max { cx / Ax b , x 0} que corten las soluciones fraccionarias del problema sin cortar ninguna solucin entera.

  • La situacin ideal sera si pudiramos encontrar las desigualdades que describen la cpsula convexa de X, conv(X) = { x / A x b, x 0 }.

    Hay mtodos generales de construir desigualdades vlidas, cmo por ejemplo el clsico mtodo de Gomory o las de Chvatal- Gomory. Estas desigualdades y otras de tipo general como estas, estn incorporadas en la mayora de los programas computacionales para resolver problemas de PLE.

    Sin embargo la incorporacin de las mismas no resulta suficiente para resolver muchos problemas de optimizacin combinatoria.

  • Para obtener algoritmos mas eficientes, que permitan dar soluciones para problemas cada vez ms grandes es necesario estudiar cada problema en particular y derivar desigualdades vlidas particulares para cada problema especfico.

    Para obtenerlas hay que estudiar el poliedro conv(X) en cada caso particular. Es un trabajo en general complicado, que requiere estudiar propiedades de poliedros, a veces de grafos, y de algebra lineal.

    En general en los problemas difciles no se consigue determinar todas las desigualdades que son necesarias para describir conv(X).

  • En la prctica se deriva una o varias familias de desigualdades vlidas para X, y en cada paso, dada una solucin x* fraccionaria de una relajacin lineal, se busca una desigualdad de esa familia que corte a x*.

    Para detectar cada una de estas desigualdades vlidas muchas veces hay que desarrollar algoritmos de separacin, y en algunos casos esto es tambin una tarea complicada.

  • Mtodos branch and cutEn la prctica se combinan todas estas ideas para obtener algoritmos que pueden resolver problemas cada vez ms grandes.

    En particular los mtodos branch and cut combinan el mtodo branch and bound, con la generacin de cortes (desigualdades vlidas generales y especficas del problema a resolver) en cada nodo del rbol.

  • Qu cosas hace un paquete de programacin lineal entera?.

    Qu tenemos que tomar en cuenta para usarlo?.

    Qu podemos hacer si el programa no nos da el ptimo entero en un tiempo razonable?. Nos sirve la solucin obtenida hasta el momento?. Que informacin nos provee el programa sobre la calidad de esa solucin?.

    Qu son los mtodos heursticos?.

  • Hay mucho para hacer en investigacin en estos temas tanto estudiando resultados generales como problemas particulares.

  • Gracias a los organizadores por invitarme a Nicaragua!!

    Cul duda sobre los temas del curso, las soluciones de los ejercicios, o lo que les pueda ayudar no duden en consultarme escribiendo [email protected]

  • FIN