a.vega@ugto.mx Division de Ciencias e Ingenieras Universidad de Guanajuato Campus Leon Octubre 8, 2013 Universidad de Guanajuato, DCI, Campus Leon 1 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Contenido 1 Programacion Lineal Metodo graco Metodo algebraico / simplex Universidad de Guanajuato, DCI, Campus Leon 2 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Programacion Lineal La programacion lineal se aplica a modelos de optimizacion en los que las funciones objetivo y restriccion son estrictamente lineales. Para su solucion se cuenta con: 1 Metodo graco 2 Metodo algebraico 3 Metodo simplex Universidad de Guanajuato, DCI, Campus Leon 3 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Ecuaciones Generales Funcion objetivo a minimizar o maximizar Z = c 1 x 1 + c 2 x 2 + c 3 x 3 + ... + c n x n Restricciones (sujeta a:) a i1 x 1 + a i2 x 2 + + a in x n = b i i = 1, 2, , p a i1 x 1 + a i2 x 2 + + a in x n b i i = p + 1, , r a i1 x 1 + a i2 x 2 + + a in x n b i i = r + 1, , m x j 0 j = 1, 2, , n Universidad de Guanajuato, DCI, Campus Leon 4 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Ecuaciones Generales Donde: x 1 , x 2 , ..., x n : niveles de actividad sujetas a alguna manipulacion, variables reales o variables de decision. c i : coecientes de costo a ij : coecientes estructurales b i : disponibilidad de recursos Universidad de Guanajuato, DCI, Campus Leon 5 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo graco Metodo graco Determinacion del espacio de soluciones que dene todas las soluciones factibles del modelo. Representacion graca de cada restriccion y determinar el espacio que cumple con todas las restricciones. Determinacion de la solucion optima, entre todos los puntos factibles del espacio de soluciones. 1 Evaluar la funcion objetivo Z en cada una de las esquinas del espacio de soluciones factibles. 2 Usando la funcion objetivo para determinar la esquina del espacio de soluciones factible que la optimiza. Universidad de Guanajuato, DCI, Campus Leon 6 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo graco Metodo Graco (1) Utilizando plot pause on ; x =1: 1: 7; % i n t e r v a l o par a ge ne r ar l a s r e c t a s z =(215.x ) /4; % f unc i on a maxi mi zar % r e s t r i c c i o n e s R1 = (24 6. x ) /4; R2 = (6x ) /2; R3 = 1+x ; f o r r =1: l e ngt h ( x ) % c ons t a nt e s R4( r ) = 2; R5( r ) = 0; R6( r ) = 0; end %g r a f i c a de l a s f unc i o ne s c ons i de r ando i g ua l da de s f i g u r e ( 1 ) ; p l o t ( x , z , k ) ; hol d on ; p l o t ( x , R1, b , x , R2, b , x , R3, m , x , R4, m ) ; p l o t ( R5 , x , r , x , R6, r ) ; g r i d on Universidad de Guanajuato, DCI, Campus Leon 7 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo graco Metodo Graco (1) Universidad de Guanajuato, DCI, Campus Leon 8 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo graco Metodo Graco (1) Universidad de Guanajuato, DCI, Campus Leon 9 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo graco Metodo Graco (2) Utilizando area y meshgrid %pr obl ema de l a s p i n t u r a s x = 0 : 8 ; % r ango par a l a g r a f i c a y1 = max ( ( 24 6x ) / 4 , 0 ) ; % 6x + 4y <= 24 y2 = max((6x ) / 2 , 0 ) ; % x + 2y <= 6 y3 = max(1 + x , 0 ) ; % x + y <= 1 y4 = max(2 , 0) ones ( 1 , 9 ) ; % y <= 2 yt op = min ( [ y1 ; y2 ; y3 ; y4 ] ) ; % v e c t o r de mi ni mos ar ea ( x , yt op ) ; % s e r e l l e n a l a ar ea hol d on ; [ u v ] = mes hgr i d ( 0 : 8 , 0 : 8 ) ; % r ango de l a g r a f i c a cont our ( u , v , 5 u + 4v ) ; % e v a l ua r z en e l r ango de f i ndo hol d o f f ; Universidad de Guanajuato, DCI, Campus Leon 10 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo graco Metodo Graco (2) Universidad de Guanajuato, DCI, Campus Leon 11 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo algebraico / simplex Usando linprog El comando linprog del toolbox de optimizacion implementa el algoritmo simplex Soluciona problemas de la forma Minimizar: Z = c 1 x 1 + c 2 x 2 + c 3 x 3 + ... + c n x n Restricciones (sujeta a:) a i1 x 1 + a i2 x 2 + + a in x n b i i = 1, 2, , m Universidad de Guanajuato, DCI, Campus Leon 12 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo algebraico / simplex Usando linprog Parametros Minimizar: Z = f x Restricciones (sujeta a:) A x b f: vector con los coecientes costo c i A: Matriz con los coecientes estructurales a ij b: vector con la disponibilidad de recursos b i Universidad de Guanajuato, DCI, Campus Leon 13 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo algebraico / simplex Ejemplo Problema de las pinturas: Maximizar: Z = 5x 1 + 4x 2 Restricciones (sujeta a:) 6x 1 + 4x 2 24 x 1 + 2x 2 6 x 1 + x 2 1 x 2 2 x j 0 j = 1, 2 Universidad de Guanajuato, DCI, Campus Leon 14 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo algebraico / simplex Ejemplo 1 Si es problema de maximizacion se convierte en un problema de minimizacion Minimizar: Z = 5x 1 4x 2 Restricciones (sujeta a:) 6x 1 + 4x 2 24 x 1 + 2x 2 6 x 1 + x 2 1 x 2 2 x j 0 j = 1, 2 Universidad de Guanajuato, DCI, Campus Leon 15 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo algebraico / simplex Ejemplo Codicacion: se denen los vectores y se invoca el comando linprog %pr obl ema de l a s p i n t u r a s f = [ 5 4] ; % c o e f i c i e n t e s de c os t o (Z) A=[6 4; 1 2; 1 1; 0 1; 1 0; 0 1] ; % r e s t r i c c i o n e s b = [ 2 4 ; 6; 1; 2; 0; 0 ] ; % r e c u r s o s r=l i n p r o g ( f , A, b ) ; % r c ont i e ne s o l . x i Z = f r ; % v a l o r opti mo de Z ( gananci a ) Universidad de Guanajuato, DCI, Campus Leon 16 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo algebraico / simplex Ejemplo Salida >> r r = 3. 0000 1. 5000 >> Z Z = 21. 0000 >> Universidad de Guanajuato, DCI, Campus Leon 17 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo algebraico / simplex Problema 1 Considere: Maximizar: Z = x 1 + x 2 Restricciones (sujeta a:) 5x 1 + 3x 2 15 3x 1 + 5x 2 15 x j 0 j = 1, 2 1 Utilice Matlab para gracar las restricciones 2 Utilice linprog para encontrar la solucion Universidad de Guanajuato, DCI, Campus Leon 18 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo algebraico / simplex Problema 2 Considere: Maximizar: Z = 143x 1 + 60x 2 Restricciones (sujeta a:) x 1 + x 2 75 110x 1 + 30x 2 4000 120x 1 + 210x 2 15000 x j 0 j = 1, 2 1 Utilice Matlab para gracar las restricciones 2 Utilice linprog para encontrar la solucion Universidad de Guanajuato, DCI, Campus Leon 19 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo algebraico / simplex Problema 3 Considere: Problema de la dieta (libro) Minimizar: Z = 0.3x 1 + 0.9x 2 Restricciones (sujeta a:) x 1 + x 2 800 0.21x 1 0.3x 2 0 0.03x 1 0.01x 2 15000 x j 0 j = 1, 2 1 Utilice Matlab para gracar las restricciones 2 Utilice linprog para encontrar la solucion Universidad de Guanajuato, DCI, Campus Leon 20 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo algebraico / simplex Mas sobre linprog Minimizar: Z = f x Restricciones (sujeta a:) A x b A eq x = b eq lb x ub x = linprog(f,A,b,A eq ,b eq ,lb,ub) x = linprog(f,A,b,A eq ,b eq ,lb,ub,x 0 ) x = linprog(f,A,b,A eq ,b eq ,lb,ub,x 0 ,opciones) Universidad de Guanajuato, DCI, Campus Leon 21 / 22 Programacion Lineal con Matlab Octubre 8, 2013 Programacion Lineal Metodo algebraico / simplex Mas sobre linprog Minimizar: Z = f x Restricciones (sujeta a:) A eq x = b eq x 0 x = linprog(f,[],[],A eq ,b eq , zeros(size(f)),[]) Universidad de Guanajuato, DCI, Campus Leon 22 / 22 Programacion Lineal con Matlab Octubre 8, 2013