Universidad Politécnica de Madrid–Escuela Técnica Superior de Ingenieros Industriales Grado en Ingeniería en Tecnologías Industriales. Curso 2015-2016-3º Matemáticas de Especialidad–Ingeniería Eléctrica Programación Lineal Linear Programming José Luis de la Fuente O’Connor [email protected] [email protected] Clase_progli_2016.pdf 1/67 2/67 Índice Formulación Definiciones y formas de programas lineales Historia Ejemplos de programas lineales Consideraciones geométricas Politopos Puntos extremos y soluciones básicas factibles 3/67 Formulación La Programación Lineal es el área de la Optimización/Programación Matemática/Management Science que busca de entre todas las posibles soluciones comunes de un conjunto de ecuaciones e inecuaciones lineales la que mejor plasma un determinado criterio u objetivo, representado por una función también lineal. En términos matemáticos generales, minimizar f .x/ sujeta a g.x/ D 0 h.x/ 0 donde f W Rn ! R, g W Rn ! Rm y h W Rn ! Rp son lineales. 4/67 Juega un papel vital en muchas facetas de la economía, las ciencias sociales, la técnica, la planificación, la gestión, : : : como un instrumento de ayuda a la toma de decisiones que tienen que ver con la asignación óptima de recursos con diversas funciones de utilidad. En el análisis, la planificación y el control operativo de sistemas energéticos y eléctricos tiene uno de sus campos de actuación más destacados: Generación a coste mínimo Control de stocks de combustibles Mantenimiento de equipos Optimización del transporte de energía Control de inversiones, búsqueda de emplazamientos, etc. 5/67 Definiciones y formas de programas lineales La programación lineal, PL, trata un problema o programa lineal minimizar c1 x1 C c2 x2 C C cn xn sujeta a y a11 x1 C a12 x2 C C a1n xn b1 a21 x1 C a22 x2 C C a2n xn b2 :: :: :: : : : am1 x1 C am2 x2 C C amn xn bm x1 ; x2 ; : : : ; xn 0: A c1x1 C C cnxn se le denomina función objetivo y a las ai1x1 C C ai nxn, 1 i m, restricciones o condiciones. Las x1; : : : ; xn son los coeficientes del vector variables de decisión. Los c1; : : : ; cn, los coeficientes de coste. Los b1; : : : ; bm, el término independiente. 6/67 La matriz 2 a11 a12 a13 6 6a a a A D 6 ::21 ::22 ::23 4 : : : am1 am2 am3 3 a1n 7 a2n 7 : : : ::: 7 5 amn es la de coeficientes de las condiciones del problema. Un vector, o punto, x T D Œx1; x2; : : : ; xn, que satisface todas las condiciones se denomina factible. El conjunto F D fx 2 Rn W Ax b; x 0g de todos los vectores o puntos factibles constituye la región factible. 7/67 En forma compacta, el problema de programación lineal se expresa así: min. c T x s. a Ax b x 0: En forma estándar, min. c T x s. a Ax D b x 0: 8/67 Ejemplo En el programa lineal min. 2x1 C 5x2 s. a x1 C x2 6 x1 2x2 18 x1; x2 0; las variables de decisión son x1 y x2. La función objetivo 2x1 C 5x2. 20 356 8 Las restricciones y la región factible se ven así: 356 7 376 5 1 3146 5 21 0 9 9/67 Un problema de programación lineal cualquiera min. c T x s. a Ax b Si las condiciones fuesen Ax b, añadiendo un vector y se obtendría la forma estándar: Ax C y D b. Si alguna de las variables xi no está res- x 0; se puede expresar en la forma estándar sin más que sustraer un vector y , denominado de variables de holgura, de las condiciones Ax b: min. cT x s. a Ax y D b x; y 0: tringida a ser no negativa, se puede reemplazar por otras dos, xi0 y xi00 , tales que xi D xi0 xi00 ; donde xi0 0 y xi00 0, y el problema pasa a ser uno con formulación estándar. Si se trata de maximizar una función objetivo, se puede transformar en minimizar esa función teniendo en cuenta que mKax c T x D mKın c T x: Desarrollo histórico de la Programación Lineal 10/67 Orígenes en Newton, Leibnitz, Lagrange y Fourier 1930s Kantorovich; primeras aplicaciones en economía 1940s Se crea por G. Dantzig, John von Neumann y L. Kantorovich el área de conocimiento Programación Lineal 1947 G. Dantzig formula el Método Simplex para resolver problemas logísticos militares 1950-1970 Se disparan las aplicaciones en múltiples áreas: control, ingeniería eléctrica, estructuras, transporte, mecánica,... 1979 L. Khachiyan desarrolla el algoritmo del elipsoide. 1984 N. Karmarkar desarrolla un método basado en puntos interiores. Mejor teórica y prácticamente 1995-hoy Desarrollo de muchas variantes de punto interior muy eficientes para problemas de grandes dimensiones. Convergencia teórica y algorítmica con Programación No Lineal 11/67 Formulación de problemas de Programación Lineal La dieta alimenticia Es el problema clásico sobre el que se empezaron a ensayar los primeros procedimientos numéricos y electrónicos de obtención de una solución. Trataba de elaborar, en los años 40 del siglo XX —en plena II guerra mundial—, una dieta diaria para un colectivo de soldados y militares de tal forma que se suministrase a cada individuo una cantidad mínima de varios ingredientes nutritivos. Para plantear el problema, supongamos que existen en el mercado n alimentos distintos, a unos costes unitarios c1; : : : ; cn, y que se quiere programar una dieta que contenga al menos b1; : : : ; bm unidades de m ingredientes nutritivos. 12/67 Si el alimento j contiene aij unidades del ingrediente i , y se desea programar el vector dieta, x T D Œx1; x2; : : : ; xn, que fije las cantidades que hay que comprar cada día de cada alimento de tal forma que el coste total sea mínimo, la formulación del problema es esta: minimizar c1x1 C c2x2 C C cnxn sujeta a a11x1 C a12x2 C C a1nxn b1 a21x1 C a22x2 C C a2nxn b2 ::: ::: am1x1 C am2x2 C C amnxn bm x1; x2; : : : ; xn 0: 13/67 Planificación de la generación de energía eléctrica Una empresa de producción, transporte y distribución de energía eléctrica está estudiando la evolución de su demanda, de potencia y de energía, y cómo satisfacer su incremento los próximos 10 años. El mercado tecnológico dispone de cuatro formas consolidadas y aceptadas de generar electricidad a gran escala: centrales termoeléctricas de gas natural, centrales hidráulicas, aerogeneradores y centrales de carbón. El patrón de su demanda eléctrica futura está definido por: 14/67 El consumo anual adicional de energía, estimado en 1.750 TWh (1 TWh = 109 kWh) para el conjunto de los diez años; La demanda máxima de potencia adicional, estimada en 30 GW (1 GW=106 kW) para el año número 10; La potencia diaria media demandada en un día de invierno, estimándose que crecerá en 20 GW para el año número 10. Los parámetros esenciales de las centrales contempladas son estos. Tipo de Central Gas Hidroeléctricas Carbón Aerogeneradores Potencia Potencia Horas Coste de Coste total garantizada máxima utilización inversión actualizado 106 kW 106 kW anuales 106 euros 106 euros 0,33 0,10 0,80 0,01 0,35 0,10 0,90 0,04 7.500 3.000 8.000 2.000 210 80 1.100 48 240 95 1.300 50 ¿Cuál es el plan óptimo de equipamiento de la empresa para esos diez años? ¿Qué número de centrales son necesarias para hacer frente a la demanda, minimizando el coste actualizado neto necesario para abordar dicho plan? Las restricciones adicionales son: No se pueden gastar en total más de 25.500 MM de euros. Por cuestiones medioambientales, no se pueden construir más de 50 unidades de gas, 10 hidráulicas y 50 unidades de carbón. 15/67 Solución Designando por x1; x2; x3; x4 el número de unidades de cada tipo de generación posible, el problema se puede formular de la siguiente manera: min. s. a 240x1 C 95x2 C 1:300x3 C 0;33x1 0;35x1 24;75x1 210x1 C 0;1x2 C 0;1x2 C 3x2 C 80x2 C 0;8x3 C 0;9x3 C 64x3 C 1:100x3 50x4 C 0;01x4 C 0;04x4 C 0;2x4 C 48x4 0 0 0 0 20 30 1:750 25:500 x1 50 x2 10 x3 50 x4 Resolvámoslo con varios de los instrumentos ya a nuestro alcance. Primero mediante linprog, el software especializado en PL de Matlab. » A=[0.33 0.1 0.8 0.01 -1 0 0 0; 0.35 0.1 0.9 0.04 0 -1 0 0;... 24.75 3 64 0.2 0 0 -1 0;210 80 1100 48 0 0 0 1]; » b=[20;30;1750;25500]; » c=[240 95 1300 50 0 0 0 0]; » l=[0 0 0 0 0 0 0 0 ]; » u=[50 10 50 1000 100000 100000 100000 1000000]; » options = optimset(’LargeScale’, ’off’, ’Simplex’, ’on’, ’Display’, ’Iter’); » [x fval exitflag output lambda]=linprog(c,[],[],A,b,l,u,[],options) Phase 1: Compute initial basic feasible point. Iter Infeasibility 0 268.75 1 43.8864 2 28.1167 3 5.34911 4 0.227273 5 -0 Phase 2: Minimize using simplex. Iter Objective Dual Infeasibility f’*x A’*y+z-w-f 0 29730.3 1.52213 1 29561.1 1.12263 2 28575 0 Optimization terminated. x = 50.0000 10.0000 7.1429 126.7857 4.4821 0 0 257.1429 16/67 fval = 2.8575e+004 exitflag = 1 output = iterations: 2 algorithm: ’medium scale: simplex’ cgiterations: [] message: ’Optimization terminated.’ constrviolation: 3.6380e-012 lambda = ineqlin: [0x1 double] eqlin: [4x1 double] upper: [8x1 double] lower: [8x1 double] >> lambda.eqlin ans = 1.0e+003 * 0 -1.2353 -0.0029 0 >> lambda.upper ans = 265.1471 37.3529 0 0 0 0 0 0 Segundo, con otro software de Matlab, fmincon, para resolver problemas generales de optimización con condiciones. » » » » » » A=[0.33 0.1 0.8 0.01 -1 0 0 0; 0.35 0.1 0.9 0.04 0 -1 0 0; 24.75 3 64 0.2 0 0 -1 0;210 80 1100 48 0 0 0 1]; b=[20;30;1750;25500]; l=[0 0 0 0 0 0 0 0 ]; u=[50 10 50 1000 100000 100000 100000 1000000]; fun = @(x) 240*x(1)+95*x(2)+1300*x(3)+50*x(4); options=optimset(’Display’,’iter-detailed’); x = fmincon(fun,zeros(8,1),[],[],A,b,l,u,[],options) Max Line search Directional First-order Iter F-count f(x) constraint steplength derivative optimality Procedure 0 9 0 2.55e+04 Infeasible start point 1 18 28987 3.553e-15 1 225 112 2 27 28925.5 2.274e-13 1 -7.51 3.69 Hessian modified 3 36 28899.5 7.105e-15 1 -4.08 2.54 Hessian modified 4 45 28792.9 6.57e-17 1 -2.63 5.13 Hessian modified twice 5 54 28792 2.274e-13 1 -0.914 0.909 Hessian modified twice 6 63 28750.2 3.638e-12 1 -0.914 0.914 Hessian modified twice 7 72 28575 2.274e-13 1 -0.914 9.27e-05 Hessian modified Optimization completed: The first-order optimality measure, 8.216127e-13, is less than options.TolFun = 1.000000e-06, and the maximum constraint violation, 2.273737e-13, is less than options.TolCon = 1.000000e-06. Optimization Metric first-order optimality = 8.22e-13 max(constraint violation) = 2.27e-13 Active inequalities (to within options.TolCon = 1e-06): lower upper ineqlin ineqnonlin 6 1 7 2 x= 50.0000 10.0000 7.1429 126.7857 4.4821 0.0000 0.0000 257.1429 TolFun = TolCon = Options 1e-06 (default) 1e-06 (default) 17/67 18/67 También podemos usar OPTI, http://www.i2c2.aut.ac.nz/Wiki/OPTI/ de Jonathan Currie, del Industrial Information & Control Centre (I 2C 2), de la AUT University, Auckland, New Zealand, muy utilizado como plataforma general de pruebas. La sesión de Matlab, después de instalar OPTI, es la que sigue. » A=[0.33 0.1 0.8 0.01 -1 0 0 0; 0.35 0.1 0.9 0.04 0 -1 0 0;... 24.75 3 64 0.2 0 0 -1 0;210 80 1100 48 0 0 0 1]; » b=[20;30;1750;25500];c=[240 95 1300 50 0 0 0 0]; » l=[0 0 0 0 0 0 0 0 ];u=[50 10 50 1000 100000 100000 100000 1000000]; » Opt = opti(’f’,c,’eq’,A,b,’bounds’,l,u) -----------------------------------------------------Linear Program (LP) Optimization min f’x s.t. rl <= Ax <= ru lb <= x <= ub -----------------------------------------------------Problem Properties: # Decision Variables: 8 # Constraints: 20 # Linear Equality: 4 # Bounds: 16 -----------------------------------------------------Solver Parameters: Solver: CLP ------------------------------------------------------ » [x,fval,exitflag,info] = solve(Opt) x = 50.0000 10.0000 7.1429 126.7857 4.4821 0 0 257.1429 fval = 28575 exitflag = 1 info = Iterations: 2 Time: 0.0023 Algorithm: ’CLP: Automatically Chosen Solver’ Status: ’Proven Optimal’ Lambda: [1x1 struct] 19/67 Si utilizamos otro software puntero para investigación, de la Universidad de Stanford, CVX, desde http://cvxr.com/cvx Con el script de Matlab % Ejemplo_generacion.m cvx_begin variable x(8) minimize (c*x); subject to A*x==b; x>=0; x<=u’; cvx_end y este conjunto de instrucciones >> A=[0.33 0.1 0.8 0.01 -1 0 0 0; 0.35 0.1 0.9 0.04 0 -1 0 0;... 24.75 3 64 0.2 0 0 -1 0;210 80 1100 48 0 0 0 1]; >> b=[20;30;1750;25500]; >> c=[240 95 1300 50 0 0 0 0]; >> l=[0 0 0 0 0 0 0 0 ]; >> u=[50 10 50 1000 100000 100000 100000 1000000]; >> Ejemplo_generacion se obtiene lo que sigue. >> Ejemplo_generacion Calling SDPT3 4.0: 20 variables, 8 equality constraints For improved efficiency, SDPT3 is solving the dual problem. -----------------------------------------------------------num. of constraints = 8 dim. of linear var = 16 dim. of free var = 4 *** convert ublk to lblk ******************************************************************* SDPT3: Infeasible path-following algorithms ******************************************************************* version predcorr gam expon scale_data NT 1 0.000 1 0 it pstep dstep pinfeas dinfeas gap prim-obj dual-obj cputime ------------------------------------------------------------------0|0.000|0.000|1.0e+000|6.9e+000|3.5e+010| 2.804630e+009 0.000000e+000| 0:0:00| 1|1.000|0.966|8.9e-007|2.3e-001|2.2e+009| 1.149790e+009 5.446578e+005| 0:0:00| 2|1.000|0.401|2.5e-006|1.4e-001|8.4e+008| 2.092782e+008 5.865177e+005| 0:0:00| 3|0.892|0.352|2.3e-007|9.1e-002|5.8e+008| 8.492455e+007 5.783161e+005| 0:0:00| 4|1.000|0.357|1.5e-006|5.9e-002|4.4e+008| 4.170257e+007 4.391842e+005| 0:0:00| 5|1.000|0.675|1.1e-007|1.9e-002|1.5e+008| 1.329674e+007 1.506755e+005| 0:0:00| 6|0.997|0.878|2.9e-008|2.3e-003|1.9e+007| 2.940189e+006 -1.013703e+004| 0:0:00| 7|0.998|0.919|7.8e-009|1.9e-004|1.7e+006| 5.276519e+005 -2.736437e+004| 0:0:00| 8|1.000|0.060|3.4e-009|1.8e-004|1.4e+006| 4.232803e+005 -2.757775e+004| 0:0:00| 9|1.000|0.881|1.7e-008|2.1e-005|2.2e+005| 1.097886e+005 -2.857791e+004| 0:0:00| 10|0.853|0.236|1.9e-009|1.6e-005|1.0e+005| 2.394123e+004 -2.853426e+004| 0:0:00| 11|1.000|0.452|1.7e-009|8.9e-006|4.8e+004|-4.977080e+003 -2.864900e+004| 0:0:00| 12|0.989|0.646|6.5e-009|3.2e-006|1.1e+004|-2.511018e+004 -2.886680e+004| 0:0:00| 13|0.861|0.213|7.2e-009|2.5e-006|9.6e+003|-2.519317e+004 -2.882240e+004| 0:0:00| 14|1.000|0.617|1.1e-008|9.5e-007|3.0e+003|-2.771596e+004 -2.881777e+004| 0:0:00| 15|1.000|0.652|5.0e-011|3.3e-007|8.5e+002|-2.838212e+004 -2.879646e+004| 0:0:00| 16|0.645|0.374|6.8e-010|2.1e-007|4.4e+002|-2.851301e+004 -2.875216e+004| 0:0:00| 17|1.000|0.169|1.2e-009|1.7e-007|3.8e+002|-2.851581e+004 -2.872179e+004| 0:0:00| 18|1.000|0.308|6.9e-009|1.2e-007|2.7e+002|-2.852690e+004 -2.867571e+004| 0:0:00| 19|1.000|0.521|1.4e-009|5.7e-008|1.2e+002|-2.856063e+004 -2.862352e+004| 0:0:00| 20|1.000|0.858|2.7e-010|8.2e-009|1.5e+001|-2.857437e+004 -2.858190e+004| 0:0:00| 21|0.987|0.984|8.1e-012|1.5e-010|2.7e-001|-2.857499e+004 -2.857511e+004| 0:0:00| 22|0.989|0.989|6.4e-013|2.0e-012|3.3e-003|-2.857500e+004 -2.857500e+004| 0:0:00| 23|0.989|0.988|1.8e-014|2.8e-014|4.4e-005|-2.857500e+004 -2.857500e+004| 0:0:00| stop: max(relative gap, infeasibilities) < 1.49e-008 ------------------------------------------------------------------number of iterations = 23 primal objective value = -2.85750000e+004 dual objective value = -2.85750000e+004 gap := trace(XZ) = 4.42e-005 relative gap = 7.74e-010 actual relative gap = 2.99e-010 rel. primal infeas = 1.78e-014 rel. dual infeas = 2.78e-014 norm(X), norm(y), norm(Z) = 1.8e+003, 1.0e+006, 1.0e+006 norm(A), norm(b), norm(C) = 1.6e+003, 1.3e+003, 1.7e+006 Total CPU time (secs) = 0.11 CPU time per iteration = 0.00 termination code = 0 DIMACS: 1.8e-014 0.0e+000 4.8e-014 0.0e+000 3.0e-010 7.7e-010 -----------------------------------------------------------------------------------------------------------------------------Status: Solved Optimal value (cvx_optval): +28575 20/67 chol chol chol chol chol chol chol chol chol chol chol chol chol chol chol chol chol chol chol chol chol chol chol 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 21/67 Si planteamos el problema con el Lenguaje de Modelización de Programación Matemática, AMPL, al que se dan estas especificaciones # Generación.mod + .dat en AMPL param a{1..4, 1..4}; param b{1..4}; param c{1..4}; param ub{1..4}; var x{i in 1..4} >= 0, <= ub[i]; min. 240x1 C 95x2 C 1:300x3 C 50x4 s. a 0;33x1 C 0;1x2 C 0;8x3 C 0;01x4 20 0;35x1 C 0;1x2 C 0;9x3 C 0;04x4 30 24;75x1 C 3x2 C 64x3 C 0;2x4 1:750 210x1 C 80x2 C 1:100x3 C 48x4 25:500 0 0 0 0 x1 50 x2 10 x3 50 x4 minimize coste: sum{j in 1..4} c[j]*x[j]; subject to res1 {i in 1..3}: sum{j in 1..4} a[i,j]*x[j] >= b[i]; subject to res2: sum{j in 1..4} a[4,j]*x[j] <= b[4]; data; param param param 1 2 3 4 param b := 1 20 2 30 3 1750 4 25500; c := 1 240 2 95 3 1300 4 50; a: 1 2 3 4 := 0.33 0.1 0.8 0.01 0.35 0.1 0.9 0.04 24.75 3 64 0.2 210 80 1100 48 ; ub := 1 50 2 10 3 50 4 infinity; Con OPTI: » prob = amplRead(’Generación_1.mod’) prob = Name: ’OPTI Problem’ f: [4x1 double] H: [] Hstr: [] fun: [] sense: 1 objbias: 0 A: [4x4 double] b: [] Aeq: [] beq: [] rl: [4x1 double] ru: [4x1 double] lb: [4x1 double] ub: [4x1 double] Q: [] l: [] qrl: [] qru: [] sdcone: [] nlcon: [] nljac: [] nljacstr: [] nlrhs: [] nle: [] cl: [] cu: [] int: ’cccc’ sos: [] xdata: [] ydata: [] weighting: [] x0: [4x1 double] probtype: [] solver: [] path: ’D:\Matlab2013a\@opti\Generación_1.nl’ opts: [] ode: [] odez0: [] conlin: [4x1 double] » Opt = opti(prob) -----------------------------------------------------Linear Program (LP) Optimization min f’x s.t. rl <= Ax <= ru lb <= x <= ub -----------------------------------------------------Problem Properties: # Decision Variables: 4 # Constraints: 11 # Linear Inequality: 4 # Bounds: 7 -----------------------------------------------------Solver Parameters: Solver: CLP -----------------------------------------------------» [x,fval] = solve(Opt) x = 50.0000 10.0000 7.1429 126.7857 fval = 28575 » [x,fval,exitflag,info] = solve(Opt) x = 50.0000 10.0000 7.1429 126.7857 fval = 28575 exitflag = 1 info = Iterations: 2 Time: 5.7776e-04 Algorithm: ’CLP: Automatically Chosen Solver’ Status: ’Proven Optimal’ Lambda: [1x1 struct] 22/67 Si planteamos el problema otra vez con AMPL, haciendo que las variables de ì Í· °´¿²¬»¿³±­ »´ °®±¾´»³¿ ±¬®¿ ª»¦ ½±² ßÓÐÔô ¸¿½·»²¼± ¯«» ´¿­ ª¿®·¿¾´»­ ¼» decisión deban ser enteras, ¼»½·­·-² ¼»¾¿² ­»® »²¬»®¿­ô ûý Ù»²»®¿½·-²ò³±¼ õ ò¼¿¬ »² ßÓÐÔ ª¿® ¨¥ïòòì£ âã ðô ·²¬»¹»®å °¿®¿³ ¿¥ïòòìô ïòòì£å °¿®¿³ ¾¥ïòòì£å °¿®¿³ ½¥ïòòì£å Ê¿®·¿¾´»­ »²¬»®¿­ ³·²·³·¦» ½±­¬»æ ­«³¥¶ ·² ïòòì£ ½Å¶Ãö¨Å¶Ãå ­«¾¶»½¬ ¬± ®»­ï ¨¥· ·² ïòòí£æ ­«³¥¶ ·² ïòòì£ ¿Å·ô¶Ãö¨Å¶Ã â㠾ŷÃå ­«¾¶»½¬ ¬± ®»­îæ ­«³¥¶ ·² ïòòì£ ¿Åìô¶Ãö¨Å¶Ã äã ¾ÅìÃå ­«¾¶»½¬ ¬± ³¿¨ïæ ¨Åïà äã ëðå ­«¾¶»½¬ ¬± ³¿¨îæ ¨Åîà äã ïðå ­«¾¶»½¬ ¬± ³¿¨íæ ¨Åíà äã ëðå ¼¿¬¿å °¿®¿³ ï î í ì ¾ æã îð íð ïéëð îëëðð å °¿®¿³ ï î í ì ½ æã îìð çë ïíðð ëð å °¿®¿³ ¿æ ï ï ðòíí î ðòíë í îìòéë ì îïð î ðòï ðòï í èð í ðòè ðòç êì ïïðð ì ðòðï ðòðì ðòî ìè æã å îìñèë 23/67 24/67 Se obtendría lo siguiente: >> prob = amplRead(’Generación_1.mod’) prob = Name: ’OPTI Problem’ f: [4x1 double] H: [] Hstr: [] fun: [] sense: 1 objbias: 0 A: [4x4 double] b: [] Aeq: [] beq: [] rl: [4x1 double] ru: [4x1 double] lb: [4x1 double] ub: [4x1 double] Q: [] l: [] qrl: [] qru: [] sdcone: [] nlcon: [] nljac: [] nljacstr: [] nlrhs: [] nle: [] cl: [] cu: [] int: ’iiii’ sos: [] xdata: [] ydata: [] weighting: [] x0: [4x1 double] probtype: [] solver: [] path: ’D:\Matlab2013a\@opti\Generación_1.nl’ opts: [] ode: [] odez0: [] conlin: [4x1 double] >> Opt = opti(prob) -----------------------------------------------------Mixed Integer Linear Program (MILP) Optimization min f’x s.t. rl <= Ax <= ru lb <= x <= ub xi = Integer / Binary -----------------------------------------------------Problem Properties: # Decision Variables: 4 # Constraints: 16 # Linear Inequality: 4 # Bounds: 8 # Integer Variables: 4 -----------------------------------------------------Solver Parameters: Solver: CBC ----------------------------------------------------->> [x,fval,exitflag,info] = solve(Opt) x = 50 10 8 108 fval = 28750 exitflag = 1 info = Nodes: 6 AbsGap: 175 RelGap: 0.0061 Time: 0.0044 Algorithm: ’CBC: Branch and Cut using CLP’ Status: ’Integer Optimal’ +,"* -./ 012 !"#$%&'()$ $#$ ) /./3-45467-4/8 25/67 Optimización de flujos en redes_Network flows Se expresado gráficamente de esta forma. l9 bcA @De = ; b @bGd @Ci b@kE b@Hj ? : b b@Bf @bIg < b @Fh > l9 JKLKJMNO JPQRNSKMQNR T T T T T T T T T UKVMUMWX 9 RYZ[XJNNP \P]JPQRXS^KNMPQKNQP_XR JKLKJMNOJPQRNSKMQNRPQN`XKSJR Se trata de encontrar, entre los nudos 1 y 6, el máximo caudal o flujo de gas, 7 8 9 5 6 mercancías, llamadas telefónicas, capital, 3 4 eléctrica, petróleo, energía material, 2 1 0 etcétera. 26/67 En términos de optimización, max. t s. a t D x1 C x2 x1 C x3 D x4 x2 C x5 D x3 C x6 x4 C x8 D x5 C x7 x6 D x8 C x9 t D x7 C x9 0 x1 0 x2 0 x3 0 x4 0 x5 0 x6 0 x7 0 x8 0 x9 +,"* -./ 012 !"#$%&'()$ $#$ ) /./3-45467-4/8 l9 bcA @De = ; b @bGd @Ci b@kE b@Hj ? : b b@Bf @bIg < b @Fh > l9 3 2 1 2 1 3 3 1 1 JKLKJMNO JPQRNSKMQNR T T T T T T T T subject to t = x1 + x2, x1 + x3 = x4, et cetera 0 ≤ x1 ≤ 3, 0 ≤ x2 ≤ 2, et cetera 27/67 (t = x1 + x2 is equivalent to inequalities t ≤ x1 + x2, t ≥ x1 + x2, . . . ) La solución óptima de este “sencillo” problema es la siguiente Solution 2 4 2 3 2 4 1 1 2 4 1 3 Linear optimization 6 2 5 18-5 La emisión de deuda pública_Portfolio analysis 28/67 El ayuntamiento de una capital de provincia tiene comprometido invertir en proyectos de infraestructura en cuatro años 2.000, 4.000, 8.000 y 5.000 millones de euros, respectivamente. Se supone que todo ese dinero está disponible el 1 de enero del año en que se gasta. Para financiar estas inversiones el ayuntamiento planea emitir unos bonos a 20 años con un interés del 4 % para la deuda emitida el primer año, del 3 % para la del segundo año, 3,5 % para la del tercer año y del 3,75 % para la del cuarto año. Los intereses se empiezan a pagar inmediatamente. Si algo del dinero obtenido se deposita en cuentas a plazo fijo, se podría obtener el 1,5 % de interés el segundo año, el 1,25 % el tercero y el 1 % el cuarto. ¿Cuál es el plan óptimo de financiación? 29/67 Solución Si designamos por x1; x2; x3 y x4 las cantidades de deuda en miles de millones de euros que tiene que emitir cada uno de los cuatro años, y por y1; y2 e y3 las que hay que depositar el segundo, tercer y cuarto año en cuentas a plazo fijo, el problema se puede formular de la siguiente manera: min. 20 0;04x1 C 20 0;03x2 C 20 0;035x3 C 20 0;0375x4 s. a x1 y1 C 1;015y1 x2 x3 x4 D2 y2 D4 C 1;0125y2 y3 D 8 C 1;01y3 D 5 x1; x2; x3; x4; y1; y2; y3 0: Transporte de mercancías_Transportation and logistics management 30/67 El sector del transporte y logística es uno de los que más utiliza la PL para Transporte de mercancı́as optimizar recursos. Una empresa dispone de m fábricas capaces de producir mensualmente a1, a2, . . . , am cantidades de una mercancı́a. El producto ha de ser enviado en cantidades b1, b2, . . . , bn a n almacenes. Una empresa dispone de m fábricas capaces de producir mensualmente de enviarde una unidad de producto la fábrica i alenviada almacén a n a1; a2; : : :Si; aelmcoste cantidades una mercancía que de tiene que ser j es cij , se trata de determinar las cantidades xij que habrá que almacenesenviar en cantidades b1; b2a; cada : : : ; balmacén El elcoste n , respectivamente. de cada fábrica de tal forma que costede delenviar una y sei satisfagan los jrequerimientos de envı́os a unidad de transporte producto sea de mı́nimo la fábrica al almacén es cij . realizar. Fábrica Almacén a1 1 1 b1 a2 2 2 b2 am m n bn 16 Una empresa dispone de m fábricas capaces de producir mensualmente a1, a2, . . . , am cantidades de una mercancı́a. El producto ha de ser enviado en cantidades b1, b2, . . . , bn a n almacenes. Hay que determinar las cantidades xij que hay que enviar de cada fábrica a Si el coste de enviar una unidad de producto de la fábrica i al almacén cada almacén para satisfacer las demandas el coste del transporte total determinar las cantidades x que habrá que j es c , se trataydeque enviar de cada fábrica a cada almacén de tal forma que el coste del transporte sea mı́nimo y se satisfagan los requerimientos de envı́os a sea mínimo; es decir, ij 31/67 ij realizar. Fábrica minimizar i sujeta a j D1 m i a1 1 1 b1 a2 2 2 b2 am m n bn cij xij ij n i Almacén 16 xij D ai ; para i D 1; : : : ; m xij D bj ; para j D 1; : : : ; n 0; para i D 1; : : : ; m j D 1; : : : ; n: i D1 xij P Pn Además, m a D iD1 i j D1 bj : la cantidad total producida tiene que ser igual a la suma de las que llegan a los almacenes. 32/67 Índice Formulación Definiciones y formas de programas lineales Historia Ejemplos de programas lineales Consideraciones geométricas Politopos Puntos extremos y soluciones básicas factibles Consideraciones geométricas Consideremos este problema de Programación Lineal: min. x1 3x2 s. a x1 C x2 6 x1 C 2x2 8 x1 ; x2 0: 33/67 Hay que determinar aquel punto de la región factible que minimiza la variedad lineal (una recta) z D x1 3x2 . Para minimizar z habrá que desplazarla desde su subespacio de referencia, x1 3x2 D 0, en la dirección que minimice más dicho objetivo: en la dirección c D Œ1; 3T , opuesta a su vector característico. 21 5 4 3 6 0 En el punto óptimo, x D Œ4=3; 14=3T , 5 1 punto extremo o vértice, es 9209 218 94 denominado imposible, manteniendo la factibilidad, 3 6 90 78 9 346 5 0 20 mover más z D de c . x1 3x2 en la dirección 34/67 En el óptimo, hay dos condiciones que están activas, o vigentes: la primera y la segunda. Ninguna de las condiciones de no negatividad de las variables están activas. En el óptimo, el vector de costes se puede poner como combinación lineal de los vectores columna de la matriz A T , vectores característicos de las condiciones activas: 1 1 1 1 5=3 A T D cI ! D D : 1 2 3 2=3 Volveremos sobre este y esta combinación lineal recurrentemente. 35/67 Formas de la solución u óptimo Solución óptima única Ocurre siempre en un punto extremo, o vértice de la región factible. Las dos alternativas que pueden presentarse en este caso: región factible acotada y no acotada. 0 123 54678 9 54678 9 0 13 El que la región factible no esté acotada no afecta a que haya o no óptimo; puede que sí a la forma de llegar a ella. 36/67 Soluciones óptimas alternativas En este caso 012345167 89 1 58 27658 elpunto óptimo es cualquiera de los!! puntos de una denominada faceta, o cara, !4! " # de $la región factible. ! ( % ( &$' &' % ' factible "#está $ mientras ! )' En (a) la región acotada que en (b)& no. *+ 0123451676 1895 71419 !!"# $ !%$ !&'($ Solución óptima acotada Este caso se no !)! ) * %presenta $ cuando la configuración región factible-función objetivo tiene la forma de la figura. +, ' -. Es posible desplazarse tanto como se desee dentro de la región factible en la dirección c sin encontrar un punto extremo o cara de la región factible que bloquee dicho desplazamiento. 37/67 1 −x1 + 2x2 x2 2x1 − x1 x2 s. a Región factible ≤ ≤ ≥ ≥ 2 3 0 3. 38/67 Su región factible es el ∅ pues no hay ningún x = [x1, x2]T que sa vacía Por las ejemplo: faga todas condiciones. min. 2x1 C 3x2 s. a 2 x1 C 2x2 2 2x1 x2 3 x1 0 x2 3: −x 1 + 2x 2 ≤ 2 2x 1 − x 2 ≤ 3 0 3 0 1 3/2 0 8/3 7/3 x2 ≥ 3 T Su región factible es el conjunto vacío, ;, pues no hay ningún x D Œx1; x2 que satisfaga todas las condiciones. El problema se dice no factible o inconsistente. 25 Geometría del problema en Im.A/ 39/67 Definición Un conjunto C Rn se dice convexo si y sólo si para todo par de puntos x 1 ; x 2 2 C todas las combinaciones de la forma x D x 1 C .1 en C . /x 2 , 0 1 están Cuando para cada par de puntos del conjunto convexo todos los puntos del segmento de recta que los une están en el conjunto. Examples of convex sets Examples of non-convex sets • A line segment is a convex set. • The union of two non-overlapping line segm • Non-convex sets can have “indentations.” Fig. 4.9. Convex sets with pairs of points joined by line segments. Title Page 38 of 156 Title Page Go Back Full Screen Close 39 of 156 Quit Go Back 40/67 La expresión x D x 1 C .1 /x 2, 0 1, define la combinación convexa de x 1 y x 2. Si 0 < < 1, es decir 2 .0; 1/, la combinación es estrictamente convexa. El concepto de combinación convexa se puede generalizar a cualquier número finito de puntos de la siguiente manera: xD p i i x i ; iD1 donde p i i D1 i D 1; i 0; i D 1; : : : ; p: 41/67 Teorema El conjunto de soluciones de un programa lineal, K D fx 2 Rn W Ax D b; x 0g, es un conjunto convexo. Definición Un conjunto C Rn se dice un cono si para todo x 2 C , x 2 C , para todo escalar no negativo 2 R ( 0). Un cono que también es convexo se denomina cono convexo. El conjunto fx 2 Rm W x D A˛; A 2 Rmn; ˛ 2 Rn; ˛ 0g es un cono convexo generado por los vectores columna de la matriz A. Definición x es un punto extremo, o vértice, de un conjunto convexo C si y sólo si no es interior a un segmento de recta contenido en C . Es decir, si y sólo si, x D .1 ˇ/y C ˇz con 0 < ˇ < 1 y y; z 2 C ) x D y D z. Geometría del problema con condiciones de igualdad 42/67 El programa lineal en forma estándar min. c T x; s. a Ax D b; x 0, donde x 2 Rn y A 2 Rmn, se puede escribir así: min. s. a n X j D1 n X cj xj 05 04 aj xj D b j D1 x1; : : : ; xn 0: 03 2 05 01 04 03 01 2 donde aj es el vector columna j de A. El óptimo será un vector de escalares no negativos de dimensión n que defina una combinación de los vectores columna de A de tal forma que b pertenezca al cono convexo generado por estos vectores columna y que minimice la función objetivo. 43/67 05 04 678 03 2 01 05 04 03 698 01 2 En la figura se representan los casos de un problema con región factible no vacía y otro con región factible vacía. En el segundo caso, (b), los vectores a1, a2, a3 y a4 no se pueden combinar convexamente de ninguna manera que contenga a b. Ejemplo Consideremos las regiones factibles que determinan las condiciones 2x1 C x2 C x3 D2 x1 C 3x2 C x4 D 3 x1 ; x2 ; x3 ; x4 0 y 2x1 C x2 C x3 D 1 x1 C 3x2 C x4 D 2 x1 ; x2 ; x3 ; x4 0: En (a) se puede ver que b está contenido en ese cono convexo; en (b) no: el primer problema es factible; el segundo es inconsistente. 04 3 678 04 698 3 05 05 02 02 01 01 44/67 Geometría con condiciones de desigualdad Consideremos ahora min. s. a n X j D1 n X 45/67 cj xj aj xj b j D1 x1; : : : ; xn 0: Si existe solución factible, la intersección del cono convexo que generan a1; : : : ; an y el conjunto de vectores menores o iguales que b será no vacía. 04 01 567 04 02 3 02 01 3 En (a) la región factible es no vacía; en (b) vacía. 587 46/67 Geometría del óptimo Refiriéndonos al problema en forma estándar, se buscan unos escalares no negativos x1; x2; : : : ; xn tales que z c1 c2 c D x1 C x2 C C n xn b a1 a2 an y se minimice z. Se busca poder expresar el vector Œz, bT T en el cono convexo que generan los vectores Œc1; aT1 T ; : : : ; Œcn; aTn T con el valor más pequeño posible del escalar z. 47/67 Ejemplo Sea el problema min. 2x1 s. a 3x2 x1 C 2x2 2 x1; x2 0: Añadiendo la variable de holgura x3, el problema se puede expresar como el de encontrar unos escalares x1; x2; x3 0 tales que el vector Œz; 2T esté en el cono convexo que generan los vectores Œ 2; 1T , Œ 3; 2T y Œ0; 1T , con el valor más pequeño posible del escalar z. 0 3 789 5 0463 5 013 94 2 0453 2 Hay que hayar que z D 2 los escalares x1 ; x2 ; x3 0 tales 2 3 0 x1 C x2 C x 1 2 1 3 y hagan mínimo el z. La solución es z D con x1 D 2 y x2 D x3 D 0. 4 Ejemplo Sea ahora min. 2x1 s. a 3x2 48/67 x1 C 2x2 2 x1; x2 0: Si se sustrae de la primera condición la variable de holgura x3, el problema es el de encontrar unos escalares x1; x2; x3 0 tales que se cumpla que z 2 3 0 D x C x C x3 1 2 2 1 2 1 y se minimice z. 03 7890 3 5 46 5 0453 2 013 -2 En el cono que generan los vectores Œ 2, 1T , Œ 3, 2T y Œ0, 1T se pueden encontrar puntos de la forma Œz, 2T , con z tan pequeña como queramos: el valor óptimo de la función objetivo tiende, por consiguiente, a 1. El problema no está acotado. Politopos Definición ˚ Llamaremos hiperplano H de vector característico a 2 Rn ; a ¤ 0, al conjunto H D x 2 Rn W aT x D c , con c 2 R. Definición Un hiperplano en Rn es una variedad lineal .n 1/-dimensional. Un hiperplano es el conjunto de soluciones de una ecuación lineal en Rn. Definición Dado un hiperplano H , aT x D c, llamaremos semiespacios cerrados de borde H a los conjuntos ˚ HC D ˚x 2 Rn W aT x c H D x 2 Rn W a T x c y semiespacios abiertos de borde H a ˚ ı H C D x 2 Rn W a T x > c ˚ ı H D x 2 Rn W a T x < c : 49/67 50/67 El hiperplano x1 C 4x2 D 11, su vector característico a D Œ 1; 4T y los semiespacios HC y H se ven así: a H+ y x̄ a H− H El vector a es ortogonal a H y dirigido hacia HC. Los semiespacios de borde H son convexos; la unión de HC y H es el espacio Rn . 51/67 Definición Un politopo es un conjunto formado por la intersección de un número finito de semiespacios cerrados. Definición Un politopo cónico es un conjunto formado por la intersección de un número finito de semiespacios cerrados que pasan por un punto. Definición Un poliedro es un politopo acotado y no vacío. Imágenes de poliedros. También aquí. 52/67 53/67 Es fácil comprobar que la intersección de conjuntos convexos es convexa y que por lo tanto los politopos y los poliedros son conjuntos convexos. Si un politopo P es un poliedro, cualquier punto se puede expresar como combinación convexa de los vértices o puntos extremos. La región factible, o conjunto de soluciones de un programa lineal, P D fx 2 Rn W Ax D b; x 0g ; es un politopo convexo. 54/67 Índice Formulación Definiciones y formas de programas lineales Historia Ejemplos de programas lineales Consideraciones geométricas Politopos Puntos extremos y soluciones básicas factibles 55/67 Puntos extremos y soluciones básicas factibles Consideraremos en los sucesivo las condiciones del programa lineal en forma estándar, Ax D b x 0; donde x 2 Rn, b 2 Rm y A 2 Rmn; n > m . Si Ax D b es compatible, rango.A/ D m: De las n columnas de A se pueden elegir m linealmente independientes que formen una base del subespacio Im.A/. 2 432 Si esas m columnas son las primeras y forman la submatriz B de A, ésta queda 2 1 ÿ 5 Como B es regular, la ecuación BxB D b se puede resolver de forma única. El vector x T D ŒxBT ; 0T es una de las múltiples soluciones de Ax D b. Definición Sea B cualquier submatriz no singular m m resultante de agrupar m columnas linealmente independientes de A. Si todos los n m coeficientes del vector x no asociados a las columnas de B, a los que se denominarán variables no básicas, se hacen cero y se resuelve la ecuación Ax D b en los m restantes coeficientes, denominados variables básicas, la solución resultante de denomina solución básica asociada a la matriz básica, o base, B. Las n m columnas de A que no forman parte de B se las agrupa en una matriz m .n m/ denominada matriz no básica N (asociada a las variables no básicas); en correspondencia, las variables no básicas forman x N . 56/67 57/67 Ejemplo Consideremos el poliedro de la figura, 57 023 4 043 4 013 2 56 definido por x1 C x2 6, x2 3 y x1; x2 0. Si añadimos las variables de holgura x3 y x4 a la primera y segunda desigualdad, respectivamente, resulta: x1 C x2 C x3 D6 x2 C x4 D 3 x1; x2; x3; x4 0: 1110 La matriz de los coeficientes es A D Œa1; a2; a3; a4 D . Las posibles 0101 matrices B que se pueden extraer de A y sus correspondientes soluciones básicas son las de la tabla. " # " #" # " # 58/67 " # 11 B D Œa1 ; a2 D 01 " # 10 B D Œa1 ; a4 D 01 " # 11 B D Œa2 ; a3 D 10 " # 10 B D Œa2 ; a4 D 11 " # 10 B D Œa3 ; a4 D 01 x1 1 1 6 3 D B 1b D D x2 0 1 3 3 " # " # x 0 xN D 3 D x 0 " 4# " #" # " # x1 1 0 6 6 1 xB D DB bD D x4 0 1 3 3 " # " # 0 x xN D 2 D x 0 " 3# " #" # " # x2 0 1 6 3 1 xB D DB bD D 1 1 3 3 x3 " # " # 0 x xN D 1 D x 0 " 4# " #" # " # x2 1 0 6 6 1 xB D DB bD D x4 1 1 3 3 " # " # x 0 xN D 1 D x 0 " 3# " #" # " # x3 1 0 6 6 1 xB D DB bD D x4 0 1 3 3 " # " # x 0 xN D 1 D x2 0 xB D 59/67 La cuarta de estas soluciones no vale por ser uno de sus coeficientes negativo; es no factible. Las soluciones básicas factibles son pues 2 3 2 3 2 3 3 6 0 637 607 637 x 1 D 405 ; x 2 D 405 ; x 3 D 435 0 3 0 2 3 0 607 y x 4 D 465 : 3 Obsérvese que estos puntos determinan en sus dos primeros coeficientes los 57 puntos extremos de la figura anterior. 0 3 0 3 2 4 4 4 0 13 2 56 60/67 Definición Si una o más de las variables básicas de una solución básica de Ax D b x 0; es cero, la solución se denomina básica degenerada. Una solución básica en la que todos sus coeficientes son no negativos se denomina solución básica factible; si algún coeficiente es cero, la solución se dice básica factible degenerada. Dos soluciones básicas factibles del politopo P D fx 2 Rn W Ax D b; x 0g se dicen adyacentes si m 1 de sus coeficientes son comunes. Dos soluciones adyacentes o puntos extremos están unidos por una arista. Suponiendo no degeneración, cualquier variable básica (y su correspondiente punto extremo) tiene exactamente n m adyacentes. Teorema Equivalencia entre puntos extremos y soluciones básicas Sean A 2 Rmn una m n matriz de rango m, b 2 R y el politopo convexo P D fx 2 R W Ax D b; x 0g. Un x 2 P es un punto extremo o vértice de P si y sólo si los vectores columna de A asociados a los coeficientes positivos de x son linealmente independientes. Corolario x 2 P D fx 2 Rn W Ax D b; x 0g es punto extremo de P si y sólo si es una solución básica factible de Ax D b x 0: Corolario Un x es un punto extremo de P D fx 2 Rn W Ax D b; x 0g si y sólo si resulta de la intersección de n hiperplanos linealmente independientes. Corolario Un politopo P D fx 2 Rn W Ax D b; x 0g tiene un número finito de puntos extremos. I D EMOSTRACIÓN . Escoger m columnas linealmente independientes de n de A es nŠ n C.n; m/ D D : m mŠ.n m/Š 61/67 62/67 Ejemplo Consideremos el programa lineal que sigue. 57 x1 C x2 6 x2 3 x1 C 2x2 9 x1; x2 0: 023 4 043 4 013 2 56 Si añadimos las variables de holgura x3, x4 y x5 a la primera, segunda y tercera desigualdad, respectivamente, resulta x1 C x2 C x3 D6 x2 C x4 D3 x1 C 2x2 C x5 D 9 I x1 ; x2 ; x3 ; x4 ; x5 0: 3 11100 A D Œa1 ; a2 ; a3 ; a4 ; a5 D 4 0 1 0 1 05 12001 Obsérvese que la desigualdad x1 C 2x2 9 es redundante. 2 Estudiemos la solución básica que se obtiene a partir de B D Œa1; a2; a3: 2 3 2 3 111 x1 xB D 4x2 5 D B 1 b D 40 1 05 x3 120 0 x : xN D 4 D x5 0 12 3 2 32 3 2 3 6 0 2 1 6 3 435 D 40 1 05 435 D 435 ; 9 1 1 1 9 0 Es degenerada, pues su tercer coeficiente es cero. Analicemos ahora la solución básica considerando B D Œa1; a2; a4: 2 3 2 3 x1 110 xB D 4x2 5 D B 1 b D 40 1 15 x4 120 x 0 xN D 3 D : x5 0 12 3 2 32 3 2 3 6 20 1 6 3 435 D 4 1 0 15 435 D 435 ; 9 11 1 9 0 Como se puede ver es la misma solución que obteníamos antes. Si considerásemos B D Œa1; a2; a5 llegaríamos también a la misma solución básica degenerada: Œx1 x2 x3 x4 x5T D Œ3 3 0 0 0T : 63/67 64/67 La correspondencia entre soluciones básicas factibles y puntos extremos no es en general biunívoca: A cada solución básica factible le corresponde un único punto extremo en P , pero puede que a cada punto extremo de P le corresponda más de una solución básica factible. Cuando A no tiene rango completo, P puede ser el conjunto vacío o alguna de las condiciones es redundante. En lo sucesivo supondremos que A 2 Rmn tiene m vectores fila/columna linealmente independientes. Un problema de programación lineal se denomina no degenerado si todas sus soluciones básicas factibles son no degeneradas. La correspondencia en este caso entre puntos extremos y soluciones básicas factibles sí es biunívoca. 65/67 Si el politopo P no está acotado, para caracterizar del todo las soluciones del problema de Programación Lineal hay que introducir las direcciones. Definición Una dirección del politopo P D fx 2 Rn W Ax D b; x 0g es un vector no nulo d 2 Rn tal que para todo x 0 2 P el rayo fx 2 Rn W x D x 0 C d; 0g pertenece a P . Un politopo P no está acotado si y sólo si tiene una dirección. d ¤ 0 es una dirección de P si y sólo si Ad D 0 y d 0, pues cualquier punto a lo largo de esa dirección cumple las condiciones y mejora la función objetivo sin límite. 66/67 Teorema Teorema de la representación Todo punto del politopo P D fx 2 Rn W Ax D b; x 0g de soluciones de un PL se puede expresar de la forma X i vi C d; xD i 2I donde fvi W i 2 I g es el conjunto de puntos extremos de P , es una dirección de P , o d D 0. P i2I i D 1, i 0, y d, o Corolario Si el politopo P D fx 2 Rn W Ax D b; x 0g es cerrado y acotado (es un poliedro), todo punto x 2 P se puede expresar como combinación convexa de sus puntos extremos. 67/67 Teoremas fundamentales de la Programación Lineal Teorema Si el politopo P D fx 2 Rn W Ax D b; x 0g de un PL es no vacío, tiene al menos un punto extremo o vértice. Teorema Dado un politopo no vacío P D fx 2 Rn W Ax D b; x 0g de soluciones de un PL, el valor mínimo de la función objetivo c T x en ese P se alcanza en un punto extremo (solución básica factible óptima), o c T x no está acotada inferiormente. De estos teoremas se deduce que, cuando hay varias soluciones óptimas, al menos una es un punto extremo del politopo de soluciones factibles. En consecuencia, para encontrar el óptimo de un PL hay que concentrarse únicamente en las soluciones básicas factibles o puntos extremos de P .