UNIVERSIDAD NACIONAL DE TRUJILLO

Documentos relacionados
Tema 3: El Método Simplex. Algoritmo de las Dos Fases.

Tema 3 Optimización lineal. Algoritmo del simplex

Optimización de Problemas de Producción

El método simplex 1. 1 Forma estándar y cambios en el modelo. 2 Definiciones. 3 Puntos extremos y soluciones factibles básicas. 4 El método simplex.

INGENIERÍA DE SISTEMAS INVESTIGACIÓN OPERATIVA

Tema 2 Conjuntos convexos

Algebra lineal y conjuntos convexos

BASES MATEMÁTICAS DEL MÉTODO SIMPLEX (Parte 3)

84 Tema 3. Dualidad. todas las restricciones son del tipo, todas las variables son no negativas.

Repaso del algoritmo SIMPLEX

Dualidad. Dpto. Ingeniería Industrial, Universidad de Chile. 22 de abril de IN3701, Optimización

RESOLUCIÓN DE MODELOS DE PROGRAMACIÓN ENTERA MÉTODOS DE CORTE CORTES DE GOMORY

Formulación del problema de la ruta más corta en programación lineal

Un sistema de ecuaciones diferenciales son aquellas que tienen varias posibilidades para su solución. Estas son:

IN Guía de Problemas Resueltos de Geometría de Programación Lineal v1.0

Conjuntos y funciones convexas

2 Espacios vectoriales

PASO 1: Poner el problema en forma estandar.

7. PROGRAMACION LINEAL

Degeneración y ciclaje. Método de las dos fases CO-3411 (S08) 30/03/

Algunos conceptos que utilizaremos en lo sucesivo son: Sistema de restricciones lineales: conjunto de todas las restricciones.

Elementos Básicos de Análisis Funcional en. Dr. Oldemar Rodríguez Rojas

Tema V: Optimización Lineal

Contenido: Solución algebraica a los problemas de programación lineal con el método simplex.

Espacios vectoriales reales.

Programación Lineal Continua

MMAF: Espacios normados y espacios de Banach

La lección de hoy de febrero de Notación. Solución factible básica

Sistemas de Ecuaciones Lineales y Matrices

Matrices, determinantes y sistemas de ecuaciones lineales

Análisis Post Optimal y Algoritmo de Ramificación y Acotamiento

Programación Lineal. El método simplex

Figura 1: Esquema de las tablas simplex de inicio y general.

Ba s e, d i M e n s i ó n y Mat r i z

Tema 5: Análisis de Sensibilidad y Paramétrico

Programación lineal: Algoritmo del simplex

x, y = x 0 y 0 + x 1 y 1 + x 2 y 2 + x 3 y 3. Es fácil ver que verifica 1. Es simétrica. x, y = y, x para todo x, y R 4.

Cálculo diferencial e integral I. Eleonora Catsigeras

520142: ALGEBRA y ALGEBRA LINEAL

Tema 7: Problemas clásicos de Programación Lineal

Aplicando el Axioma del Supremo

1.Restricciones de Desigualdad 2.Procedimiento algebraico

Con miras a conocer la metodología que se aplica en el Método SIMPLEX, tenemos a continiacion un ejemplo:

Tema 2: Teorema de estructura de los grupos abelianos finitamente generados.

Bases y dimensión. Problemas teóricos. En todos los problemas se supone que V es un espacio vectorial sobre un campo F. p=1

PROGRAMACIÓN LINEAL. Programación Lineal

2. Sistemas de ecuaciones lineales

OPTIMIZACIÓN Y SIMULACIÓN PARA LA EMPRESA. Tema 4 Optimización no Lineal

Apéndice sobre ecuaciones diferenciales lineales

6 Vectores. Dependencia e independencia lineal.

Tema 4 Funciones convexas y optimización convexa

Diagonalización de matrices

Universidad Nacional Autónoma de Nicaragua UNAN-Managua Curso de Investigación de Operaciones

INVESTIGACION DE OPERACIONES:

Espacios Vectoriales

Para hallar, gráficamente, la solución de un problema de Programación Lineal con dos variables, procederemos del siguiente modo:

1. Continuidad. Universidad de Chile Subsucesiones. Ingeniería Matemática

Tema 3: Espacios vectoriales

Espacios vectoriales

Las variedades lineales en un K-espacio vectorial V pueden definirse como sigue a partir de los subespacios de V.

Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación.

: k }, es decir. 2 k. k=0

Semana 09 [1/28] Sucesiones. 29 de abril de Sucesiones

Clase 9 Programación No Lineal

Tema 3. El metodo del Simplex.

Departamento de Matemáticas. ITAM Programación lineal (+ extensiones). Objetivos y panorama del c

Colección de Problemas II. mín Z = 8x 1 + 9x 2 + 7x 3 s. a: x 1 + x 2 + x x 1 + 3x 2 + x x 1 + x 2 x 3 30

Matrices y Sistemas de Ecuaciones lineales

Investigación Operativa I. Programación Lineal. Informática de Gestión

Departamento de Matemáticas

POST-OPTIMIZACIÓN Y SENSIBILIDAD EN PROBLEMAS LINEALES.

Un subconjunto no vacío H de un espacio vectorial V es un subespacio de V si se cumplen las dos reglas de cerradura:

Lo que se hace entonces es introducir variables artificiales ADAPTACIÓN A OTRAS FORMAS DEL MODELO.

1. Funciones Medibles

EJERCICIO 1. Max Z = 6 x x 2 s.r. (1) 4 x x 2 12 (2) 2 x x 2 16 (3) 2 x 1 6 x 1, x 2 0

Breve sobre Kuhn-Tucker

MÉTODOS MATEMÁTICOS DE LA ECONOMÍA

May 4, 2012 CAPÍTULO 5: OPTIMIZACIÓN

CONTENIDO Prefacio CAPITULO 1: Qué es la investigación de operaciones? CAPITULO 2: Introducción a la programación lineal...

0. En la solución inicial estos ratios son 30; 155

CAPITULO 1: PERSPECTIVE GENERAL DE LA

si existe un entorno V de a contenido en A, tal que la diferencia f(x) f(a) no cambia de signo cuando x V :

de la forma ), i =1,..., m, j =1,..., n, o simplemente por (a i j ).

1. Funciones de varias variables

Algoritmos de Planos de Corte

Universidad del Rosario Economía Matemática II Taller 8 - Kuhn Tucker

DUALIDAD EN PROGRAMACION LINEAL

Problemas de VC para EDVC elaborados por C. Mora, Tema 4

Tema 2: Optimización lineal. Ezequiel López Rubio Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga

Universidad Nacional de Colombia Departamento de Matemáticas Álgebra Lineal - Grupo 1 Resumen Unidad n 3

ESPACIOS VECTORIALES

ALGEBRA 1- GRUPO CIENCIAS- TURNO TARDE- Espacios vectoriales

Programación NO Lineal (PNL) Optimización sin restricciones

Podemos pues formular los dos problemas anteriores en términos de matrices.

Clase No. 13: Factorización QR MAT 251. Joaquín Peña (CIMAT) Métodos Numéricos (MAT 251) / 16

Determinantes. Determinante de orden uno. a 11 = a 11 5 = 5

PRÁCTICA 3: MATLAB Y LA FORMA REDUCIDA POR FILAS

José Humberto Serrano Devia Página 1

3. Algoritmos de puntos interiores para. Programación Lineal Introducción CO-5411 (S08) 23/02/

Espacios métricos completos

Transcripción:

UNIVERSIDAD NACIONAL DE TRUJILLO FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS ESCUELA ACADÉMICO PROFESIONAL DE MATEMÁTICAS CONSTRUCCIÓN DE MÉTODOS PARA CALCULAR UNA SOLUCIÓN INICIAL PARA EL ALGORITMO DUAL SIMPLEX DE LA PROGRAMACIÓN LINEAL A GRAN ESCALA Trabajo de Tesis Alumna: YESSICA EVELIN ZÁRATE PEDRERA Asesor: Dr. EDMUNDO VERGARA MORENO Trujillo - PERÚ 2014

Jurado Dr. Ulices Zavaleta Calderón Presidente Mg. Nelson Aragonés Salazar Secretario Mg. Manuel Montalvo Bonilla Vocal i

Dedicatoria A mi mamá Isidora Vera Castillo con mucho amor y cariño le dedico todo mi esfuerzo y trabajo puesto para la realización de esta tesis. ii

Agradecimiento Agradezco a Dios ser maravilloso que me dió fuerza y fe para creer lo que me parecía imposible terminar. A mi familia, en especial a mi tío Luis Pedrera Vera y mi madre Isabel Pedrera Vera por todo su apoyo y sus consejos durante el tiempo de mis estudios de pregrado. A mis amigos, sobre todo a Alfredo Jara Grados y Rusbert Calderón Beltrán por las veces que estudiamos juntos, estaré siempre agradecida por sus enseñanzas y su amistad sincera. A mi asesor Dr. Edmundo Vergara Moreno por las horas de estudio y su atención en mi trabajo de tesis. A Sander Contreras Escobar, por su paciencia y ayuda durante los últimos meses de investigación. Sin ustedes no hubiera sido posible culminar esta tesis. Un agradecimiento especial a los investigadores, estudiantes y personal del departamento de matemáticas y a todos mis maestros de la Universidad Nacional de Trujillo por su enseñanza académica. iii

Presentación Señores Miembros del Jurado: En cumplimiento con el reglamento para optar el TÍTU- LO de LICENCIADO EN CIENCIAS MATEMÁTICAS, someto a vuestra consideración el trabajo de tesis titulado: CONSTRUCCIÓN DE MÉTODOS PARA CALCULAR UNA SOLUCIÓN INICIAL PARA EL ALGORITMO DUAL SIMPLEX DE LA PROGRAMACIÓN LINEAL A GRAN ESCALA La Autora. iv

Índice general Jurado Dedicatoria Agradecimiento Presentación Resumen Introducción I II II III VII VIII 1. Preliminares 1 1.1. Modelo de programación lineal...................... 1 1.2. Algunos resultados de análisis convexo................. 2 1.2.1. Conjuntos poliédricos, puntos extremos y direcciones extremas 5 2. Programación lineal 15 2.1. Mejoramiento de una solución básica factible.............. 18 2.2. Optimalidad y no acotamiento...................... 21 2.3. Terminación con una solución óptima.................. 22 2.4. Soluciones óptimas únicas y alternativas................ 22 2.5. El método simplex............................ 24 2.5.1. El método simplex en formato de tableau............ 24 2.5.2. El método simplex para variables acotadas........... 25 3. Método dual simplex 29 3.1. Planteamiento del problema dual.................... 29 3.2. Método dual simplex en formato de tableau.............. 30 v

3.3. Problema general de programación lineal................ 31 3.4. Algoritmo dual simplex para problemas generales........... 33 4. Métodos de inicialización del algoritmo dual simplex 34 4.1. Método de modificación de costos.................... 34 4.2. Método de reducir las infactibilidades o método de Ping-Qi Pan... 35 4.3. Método de minimizar la suma de infactibilidades duales........ 36 4.4. Implementación en matlab........................ 37 4.5. Técnicas para implementar el algoritmo dual simplex......... 53 Conclusiones 54 Bibliografía 56 A. Códigos de programas en matlab 57 vi

Resumen El método simplex es un algoritmo iterativo que, iniciando en una solución básica factible pero no óptima, genera soluciones factibles cada vez mejores hasta conseguir la solución óptima (si esta existe); es decir el método simplex mantiene la factibilidad mientras busca optimalidad. Pero surge la posibilidad de usar otro esquema igualmente iterativo, que como contraparte del simplex, comienza en una solución óptima, pero no factible, y mantiene las condiciones de optimalidad mientras busca factibilidad. Este procedimiento, con el cual se llega a la solución de un problema de programación lineal, se conoce como método dual-simplex y fue desarrollado en 1954 por C.E. Lemke. Para el algoritmo simplex existen procedimientos para obtener una solución básica factible inicial de un conjunto de restricciones, por ejemplo el método de dos fases y el método de penalización. Por otro lado, el algoritmo dual-simplex inicia con una solución básica que cumpla las condiciones de optimalidad, dicha solución se denomina solución dual factible, por tanto; para obtener una solución básica dual factible, en este trabajo se presentan tres métodos, los cuales son: Método de modificación de costos Método de P.Q. Pan Método de la mínima suma de infactibilidades duales. Estos métodos y el algoritmo dual simplex fueron implementados en matlab, para luego resolver algunos pequeños problemas lineales, también se resolvió un problema test obtenido de la librería MIPLIB. Palabras claves: Problema de programación lineal, método simplex, método dual simplex, solución básica factible inicial vii

Introducción La programación matemática es un moderno campo dentro de la matemática aplicada orientado a la modelación de problemas en el ámbito de la toma de decisiones y al diseño de metodologías para resolverlos. En esta clase de problemas, cuyos modelos son denominados programas matemáticos; se trata de seleccionar una mejor alternativa, el conjunto de alternativas se denomina conjunto factible, la calidad de las alternativas es medida por una función llamada objetivo y el adjetivo mejor equivale a un máximo o mínimo según la naturaleza del problema. Una rama de la programación matemática, se llama programación lineal (PL) y estudia modelos de optimización de funciones objetivo y restricciones lineales. Su aplicación práctica se encuentra en casi todas las facetas de los negocios, desde la publicidad hasta la planificación de la producción. Problemas de transporte, distribución, y planificación global de producción son los objetos más comunes del análisis de PL. Esta teoría también se aplica con éxito a problemas de presupuestos de capital, diseño de dietas, conservación de recursos, juegos de estrategia, predicción de crecimiento económico y sistemas de transporte. [1] Todo problema PL consta de una función objetivo que es una función real de n variables y está sujeto a restricciones que definen un conjunto factible el cual se expresa como la intersección de hiperplanos o semiespacios en R n. En particular un problema de programación lineal tiene la siguiente formulación: min f(x) s.a. Ax b x 0 (1) donde f : R n R es una función lineal, A es una matriz m n, llamada matriz de restricciones, b R m, x R n y F = {x R n : Ax b, x 0} se denomina conjunto factible. viii

Para resolver los problemas de PL, fue creado el método simplex, por George Bernard Dantzig, publicado en el verano de 1947. Actualmente, usando computadoras modernas y una implementación sofisticada del método simplex, es fácil resolver programas lineales con más de 5 000 restricciones y 10 000 variables. Aunque se han desarrollado muchas variantes del método simplex y se han propuesto otros nuevos algoritmos competidores, el método simplex sigue sio un medio viable y el más usado para resolver problemas de PL. [3],[7] Sin embargo si (1) es un problema a gran escala, es decir, tiene un gran número de variables n mucho mayor que el número de restricciones m (n m) y se intenta resolver dicho problema usando el método simplex, se presentarían las siguientes dificultades: ˆ El número de columnas de la matriz A serían tantas que dificultarían el almacenamiento de A en la memoria de un computador, hecho por el cual el método simplex no podría buscar una mejor solución, ya que este método trabaja con todas las columnas en cada iteración. ˆ Como el método simplex tiene una complejidad computacional exponencial, entonces el tiempo para resolver un problema con un número de variables muy grande, no sería razonable. Es por ello que para implementar el método simplex se utiliza la versión revisada. El método simplex revisado es un algoritmo que sólo trabaja con las columnas elegidas para formar parte de la base, dejando de lado las columnas que no llegan a estar en la base en ninguna iteración del algortimo Actualmente, problemas de PL a gran escala pueden ser resueltos por un algoritmo de punto interior o dual simplex. El método dual simplex fue desarrollado por C. E. Lemke en 1954, pero no se usó como alternativa del método simplex por casi cuarenta años. [5] Durante la década de los 90 se han hecho grandes progresos en establecer el método dual simplex como un método general para solucionar problemas PL a gran escala [6]. El proceso del método simplex consiste en buscar la condición de optimalidad mantenio la condición de factibilidad; mientras que el método dual simplex hace lo contrario, mantenio la condición de optimalidad, busca una solución que satisfaga la condición de factibilidad. Por tanto, mientras que el algoritmo simplex inicia con una solución factible, el algoritmo dual simplex ix

inicia con una solución que satisfaga la condición de optimalidad. En el algoritmo simplex se cuenta con los métodos clásicos de variables de holgura, penalización y de dos fases para determinar la solución inicial, mientras que para el algoritmo dual simplex estos métodos no pueden ser utilizados. En el presente trabajo se desarrolla algunos métodos que permitan obtener una solución inicial para el algoritmo dual simplex y se muestra que uno de estos métodos es el más eficiente. La presentación de este trabajo está dividido en 4 capítulos, en el primero se presenta los conceptos teóricos fundamentales de la teoría de programación lineal. En el capítulo 2, se presenta el mejoramiento de una solución y los conceptos básicos del método simplex. En el capítulo 3, se plantea el problema dual y se presenta el método dual simplex para problemas generales. Finalmente, en el capítulo 4, se presentan los métodos de inicialización para el algoritmo dual simplex y su implementación en matlab. x

Capítulo 1 Preliminares 1.1. Modelo de programación lineal El objetivo principal de los problemas de optimización es la solución de los problemas del tipo: min f(x) (1.1) s.a : x S R n, donde f es la función objetivo y el conjunto S es definido por las restricciones impuestas sobre el vector de decisión x. El problema (1.1) se lee como: Encontrar (si existe) un elemento de S donde la función objetivo f alcanza su valor mínimo. Un problema de programación lineal se puede formular como: min z = f(x) = c T x (P L) s.a: Ax b x 0, donde: A es un matriz de m n, b R m y x, c R n, Una de las formas para resolver los problemas de programación lineal es usando el método simplex el cual fue diseñado para resolver los problemas lineales en su forma estándar. La forma estándar se obtiene del problema (PL) adicionándole variables de holgura a las restricciones, y es dada por: 1

min (P LE) s.a: z = f(x) = c T x Ax = b x 0, Definición 1.1 Cualquier punto x, que satisface las restricciones del problema (PLE) es una solución factible y al conjunto de soluciones factibles, denotado por S = {x : Ax = b, x 0}, se denomina región factible. Definición 1.2 Una solución óptima del problema (PLE) es aquella o cada una de aquellas soluciones factibles donde la función objetivo alcanza el mínimo. Es decir, x es solución óptima si c T x c T x, x S. Los problemas lineales plantean la búsqueda de una solución factible x, de manera que f(x ) sea el menor posible. Tal búsqueda puede concluir con uno de los siguientes resultados. a. Problema no factible: Cuando S = y en tal caso mín f(x) = +. x S b. Problema no acotado: Cuando existe una solución que haga descer infinitamente a la función objetivo; es decir, cuando para cualquier valor real M siempre existe un x S tal que f(x) < M. En tal caso mín f(x) =. x S c. Problema con valor óptimo: Cuando existe x S tal que f(x ) f(x), x S. En tal caso f(x ) = mín x S ct x, y x es la solución óptima global, sio no necesariamente única en S con esta propiedad. 1.2. Algunos resultados de análisis convexo A partir del planteamiento del problema de programación lineal estudiaremos algunos resultados del análisis convexo, incluyo los conceptos de conjuntos convexos y conjuntos poliédricos. 2

Definición 1.3 Un conjunto no vacío S R n es convexo si y sólo si x, y S se tiene λx + (1 λ)y S, λ [0, 1]. Ejemplo 1.1 El conjunto S = {x R n : Ax b, A m n, b R m } es convexo Definición 1.4 Sea el conjunto no vacío S R n, el punto x R n es combinación convexa de puntos de S si existe un conjunto finito de puntos {x i } m i=1 S tal que m m x = λ i x i donde λ i [0,1], i = 1,..., m y λ i = 1. i=1 i=1 Definición 1.5 Un hiperplano H en R n es una colección de puntos de la forma H = {x R n : p T x = α} donde p es un vector no nulo en R n y α es un escalar. Figura 1.1: Hiperplano H Un hiperplano H define dos semiespacios cerrados de la forma H + = {x R n : p T x α} H = {x R n : p T x α} y dos semiespacios abiertos {x R n : p T x > α} y {x R n : p T x < α} 3

Figura 1.2: Semiespacios H + y H Definición 1.6 Sea S un conjunto no vacío en R n y sea x S, donde S denota la frontera de S. Un hiperplano H = {x R n : p T (x x) = 0} es llamado un hiperplano soporte de S en x si se cumple sólo una de las siguientes condiciones: i. S H +, es decir, p T (x x) 0, x S. ii. S H, es decir, p T (x x) 0, x S. Definición 1.7 Sea S R n no vacío y H un hiperplano soporte de S. Denominaremos puntos soporte a los puntos del conjunto S H. Definición 1.8 Un conjunto no vacío C R n es llamado un cono con vértice cero si para cualquier x C,λx C, λ 0. Si además C es convexo, entonces C es llamado un cono convexo. Observación: Si x C, donde C es cono, entonces la semirecta que contiene al origen y pasa por el punto x debe estar contenida en el cono C. Teorema 1.1 Si L 1, L 2,..., L m R m son linealmente indepientes y L R m es combinación lineal de ellas; es decir, m L = λ i L i i=1 con λ k 0, entonces L 1,..., L k 1, L k+1,..., L m, L son linealmente indepientes Prueba. 1 1 Para su demostración ver [1] 4

1.2.1. Conjuntos poliédricos, puntos extremos y direcciones extremas Conjunto poliédrico Definición 1.9 (Conjunto poliédrico) Un conjunto S en R n es un conjunto poliédrico si S es la intersección de un número finito de semiespacios cerrados; es decir, S = {x R n : p T i x α i i,..., m}, donde p i R n, p i 0, α i R, i = 1,..., m. Observación ˆ Un conjunto poliédrico es un conjunto cerrado y convexo. ˆ Como una ecuación puede representarse por dos inecuaciones, entonces un conjunto poliédrico puede ser representado por un número finito de ecuaciones y/o inecuaciones. Puntos extremos y direcciones extremas Definición 1.10 Sea S R n un conjunto convexo no vacío. Un vector x S es un punto extremo de S si x = λx 1 + (1 λ)x 2 con x 1, x 2 S y λ (0, 1) implica que x = x 1 = x 2 ; es decir, un punto extremo es aquel que no se puede escribir como combinación convexa de dos puntos diferentes de S. Figura 1.3: Se puede observar que x 1 es punto extremo, mientras que x 2 y x 3 no lo son. El concepto de puntos extremos juega un papel muy importante dentro de la programación lineal, debido a que cada punto extremo es una posible solución del problema que se está tratando. 5

Definición 1.11 Sea S R n un conjunto cerrado y convexo. Un vector d R n, distinto de cero, es una dirección de S si para todo x S se tiene que x + λd S, λ 0. Figura 1.4: d es una dirección de S. Observación : Por la definición dada de dirección, el conjunto debe ser no acotado para que tenga al menos una dirección. Definición 1.12 Dos direcciones d 1 y d 2 de S son distintas si d 1 αd 2 para cualquier α > 0. Definición 1.13 Una dirección d de S es una dirección extrema si no se puede escribir como combinación lineal positiva de dos direcciones distintas; es decir, si d = λ 1 d 1 + λ 2 d 2 para λ 1, λ 2 > 0, entonces d 1 = αd 2 para algún α > 0. Figura 1.5: d 1 y d 2 son direcciones extremas de S. 6

Caracterización de puntos extremos y direcciones extremas Teorema 1.2 (Caracterización de puntos extremos) Sea S = {x R n : Ax = b, x 0}, donde A es una matriz de m n con rango m y b R m. Un punto x es un punto extremo de S si y sólo si A puede ser descompuesta en la forma [B N] tal que x = x B x N = B 1 b 0 donde B es una matriz m m invertible tal que B 1 b 0. Prueba. ] Como B 1 b 0, entonces x = por lo tanto x S. [ Ax = B N B 1 b 0 ] B 1 b 0, 0, además = BB 1 b = b, Ahora supongamos que x = λx 1 + (1 λ)x 2, donde x 1, x 2 S y λ 0, 1. Sea x 1 = luego x 11 x 12 y x 2 = B 1 b 0 x 21 x 22, = λ x 11 x 12 + (1 λ) x 21 x 22 ya que x 12 0, x 22 0 y λ > 0, se tiene que x 12 = x 22 = 0. En consecuencia, x 1 = Por otro lado x 11 0 y x 2 = x 21 0., [ B N Ax 1 = b, ] x 11 = b, 0 Bx 11 = b, x 11 = B 1 b. De forma similar x 12 = B 1 b; y con esto se tiene que x = x 1 = x 2, por lo tanto, x es un punto extremo. 7

] x es un punto extremo de S. Se debe probar que A = [B N], B es invertible y x = B 1 b 0 0 En efecto. Por hipótesis x S R n, sin pérdida de generalidad supongamos que x = (x 1,..., x k, 0,..., 0) T, donde x 1,..., x k son positivos con k n. Luego [ A 1 A 2 ] A n x 1. x k 0. 0 Ax = b, = b, A 1 x 1 + A 2 x 2 + + A k x k = b, entonces [ ] A 1 A 2 A k x 1. = b. (1.2) x k Probemos que {A 1, A 2,..., A k } son linealmente indepiente. Supongamos que {A 1, A 2,..., A k } son linealmente depiente; es decir, existen escalares λ 1, λ 2,..., λ k no todos ceros tal que λ 1 A 1 + + λ k A k = 0. Sean λ = (λ 1, λ 2,..., λ k, 0,..., 0) T R n y α > 0, definamos x 1 = x + αλ y x 2 = x αλ, donde α es escogido de tal forma que x 1 0 y x 2 0. Notar que k Ax 1 = Ax + αaλ = b + α λ i A i = b, i=1 8 pues k λ i A i = 0 i=1

y de forma similar, Ax 2 = b. Por lo tanto, x 1, x 2 S y como α > 0 y λ 0, entonces x 1 x 2. Además x = 1 2 x 1 + 1 2 x 2, lo que indica que x no es punto extremo; contradicio así la hipótesis, por lo tanto {A 1, A 2,..., A k } es un conjunto linealmente indepiente. Puesto que ran(a) = m, entonces hay m columnas linealmente indepientes lo que indica que k m. Si k = m, entonces de la ecuación (1.2) se tiene pues B es invertible. [ ] A 1 A 2 A k x 1. x k = b, Bx B = b, x B = B 1 b, Si k < m, entonces se pueden escoger m k de n k columnas tal que ellas, junto con las k primeras columnas forman un conjunto de vectores linealmente indepientes. De este modo podemos formar la matriz B = [A 1... A k A k+1... A m ] invertible. Es decir, A podemos experesar como A = [B N], donde B es una matriz invertible de m m y además x = B 1 b 0, puesto que x i > 0, i = 1,..., k. 0 Corolario 1.2.1 El número de puntos extremos de S es finito. Prueba. 2 Teorema 1.3 (Existencia de puntos extremos) Sea un conjunto poliédrico no vacío de la forma S = {x R n : Ax = b, x 0}, donde A es una matriz de m n con rango m y b R m. Entonces S tiene al menos un punto extremo. Prueba. 3 Teorema 1.4 (Caracterización de direcciones extremas) Sea S = {x R n : Ax = b, x 0} no vacío, donde A es una matriz de m n con rango m y b R m. Un vector d es una dirección extrema de S si y sólo si A 2 Para su demostración ver [2] 3 Para su demostración ver [2] 9

puede descomponerse en [B y d es un múltiplo positivo de d = N] tal que B 1 a j 0, para alguna columna a j de N B 1 a j e j, donde e j es un vector de n m componentes de valor cero excepto en la posición j que tiene valor 1. Prueba. ] Como B 1 a j 0, entonces d = además [ Ad = B N ] B 1 a j e j B 1 a j e j 0, = BB 1 a j + Ne j = a j + a j = 0, por lo tanto d es una dirección. Ahora supongamos que d = λ 1 d 1 + λ 2 d 2, donde λ 1, λ 2 > 0 y d 1, d 2 son direcciones de S. Notar que d tiene m n 1 componentes iguales a cero, entonces las correspondientes componentes de d 1 y d 2 también deben ser iguales a cero, pues d 1 0, d 2 0. Así d 1 y d 2 pueden ser escritos como d 1 = α 1 d 11 e j, d 2 = α 2 d 21 donde α 1 > 0 y α 2 > 0. Como d 1 y d 2 son direcciones, entonces Ad 1 = Ad 2 = 0. Luego e j, [ Ad 1 = 0, ] B N α 1d 11 = 0, α 1 e j α 1 Bd 11 + α 1 Ne j = 0, α 1 Bd 11 + α 1 a j = 0, d 11 = B 1 a j. De forma similar se tiene que d 21 = B 1 a j. Así se tiene que d 1 y d 2 no son distintos, el cual implica que d es una dirección extrema. Ya que d es un múltiplo positivo de d, se tiene que d también es una dirección extrema. 10

] Supongamos que d es una dirección extrema de S. Sin pérdida de generalidad, supongamos que d = ( d 1,..., d k, 0,..., 0, d j, 0,..., 0) T, donde d i > 0, para i = 1,..., k y para i = j. Luego, A 1, A 2,..., A k son linealmente indepientes. En efecto. Por contradicción, supongamos que esto no se cumple, entonces existen escalares λ 1,..., λ k no todos ceros tales que k λ i A i = 0. Sea λ = (λ 1,..., λ k, 0,..., 0) T R n y escojamos α > 0 tal que sean no negativos. Notar que i=1 d 1 = d + αλ y d 2 = d αλ Ad 1 = A d + αaλ = 0 + α k A i λ i = 0 + α0 = 0. De forma similar Ad 2 = 0. Puesto que d 1, d 2 0, se tiene que d 1 y d 2 son direcciones de S. Notar también que d 1 y d 2 son distintos, puesto que α > 0 y λ 0. Además, d = 1 2 d 1 + 1 2 d 2, lo que implica que d no es una dirección extrema, contradicio así la hipótesis. Por lo tanto A 1, A 2,..., A k son linealmente indepientes. Como ran(a) = m, se tiene que k m, entonces existe m k vectores en el conjunto de vectores {A i : i = k + 1,..., n; i j}, el cual junto con A 1, A 2,..., A k forman un conjunto de vectores linealmente indepiente. Sin pérdida de generalidad, supongamos que esos vectores son A k+1,..., A m. Denotar a [A 1 A 2... A m ] por B y notar que B es invertible. Así i=1 0 = A d = B ˆd + a j dj, (1.3) donde ˆd es un vector de las m primeras componentes de ˆd. De la ecuación (1.3) se tiene que ˆd = d j B 1 a j y por lo tanto d = d j B 1 a j e j Además, como d 0 y d j > 0 se tiene que B 1 a j 0, completando así la prueba. Corolario 1.2.2 El número de direcciones extremas de S es finito. Prueba. 4 4 Para su demostración ver [2]. 11

Teorema 1.5 (Teorema de Representación) Sea S un conjunto poliédrico no vacío de la forma S = {x R n : Ax = b, x 0}, donde A es una matriz de m n con rango m y b R m. Sean x 1, x 2,,..., x k los puntos extremos de S y d 1, d 2,,..., d l las direcciones extremas de S. Entonces x S si y sólo si x puede ser escrito como k l x = λ i x i + µ j d j i=1 j=1 k λ i = 1 i=1 λ i 0, i = 1,..., k µ j 0, j = 1,..., l Prueba. 5 En la siguiente figura se muestra la interpretación de este teorema. Figura 1.6: En la ilustración se observa que x = λx 1 + (1 λ)x 3 + µd 2. Teorema 1.6 (Existencia de direcciones exremas) Sea S un conjunto poliédrico no vacío de la forma S = {x R n : Ax = b, x 0}, donde A es una matriz de m n con rango m y b R m. Entonces S tiene al menos una direción extrema si y sólo si S es no acotado. Prueba. ] Si S tiene al menos una dirección extrema. Probar que S es no acotada. 5 Para su demostración ver [2] 12

En efecto. Por el absurdo, supongamos que S es acotado, entonces k > 0 : x k, x S. Sea d una dirección extrema, entonces d es una dirección. Por tanto, para cualquier x S se tiene x + αd S, α 0. Sea la sucesión (x n ) n IN S tal que x n = x + nd, para algún x S. Como S es acotada, entonces (x n ) n IN es acotada. Entonces existe una subsucesión (x n ) n K IN de (x n ) n IN que es convergente, entonces (x n ) n K IN es una suceción de Cauchy; es decir: ε > 0, n 0 K IN : x m x s < ε, m, s n 0. En particular para m = m 0 > n 0 y s = m 0 + r, r 1, s K, entonces x m0 x m0 +r < ε. Por otro lado: x m0 +r = x m0 +r x m0 + x m0 x m0 +r x m0 + x m0 < ε + x m0, entonces x m0 +r < ε + x m0. (1.4) Además (m 0 +r) d = (m 0 +r)d = x+(m 0 +r)d x x+(m 0 +r)d + x = x m0 +r + x, entonces (m 0 + r) d x m0 +r + x. (1.5) Luego, de las ecuaciones (1.4) y (1.5) se tiene: (m 0 + r) d x m0 +r + x < ε + x m0 + x, entonces x > (m 0 + r) d (ε + x m0 ). Como (m 0 + r) d (ε + x m0 ), cuando r entonces x, hecho que lleva a una contradicción por haber supuesto que S es acotado. Por lo tanto, S es no acotado. ] Sea S no acotado. Probar que S tiene al menos una dirección extrema. 13

En efecto. Por el absurdo, supongamos que S no posee direcciones extremas, entonces por el teorema (1.5) se tiene que cualquier elemento de S se puede representar como k x = λ i x i, k donde λ i [0, 1], x i S, i = 1,..., k y λ i = 1. i=1 i=1 Ahora, usando desigualdad triangular se tiene: k x = λ i x i i=1 k λ i x i. i=1 Sea t = max 1 i k x i, entonces x i t, i = 1,..., k. Luego x k λ i x i i=1 k k λ i t = t λ i = t. i=1 i=1 Así, x t, x S, entonces S es acotado. Contradicio así la hipótesis. Por lo tanto S posee al menos una dirección extrema.. 14

Capítulo 2 Programación lineal Considere el sistema Ax = b, con x 0, en donde A es una matriz de m n y b R m. Suponga que ran(a, b) = ran(a) = m. Después de un posible reordenamiento de las columnas de A, se tiene A = [B orden m m y N es una matriz de orden m (n m). N], en donde B es una matriz invertible de Esta descomposición de la matriz A genera una descomposición de x en x = Así Ax = b queda expresado como x B x N Bx B + Nx N = b (2.1) Multiplicando a (2.1) por B 1, puesto que B es invertible, se obtiene x B = B 1 b + B 1 Nx N (2.2) Entonces para cualquier x N y x B dado en (2.2) se tiene que x = x B x N Ax = b. Particularmente, si x N = 0 y x B = B 1 b se tiene que x = también satisface Ax = b. Definición 2.1 La solución x = x B x N del sistema Ax = b, en donde x B = B 1 b y x N = 0,. satisface B 1 b 0 se denomina solución básica del sistema. Si x B = B 1 b 0, entonces el vector x = B 1 b se denomina solución básica factible. 0 15

La matriz B se denomina matriz básica (o simplemente base) y N se denomima matriz no básica. Las componentes de x B se denominan variables básicas y las componentes de x N se denominan variables no básicas. Definición 2.2 Si x B = B 1 b > 0, entonces x = básica factible no degenerada. B 1 b 0 se denomina solución Definición 2.3 Si por lo menos una componente de x B = B 1 b es igual a cero, entonces x = B 1 b se denomina solución básica factible degenerada. 0 Teorema 2.1 (Condiciones de optimalidad de la programación lineal) Considere el siguiente problema de programación lineal min s.a. c T x Ax = b x 0, (2.3) donde c R n, A es una matriz de m n con rango m y b R m. Supongamos que la región factible F = {x R n : Ax = b, x 0} es no vacía y sean x 1, x 2,..., x k los puntos extremos y d 1, d 2,..., d l las direcciones extremas de la región factible F. Una condición necesaria y suficiente para la existencia de una solución óptima finita es que c T d j 0, j = 1,..., l. Si este es el caso, entonces existe un punto extremo x j que resuelve el problema. Prueba. Por el teorema de representación se tiene que todo elemento de F se puede expresar como k l x = λ j x j + µ j d j (2.4) i=1 j=1 k λ i = 1 i=1 λ i 0, i = 1,..., k µ j 0, j = 1,..., k, 16

reemplazando (2.4) en el problema (2.3) se tiene min s.a. k l (c T x j )λ j + (c T d j )µ j i=1 k λ i = 1 i=1 j=1 λ i 0, i = 1,..., k µ j 0, j = 1,..., l. ] Si existe una solución óptima finita para el problema (2.3). Se probará que c T d j 0 j = 1,..., l. En efecto. Supongamos que c T d j 0, para algun j; es decir, existe un j 0 tal que c T d j0 < 0. Como d j0 es una dirección extrema, entonces x = x 0 +µd j0 F, x 0 F, µ > 0. Así c T x = c T x 0 + µc T d j0, luego puesto que c T d j0 < 0. lím µ ct x = lím (c T x 0 + µc T d j0 ) µ = c T x 0 + c T d j0 lím µ µ =, Entonces c T x no está acotada inferiormente, lo cual contradice la hipótesis. ] Si c T d j 0, j = 1,..., l. Probar que existe una solución óptima finita para el problema (2.3); es decir, x F : c T x c T x, x F En efecto. Sean µ j R arbitrarios tal que µ j 0, j = 1,..., l, entonces Sumando l µ j c T d j 0. j=1 k λ j c T x j en ambos miembros de la última desigualdad se tiene: j=1 c T x = k l λ j c T x j + µ j c T d j j=1 j=1 k λ j c T x j. (2.5) j=1 Sea x = x j0 tal que c T x = c T x j0 = mín 1 j k ct x j. De (2.5) se tiene: c T x k λ j c T x j j=1 k k λ j c T x = c T x λ j = c T x. j=1 j=1 17

Así c T x c T x, x F, donde x = x j0 es un punto extremo. Por lo tanto, existe una solución óptima finita para el problema (2.3) y además es un punto extremo. 2.1. Mejoramiento de una solución básica factible Obtener todas las soluciones básicas factibles para evaluarlas en la función objetivo y luego compararlas para determinar la solución óptima no es una tarea que se recomie en la práctica. El método simplex proporciona una estrategia que permite mejorar, si es posible, una solución básica factible dada. Consideremos el problena de programación lineal min s.a. f(x) Ax = b x 0, (2.6) donde A es una matriz con rango m. Suponga que se tiene una solución básica factible está dado por x N z 0 = c B 1 b 0 [ = ] c B c N B 1 b 0 B 1 b 0 cuyo valor objetivo z 0 = c B B 1 b. (2.7) Sea x B, donde x B y x N denotan, respectivamente, al conjunto de variables básicas y al conjunto de variables no básicas para la base dada. Entonces, la factibilidad requiere que y x B 0, x N 0, b = Ax = Bx B + Nx N, (2.8) 18

como B es invertible, entonces multiplicando (2.8) por B 1 se tiene: x B = B 1 b B 1 Nx N = B 1 b j R B 1 a j x j (2.9) = b j R y j x j, (2.10) donde R es el conjunto actual de índices de las variables no básicas. De las ecuaciones (2.7) y (2.9) y denotando como z al valor de la función objetivo, se obtiene: z = c T x = [ ] c B c N x B x N, = c B x B + c N x N, ( = c B B 1 b ) B 1 a j x j + c N x N, j R = c B B 1 b j R c B B 1 a j x j + j R c j x j, = z 0 j R(c B B 1 a j c j )x j. Entonces z = z 0 j R(z j c j )x j, (2.11) donde z j = c B B 1 a j para toda variable no básica y a z j c j se le llama costo reducido de x j. La ecuación (2.11) sirve como guía para mejorar una solución básica factible actual. Debido a que como se desea minimizar z, conviene aumentar el valor de x j desde su nivel presente igual a cero, siempre que z j c j > 0. Si z j c j 0, j R, entonces x j = 0, j R y x B = b es óptimo para (2.6), puesto que, de (2.11) se tría que z 0 z. Tenio esto en cuenta se puede aplicar la siguiente regla: Se fijan todos los valores de las variables no básicas x j en cero, excepto una de ellas; supongamos que es la variable no básica x k, cuyo coeficiente z k c k es el más positivo de todos los z j c j. Por lo tanto, de (2.11) se tiene que el nuevo valor de la función objetivo estaría dado por z = z 0 (z k c k )x k. (2.12) 19

Debido a que z k c k > 0 y se desea minimizar z, es conveniente aumentar el valor de x k tanto como sea posible. Conforme x k crece, las variables básicas deben modificarse de acuerdo a la ecuación (2.10) obteniose así: x B1. x Br. x Bm x B = b y k x k, donde y k = B 1 a k b1 y 1k.. = br y rk x k. (2.13).. bm y mk Si y ik 0, entonces x Bi crece cuando x k crece y así x Bi continúa sio no negativo. Si y ik > 0, entonces x Bi decrece cuando x k crece. A fin de satisfacer la no negatividad de las variables básicas, x k se incrementa hasta el primer punto en que una variable básica x Br se hace cero. Al analizar la ecuación (2.13), resulta entonces que la primera variable básica que se vuelve cero corresponde al mínimo de b i Con más precisión, es posible incrementar x k hasta x k = b r y rk = mín 1 i m { } bi : y ik > 0 y ik Cuando no hay degeneración, b r > 0 y entonces x k = b r y ik para y ik positivo.. (2.14) y rk > 0. Por la ecuación (2.12) y con el hecho de que z k c k > 0, se concluye que z < z 0 y la función objetivo mejora estrictamente. Cuando x k crece desde el nivel cero hasta b r y rk se obtiene una nueva solución básica factible. Al sustituir x k = b r en la ecuación (2.13) se obtiene el siguiente punto: y rk x Bi = b i y ik, i = 1,..., m y rk br x k = b r (2.15) y rk Con base en la ecuación (2.15), x Br Todas las demás x j son cero. = 0 y entonces cuando mucho m variables son positivas. Las columnas correspondientes en A son a B1, a B2,..., a Br 1, a k, a Br+1,..., a Bm. Observe que estas columnas son linealmente indepientes, ya que y rk 0. Por consiguiente, el punto dado por la ecuación (2.15) es una solución básica factible. En resumen, se ha descrito algebraicamente una iteración; es decir, el proceso de 20

transformación de una base a una base adyacente. Lo anterior se lleva a cabo incrementando el valor de una variable no básica x k con z k c k positivo y ajustando las variables básicas actuales. En el proceso, la variable x Br se hace cero. Por tanto, la variable x k entra a la base y x Br sale de la base. Cuando no hay degeneración, el valor de la función objetivo decrece estrictamente y así las soluciones básicas factibles generadas son distintas. Dado que sólo existe un núnero finito de soluciones básicas factibles, entonces el procediemiento debe terminar en un número finito de pasos. 2.2. Optimalidad y no acotamiento El procedimiento de introducir una variable en la base y sacar otra variable de la base conduce al proceso de cambio de una base a una base adyacente. Los criterios para que una variable pueda entrar y salir de la base son los siguientes: 1. Entrada: x k puede entrar si z k c k > 0. 2. Salida: x B puede salir si Ahora surgen dos preguntas: x k = b r y rk = mín 1 i m { } bi : y ik > 0 y ik i. Qué ocurre si todas las variables no básicas x j tienen z j c j 0?. En este caso, se ha obtenido el óptimo. ii. Qué ocurre si z j c j > 0, de modo que x k es elegible para entrar a la base, pero no es posible encontrar componentes positivas y ik, i = 1,..., m; es decir, y k 0? En este caso, el valor óptimo de la función objetivo es no acotado; es decir, f(x) = min c T x =. Ahora veremos con más detalle cada uno de los casos. 21

2.3. Terminación con una solución óptima Consideremos el siguiente problema en donde A es una matriz de orden m n con rango m min s.a: z = c T x Ax b x 0. Suponga que x es una solución básica factible con base B; es decir, x = y sea z = c T x = c B B 1 b el valor de la función objetivo en x. Además suponga que z j c j 0, B 1 b 0 j R, de modo que ninguna variable no básica es elegible para entrar a la base. Sea x cualquier solución básica factible con valor objetivo z. Entonces por la ecuación (2.11) se tiene z z = j R(z j c j )x j. (2.16) Como z j c j 0 y x j 0, solución básica factible óptima. j R, entonces z z y por lo tanto x es una 2.4. Soluciones óptimas únicas y alternativas Es posible obtener más información de la ecuación (2.16). ˆ Si z j c j < 0, j R, entonces la solución óptima actual es única. Para ver lo anterior, sea x cualquier solución factible distinta de x. Luego, existe por lo menos una componente no básica x j que es positiva, por que si todas las componentes no básicas son ceros, entonces x no podrá ser distinta de x. Así de la ecuación (2.16) se tiene que z < z. Y por consiguiente, x es la única solución óptima. ˆ Si z j c j 0, j R, pero z k c k = 0 para al menos una variable no básica x k. Al incrementear x k (y suponio que no hay degeneración), se obtienen puntos distintos de x pero que tienen el mismo valor objetivo. El proceso se incrementar x k desde el nivel cero hasta que es bloqueada por una variable básica genera una infinidad de soluciones óptimas alternativas. 22

No acotamiento Suponga que se tiene una solución básica factible del sistema Ax = b, x 0 con valor objetivo z 0. Ahora se considerará el caso en que se encuentra una variable no básica x k, con z k c k > 0 y y k 0. De la ecuación (2.11) se tiene z = z 0 (z k c k )x k. Como se desea minimizar el objetivo z y dado que z j c j > 0, conviene incrementar indefinidamente el valor de x k lo cual hará que z se vaya a. La razón por la cual no fue posible hacer esto antes es que el incremento en el valor de x k estaba bloqueado por una variable básica; es decir, le impone un tope a x k. Recordemos que de la ecuación (2.13) se tiene x B = B 1 b y k x k de modo que, como y k 0, entonces x k se puede incrementar indefinidamente sin que ninguna variable básica se haga negativa. En resumen, si se tiene una solución básica factible con z k c k > 0 para alguna variable no básica x k y además y k 0, entonces el valor óptimo de la función objetivo es no acotado; es decir, f(x) = min c T x =. Este valor se obtiene al incrementar x k indefinidamente y ajustar los valores de las variables básicas actuales; esto, a su vez, es equivalente a efectuar un desplazamiento a lo largo del rayo B 1 b y k 0 0.. + x k, x k 0 = B 1 b 0 1 0.. 0 0 + x k y k Observemos que el vértice del rayo es la solución básica factible actual la dirección del rayo es d = y k e k e k y además es una dirección extrema. 23, x k 0. B 1 b 0 y

Notar que c T d = [ ] c B c N y k e k = c B y k + c k = z k + c k. Como z k c k > 0, entonces c T d < 0, que es la condición necesaria y suficiente para no acotamiento. 2.5. El método simplex Dadas una solución básica factible y su base correspondiente, es posible mejorar la solución si z k c k > 0 para alguna variable no básica x k, o bien, el proceso se detiene en un punto óptimo si z j c j 0 para todas variables no básicas. Si z k c k > 0 y el vector y k contiene por lo menos una componente positiva, entonces el incremento de x k será bloqueado por una de las variables básicas presentes, la cual se vuelve cero y sale de la base. Por otra parte, si z k c k > 0 y y k 0 entonces x k se puede incrementar indefinidamente y la solución óptima es no acotada con valor ( ). Esto precisamente es lo que hace el método simplex. [3] 2.5.1. El método simplex en formato de tableau (Problema de minimización) PASO INICIAL Se encuentra una solución básica factible inicial con base B y se forma el siguiente tableau inicial. z x B x N LD z 1 0 c B B 1 N c N c B b x B 0 I B 1 N b PASO PRINCIPAL Sea z k c k = max{z j c j : j R}. Si z k c k 0, entonces el proceso ha terminado; 24

la solución actual es óptima. En caso contrario, se analiza y k. Si y k 0, entonces el proceso ha terminado; la solución óptima es no acotada. Si y k 0, entonces el índice r se determina como sigue: b r y rk = min 1 i m { b i y ik : y ik > 0} El tableau se actualiza pivoteando sobre y rk ; se actualizan las variables básicas y no básicas, en donde x k entra a la base y x Br sale de la base. Se repite el paso principal. 2.5.2. El método simplex para variables acotadas En casi todos lo problemas prácticos las variables suelen estar acotadas. Una variable típica x j está acotada inferiormente por l j y superiormente por u j, donde l j < u j. Si se denotan por l y u los vectores cota inferior y cota superior respectivamente, entonces se obtiene el siguiente programa lineal con variables acotadas. min (P LV A) s.a: c T x Ax = b l x u, Definición 2.4 Considere el sistema Ax = b y l x u, en donde A es una matriz de m n con rango m. La solución x de las ecuaciones Ax = b es una solución básica de este sistema si A puede descomponerse en [B N 1 N 2 ], en donde la matriz (cuadrada) B es de rango m de modo que con x descompuesto de manera correspondiente en (x B, x N1, x N2 ) se tiene x N1 = l N1, x N2 = u N2, y por consiguiente, x B = B 1 b B 1 N 1 l N1 B 1 N 2 u N2. Además, si l B x B u B, entonces se dice que x es una solución básica factible. La matriz B se denomina base, x B son las variables básicas, y x N1 y x N2 son las variables no básicas en sus límites inferior y superior, respectivamente. Se dice que la partición [B N 1 N 2 ] correspondiente a una solución básica (factible) es una partición básica (factible). El vector c también se descompone en [c B, c N1, c N2 ] 25

Con estas definiciones, las condiciones de optimalidad cambian y el método simplex en forma de tableau se trabaja como sigue: PASO INICIAL Se encuentra una solución básica inicial. Sea x B el vector de variables básicas, y sean x N1 y x N2 las variables no básicas en sus cotas inferior y superior, respectivamente. Luego se forma el siguiente tableau en el que ẑ = c B B 1 b + (c N1 c B B 1 N 1 )l N1 + (c N2 c B B 1 N 2 )u N2 ; y ˆb = B 1 b B 1 N 1 l N1 B 1 N 2 u N2 ; son los valores actuales de z y x B, respectivamente. z x B x N1 x N2 LD z 1 0 c B B 1 N 1 c N1 c B B 1 N 2 c N2 ẑ x B 0 I B 1 N 1 B 1 N 2 ˆb PASO PRINCIPAL Sean R 1 y R 2 los conjuntos de índices de variables no básicas en su cota inferior y superior, respectivamente. Sea z j = c B B 1 a j j R 1 R 2, donde a j es la columna no básica de A correspondiente al índice j. 1.- Si z j c j 0 j R 1 y z j c j 0 j R 2, entonces la solución actual es óptima. Caso contrario determinar índice k como el índice donde se alcanza el siguiente máximo: max{max jɛr1 {z j c j }, max jɛr2 {c j z j }}. Determinar y k = B 1 a k, donde a k es la columna de A correspondiente al índice k. Si kɛr 1, ir al paso 2 Si kɛr 2, ir al paso 3. 2.- Si x k = l k, incrementa hasta l k + k donde k = min(γ 1, γ 2, u k l k ). min i l Bi 1 i m {ˆb y γ 1 = ik : y ik > 0} = ˆb r l Br y rk, si y k 0............ si y k 0 min 1 i m { u B i ˆb i y γ 2 = ik : y ik < 0} = u Br ˆb r y rk, si y k 0............ si y k 0 26

Si k =, entonces el proceso se detiene y el valor de la solución óptima es no acotado. En caso contrario, se actualiza el tableau para que muestre la nueva solución básica factible. Si k = u k l k entonces no se hace ningun cambio de la base de trabajo y x k sigue sio no básica, pero esta vez en su cota superior. Sólo se cambia la columna LD para reflejar el nuevo valor de la función objetivo y los nuevos valores de las variables básicas. ẑ se reemplaza por: z = ẑ (z k c k ) k. (2.17) ˆb se reemplaza por: xb = ˆb yk k (2.18) Por otra parte, si k está dado por γ 1 o por γ 2, entonces x k entra a la base y x Bk sale de la base. El tableau, excepto la columna LD, se actualiza pivoto en y rk. La columna LD se actualiza por separado según las ecuaciones (2.17) y (2.18), excepto que la r-ésima componente del nuevo vector ˆb se reemplaza por l k + k que es el valor de x k el cual acaba de entrar a la base. Se repite el paso 1. 3.- Si x k = u k, decrece hasta u k k donde k = min(γ 1, γ 2, u k l k ). min i l Bi 1 i m {ˆb y γ 1 = ik : y ik < 0} = ˆb r l Br y rk, si y k 0............ si y k 0 min 1 i m { u B i ˆb i y γ 2 = ik : y ik > 0} = u Br ˆb r y rk, si y k 0............ si y k 0 Si k =, entonces el proceso se detiene y el valor de la solución óptima es no acotado. En caso contrario, se actualiza el tableau para que muestre la nueva solución básica factible. Si k = u k l k entonces no se hace ningun cambio de la base de trabajo y x k sigue sio no básica, pero esta vez en su cota inferior. Sólo se cambia la columna LD para reflejar el nuevo valor de la función objetivo y los nuevos valores de las variables 27

básicas. ẑ se reemplaza por: z = ẑ + (z k c k ) k. (2.19) ˆb se reemplaza por: xb = ˆb + yk k (2.20) Por otra parte, si k está dado por γ 1 o por γ 2, entonces x k entra a la base y x Bk sale de la base. El tableau, excepto la columna LD, se actualiza pivoto en y rk. La columna LD se actualiza por separado según las ecuaciones (2.19) y (2.20), excepto que la r-ésima componente del nuevo vector ˆb se reemplaza por u k k que es el valor de x k el cual acaba de entrar a la base. Se repite el paso 1. 1 1 Ver un ejemplo en [2] página 255 28

Capítulo 3 Método dual simplex 3.1. Planteamiento del problema dual Por cada problema lineal que se resuelve existe asociado otro problema lineal que se resuelve simultáneamente, denominado problema dual. Forma canónica de dualidad Suponga que el programa lineal primal está dado en la forma: min c T x s.a. Ax b x 0 Entonces el programa lineal dual se define como: (3.1) max s.a. b T w A T w c w 0 (3.2) 29

Relaciones entre los problemas primal y dual PRIMAL DUAL maximización 1 minimización resticción i : 2 variable i 0 resticción i : = 3 variable i irresctricta resticción i : 4 variable i 0 variable i 0 5 restricción i : variable i irrestricta 6 restricción i : = variable i 0 7 restricción i : Dual PRIMAL 3.2. Método dual simplex en formato de tableau (Problema de minimización) PASO INICIAL Encontrar una base B inicial del primal de modo que sea factible para el dual (condiciones de optimalidad primal) es decir: z j c j = c B B 1 a j c j 0 para todo j. Luego se forma el siguiente tableau: z x B x N LD z 1 0 c B B 1 N c N c B b x B 0 I B 1 N b PASO PRINCIPAL 1. Si b = B 1 b 0 el proceso termina; la solución es óptima. En caso contrario, elegir el renglón pivote r con b r < 0; por ejemplo, b r = min{b i }. 2. Si y rj 0 para todo j, el proceso termina; el dual es no acotado y el primal es no factible. En caso contrario, elegir la columna pivote k mediante la siguiente prueba de la razón mínima: z k c k y rk = min j { z j c j y rj : y rj < 0} 3. Pivotear en y rk y volver al paso 1. 30

3.3. Problema general de programación lineal Consideremos el problena de programación lineal (PL) de la forma min s.a. z = c t x Ax = b l x u, (3.3) donde A es una matriz de m n con rango m, y m < n. las coordenadas de los vectores l y u pueden ser menos ó más infinito, respectivamente. Sea J = {1,...n} el conjunto de los índices columna de A. Denotamos por J f = {j\j J, l j = u j = + } el conjunto de las variables primales libres (vpl), por J u = {j\j J, l j = u j < + } y J l = {j\j J, l j > u j = + } los conjuntos de las variables primales con una cota finita y por J b = {j\j J, l j > u j < + } el conjunto de variables acotadas inferior y superiormente. Llamaremos a las variables en J b variables primales encajadas (vpe). Si para alguna variable se tiene l j = u j = a para algun a R, entonces la llamaremos variable primal fija (vpf). Aplicando al problema ( 3.3) la definición de problema dual, obtenemos lo siguiente: max s.a. z = b t π + j J l J b l j ν j + j J u J b u j ω j A t π + ν + ω = c ν j = 0, ω j = 0, j J f ν j 0, ω j = 0, j J l ν j = 0, ω j 0, j J u ν j 0, ω j 0, j J b π irrestricta, (3.4) donde π R m, ν, ω R n. Se denomina a ν y ω como variables duales de holgura (vdh) Definición 3.1 Una base β = {k 1,..., k m } es un subconjunto ordenado de J, tal que la submatriz A β es no singular. El conjunto de índices de columnas no básicas es denotado por η = J \ β. Una solución primal básica (pbs) para una base β es construida fijando cada variable primal no básica x j, j η a una de sus cotas finitas ( si es variable libre se fija en cero) y calcular las variables primales básicas como: 31

x β = B 1 (b A η x η ). Definición 3.2 Una base β es primal factible si todas las variables primales básicas se encuentran dentro de sus respectivas cotas, es decir, l j x j u j, j β. Una solución dual básica (dbs) para una base β es construida calculando los multiplicadores duales π = c β B 1 y los costos reducidos d η = c η A t ηπ y fijando las otras variables de la siguiente forma: ν j = d j, ω j = 0, si j η con x j = l j y ν j = 0, ω j = d j, si j η con x j = u j. Si j η y j J f ( si las variables primales asociadas son no básicas y libres), entonces ν j = d j, ω j = 0, si d j 0 y ν j = 0, ω j = d j, si d j < 0. Definición 3.3 Una base β es dual factible si las (vdh) ν y ω satisfacen sus respectivas restricciones (sus cotas cero) en el problema (3.4), es decir, si se cumple: d j 0, si j η con x j = l j, d j 0, si j η con x j = u j y d j = 0, si x j es variable libre. La infactibilidad dual sólo puede ocurrir en los índices de columnas asociadas con variables primales no básicas, pues π es irrestricto y se obtiene a partir de las variables primales básicas. En particular las (vdh) asociadas con variables primales no básicas libres solamente son factibles cuando su correspondiente costo reducido d j vale cero. Las (vdh) asociadas con variables primales no básicas fijas siempre son factibles. La infactibilidad dual de (vdh) asociadas con variables primales no básicas encajadas x j puede convertirse en factibilidad cambiando x j a su otra cota finita. De este modo si se realiza tal cambio entonces las variables primales básicas deben ser actualizadas. 32

3.4. Algoritmo dual simplex para problemas generales El algoritmo dual-simplex se mueve en cada iteración, desde una solución dual básica, para una base dual factible, hacia una solución que mejore la función objetivo, hasta alcanzar factibilidad, es decir hasta que se logre obtener también una base primal factible, o bien concluir que el problema dual es no acotado y que el primal es no factible. ([3] ) El algoritmo es el siguiente: 1. Calcular la representación factorizada (LU) de B 1, y calcular: x β, π, y d η (de la forma antes vista) 2. Determinar p β con p = k r y x p infactible (primal infactible). Si x p < l p, hacer δ = x p l p. Si x p > u p, hacer δ = x p u p. Si x β es factible, entonces IR AL PASO (9). 3. Calcular ρ r = e t rb 1. Donde e r es el r-ésimo vector canónico. 4. Calcular α r = ρ r A η. 5. Si x p < l p, hacer α r = α r, caso contrario α r = α r. Sea F = {j η : ( j J f α r j 0) ( x j = l j α r j > 0) ( x j = u j α r j < 0) }. Si F =, entonces el problema dual es no acotado. IR AL PASO (9); caso contrario, determinar q tal que dq = min{ d j α r q α r j 6. Calcular α q = B 1 a q. 7. Actualizar Z : Z := Z + θ D δ. Actualizar x : Calcular θ P = δ, y hacer : α r q x β := x β θ P α q y x q := x q + θ P. Actualizar d η : d j := θ D α r j para j η y d p := θ D. Actualizar β y η: β := ( β \ {p}) {q} y : j F } y hacer θ D = dq. α r q η := ( η \ {q}) {p}. Actualizar la representación factorizada (LU) de B 1. 8. IR AL PASO (1). 9. FINALIZAR. 33

Capítulo 4 Métodos de inicialización del algoritmo dual simplex El método dual simplex comienza con una base dual factible y cambia la base mientras la función objetivo dual puede ser mejorada y el problema no se convierta en dual no acotado. 4.1. Método de modificación de costos La idea básica de este método es hacer que la base inicial sea dual factible modificando la formulación del problema y restaurándolo mientras ejecuta el algoritmo dual simplex. Dada una base inicial β con η = J \ β, las (vdh) asociadas con (vpe) son hechas factibles movio sus cotas primales; es decir si la variable está en su cota inferior son cambiadas a su cota superior, o viceversa. Luego, para cada (vdh) infactible restante se cambian los coeficientes de costo de su correspondiente variable primal x j con j η de la siguiente manera: c j = c j d j Esto conduce a un nuevo costo reducido d j = c j π t a j = c j d j π t a j = 0, el cual es factible para el dual. Cuando el algoritmo dual simplex termina con una base primal factible, los costos originales son restaurados. Si la base pasa a ser dual infactible mediante estas operaciones, entonces pasamos a usar el algoritmo primal simplex. Este método es implementado en el código de programación lineal SoPlex el cual fue desarrollado por Wuderling R. [4] 34

4.2. Método de reducir las infactibilidades o método de Ping-Qi Pan La idea básica de este método es remover por lo menos una infactibilidad dual en cada iteración, pero no garantiza que ninguna nueva infactibilidad sea creada. Este riesgo es minimizado solamente por una apropiada selección de variables de salida. Antes de llamar al método de Pan se debe hacer que las variables duales de holgura asociadas con (vpe) no básicas, sean factibles, movio sus cotas primales, es decir si se encuentran en su cota inferior, cambiarlas a su cota superior; luego no se consideran más en el transcurso del algoritmo. El método es el siguiente: 1. Sea el conjunto de índices asociados con (vdh) infactibles Q = {j\j η, ( d j < 0 x j = l j ) ( d j > 0 x j = u j ) ( d j > 0 j J f, x j = 0) }. Si Q es vacío, entonces la base es dual factible, ir al paso 5, caso contrario, seleccionar un índice de entrada q Q mediante alguna regla. Usaremos la regla de Dantzig: Hallar q tal que d q = max{ d j \j Q}. 2. Calcular la columna pivote transformada α q = B 1 a q. Si d q < 0, hacer α q := α q. 3. Determinar el índice de salida p β tal que la p-ésima (vdh) sea factible después del cambio de base. Sea I = {i\i {1,..., m}, j = k i ( l j > α i q < 0) ( u j < α i q > 0) }. Si I es vacío, entonces el problema es dual infactible, PARAR, caso contrario, seleccionar p tal que α p q = {α i q\i I} y k r = p. Calcular θ D = dq. α r q 4. Realizar el cambio de base del mismo modo que en el algoritmo dual- simplex (PASO 7). Para actualizar d η, la fila pivote transformada debe ser calculada avanzando segun los pasos PASO 3 y PASO 4 de algoritmo dual -simplex. Ir al paso 1. 5. Llamar al algoritmo dual- simplex. Nada garantiza una reducción monótona de la suma de infactibilidades duales, tampoco del número de infactibilidades duales. Pero podemos confirmar los 35

resultados de Pan en [8] y [9]. 4.3. Método de minimizar la suma de infactibilidades duales El objetivo de encontrar una base que proporcione una mínima suma de infactibilidades duales puede ser formulada como un problema de (PL) auxiliar, el cual junto con el problema principal se resuelven por el algoritmo dual simplex. La idea básica es directamente aplicar el algoritmo dual-simplex al problema auxiliar, esa será la técnica de inicialización. Las variables duales de holgura asociadas a (vpe) ( j J b ) se convierten en factibles movio las cotas primales. Luego podemos formular el problema de encontrar una base con una suma mínima de infactibilidades como sigue: max z 0 = j J l J f, d j <0 d j j J u J f, d j >0 d j s.a. a t jπ + d j = c j, j J l J u J f. El problema ( 4.1) es equivalente a la siguiente formulación: (4.1) max z 0 = j J l J ω f j j J u J ν f j s.a. a t jπ + ν j + ω j = c j, j J l J u J f. ν j 0, ω j 0. El dual de problema ( 4.2) es: (4.2) min s.a. z 0 = j J l J u J c f j x j j J l J u J a f j x j = 0, 1 x j 0, j J u, 0 x j 1, j J l, 1 x j 1 j J f. (4.3) El problema (4.3) es una versión reducida del problema original (3.3) en el sentido que consiste de un subconjunto del conjunto original de columnas y las cotas junto con el lado derecho (vector recursos) son cambiados. 36

Todas las variables del problema (4.3 ) están encajadas, entonces cualquier base dada puede ser hecha factible movio las cotas primales y se puede aplicar el algoritmo dual -simplex directamente. Éste método es implementado de la siguiente manera: 1. Marcar los índices de variables encajadas y fijas, como índices que no serán seleccionados. 2. Cambiar las cotas del resto de variables y el lado derecho del vector de recursos de acuerdo al problema (4.3). 3. Empezar con una base inicial y hacerla dual factible movio las variables no básicas entre sus cotas primales. 4. Ejecutar el algoritmo dual -simplex al problema (4.3). 5. Si z 0 < 0, entonces el problema original (3.3) es dual infactible, PARAR. 6. Si z 0 = 0, entonces la base actual es dual factible para el problema (3.3). 7. Desenmarcar los índices relacionados a variables encajadas y fijas, y restaurar las cotas originales y el lado derecho del vector de recursos. 8. Ejecutar el algoritmo dual- simplex con el problema (3.3). 4.4. Implementación en matlab Problemas de prueba (Test problems) Los problemas de prueba para programación lineal a gran escala podemos encontrarlos en diferentes bases de datos disponibles en internet, los cuales están archivados en formato MPS (Mathematical Programming System). El formato MPS es columna orientado, es decir al visualizar la matriz de restricciones en este formato primero aparecen las entradas de la primera columna y continúa hasta las entradas de la última columna de la matriz, además la primera fila de esta matriz corresponde a la función objetivo; al final están el vector columna de recursos y las cotas inferiores y superiores de cada variable, que también son posibles de guardar en este formato. Para este trabajo se ha seleccionado un problema de la librería MIPLIB 2003 test problems: aflow40b; al cual se dió solución con el método expuesto anteriormente. 37

Programación en matlab Los archivos de los problemas de prueba con extensión.mps, para ser usados en Matlab, necesitan de una función especial para su lectura. Dicha función es: READMPS; la cual arroja una estructura de datos del problema (matrices y vectores), de este modo se puede guardar estos datos del workspace de matlab y luego ser usados en los algoritmos programados. READMPS aplicada al problema aflow40b resultó en una estructura la cual se ha nombrado como problem, mostrando la siguiente ventana: Figura 4.1: Estructura de aflow40b Otras funciones que se usaron de la librería de Matlab fueron: - rref(e).- para encontrar columnas básicas de la matriz E. - inv(b) - norm(a) Los algoritmos de inicialización fueron programados en Matlab y su codificación se encuentra en el apéndice A, al final del presente trabajo. 38

Antes de aplicar los algoritmos de inicialización en problemas de gran escala, se probó con problemas de pocas variables 1 los cuales son introducidos manualmente en su forma estándar al programa de Matlab; luego se aplicó los tres métodos de inicialización en cada problema y se obtuvo el valor objetivo. Por ejemplo: Problema 01: min 2x 1 4x 2 x 3 s.a: 2x 1 + x 2 + x 3 10 x 1 + x 2 x 3 4 (P 01) 0 x 1 4 0 x 2 6 1 x 3 4 El valor objetivo es Z = 28. Veamos como funciona con los tres métodos de inicialización. o Con el método modificación de costos: 1 Ejemplo 5.6 y Ejercicios 5.10 y 5.11 de [3] páginas 255 y 270 39

Figura 4.2: Solución de (P01) con modificación de costos o Con el método de P.Q. Pan 40

Figura 4.3: Solución de (P01) con base inicial según PQ-Pan o Con el método de minimizar la suma de infactibilidades 41

Figura 4.4: Solución de (P01) con base inicial según el método minimizar suma de infactibilidades Se obtienen soluciones iniciales diferentes con cada uno de los métodos, pero al final se llega al mismo valor objetivo Z = 28. Problema 02: min 2x 1 x 2 3x 3 s.a: 3x 1 + x 2 + x 3 12 (P 02) x 1 + x 2 5 x 2 + 2x 3 8 0 x 1 3 0 x 2 6 0 x 3 4 El valor objetivo de este problema es Z = 17,333. Sabio que el método de modificación de costos podría generar una base dual infactible pero factible primal, si esto sucede debemos pasar a usar el algoritmo primal simplex para llegar al valor óptimo. En el problema 02; ocurre este caso, la base se transformó en dual infactible pero no se ejecutó el algoritmo primal simplex, puesto que el problema fue resuelto 42

de forma más directa por los otros dos métodos, como se muestra en las siguientes figuras. o Con el método modificación de costos Figura 4.5: Modificación de costos de (P02) y valor objetivo con base dual infactible 43

Figura 4.6: Comprobación de infactibilidad dual en el índice 2 o Con el método de reducir de infactibilidades ó PQ-Pan Figura 4.7: Base inicial xc dada por PQ-Pan 44

Figura 4.8: Solución del problema (P02) con la base inicial xc o Con el método de minimizar la suma de infactibilidades Figura 4.9: Base inicial xc = [4, 5, 6] dada por la mínima suma de infactibilidades 45

Figura 4.10: Solución del problema (P02) y valor de la incógnita X = (x 1, x 2, x 3 ) Problema 03: min x 1 + 2x 2 + 3x 3 x 4 s.a: 2x 1 x 2 + x 3 2x 4 6 x 1 + 2x 2 x 3 + x 4 8 (P 03) 2x 1 x 2 + x 3 0 x 1 3 1 x 2 4 0 x 3 10 2 x 4 5 2 El valor objetivo de este problema es Z = 2,5. Al igual que el problema anterior, el método modificación de costos para este problema finaliza con una base dual infactible y por tanto debe ejecutarse el algoritmo primal simplex; por eso sólo se aplicó a esté problema los métodos de PQ-Pan y Minimizar la suma de infactibilidades, como se muestra en las siguientes figuras: o Con el método de reducir de infactibilidades ó PQ-Pan 46

Figura 4.11: Datos del problema (P03) e inicio del método de PQ-Pan Figura 4.12: Solución del problema (P03) con la base inicial xc o Con el método de minimizar la suma de infactibilidades 47

Figura 4.13: Base inicial xc = [5, 6, 7] dada por Mínima suma de infactibilidades Figura 4.14: Solución del problema (P03) y valor de la incógnita X = (x 1, x 2, x 3, x 4 ) Después de estas pequeñas pruebas, pasamos a resolver el problema de gran escala aflow40b, del cual sus datos fueron guardados en Matlab. 48

Solución del problema aflow40b Después de obtener los datos del problema aflow40b en la estructura problem, y asumio que está dado en forma estándar, se tiene que todas sus variables están acotadas, por tanto no fue necesario introducir variables de holgura; de este modo cualquier base inicial de la matriz de restricciobes, es posible que sea dual factible llevando las variables no básicas a uno de los valores de sus cotas. Finalmente ejecutamos el programa del algoritmo dual simplex, el cual muestra la siguiente ventana: Figura 4.15: Solución de aflow40b Dicha solución fue comprobada con la solución dada por el comando linprog que matlab usa para optimización lineal, la cual se muestra en las siguientes figuras: 49

Figura 4.16: Solución de alow40b con Linprog Al solucionar el problema aflow40b sin agregar variables de holgura, no fueron necesarios los métodos de inicialización puesto que todas las variables son acotadas; así cualquier base fue posible hacer que sea dual factible. Solución de aflow40b con restricciones de desigualdad La matriz del problema Aflow40b es de rango 1442 y tiene 78 restricciones de igualdad y 1364 restricciones de desigualdad, por tal razón fue necesario agregar variables de holgura para tener el problema en forma estándar. Tales variables de holgura son 50

no negativas, es decir acotadas inferiormente por cero, pero no son acotadas superiormente. Con estos datos, para solucionar el problema se tiene que usar los métodos de inicialización expuestos anteriormente. El método que se usó para dar una solución inicial a éste problema fue minimizar la suma de infactibilidades, del siguiente modo: puesto que la base que resulta de este método está formada por columnas correspondientes a variables no encajadas; y en el problema aflow40b se agregaron 1364 variables no encajadas pero acotadas inferiormente, entonces a estas columnas le agregamos 78 columnas más correspondientes a variables encajadas con el comnado de matlab rref(a) para lograr las 1442 columnas cuyas correspondientes variables formarán las variables básicas dual factibles iniciales; debido a que las variables no básicas iniciales pueden fijarse en cualquiera de sus cotas inferior o superior. Figura 4.17: Datos de problema con base inicial xxe 51

Figura 4.18: Comprueba que la base xxe es dual factible Luego se ejecuta el algoritmo dual simplex, al principio la sub-matriz básica se volvía no invertible. Pero se realizaron algunos ajustes hasta conseguir que no sucediera este incidente. Figura 4.19: Primer valor objetivo Se ejecutó el algoritmo hasta conseguir el valor objetivo: Z= 1005.7 52

Figura 4.20: Solución de aflow40b con método dual simplex. Valor objetivo Z= 1005.7 El valor objetivo encontrado, corresponde también al que muestra la página de internet de la librería MIPLIB 2, cuyos datos fueron actualizados en el año 2014 por Gerald Gamrath. 4.5. Técnicas para implementar el algoritmo dual simplex Algunas de éstas técnicas fueron usadas para obtener una implementación eficiente: 1. Steepest Edge Pricing 2. Bound Flipping Ratio Test 3. Factorización LU y actualizar 2 http://miplib.zib.de/miplib2010/aflow40b.php 53