Métodos de punto interior Un nuevo método de punto interior

79  11 

Texto completo

(1)Métodos de punto interior - Un nuevo método de punto interior. Carlos Fabian Ruiz Paredes. UNIVERSIDAD TECNOLÓGICA DE PEREIRA Facultad de Ingenier´ıa Industrial Bogotá D.C 2019.

(2) Métodos de punto interior - Un nuevo método de punto interior. Carlos Fabian Ruiz Paredes. Trabajo de grado presentado como requisito parcial para optar al t´ıtulo de: Magı́ster en Investigación Operativa y Estadı́stica. Director(a): M.Sc. Jorge Morales Paredes. UNIVERSIDAD TECNOLÓGICA DE PEREIRA Facultad de Ingenier´ıa Industrial Bogotá D.C 2019 2.

(3) Resumen Este trabajo propone un nuevo método de punto interior para resolver problemas de programación lineal. A partir de vectores ortonormales sobre R n , se pueden construir direcciones para encontrar la solución óptima del problema. Se construirá el método aquı́ presentado buscando dichos vectores con el fin de generar direcciones de movimiento y as´ıdefinir una senda de búsqueda hacia la solución del problema. Las herramientas aquı́ utilizadas para la construcción del nuevo método son conceptos básicos de álgebra lineal, esto permite una facilidad pedagógica a la hora de entender el algoritmo. Palabras clave Método de punto interior, Programación Lineal, Vectores Ortonormales, Núcleo.. Abstract This work proposes a new interior point method in order to solve linear programming problems. By using orthonormal vectors, directions may be built to find the optimal solution of the problem. The method presented here will be built looking for these vectors in order to generate directions of movement and thus define a search path toward solving the problem. The tools used for the construction of this new method are basic concepts of linear algebra, this allows a pedagogical easiness when it comes to understand the algorithm. Keywords Interior Point Method, Linear Programming, Orthonormal Vectors, Kernel.. 3.

(4) Índice 1. Introducción. 6. 2. Objetivos 2.1. Objetivos especı́ficos . . . . . . . . . . . . .. 9 . . . . . . . . . .9. 3. Preliminares 10 3.1. Conceptos Matemáticos .................................................................10 3.2. Programación Lineal .......................................................................12 3.3. Métodos de punto interior .............................................................14 4. Marco Teórico 22 4.1. Propuesta inicial en región factible de dimensión 2 con proyecciones ................................................................................... 22 4.1.1. Ejemplo Ilustrativo........................................................ 29 4.2. Propuesta final .......................................................................... 33 4.2.1. Algoritmo ...................................................................... 37 4.2.2. Ejemplo ilustrativo tres variables .................................. 40 4.2.3. Ejemplo ilustrativo siete variables................................. 45 5. Aplicaciones. 50. 6. Conclusiones. 56. Anexo - Revisión de literatura. 58. Bibliografı́a. 68. 4.

(5) Notación 1. Sean u y v dos vectores de Rn , P royv (u) denota la proyección ortogonal. de u sobre v. 2. Sea A una matriz, NA denota el espacio nulo de A. 3. Sea u ∈ Rn con u = (x1 , x2 , ..., xn ) denotamos por u ≥ 0 a la condición. que xi ≥ 0 para i = 1, 2..., n. 4. Sea A una matriz, ν(A) denota la nulidad de A. 5. Sea A una matriz, A−1 denota la matriz inversa de A. 6. B(p; s) es la bola abierta de dentro en p ∈ Rn y radio s.. 7.Sea A un conjunto se denota Int(A) al interior de A.. 5.

(6) 1.. Introducción. La optimización matemática juega un papel importante en diferentes áreas de la ciencia y la ingenierı́a, algunos campos de aplicación son, ciencias de la computación, estadı́stica, economı́a, finanzas, ingenierı́a eléctrica, ingenierı́a industrial, ingenierı́a mecánica, ingenierı́a quı́mica, medicina, nutrición, entre muchas otras. A partir del estudio de las soluciones de problemas de optimización se pretende entender el comportamiento de los modelos descritos por estos. Por ejemplo, (tomado de [13]) si una empresa que produce q unidades de un bien tiene una función de ingresos I(q), una función de costos C(Q) y hay un impuesto de t pesos por unidad, entonces la función B(q) = I(q) − C(q) − tq. (1). modela el beneficio de la empresa, además, la solución del problema de maximizar la función de beneficio nos lleva a que q ∗ > 0 puede maximizar el beneficio si y solamente si Ij (q ∗ ) = Cj (q ∗ ) + t. (2). la cual es llamada condición de beneficio máximo, esto aporta una mayor información en términos económicos para el entendimiento de este modelo. Uno de los campos más conocidos dentro de la optimización matemática es la programación lineal, la cual, fundamenta su análisis en maximizar o minimizar una función lineal generalmente sobre Rn ; dicha función es llamada función objetivo y sus variables independientes están sujetas a ciertas restricciones que son expresadas por igualdades o desigualdades lineales, la búsqueda de soluciones para este tipo de problemas ha desarrollado una cantidad importante de métodos que permiten de manera eficiente encontrar soluciones, en este ámbito, el método tradicionalmente usado para resolver estos problemas es el Método Simplex, desarrollado por Dantzig en la década de los 40’s, pues su eficiencia a la hora de encontrar los valores óptimos sobre la función ya descrita permite optimizar tiempos computacionales, reducir espacio de búsqueda, entre otras ventajas. La mayorı́a de los problemas de programación lineal provienen de un modelo matemático empı́rico, este modelo, representa cierto problema de la vida real ya inicialmente estudiado mediante observaciones directas o resultados de experimentos de algún fenómeno previamente analizado. Gracias a los avances tecnológicos con los cuales se cuentan hoy en dı́a la solución de estos problemas se da por medio de 6.

(7) herramientas computacionales, lo cual, impl´ıcitamente tiene problemas asociados; uno de los problemas es precisamente la exactitud en la recolección de los datos, otro de igual importancia, es el error de redondeo que poseen las maquinas, debido a esto, surgen diferentes inquietudes acerca de las soluciones de los problemas de programación lineal, como por ejemplo, ¿el modelo propuesto tiene solución?, ¿Su solución es única?, ¿Depende continuamente la solución al problema de los parámetros del modelo?, esto implica que pequeños cambios en los parámetros del modelo generan pequeños cambios en la solución; ésta última condición es muy importante en cualquier modelo matemático pues realmente refleja si el modelo puede ser usado para aproximar la realidad. A esto último se le conoce como análisis de sensibilidad, para poder realizar este análisis se tiene una herramienta muy útil conocida como Teor´ıa de la dualidad la cual permite el uso de otro modelo (dual) asociado al modelo original de estudio (primal) para realizar e interpretar estos infinitesimales cambios. El método Simplex, como la mayorı́a de métodos para la solución de los problemas lineales, es diseñado mediante algoritmos computacionales, como se menciona en [1], este método es un procedimiento computacional bien definido que toma algún valor, o algunos valores, llamados entradas (input) y produce algún valor, o algunos valores, llamados salidas (output), permitiendo en esta interacción de entradas y salidas encontrar la solución al problema. Diferentes algoritmos pueden producir los mismos resultados, sin embar- go, la forma de determinar cuál de estos procedimientos es el más adecuado es su eficiencia, en la actualidad la medida usual de eficiencia de un algorit- mo es velocidad de convergencia y esta medida puede cambiar drásticamente debido al hardware y software utilizados. Gracias a los trabajos de Victor Klee y George Minty [9] se mostró que el algoritmo Simplex no posee un tiempo polinomial de ejecución, de hecho, Jeroslow mostró en [6] que existe problemas de programación lineal que su tiempo de ejecución es polinomial, por lo tanto, en problemas lineales a gran escala este método puede no ser eficiente, sin embargo, los métodos de punto interior probaron tener un tiempo de ejecución polinomial y por ende ser más efectivos en problemas lineales a gran escala, el primero en probar dicha afirmación fue Khachiyan en [8] con su algoritmo del elipsoide, desafortunadamente las experiencias prácticas de dicho algoritmo fueron decepcionantes. El método de punto interior más conocido, mostrado en el famoso trabajo de Karmarkar [7], llamado algoritmo de Karmarkar, posee un tiempo de ejecución polinomial y se basa en movimientos sobre el interior de la región 7.

(8) factible por medio del gradiente proyectado, al igual que el método simplex, el método del punto interior presenta ventajas y desventajas a la hora de encontrar la solución al problema tratado, este argumento será esencial para el desarrollo de la investigación. Los algoritmos de punto interior juegan un papel importante en la solución de problemas de programación lineal, su implementación y uso radican principalmente en problemas con un gran número de variables. El trabajo aquı́ presentado desarrolla un algoritmo de punto interior para la solución de problemas de programación lineal basado en conceptos básicos de álgebra lineal y programación lineal. El desarrollo teórico del algoritmo aquı́ propuesto se basa en la búsqueda de direcciones dadas por el núcleo de una matriz correspondiente y en movimientos inspirados en el método de punto interior de Karmarkar, con lo cual, este algoritmo pretende buscar la mejor dirección de optimización dentro de la región factible del problema, partiendo de un punto inicial arbitrario (perteneciente al interior de la región factible), con el fin de encontrar la solución óptima. Inicialmente se plantea un algoritmo basado en direcciones establecidas por los vértices de la región factible, sin embargo, conocer todos vértices en un problema muy amplio (cuando el numero de variables y restricciones es grande) requiere de un manejo matemático ineficiente en términos de tiempo computacional, por ende fue necesario encontrar un mecanismo que permitiera definir direcciones de movimiento alterna a la propuesta inicial. El comando “null” en Matlab permite encontrar una base del núcleo de una matriz (cuyos vectores son ortonormales) y es desde aqu´ı el sustento para la propuesta final del método de punto interior aquı́ presentado.. 8.

(9) 2.. Objetivos. Objetivo General Generar un algoritmo de punto interior para encontrar la solución de un PPL basado en conceptos básicos de álgebra y programación lineal.. 2.1.. Objetivos especı́ficos. 1. Estudiar las propiedades de espacios vectoriales, bases ortonormales,. núcleo, nulidad y rango de matrices con el fin de tener herramientas para desarrollar el objetivo general de este trabajo. 2. Mostrar en un ejemplo detalladamente los pasos del algoritmo de. punto interior conocido como escala af´ın. 3. Hallar una base ortonormal del sub-espacio generado al trasladar la. región factible cuya finalidad es encontrar aproximaciones recurrentes de nuestro PPL. 4. Desarrollar mediante el software MATLAB el código del algoritmo. pro- puesto.. 9.

(10) 3.. Preliminares. Precisamos de manera muy somera algunos de los conceptos que serán usados a lo largo de este trabajo, la mayor parte de estos preliminares es tomada de [12].. 3.1.. Conceptos Matemáticos. Definición 1 Si n es un entero positivo, entonces una n-ada ordenada es una sucesión de n números reales (a1 , a2 , ..., an ). El conjunto de todas las n adas ordenadas se denomina espacio n dimensional y se denota por Rn. − Definición 2 Si S = { v1 , v2 , ..., vr } es un conjunto no vacı́o de vectores, entonces la ecuación vectorial k1v1 + k2v2 + ... + krvr = 0 tiene por lo menos una solución, a saber k1=0, k2=0,..., kr=0 Si esta es la única solución, entonces S se denomina conjunto linealmente independiente. Si existen otras soluciones, entonces S se denomina conjunto linealmente dependiente. Definición 3 Sean u = (u1 , u2 , ..., un ) y v = (v1 , v2 , ..., vn ) dos vectores. Entonces el producto punto o producto interior de u y v denotado por u · v, está dado por u · v = u1v1 + u2v2 + ... + unvn Definición 4 Los vectores u y v diferentes de cero son ortogonales (perpendiculares) si y sólo si u · v= 0 Teorema 1 Si S = {v1, v2, ..., v}n es un conjunto ortogonal de vectores no nulos es un espacio con producto interior, entonces S es linealmente independiente.. 10.

(11) Definición 5 Se dice que los vectores v1 ,v2 ,..., vn de un espacio vectorial V generan a V si todo vector en V se puede escribir como una combinación lineal de los mismos. Es decir, para todo v V existen escalares a1, a2, ..., an tales ∈ que v = a1v1 + a2v2 + ... + anvn Definición 6 Si V es cualquier espacio vectorial y S = {v1 , v2 , ..., vn } es un conjunto de vectores de V , entonces S se llama base de V si se cumplen las dos condiciones siguientes: 1. S es linealmente independiente. 2. S genera a V . Toda base tiene el mismo número de elementos y tal valor es llamado la dimensión del espacio vectorial. Definición 7 Sean u y v dos vectores diferentes de cero. Entonces la proyección de u sobre v es un vector denotado por P royv (u) y se define por u·v P roy (u) = v (3) v 2 |v| Además tiene las siguientes propiedades 1. P royv(u) es paralelo a v. 2. u − P royv(u) es ortogonal a v. Definición 8 Una matriz es un arreglo rectangular de números. Los números en el arreglo se denominan elementos de la matriz. Definición 9 El espacio nulo (Núcleo o Kernel) de una matriz NA = {x ∈ Rn : Ax = 0} NA se denomina el espacio nulo de A y ν(A) = dimNA se denomina nulidad de A. Si NA contiene sólo al vector cero, entonces ν(A) = 0 Las siguientes definiciones topológicas son muy útiles en nuestro trabajo, pueden ser encontradas en [10] 11.

(12) Definición 10 Dado un punto p ∈ Rn y un número real s > 0 se define la bola abierta B con centro en p y radio s de la siguiente manera B(p; s)={x ∈ Rn : "x − p" < s} donde "·" representa la norma euclideana. Definicion 11 Se define p un punto interior del conjunto R ⊂ Rn si existe un s > 0 tal que B(p; s)⊂ R, el conjunto de todos los puntos interiores de R se llama interior de R y se denota Int(R).. 3.2.. Programación Lineal. Precisamos de manera muy somera algunos de los conceptos ya discutidos anteriormente. La siguiente notación es tomada de [5], la forma aumentada del modelo general de programación lineal donde las variables de holgura están incorporadas es dado por Definición 12 La forma estándar del Problema de Programación Lineal (PPL) viene dado de la siguiente forma Maximizar/Minimizar Z = c1x1 + c2x2 + ... + cnxn sujeta a las restricciones a11x1 + a12x2 + ... + a1nxn ≤ b1 a21x1 + a22x2 + ... + a2nxn ≤ b2. (4). . am1x1 + am2x2 + ... + amnxn ≤ bm con x1 ≥ 0, x2 ≥ 0,..., xn ≥ 0. De forma matricial, el PPL será M ax/M in Sujeto a:. Z = ct x. Ax ≤ b x≥0 12. (5).

(13) donde c1 c=. c2 . cn. x1 ,x =. x2 . xn. a11 a21. ,A = .. 0. b1. a12 · · · a1n. a22 · · · a2n b2 0 , b = , 0 = ... . . . . bm 0 (6). cn. xn. bm. am1 am2 · · · amn. 0 (6). Definición 13 Una solución factibles es aquella que verifica todas las restricciones de un PPL, es decir, un vector x tal que Ax ≤ b. Teorema 2 La región factible para cualquier PPL es un poliedro convexo. Además, si la región factible es cerrada y acotada el PPL tiene por lo menos una solución, el óptimo debe ser un punto vértice de la región factible. Definición 14 Las variables de holgura son variables que se agregan a la restricción para que la relación de dicha restricción sea de igualdad, representa el valor faltante del lado izquierdo de la restricción para que sea igual al lado derecho. Definición 15 La forma aumentada (matricial), es decir con las respectivas variables de holgura, del modelo de programación lineal será M ax Z = ctx Sujeto a:. (7). Ax = b x≥0 donde. c=. c1 c2 . cn. ,x =. x1 x2 . xn. a11 a21. ,A = .. a12 · · · a1n a22 · · · a2n .. .... .. ,b =. b1 b2 . bm. ,0 =. 0. 0. . 0 (8). 13.

(14) cn. xn. am1 am2 · · · amn. 14. bm. 0 (8).

(15) 3.3.. Métodos de punto interior. Los algoritmos de punto interior son algoritmos iterativos que crean una sucesión de puntos sobre una curva en el interior de la región factible, a diferencia del método simplex pues la sucesión que genera este es tomada sobre la frontera de la región factible (de hecho, sobre los vértices de esta), los métodos de punto interior basados en el algoritmo original de Karmarkar siguen los siguientes pasos básicos Paso 1 Escoge un punto de prueba inicial p(0) en la región factible para el algoritmo iterativo. Paso 2 Realiza una transformación lineal de la región factible para que el punto de prueba actual p(i) este alejado de la frontera. Paso 3 Escoge una dirección para moverse desde el punto de prueba actual hacia otro punto de prueba dentro de la región factible que mejore el valor de la función objetivo Z. Paso 4 Si cumple cierta condición de parada, el algoritmo se detiene, de lo contrario vuelve al paso 2. Para ilustrar todo lo anterior se mostrará paso a paso el algoritmo de punto interior conocido como ‹ escala af´ın› aplicado sobre el mismo ejemplo presentado en [5] (la razón de escoger este ejemplo es la dificultad de encontrarlo resuelto completamente en la literatura, además, en [5] presentan los pasos en desorden lo cual muchas veces provoca confusión). Considere el siguiente problema de programación lineal M ax Z = x1 + 2x2 Sujeto a: x1 + x2 + x3 = 8 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0.. (9). el cual tiene por solución óptima x1 = 0, x2 = 8, x3 = 0, se describirá paso a paso el algoritmo de ‹ escala af´ın› .. 15.

(16) Aplicación paso 1 Escoge un punto de prueba inicial p(0) =. (0) 1 p p(0) 2 (0) p3. en la. región factible para el algoritmo iterativo, en este caso se tomará el 2 (0) mismo punto inicial del ejemplo en [5], es decir, p = 2 . 4 Aplicación paso 2 primera iteración Realiza una transformación lineal de la región factible para que el punto de prueba actual p(0) este alejado de la frontera de la región factible, en este caso, lo que se busca es que 1 el punto de prueba actual, sea transformado en el punto 1 por medio 1 de una transformación lineal, en este caso la transformación es dada por la matriz diagonal 1 p(0) −1. D(1) =. 0. 1. 1. 0. 0. 0. 2. 0. 2. 0. 1. 1. 0 0. 1 (0) p3. = 0. p(0). 0 0. 2. 1. 0. (10). 4. p. 4. p. (se nombra como la inversa para seguir con la notación de [5], el (1) en el subı́ndice denota la iteración). Gracias a esta transformación lineal −1 x = las nuevas variables en las cuales se va a trabajar son x(1) = D(1) (1) 1 x x(1) 2 (1) x3. lo cual conlleva a que el problema 9 sea transformado en M ax Z = 2x(1) + 4x(1) 1. 2. Sujeto a: 2x(1) + 2x(1) + 4x(1) = 8 1. 16. 2. 3. (11).

(17) x(1) ≥ 0, x(1) ≥ 0, x(1) ≥ 0. 1. 2. es claro que 1p 0 D−(1) (1). 17. 3. 1 = 1 1. (12).

(18) en general, el problema 7 es transformado en M ax Z = (D(1)ct) · x(1) Sujeto a: (AD(1)) · x(1) = b. (13). x(1) ≥ 0 Aplicación paso 3 primera iteración En este método de ‹ escala afı́n› la dirección que se escoge es la del gradiente proyectado, para esto se toma el gradiente de la función objetivo Z en las variables actuales, es decir 2 en x(1), en este caso Z∇ = Dct = 4 y se proyecta sobre el plano 0 descrito por la restricción 2x(1) + 2x(1) + 4x(1) = 8, para esto se utiliza 1. la matriz. 2. 3. P(1) = I − (AD(1))t[(AD(1))(AD(1))t]−1(AD(1)) 5 1 6 1. 6. = − −3. −. 5. 6. 1 6. −1. 1. 1. 3 3. −1 −3. (14). 3. quien es denominada matriz de proyección, obteniendo el gradiente proyectado 1 3gp =P −2 D c= (15)(1) esta es la dirección en la cual se va a mover el punto de prueba actual 1 1 p0 = 1 , ası́ el punto de prueba siguiente será dicho punto mas un D−(1) 1 incremento en la dirección del gradiente proyectado, en este método de ‹ escala af´ın› se escoge un valor tope para el incremento llamado ν(1) al valor absoluto de la menor componente en el gradiente proyectado, esto asegura que se seguirán satisfaciendo las condiciones de positividad de las variables, además se involucra un parámetro 0 < α ≤ 1 (en este (1). (1). 18.

(19) caso α = 0,5) que determina que tan grande será dicho incremento, de. 19.

(20) esta manera el punto de prueba siguiente es 1 α 1 + (1) ν 1. 1,25 1,75g p (16) 0,5. =. sin embargo, este punto esta en las coordenadas x(1), y para devolverlo a las coordenadas originales usamos la transformación lineal D(1) , con lo cual tenemos el nuevo punto de prueba en las coordenadas originales p(1). 1,25 2,5 = D 1,75 = 3,5 0,5 2. (17). Aplicación paso 4 primera iteración Como este ejemplo es ilustrativo solo se realizan tres iteraciones, por lo cual se retoma el paso 2 dado que no se ha terminado el algoritmo, en las siguientes iteraciones se omiten las explicaciones ya que son análogas a la primera iteración. Aplicación paso 2 segunda iteración El punto de prueba actual (1). 2,5 3,5p = 2. 1 se convierte en el punto 1 por medio de la transformación lineal 1 1 1 p(1). 0. 0. 1. 0. D− =. 0 1. 1 (2). 0. 0 0. 1 p(1). 0 1 p. 2. 0 2 0. 2,5. =. 0. 1 3,5. (18) 2 3. (1).

(21) 0. 0. 1. Las nuevas variables en las cuales se va a trabajar son x(2) 1. −1 x(2) = D(2) x = x(2) 2 (2) x3. 21.

(22) as´ı el problema 9 es transformado en M ax Z = 2,5x(2) + 7x(2) 1. 2. Sujeto a: 2,5x(2) + 3,5x(2) + 2x(2) = 8 1. 2. (19). 3. (2) (2) ≥ 0. x(2) 1 ≥ 0, x 2 ≥ 0, x3. Aplicación paso 3 segunda iteración La matriz de proyección es P(2) = I − (AD(2))t[(AD(2))(AD(2))t]−1(AD(2)) 0,72222 −0,38888 −0,22222 = −0,38888 0,45555 −0,31111 −0,22222 −0,31111 0,82222. (20). y el gradiente proyectado gp(2) = P(2)D(2)c =. −,91666 2,21666 −2,73333. (21). el valor tope para el incremento es ν(2) = 2,73333, α = 0,5 p(2) = D(2). 0,83231 2,08079 1,40548 = 4,91920 0,5 1. (22). Aplicación paso 4 segunda iteración Como este ejemplo es ilustrativo se realizan solamente tres iteraciones, por lo cual no se ha terminado de aplicar el algoritmo y se retoma al paso 2 Aplicación paso 2 tercera iteración El punto de prueba actual 2,08079. (3). 1. 4,9192p =. 22. 1.

(23) se convierte en el punto 1 por medio de la transformación lineal 1. 23.

(24) 1 p(1). 0. 0. 0. 1. D− =. 0 1. 1 (3). 0. 1 p(1). 0 0. 0. 2,08079. =. 0. 1 4,9192. 0. 0. (23). 1 p. 2. 0. (1) 3. 1. Las nuevas variables en las cuales se va a trabajar son x(3) 1. (3) x(3) = D−1 (3)x = x 2 (3) x3. as´ıel problema 9 es transformado en M ax Z = 2,08079x(3) + 9,8384x(3) 1. 2. Sujeto a: 2,08079x(3) + 4,9192x(3) + x(3) = 8 1. x(3) 1. ≥ 0,. 2. x2(3). ≥ 0,. x3(3). (24). 3. ≥ 0.. Aplicación paso 3 segunda iteración La matriz de proyección es P(2) = I − (AD(2))t[(AD(2))(AD(2))t]−1(AD(2)) 0,85337 −0,34664 −0,07046 = −0,34664 0,18049 −0,16659 −0,07046 −0,16659 0,96613. (25). y el gradiente proyectado gp(3). =. P (3 )D. −1,63475 1,05448 (3)c = −1,785639. el valor tope para el incremento es ν(2) = 1,785639, α = 0,5 24. (26).

(25) p(3) = D(3). 0,54224 1,1283 1,29526 = 6,3716 0,5 0,5. (27). Aplicación paso 4 tercera iteración Como son solo 3 iteraciones se termina el algoritmo. 25.

(26) El anterior algoritmo fue escrito en Matlab, y se presenta a continuación. m = 1; n = 3; c = [1;2;0]; A = [1 1 1]; b =8; alpha =0.5; ini = [2;2;4]; for cont=1:3 for k=1:n Dia(k,k) = ini(k,1); end Nc = Dia*c; NA = A*Dia; Id=eye(n); P=Id-NA’*inv(NA*NA’)*NA; gp = P*Nc; v = min(gp(:, 1)); normalizado = [1;1;1]; puntosig = normalizado+alpha*gp/abs(v); ini = Dia*puntosig end y las primeras 11 iteraciones muestran la siguiente sucesión p(0). 2 = 2 ,. 2,5 p(1) = 3,5. 4 p(3) =. 1,1283 6,3716. 2,08079 p(2) = 4,91920. 2 p(4) =. 0,5. 0,56415 7,16228. 1. p(5). 0,28207 = 7,57761. 0,27356. 0,14030. 0,070519 7,89422. 0,03525 p(8) = 7,94711. 0,07044. 0,03525. 0,01762. 0,017629. 0,00881. 0,14103 p(6) = 7,78851. p(7) =. 26. 0,00440.

(27) p(9) =. 7,9735 0,00881. p(10) = 7,98677 0,00440 0,00440. 27. p(11) = 7,99338 0,00220 0,00220.

(28) donde se evidencia que la sucesión efectivamente tiende a la solución óptima (x1 = 0, x2 = 8, x3 = 0).. 2 8.

(29) 4. 4.1.. Marco Teórico Propuesta inicial en región factible de dimensión 2 con proyecciones. Como se mencionó en la sección anterior, los métodos de punto interior parten de un punto inicial al interior de la región factible, y crean una sucesión que sigue en el interior de esta acercándose a la solución óptima. Siguiendo estas condiciones se pretende crear un método de punto interior basado en la idea de ‹ selección natural› , es decir, se partirá de un punto interior arbitrario, se probarán varias posibilidades, se escogerá la ‹ mejor› de ellas en algún sentido y se repetirá el proceso hasta crear una recurrencia que nos lleve a la solución óptima. Para ilustrar mejor la idea se retoma el ejemplo 9 el. 8. Figura 1: Región factible. cual esta en R3 y permite una descripción gráfica de la idea que se pretende llevar a cabo. La región factible dada por la igualdad x1 + x2 + x3 = 8 se muestra en la figura 1. En un primer paso, se escoge un punto interior arbitrario dentro de la región factible, en este caso, y siguiendo el ejemplo 9 se toma el punto 2 P (0) = 2 4 como se observa en la figura 2, el superı́ndice (0) indica el contador de la sucesión generada por el método. Inicialmente, se escogen cuatro direcciones distribuidas de manera uniforme desde el punto inicial sobre la región factible, dichas direcciones se construyen de la siguiente manera; se toman dos puntos adicionales sobre la región factible (preferiblemente dos vértices, ya que como 29.

(30) Figura 2: Punto inicial se sabe la solución de un problema de programación lineal es alguno de ellos), para este ejemplo, los puntos serán P aux1(0), P aux2(0) como se observa en la figura 3 los cuales indican puntos auxiliares que permiten generar dos direcciones desde el punto P (0) hasta cada uno de ellos. Definidos estos tres puntos, se generan dos vectores sobre la región (ver figura 4), los cuales serán llamados u(0) y v(0) donde u(0) = P aux1(0) − P (0) y. v(0) = P aux2(0) − P (0). A partir de estos dos vectores se formarán dos nuevos vectores ortogonales entre ellos, los cuales generan el mismo sub-espacio que los vectores {u(0), v(0)}, para esto se toman los vectores Proyv(0) (u(0)), u(0) − Proyv(0) (u(0)) 3 0.

(31) Figura 3: Puntos auxiliares gráficamente esto se puede observar en la figura 5. Estos vectores se toman partiendo del punto inicial P (0) como se ve en la figura 6, tal que gen{{u(0), v(0)}} = gen{Proyv(0) (u(0)), u(0) − Proyv(0) (u(0))} con el fin de estandarizar la magnitud de las direcciones, se normalizan estos vectores y a su vez se generan dos vectores adicionales (tomando los sentidos contrarios de estos vectores normalizados), as´ıdichos vectores forman las cuatro direcciones distribuidas uniformemente que se estaban buscando, las. 31.

(32) Figura 4: Vectores u(0) y v(0) cuales llamaremos Proyv(0) (u(0)). (0). d1 =. "Proyv(0) (u(0))" u(0) − Proyv(0) (u(0)). (0). d2 =. "u(0) − Proy. (0). d3 = − (0). d4 = −. (0) v(0) (u )". (28). (0). Proyv(0) (u. ). "Proy (0) (u(0))" v u(0) − Proyv(0) (u(0)) "u(0) − Proy. v(0). (u(0))". Sea M (0) el máximo valor que podemos ‹ mover› en una variable desde el punto inicial P (0) para no perder las condiciones de no negatividad de cada una de las variables, en este caso, dado que 32.

(33) P. (0). 2 = 2 4. 33.

(34) Figura 5: Vectores ortogonales el valor. M. (i ). , , (i) (i) (i) = mı́n .P . , .P . , .P . 1. donde P (i). 2. 3. P1(i) = P2(i) (i) P3. con lo cual M (0) = 2. Se define α un parámetro ‹ suavizador› del método el cual cumple 0 < α ≤ 1, para este ejemplo se tomará α = 0,5, con lo anterior, se generan los siguientes cuatro puntos posibles para ser el siguiente termino de la sucesión. 34.

(35) Figura 6: Vectores ortogonales P (1). P os(1) = P (0) + αM (0)d(0) 1. 1. P os2(1) = P (0) + αM (0)d2(0) P os(1) = P (0) + αM (0)d(0) 3 (1). P os. 4. (29). 3 (0). = P (0) + αM (0)d. 4. que geométricamente se muestra en la figura 8, los puntos serán evaluados en la función Z con el fin de escoger quien será P (1) , esto dependerá del valor que tome Z en cada uno de ellos, si el problema de programación lineal es maximizar se escogerá el punto que genere el mayor valor de la función Z, en el caso contrario, es decir un problema de minimizar se escoge el punto que genere el menor valor de Z. Finalmente, se itera el proceso fijando las direcciones ya encontradas a fin . Σ de generar una sucesión recurrente P (i) definida de la siguiente manera i∈N P os(i) = P (i−1) + αM (i−1)d(0) 35. (30).

(36) j. j. 36.

(37) Figura 7: Direcciones con i ∈ {1, 2, 3, ...} y j = 1, 2, 3, 4 donde P (i) = P os(ji) ,. Si. Z(P os(ji) ) = máx. k=1,2,3,4. 37. ,. Z(P os(ki) ). , (31).

(38) Figura 8: Puntos opcionados 4.1.1.. Ejemplo Ilustrativo. En el siguiente ejemplo se describe el funcionamiento de la idea presentada en la sección anterior. Considerando el ejemplo 9 se define un punto inicial dentro de la región factible, para este ejemplo, el punto será (0). 2 2P = 4. Siguiendo con el método aquı́ propuesto, se definen dos puntos auxiliares. 3 8.

(39) (preferiblemente vértices de la región), ası́ (0). 0 0P aux1 8 =. (0). 0 8P aux2 0 =. (32). Con estos tres puntos, se construyen dos vectores que permitirán, en una instancia posterior, encontrar las cuatro direcciones de búsqueda, estos vectores son. (0). −2 −2u 4 =. (0). −2 6v = −4. (33). A partir de estos vectores, se generan dos vectores adicionales los cuales son ortogonales entre ellos; a efectos del ejemplo aqu´ı presentado, son Proyv(0) (u. (0). 0,857142857 − 2,571428571 1,714285714. )=. y (0). (0). −2,86. 0,57u − Proy 2,29(u )= Con lo anterior, las cuatro direcciones distribuidas de manera uniforme (0)v serán. 39.

(40) 0, 267261242 d1(0) = − 0, 801783726 0, 534522484 − 0, 77151675 0, 15430335 0, 6172134. d2(0) =. −0, 267261242. (0). d3 = d4(0). (34). 0, 801783726 −0, 534522484. 0, 77151675 = −0, 15430335 −0, 6172134. Al tomar M (0) = 2 y α = 0,5 (como se propuso en la sección anterior), se generan los siguientes cuatro puntos posibles para ser el siguiente termino de la sucesion, es decir P (1) 2, 267261242 P os1(1) = 1, 198216274 4, 534522484 1, 22848325 P os2(1) = 2, 15430335 4, 6172134 (1). P os3 =. 1, 732738758 2, 801783726 3, 465477516. 2, 77151675 1, 84569665 P os(1) = 4 3, 3827866 evaluando la función Z en los anteriores puntos posibles se obtiene. 4 0. (35).

(41) . Z .. P os(1) 1. Σ Σ. = 4, 66369379. Z P os(1) = 5, 53708995 2 . Σ Z P os(1) = 7, 33630621 3. (36). . Σ Z P os(1) = 6, 46291005 4 dado que el problema es de maximización y el valor máximo de Z es (i) es encontrado en P os(1) 3 , se tiene que el segundo termino de la sucesión P 1, 732738758. (1). P (1) = P os3 =. 2, 801783726 3, 465477516. ahora se reitera este proceso. Para conseguir el tercer termino de la sucesión son fijadas las direcciones iniciales y el valor α, sin embargo las demás variables cambian, en ese caso son M (1) = 1, 732738758 1, 964285714 P os1(2) = 2, 107142857 3, 928571429 1, 064320271 P os2(2) = 2, 935467423 4, 000212306 P os3(2) =. 1, 501191802 3, 496424594 3, 002383604. P os4(2) =. 2, 401157246 2, 668100028 2, 930742726. 41. (37).

(42) . Z .. P os(2) 1. Σ Σ. = 6, 178571429. Z P os(2) = 6, 935255117 2 . Σ Z P os(2) = 8, 494040991 3. (38). . Σ Z P os4(2) = 7, 737357302 siguiendo este proceso se tiene 1, 501191802 3, 496424594P = 3, 002383604 (2). A continuación se muestran algunas iteraciones del método y se observa la convergencia hacia la solución óptima del problema de programación lineal.. p(0). 2 1,7327 (1) = 2 , p = 2,8017 4. p(3) =. 1,3005 4,0982. 3,4654 p(10) =. 2,6011 p(20) =. 0,1135 7,6594. p(2) =. 0,4764 6,5705. 3,0023 p(15) =. 0,9529 p(21) =. 0,0983 7,7049. 1,5011 3,4964. 0,2325 7,3022 0,4651. p(25) =. 0,0554 7,8337. 0,2270. 0,1967. 0,1108. 0,0270. 0,0234. 0,0046. p(30) = 7,9188 0,0540. p(31) = 7,9297 0,0468. p(40) = 7,9806 0,0128. Con lo anterior se observa claramente la convergencia hacia la solución óptima (x1 = 0, x2 = 8, x3 = 0). 42.

(43) 4.2.. Propuesta final. Lastimosamente la propuesta anterior no es muy útil al momento de generalizar ya que es necesario conocer los vértices de la región factible para. 43.

(44) hallar las direcciones en las cuales se puede “mover” el punto inicial, sin embargo, en esta sección se presenta un algoritmo alterno para hallar dichas direcciones. Consideremos el problema de programación lineal en su forma aumentada M ax/M in Z = ctx Sujeto a: Ax = b x≥0. (39). Denotando la región factible d por R, es decir, R = {x = (x1, x2, ..., xn) ∈ Rn|Ax = b, xi ≥ 0}. (40). Para cualquier punto interior a R, es decir, sea p ∈ Int(R) se define el conjunto Rp por Rp = {r − p ∈ Rn|r ∈ R} (41) el cual es una traslación de la región factible R de tal manera que la nueva región trasladada Rp pase por el origen(en el caso n = 3 se tiene. Rp. Figura 9: Regiones R y Rp Como una observación importante para nuestros propósitos es que si x ∈ Rp entonces Ax = 0, esto se debe a que si x ∈ Rp existe un r ∈ R talque 44.

(45) x = r − p con lo cual Ax = A(r − p) = Ar − Ap = b − b = 0. (42). es decir que Rp ⊂ NA.. Figura 10: Rp ⊂ NA En particular, para cada vector u̇ ∈ R con punto inicial p ∈ R, es decir, u̇ = r − p para algún r ∈ R, además u̇ se puede escribir como u̇ = (r − p)−0 y ası́ u̇ ∈ Rp con punto inicial el origen y como ya se menciono Rp ⊂ NA , entonces u̇ ∈ NA. 45.

(46) Figura 11: u̇ ∈ Rp ⊂ NA De esta forma las direcciones en las cuales me puedo mover dentro de la región factible R coinciden con los vectores contenidos en NA , de lo cual se puede hallar una base = βB1, ...,{ βl ortonormal de NA donde l es la nulidad } de A, es decir, l = ν(A).. Figura 12: Base ortonormal de NA y siguiendo las mismas ideas de la sección 4.1 primera propuesta se forma. 46.

(47) el conjunto Dir = {d1, d2, ..., d2l} de 2l direcciones equidistribuidas sobre NA dadas por βi. si. i = 1, 2, ..., l. βi−l. si i = l + 1, ..., 2l. di =. (43). de esta manera se encuentran las direcciones sobre las cuales nos podemos mover en R.. Figura 13: Direcciones sobreR De aquı́ en adelante procedemos de manera análoga a la propuesta hecha en la sección 4.1. 4.2.1.. Algoritmo. El método propuesto sigue los siguientes pasos Paso 0 Se define un suavizador 0 < α 1≤ y un valor T ol que se denomina la tolerancia al cero, es decir, si un valor es menor a T ol se considerará como 0. Paso 1 Escoge un punto de prueba inicial p en el interior de la región fac- tible, es decir, p ∈ Int(R) para iniciar el proceso iterativo. 47.

(48) Paso 2 Se halla la nulidad de A, l = ν(A). Si ν(A) = 0 termina el algoritmo. Si ν(A) > 0 se encuentra una base B = {β1, ..., βl} ortonormal de NA. Paso 3 Se forma la matriz de direcciones equidistribuidas Dir{ = d1, d2, ..., }d2l como se describe en (43). Paso 4 Se define S como el mayor valor en el cual se puede mover desde el punto p para no perder las condiciones de no negatividad, en este caso se toma S = m´ın{p1, p2, ..., pn} donde p = (p1, p2, ..., pn). Paso 5 Por comodidad se forma la matriz Mp una matriz de tamaño n × 2l donde cada columna es el vector p. Paso 6 Se genera la matriz de puntos posibles, en este caso son 2l puntos posibles cada uno de ellos formado como p + α ·S di para cada i = 1, ..., 2l, as´ı Pos = Mp + α · S · Dir · (44) Paso 7 Se evalúa cada posición posible en la función objetivo con el fin de mejorar el valor actual, se forma un vector en el cual están los valores de cada posición posible evaluada en la función objetivo Z VZ = Post · c. (45). Paso 8 Se escoge el valor del vector Vz que mejore el valor de la función objetivo Z. (según sea el caso, el mayor si es un problema de maximización o el menor si es un problema de minimización). Además se nombra por k a la posición en la cual se encontró dicho valor. Paso9 Se renombra p como la k-ésima columna de la matriz Pos, es decir el nuevo punto de prueba. Paso 10 Si p no contiene ceros en sus componentes se vuelve al paso 4. Si p contiene algún cero en sus componentes (o menor a la tolerancia que se definió en el paso 1 para el cero), sea h la posición en la cual se encuentra el primer cero y as´ı ph = 0 entonces se determina que el valor de la solución final de la variable correspondiente a esa posición es cero y se forma un nuevo problema de programación lineal el cual es obtenido eliminando por completo la variable correspondiente a la 4 8.

(49) posición h, para esto se renombra p como el mismo vector omitiendo la posición h, se renombra A como la misma matriz omitiendo la columna h-ésima y análogamente para el vector c después de esto se vuelve al paso 2. El algoritmo anterior desarrollado en Matlab tiene el siguiente código while l>0 B=null(A); [n,l]=size(B); if l==0 break; end Dir=B; for i=1:l Dir(:,l+i)=-B(:,i); end while min(p)>Tol S=min(p); for i=1:2*l Mp(:,i)=p; end Pos=Mp+alpha*S*Dir; Vz=(Pos’*c); if condz==1 [zm,k]=max(Vz); else [zm,k]=min(Vz); end p=Pos(:,k); end [minp,varelim]=min(p); p(varelim,:)=[] c(varelim,:)=[]; A(:,varelim)=[]; B=null(A,’r’); [n,l]=size(B); end 49.

(50) 4.2.2.. Ejemplo ilustrativo tres variables. Considere el siguiente problema de PL M ax Z = x1 + 2x2 Sujeto a: x1 + x2 + x3 = 8 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0.. (46). Paso 0 Se define el parámetro suavizador junto con un nivel de tolerancia α = 0,5 y T ol = 10−5. Paso 1 Se escoge un punto inicial dentro de la región factible, en este caso será 2 2p = 4 Paso 2 Usando el comando null de Matlab se encuentra una base B ortonormal de NA junto con la nulidad, para este caso ν(A) = l = 2 y la base dada en columnas es B= -0.5774 0.7887 -0.2113. -0.5774 -0.2113 0.7887. Paso 3 Se define la matriz Dir = {d1, d2, ..., d2l} as´ı Dir = -0.5774 0.7887 -0.2113. -0.5774 -0.2113 0.7887. 0.5774 -0.7887 0.2113. 0.5774 0.2113 -0.7887. Paso 4 Se define S como S = m´ın{p1, p2, ..., pn} donde p = (p1, p2, ..., pn), para este ejemplo S = m´ın{2, 2, 4}, con lo cual S = 2. 50.

(51) Paso 5 La matriz M p en este caso es de tamaño 3 ×4 cuyas columnas son el punto inicial Mp = 2 2 4. 2 2 4. 2 2 4. 2 2 4. Paso 6 La matriz de puntos posibles (dados en columna) Pos es definida Pos = Mp + α · S · Dir, esta matriz para la primera iteración es Pos = 1.4226 2.7887 3.7887. 1.4226 1.7887 4.7887. 2.5774 1.2113 4.2113. 2.5774 2.2113 3.2113. Paso 7 Se evalúan los puntos posibles en la función objetivo Z y ası́ se forma el vector columna Vz Vz = 7 5 5 7 Paso 8 Se escoge el valor mayor en Vz y la posición en la que es alcanzado ya que el problema es de maximización, en este caso el mayor valor se encontró en el primer vector de los posibles, ası́ el valor k = 1 zm = 7. k= 1 51.

(52) Paso 9 En este caso el nuevo p es el primer vector de los posibles p= 1.4226 2.7887 3.7887 Paso 10 En este caso como p no contiene ceros se vuelve a iterar el algoritmo desde el paso 4, lo cual nos da y nuevo p dado por p= 1.0120 3.3497 3.6384 Después de 43 iteraciones se llega a este nuevo p= 0.0000 4.7575 3.2425 el cual contiene un cero en la primera componente, es decir x1 = 0. Gráficamente se obtuvo lo siguiente. 52.

(53) Figura 14: Primeras 43 iteraciones De esta forma en la solución final del PPL (46) ya se tiene que x1 = 0, ahora se forma un nuevo problema de programación lineal omitiendo dicha variable, lo que nos lleva a M ax Z = 2x2 Sujeto a: x2 + x3 = 8 x2 ≥ 0, x3 ≥ 0.. (47). y se vuelve al paso 2, ahora con punto inicial p= 4.7575 3.2425 Observe que este punto es interior a la región factible del problema (47), se repiten nuevamente todos los pasos, por ejemplo en una primera iteración se obtiene p= 53.

(54) 5.9039 2.0961 y después de 30 iteraciones mas se llega a p= 8.0000 0.0000 el cual contiene un cero en la segunda componente, es decir x3 = 0. Gráficamente se obtuvo lo siguiente. Figura 15: Primeras 30 iteraciones del PPL en x2 y x3 De esta forma en la solución final del PPL (46) se tiene también que x3 = 0, ahora se forma un nuevo problema de programación lineal omitiendo dicha variable, el cual tiene por punto inicial p = 8 y el problema es dado por M ax Z = 2x2 Sujeto a: x2 = 8 x2 ≥ 0.. (48). en este caso el la nulidad es cero y con esto se concluye el algoritmo, as´ı en la solución final de nuestro problema tenemos x1 = x3 = 0 (las cuales 54.

(55) corresponden A las variables eliminadas) y los valores de las demás variables (en este caso únicamente x2 ) están contenidos en el vector p = 8, de esta manera se da por finalizado el algoritmo, obteniendo como solución óptima x = (0, 8, 0) 4.2.3.. Ejemplo ilustrativo siete variables. Considere el siguiente problema de PL M ax Z = 3x1 + 5x2 + 6x3 Sujeto a: 2x1 + x2 + x3 + x4 = 4 x1 + 2x2 + x3 + x5 = 4 x1 + x2 + 2x3 + x6 = 4 x1 + x2 + x3 + x7 = 3 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0, x5 ≥ 0, x6 ≥ 0, x7 ≥ 0.. (49). Iniciando con el punto inicial arbitrario que pertenece al interior de la región factible pt = (0,5, 0,5, 0,5, 2, 2, 2, 1,5) después de 75 iteraciones se llega al punto p= 0.0000 0.2773 1.5440 2.1786 1.9013 0.6346 1.1786 en el cual la primera variable es cero, por lo cual se elimina la variable. 55.

(56) correspondiente, en este caso x1 = 0 y se repite el algoritmo para el PPL M ax Z = 5x2 + 6x3 Sujeto a: x2 + x3 + x4 = 4 2x2 + x3 + x5 = 4 x2 + 2x3 + x6 = 4 x2 + x3 + x7 = 3 x2 ≥ 0, x3 ≥ 0, x4 ≥ 0, x5 ≥ 0, x6 ≥ 0, x7 ≥ 0. con. (50). punto inicial p= 0.2773 1.5440 2.1786 1.9013 0.6346 1.1786 63 iteraciones después se llega al punto p= 0.9775 1.5112 1.5112 0.5337 0.0000 0.5112 en el cual la quinta variable es cero, por lo cual se elimina la variable corres-. 56.

(57) pondiente, en este caso x6 = 0 y se repite el algoritmo para el PPL M ax Z = 5x2 + 6x3 Sujeto a: x2 + x3 + x4 = 4 2x2 + x3 + x5 = 4 x2 + 2x3 = 4 x2 + x3 + x7 = 3 x2 ≥ 0, x3 ≥ 0, x4 ≥ 0, x5 ≥ 0, x7 ≥ 0.. (51). con punthttps://www.overleaf.com/download/project/5c3f6866c5ba726b24604797/build/16cc5 3048eb44c938cb02/output/output.pdf?compileGroup=standardclsiserverid=clsipre-emp-x1xlpopupDownload=trueo inicial p= 0.9775 1.5112 1.5112 0.5337 0.5112 24 iteraciones después se llega al punto p= 1.3333 1.3333 1.3333 0.0000 0.3333 en el cual la cuarta variable es cero, por lo cual se elimina la variable corres-. 57.

(58) pondiente, en este caso x5 = 0 y se repite el algoritmo para el PPL M ax Z = 5x2 + 6x3 Sujeto a: x2 + x3 + x4 = 4 2x2 + x3 = 4 x2 + 2x3 = 4 x2 + x3 + x7 = 3 x2 ≥ 0, x3 ≥ 0, x4 ≥ 0, x7 ≥ 0. con punto inicial p= 1.3333 1.3333 1.3333 0.3333 dado que la matriz A para el problema (52) es A = 1 2 1 1. 1 1 2 1. 1 0 0 0. 0 0 0 1. su nulidad es cero, entonces termina por completo el algoritmo. Ya que las variables eliminadas son x1, x5, x6 el vector p= 1.3333 1.3333 1.3333 0.3333 58. (52).

(59) contiene los valores de las variables que no fueron eliminadas, en este caso x2 = 1,3333, x3 = 1,3333, x4 = 1,3333, x7 = 0,3333, con lo cual la solución óptima del PPL (54) es x1 = 0 x2 = 1,3333 x3 = 1,3333 x4 = 1,3333 x5 = 0 x6 = 0 x7 = 0,3333. 59. (53).

(60) 5.. Aplicaciones. UNION AIRWAYS va a agregar vuelos desde y hacia su aeropuerto base, por lo cual necesita contratar más agentes de servicio a clientes. Sin embargo, no está claro cuántos más debe contratar. la administración reconoce la necesidad de controlar el costo y al mismo tiempo proporcionar de manera permanente un nivel satisfactorio de servicio. Con base en la nueva programación de vuelos, se ha realizado un análisis del número mı́nimo de agentes de servicio al cliente que deben encontrarse de guardia en diferentes momentos del d´ıapara proporcionar un nivel satisfactorio de servicio, a continuación se muestran las necesidades mı́nimas de la empresa. El problema consiste en determinar cuántos agentes deben Periodo T1 T2 T3 T4 T5 Agentes 6 a.m.-8 a.m. x 48 8 a.m.-10 a.m. x x 79 10 a.m.-12 a.m. x x 65 12 a.m.-2 p.m. x x x 87 2 p.m.-4 p.m. x x 64 4 p.m.-6 p.m. x x 73 6 p.m.-8 p.m. x x 82 8 p.m.-10 p.m. x 43 10 p.m.-12 p.m. x x 64 12 p.m.-6 a.m. x 15 Costo Diario Por Agente 170 160 175 185 195 Cuadro 1: Caption asignarse a los turnos respectivos cada d´ıa para minimizar el costo total de personal debido a los agentes. Como el objetivo es minimizar el costo total de los agentes asignados a los cinco turnos, los coeficientes de la función objetivo vienes dados por el Costo diario por agente. El PPL será representado de la siguiente manera.. 6 0.

(61) M ax Z = 170x1 + 160x2 + 175x3 + 180x4 + 195x5 Sujeto a: x1 − x6 = 48 x1 + x2 − x7 = 79 x1 + x2 − x8 = 65 x1 + x2 + x3 − x9 = 87 x2 + x3 − x10 = 64 x3 + x4 − x11 = 73 x3 + x3 − x12 = 82 x4 − x13 = 43 x4 + x5 − x14 = 52 x5 − x15 = 15 x1,2,...,15 ≥ 0.. (54). Utilizando el método aquı́ presentado, la solución al problema de UNION AIRWAYS será p= 48.0000 31.0000 39.0000 43.0000 15.0000 14.0000 31.0000 6.0000 9.0000 6.0000 Donde la solución óptima del PPL (54) es x1 x2 x3 x4. = 48 = 31 = 39 = 43 61. (55).

(62) A continuación se presenta toda la descripción detallada del método propuesto descrito en el Software MatLab clc; clear all; Propuesta Final Ejemplo UNION AIRWAYS Tomado de "Investigación de Operaciones" autor hillier lieberman sea el problema Max/Z=C^t.X en un vector columna se introducen las constantes de la funcion objetivo Z c=[170;160;175;180;195;0;0;0;0;0;0;0;0;0;0]; Se introduce la matriz A que contiene las constantes de las restricciones A=zeros(10,15); A(1,1)=1; A(2,1)=1; A(2,2)=1; A(3,1)=1; A(3,2)=1; A(4,1)=1; A(4,2)=1; A(4,3)=1; A(5,2)=1; A(5,3)=1; A(6,3)=1; A(6,4)=1; A(7,3)=1; A(7,4)=1; A(8,4)=1; A(9,4)=1; A(9,5)=1; A(10,5)=1; for i=1:10 A(i,i+5)=-1; end; se introduce el vector b de terminos independientes en columna ej b=[xx;xx;xx;xx] b=[48;79;65;87;64;73;82;43;52;15]; aqui se muestran n el numero de variables y m el numero de restricciones [m,n] = size(A); 62.

(63) hasta aqui se introduce la forma aumentada del PPL. si el problema es de max condz=1 y si es minimizar condz=0 condz=0; cont=0; [Paso 0] definir el suavizador 0<alpha<=1 alpha=0.5; [Paso 0] Definir el valor Tol que es tolerancia al cero, es decir si un numero es menor a Tol lo consideramos como cero. Tol=10^(-5); [Paso 1] Escoger un punto inicial p en columna interior a la region factible p=[50;50;50;50;20;2;21;35;63;36;27;18;7;18;5];. definimos l=1 para que podamos empezar en paso 2 unicamente por programacion l=1; var = sym(’x’, [1 n]); while l>0 [Paso 2] Se Halla la nulidad y el nucleo de A [Paso 2a] En este caso se halla el nucleo de A de la forma estandar, para matlab es conocido como null racional y se denota como null(A,’r’) la matriz NA guarda una base del nucleo en sus columnas NA=null(A); se llama n al numero de incogitas (ya estaba dado en el tama?o de A) se llama l a la nulidad de A que es el numero de columnas [n,l]=size(NA); este es el condicional del paso 2, es decir si l=0 termina el programa if l==0 break; end si l>0 debe continua en el while [Paso 2b] Encontrar una base ortonormal del nucleo de A para esto aplicamos Gram-schimit a la matriz NA, GS es la funcion que realiza el proceso de gram schmit [Paso 2c]la matriz B tiene la base ortonormal de NA por columnas B=NA; 53.

(64) [Paso 3] Se forma la matriz que contiene las direcciones DIR Dir=B; for i=1:l Dir(:,l+i)=-B(:,i); end while min(p)>Tol [Paso 4] Definir S el minimo del vector p S=min(p); cont=cont+1;. [Paso 5] formar la matriz MP que contiene 2l copias de p en columna solo por programacion redefino el tama?o de Mp Mp=zeros(n,2*l); for i=1:2*l Mp(:,i)=p; end [Paso 6] Se genera la matriz Pos de puntos posibles Pos=Mp+alpha*S*Dir; [Paso 7] Evaluar los puntos posibles en Vz=(Pos)^t *c Vz=(Pos’*c); [Paso 8] si condz=1 en zm se guarda el valos maximo de z el las posiciones posib y en k se guarda la posicion donde es alcanzado el maximo si condz=0 se guarda el valos minimo de z el las posiciones posibles y en k se guarda la posicion donde es alcanzado el minimo if condz==1 [zm,k]=max(Vz); else [zm,k]=min(Vz); end [Paso 9] Se renombra p como la k esima columna de Pos p=Pos(:,k); 54.

(65) [Paso 10a] verficar si p contiene ceros, si el minimo de p es mayor que Tol, no contiene ceros esto se verifica con el while de el paso 4 end [Paso 10b] Aqui sigue si se sale del while, es decir cuando el min(p)<Tol lo que significa que ya encontramos una varible que se hace cero que esta precisamente en la posicion k de p aqui simplemente se llama varelim a la variable a eliminar y se elimina del vector var para saber exactamente quienes se eliminan [minp,varelim]=min(p); var(:,varelim)=[]; cont name1 = ’Las variables que sobreviven son ’; Y = [name1]; disp(Y) var [Paso 10c] elimino la variable del vector p p(varelim,:)=[] [Paso 10d] elimino la variable del vector c c(varelim,:)=[]; [Paso 10e] elimino la variable de la matriz A. A(:,varelim)=[]; NA=null(A,’r’); [n,l]=size(NA);. end cont. 55.

(66) 6.. Conclusiones. Los conceptos matemáticos utilizados para generar este nuevo método de punto interior requieren elementos básicos en álgebra lineal y programación lineal, esto ofrece una ventaja en términos de facilidad pedagógica y brinda una herramienta con la cual se puede introducir a los métodos de punto interior. Se presentan dos ejemplos ilustrativos en los cuales el método basado en direcciones encuentra la solución óptima al problema, no obstante, se reconoce los problemas asociados a la elección del punto de partida del algoritmo o punto inicial, ya que no se garantiza la convergencia del método a la solución óptima, pues si bien es cierto que dicho punto tiene que estar dentro de la región factible, de la elección de este dependerá que el algoritmo busque la convergencia a la solución del problema. Con lo anterior, la elección del punto inicial en este método justifica una investigación posterior con el fin de atacar dicho problema, sin embargo la literatura ofrece mecanismos en los cuales esta elección se define buscando un punto equidistante a las fronteras de la región factible o simplemente un valor arbitrario cercano a la solución del problema. Mediante los mismos principios utilizados en esta propuesta para la creación de este nuevo método, la posibilidad de generar algoritmos alternos de punto interior radica en establecer mas direcciones de las aqu´ı planteadas, esto con el fin de mejorar (si es posible) la convergencia a las soluciones de los problemas estándar de programación lineal. Para finalizar, el ejemplo ilustrativo de siete variables presentado en la sección anterior tiene un tiempo de ejecución menor usando el método aquı́ presentado en comparación al método SIMPLEX, los tiempos determinados mediante los métodos mecionados se muestran en las siguientes tablas.. Figura 16: Tiempo Algoritmo Propuesto. 56.

(67) Figura 17: Tiempo Simplex Como ya fue mencionado, se observa una mayor eficiencia en tiempos computacionales a la hora de buscar la solución a un PPL, los tiempos ejecutados se definieron mediante el comando ”linprog”del Software MATLAB, a continuación se presenta el comando utilizado A=[2,1,1,1,0,0,0;1,2,1,0,1,0,0;1,1,2,0,0,1,0;1,1,1,0,0,0,1]; b=[4;4;4;3]; c=[3;5;6;0;0;0;0]; format short; options = optimset(’LargeScale’,’off’,’Simplex’,’on’); [X,FVAL,EXITFLAG,OUTPUT]=linprog(c,[],[],A,b,zeros(size(c)),[],[],options) X.. 57.

(68) Anexo - Revisión de literatura On Interior Point Methods and Simplex Method in linear Programming 1. Autores del artı́culo: Zsuzssanna Szabó, Márta Kovács 2. Fecha de publicación del artı́culo: 2003 3. Objetivo del artı́culo: Presenta el uso de métodos computacionales numéricos para la solución de problemas de programación lineal y compara la eficiencia de estos métodos frente al método SIMPLEX. 4. Análisis crı́tico del artı́culo MODELO PRESENTADO EL ARTÍCULO. EN. MODELO PROPUESTO EN ESTE TRABAJO DE INVESTIGACIÓN En [14] los autores realizan una revi- En el trabajo aqu´ı presentado se sión histórica referente a los métodos realiza detalladamente la explicade punto interior y al método Simplex, ción del algoritmo propuesto por manifestando que el surgimiento de los Karmarkar desde el punto de vismétodos computacionales proviene de ta matricial junto con un ejemla ineficiencia del procedimiento SIM- plo ilustrativo, lo anterior tenienPLEX a la hora de encontrar soluciones do en cuenta dos consideraciones: cuando los problemas de programación lineal son de gran magnitud.. 58.

(69) Se realiza una breve descripción del método del elipsoide, entre otros, y se compara la eficiencia de éstos con el método SIMPLEX. Finalmente, se hace una explicación del método de Karmarkar junto con el algoritmo all´ı usado y su implementación para un PPL estándar.. En el trabajo aqu´ı presentado se realiza detalladamente la explicación del algoritmo propuesto por Karmarkar desde el punto de vista matricial junto con un ejemplo ilustrativo, lo anterior teniendo en cuenta dos consideraciones: En primer lugar la dificultad de encontrar en la literatura la explicación detallada del algoritmo de karmarkar (escala af´ın) impacta en el desarrollo de trabajos futuros basados en estos métodos, pues muchas veces las explicaciones carecen de orden. En segunda instancia, los movimientos definidos en el Método de Karmarkar a la hora de establecer el nuevo punto de partida para la siguiente iteración, se explican en el art´ıculo mencionado y se definen de manera similar en la investigación aquı́ presentada.. 5. Dirección (URL): https://www.emis.de/journals/ASUO/mathematics/ pdf6/155_162_ZSzabo_MKovacs.pdf. 59.

(70) Interior – point methods for linear optimization based on a kernel function with a trigonometric barrier term 1. Autores del artı́culo: M. El Ghami, Z. A. Guennoun, S. Bouali, T. Steihaug 2. Fecha de publicación del artı́culo: 2012 3. Objetivo del artı́culo: Estudiar y Analizar una función kernel con el fin de establecer que los métodos de punto interior basados en este tipo de funciones ofrecen mejores resultados en términos de eficiencia, lo anterior, a la hora de encontrar soluciones a problemas primal-dual de programación lineal. 4. Análisis crı́tico del artı́culo MODELO PRESENTADO EL ARTÍCULO. EN. Los autores presentan en [2] un método de punto interior primal-dual basado en una función llamada “function Kernel” la cual contiene una barrera trigonométrica que permite encontrar de manera más eficiente la solución a un problema de programación lineal. Dicha función es dada por ψ(t) =. t2 − 1 2. Donde h(t) =. +. 6 π. tan (h(t)). π(1 − t). 4t + 2 es llamada Función Kernel.. 60. MODELO PROPUESTO EN ESTE TRABAJO DE INVESTIGACIÓN La necesidad de buscar métodos de punto interior que mejoren los tiempos computacionales a la hora de encontrar soluciones a problemas de programación lineal, genera investigaciones las cuales centran su atención en este objetivo. De forma distinta se buscó, al igual que en articulo en mención, modificar los parámetros de un punto inicial por medio de direcciones generando un método iterativo, sin embargo a diferencia del artı́culo, la investigación aquı́.

(71) Partiendo de un análisis matemático complejo basado en la función definida anteriormente se muestra un algoritmo que permite encontrar eficientemente direcciones en las cuales se modifican los valores originales creando un método iterativo el cual llevará a soluciones tanto de problemas primales como duales. El gran aporte de este articulo es el estudio del tipo de convergencia del método propuesto con dicho fun- ción ”kernel a que muestran que es 3 O(n 4 log ns ) para saltos grandes y es 1 O(n 2 log n ) para saltos pequeños.. presentada no estudia la convergencia del método, no obstante pueden ser estudiadas las técnicas all´ı presentadas sobre el algoritmo propuesto en este trabajo para un estudio posterior de la convergencia, lo cual de antemano se advierte que puede no ser sencillo.. 2. s. 5. Dirección (URL): https://ac.els-cdn.com/S0377042711002937/1-s2. 0-S0377042711002937-main.pdf?_tid=e29d2628-0004-4486-b53c-68acfb7bf048& acdnat=1544225710_cfc4f0064e4f5fc6093ca8ddaad94898. 61.

(72) Interior-Point Methods 1. Autores del artı́culo: Florian A. Porta, Stephen J. Wright 2. Fecha de publicación del artı́culo: 2000 3. Objetivo del artı́culo: Realizar una revisión literaria acerca de los diferentes métodos de punto interior utilizados principalmente en programación lineal, programación cuadrática convexa, programación semi-definida y programación convexa. 4. Análisis crı́tico del artı́culo MODELO PRESENTADO EL ARTÍCULO. EN. En [3] se presenta una revisión de algunos métodos de punto interior en diferentes ramas de programación. Se señalan desarrollos importantes a la hora de la construcción de métodos de punto interior y se dimensiona la capacidad que tienen estos métodos para enfrentar problemas bajo escenarios lineales, no lineales y convexos. Se reconoce la capacidad que tiene el método simplex frente a los métodos de punto interior. No obstante, es necesario definir la falta de rigurosidad teórica a la hora de comparar los diferentes métodos frente al SIMPLEX.. MODELO PROPUESTO EN ESTE TRABAJO DE INVESTIGACIÓN Gracias a este art´ıculo se pudo analizar diferentes métodos de punto interior, realizar una revisión bibliográfica breve y ver que la mayorı́a de estos métodos se comparan con el método simplex. En la investigación aquı́ presentada se muestra un nuevo método de punto interior para resolver problemas de programación lineal.. 5. Dirección (URL): https://www.sciencedirect.com/science/article/ pii/S0377042700004337. 62.

(73) A new algorithm for solving linear programming problems 1. Autores del artı́culo: A. L. Ramı́rez, O. Buitrago, R. A. Britto, A. Fedossova 2. Fecha de publicación del artı́culo: 2012 3. Objetivo del artı́culo: Desarrollar un nuevo método de punto interior para la solución de problemas de programación lineal. 4. Análisis crı́tico del artı́culo MODELO PRESENTADO EL ARTÍCULO. EN. En [11] presentan un nuevo método de punto interior para buscar la solución a problemas de programación lineal. El desarrollo de éste método se centra en proyecciones ortogonales basadas en rectas paramétricas y movimientos iterativos al interior de la región factible.. 63. MODELO PROPUESTO EN ESTE TRABAJO DE INVESTIGACIÓN El método propuesto en la presente investigación tiene similitudes interesantes con respecto al mostrado en el art´ıculo, sin embargo se ve una ventaja enorme en este trabajo ya que se da de manera explicita una forma de tener una base ortonormal dentro de la región factible a fin de considerar las direcciones de búsqueda, cosa que los autores de .A new algorithm for solving linear programming problems”no consideran..

(74) A pesar de las similitudes también se presentan diferencias significativas en los tamaños de los saltos as´ı como la doble iteración necesaria en el método aquı́ presentado para ”bajar”la dimensión del problema de programación lineal, esto permite trabajar con problemas de magnitud extensa, considerando esto una ventaja significativa del método aquı́ propuesto frente al mencionado en el art´ıculo. Cabe mencionar que la investigación aquı́ presentada se realizó de manera independiente del art´ıculo en mención, sin embargo se puede ver como una continuación y generalización del mostrado en el art´ıculo. 5. Dirección (URL): https://revistas.unal.edu.co/index.php/ingeinv/ article/view/31949/34561. 64.

(75) Interior Point Methods 25 Years Later 1. Autores del artı́culo: Jacek Gondzio 2. Fecha de publicación del artı́culo: 2011 3. Objetivo del artı́culo: Presentar una revisión de los métodos de punto interior desde el punto de vista formal con la finalidad de comprender el funcionamiento de los mismos y su veracidad. 4. Análisis crı́tico del artı́culo MODELO PRESENTADO EL ARTÍCULO. EN. En [4] se realiza una revisión de los métodos de punto interior de manera general junto con un análisis matemático a fin de demostrar la capacidad que tienen estos métodos a la hora de encontrar soluciones. En primera instancia se realiza una descripción general del funcionamiento de estos métodos, seguidos de algunos resultados desde un análisis matemático.. 65. MODELO PROPUESTO EN ESTE TRABAJO DE INVESTIGACIÓN El modelo aqu´ı presentado parte de herramientas y conceptos de álgebra lineal, algunos de ellos como, Kernel, vectores ortonormales, proyecciones ortogonales, base, entre otros, estos preliminares son el punto de partida para la creación del nuevo método de punto interior aqu´ı propuesto,.

(76) La importancia de las herramientas ofrecidas por el álgebra lineal es importante a la hora de desarrollar métodos que permitan encontrar soluciones de programación lineal y no lineal, es por esto que aqu´ı se realiza un profundo análisis del álgebra lineal como herramienta que permite desarrollar métodos de punto interior. Por último, se replantean los métodos de punto interior desde un punto de vista matricial con la finalidad de resolver problemas con magnitud muy extensa.. las soluciones ofrecidas por este método son establecidas para problemas primales (lineales) y como consecuencia de esto se abre un espacio de discusión y de investigación para futuros proyectos encaminados en esta dirección.. 5. Dirección (URL): https://www.sciencedirect.com/science/article/ abs/pii/S0377221711008204 https://www.maths.ed.ac.uk/~gondzio/reports/ipmXXV.pdf. 66.

(77) A new polynomial-time algorithm for linear programming 1. Autores del artı́culo: N. Karmarkar 2. Fecha de publicación del artı́culo: 1984 3. Objetivo del artı́culo: Presentar un algoritmo de tiempo polinomial para la búsqueda soluciones de problemas de programación lineal. 4. Análisis crı́tico del artı́culo MODELO PRESENTADO EL ARTÍCULO. EN. Se desarrolla un método de tiempo polinomial que permite encontrar la solución a problemas de programación lineal partiendo de un punto interno sobre la región de un conjunto compacto, el algoritmo consiste en repetir de manera sistemática una serie de pasos los cuales crean una sucesión la cual converge a la solución del problema. El algoritmo parte de una transformación lineal aplicada sobre el problema original, con la finalidad de definir el “nuevo” punto inicial, de esta forma los puntos que surgen en la región factible transformada generan proyecciones sobre la región factible original, de esta forma se define la sucesión buscada.. MODELO PROPUESTO EN ESTE TRABAJO DE INVESTIGACIÓN El método propuesto en esta investigación se basa en las brillantes ideas del algoritmo original desarrollado por Karmarkar (1984), se define una secuencia de puntos la cual converge a la solución del problema, esto permite plantear una manera alterna para encontrar la solución óptima a un PPL, en este trabajo se presenta un ejemplo detallado del algoritmo de Karmarkar con escala af´ın dado que en la literatura se encuentra la descripción del algoritmo pero no se muestra un ejemplo detallado paso a paso.. 5. Dirección (URL): https://www.stat.uchicago.edu/~lekheng/courses/ 302/classics/karmarkar.pdf 67.

(78) Referencias [1] Cormen, T. H., Leiserson, C. E., Rivest, R. L., and Stein, C. Introduction to algorithms second edition, 2001. [2] El Ghami, M., Guennoun, Z., Bouali, S., and Steihaug, T. Interiorpoint methods for linear optimization based on a kernel fun- ction with a trigonometric barrier term. Journal of Computational and Applied Mathematics 236, 15 (2012), 3613–3623. [3] Florian A.Potra, S. J. W. Interior-point methods. Journal of Computational and Applied Mathematics 124, 1 (2000), 281–302. [4] Gondzio, J. Interior point methods 25 years later. European Journal of Operational Research 218, 3 (2012), 587–601. [5] Hillier, F. Investigación de operaciones. McGraw-Hill Interamericana de España S.L., 2010. [6] Jeroslow, R. G. The simplex algorithm with the pivot rule of maximizing criterion improvement. Discrete Mathematics 4, 4 (1973), 367–377. [7] Karmarkar, N. A new polynomial-time algorithm for linear programming. In Proceedings of the sixteenth annual ACM symposium on Theory of computing (1984), ACM, pp. 302–311. [8] Khachiyan, L. G. Polynomial algorithms in linear programming. USSR Computational Mathematics and Mathematical Physics 20, 1 (1980), 53–72. [9] Klee, V., and Minty, G. J. How good is the simplex algorithm. Tech. rep., DTIC Document, 1970. [10] Kreyszig, E. Introductory functional analysis with applications, vol. 1. wiley New York, 1978.. 68.

(79) [11] Ramı́rez, A., Buitrago, O., Britto, R., and Fedossova, A. A new algorithm for solving linear programming problems. Ingenier´ıa e Investigación 32, 2 (2012), 68–73. [12] Stanley, G. S., and Flores Godoy, J. J. Algebra lineal. McGrawHill., 2012. [13] Sydsaeter, K., and Hammond, P. J. Matemáticas para el análisis económico. Pearson Educación, 1996. [14] Szabó, Z., and Kovács, M. On interior-point methods and simplex method in linear programming. An. St. Univ. Ovidius Constanta 11, 2 (2003), 155–162.. 69.

(80)

Figure

Actualización...

Referencias

Actualización...