Optimización para Ingenieros con Herramientas Informáticas

90

Transcript of Optimización para Ingenieros con Herramientas Informáticas

OPTIMIZACIÓN PARA INGENIEROS CON HERRAMIENTAS

INFORMÁTICAS

Ing. M.Sc. Jose Antonio Medrano Garcia

May 24, 2020

Contents

I ASPECTOS BÁSICOS 4

1 INTRODUCCION 5

2 CONCEPTOS BÁSICOS DE OPTIMIZACIÓN 72.1 Tipos de Optimización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2 Desarrollo de un Modelo para Optimización . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3 HERRAMIENTAS INFORMÁTICAS 113.1 Introducción al Software Libre de Código Abierto . . . . . . . . . . . . . . . . . . . . . . . . . 113.2 Software a utilizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.2.1 Maxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.2.2 OpenO�ce Calc/LibreO�ce Calc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2.3 SmathStudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2.4 Sage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2.5 Lenguajes de Modelado / Minizinc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.6 Octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.2.7 Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

II OPTIMIZACIÓN APLICADA 20

4 OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE 214.1 Desarrollo de un modelo de Optimización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.2 Optimización No Lineal en Maxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224.3 Optimización No Lineal en Sage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.3.1 Caso Especial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

5 OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 355.1 Programación Lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5.1.1 Programación Lineal en Maxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.1.2 Programación Lineal en OpenO�ce/LibreO�ce Calc . . . . . . . . . . . . . . . . . . . 415.1.3 Programación Lineal en Sage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

5.2 Modelos de Redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485.2.1 Modelo de Transporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.2.2 Modelo de Asignación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555.2.3 Modelo de Ruta Más Corta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.2.4 Modelo de Flujo Máximo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645.2.5 Arbol Mínimo de Expansión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685.2.6 Problema del Conjunto de Cobertura (Set Covering) . . . . . . . . . . . . . . . . . . . 715.2.7 Problema del Agente Viajero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725.2.8 Problema del Agente Viajero en MiniZinc . . . . . . . . . . . . . . . . . . . . . . . . . 74

5.3 Programación Entera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

1

CONTENTS 2

5.3.1 Programación Binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755.3.2 Programación Lineal Entera Mixta (PLM/MILP) . . . . . . . . . . . . . . . . . . . . . 75

5.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

6 OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN VARIAS VARIABLES 766.1 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

7 OPTIMIZACIÓN NO LINEAL RESTRINGIDA EN VARIAS VARIABLES 817.1 RESTRICCIONES DE IGUALDAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817.2 RESTRICCIONES DE DESIGUALDAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837.3 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

8 OPTIMIZACIÓN COMBINATORIA Y PROGRAMACIÓN LÓGICA CONRESTRICCIONES 88

9 MÉTODOS HEURÍSTICOS PARA OPTIMIZACIÓN 89

List of Figures

1.1 Mapa Conceptual del Contenido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.1 Proceso de Solución de Problemas de Optimización . . . . . . . . . . . . . . . . . . . . . . . . 92.2 Proceso para el desarrollo de un modelo de optimización . . . . . . . . . . . . . . . . . . . . . 10

3.1 Imagenes de Maxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.2 Solver de Calc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.3 Imagen de SmathStudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.4 Imagenes de Sage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.5 Ejemplo de Modelo en MiniZinc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.6 Imagenes de Octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.7 Imagenes de Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5.1 Ejemplos de Redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495.2 Tipos de Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.3 Ejemplo de una red con pesos (distancia) y sus respectivas matrices . . . . . . . . . . . . . . 505.4 Ruta Mas Corta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.5 Ejemplos de árbol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

7.1 Ejemplo de una función con muchos óptimos locales . . . . . . . . . . . . . . . . . . . . . . . 84

3

Part I

ASPECTOS BÁSICOS

4

Chapter 1

INTRODUCCION

La idea de desarrollar estas notas surgió hace algunos años cuando me fué solicitado por primera vez impartirel curso denominado Algebra y Tecnología Informática en la Maestría en Ingeniería Vial de la Universidadde San Carlos de Guatemala. El objetivo de ese curso, como me fué planteado en ese momento, era quelos estudiantes de maestría aprendieran a utilizar herramientas informáticas para la solución de problemasmatemáticos complejos.

Inicialmente se me solicitó que el curso se orientara al uso del programa Matlab®1 como la base delcurso. Matlab® es reconocido a nivel mudial como la herramienta de cálculo matemático mas utilizada enciencia e ingeniería. Sin embargo, por tratarse de un programa de tipo comercial, su uso implica el pagode una licencia por un período de tiempo limitado. Esto trae serias desventajas ya que para desarrollarel curso se requiere un laboratorio equipado con el programa y las respectivas licencias, lo cual presentabaun obstáculo, tanto para impartir las clases magistrales como para que los estudiantes llevaran a cabo lasrespectivas prácticas de aplicación para familiarizarse con el aplicativo.

Otro aspecto que vale la pena mencionar, es algo que he podido observar y comprobar a través de mipropia experiencia: Para aprender a utilizar una herramienta, del tipo que sea (mecánica, tecnológica uotro tipo) es necesario tener un propósito u objetivo de�nido para su uso. El proceso de aprendizaje de losprocedimientos y métodos para el uso de aplicaciones informáticas, cuando no se dá dentro de un contextoespecí�co, es frágil y poco e�caz, ya que los estudiantes aprenden el �cómo� pero no el �para qué�, por loque mas temprano que tarde los conocimientos caen en el olvido. Muchos de los estudiantes que cursan lamaestría son profesionales que culminaron sus estudios a nivel de licenciatura hace ya varios años y muchode sus conceptos matemáticos se encuentran en desuso lo que di�culta aún mas el proceso, ya que en muchoscasos hay que volver a visitar temas básicos en las distintas áreas como álgebra, cálculo diferencial e integral,algebra matricial, etc.

Para subsanar la primera di�cultad, relacionada con el uso de programas comerciales que requierenlicencia, he optado en los últimos años por el uso de aplicaciones que pertenecen a la corriente del SoftwareLibre (FOSS, Free and Open Source Software, por sus siglas en inglés). Dentro de esta categoría se encuentraun conjunto de herramientas que poseen todas o casi todas las características requeridas para cumplir elobjetivo del curso, que son igual o en algunos casos más poderosas que el software comercial y que tienen laenorme ventaja de que pueden obtenerse sin ningún tipo de restricción para su instalación y uso, en formagratuita y por tiempo inde�nido.

Otro aspecto que considero importante es el no restringir el curso a una sola aplicación, puesto queeso limita al estudiante al uso del software que conoce, lo que ocasiona que al encontrarse en el ejercicioprofesional, si dicho progrma no está disponible y más aún si se trata de un software comercial cuyo costode licenciamiento es elevado, no pueda tener las herramientas necesarias para la solución de problemas. Espor tal razón que en este curso se presentan varias herramientas que pueden usarse en distintas situaciones,algunas en más de una situación, lo que abre las posibilidades de tener un arsenal bien equipado para afrontarcualquier problema matemático.

En lo que respecta al segundo inconveniente, el del propósito de�nido, opté por un campo de sumaimportancia en todas las ramas de ingeniería, pero que lamentablemente no siempre está incluído en las redes

1http://www.mathworks.com/products/matlab/

5

CHAPTER 1. INTRODUCCION 6

Figure 1.1: Mapa Conceptual del Contenido

de estudio de algunas ingenierías: la optimización. El objetivo de todo ingeniero, independientemente de suárea de especialización, es resolver problemas haciendo uso óptimo de los recursos a su disposición, por lo queeste tema debería ser de inclusión obligada en todos los programas académicos de ingeniería. En el caso de laIngeniería Civil, que es de donde provienen la mayoría de profesionales que cursan la Maestría en IngenieríaVial, este tema no se incluye en su malla curricular.

Combinando entonces un propósito claramente de�nido con un conjunto de herramientas disponibles yaptas para tal �n, surge el curso que más apropiadamente se denomina Optimización para Ingenieros conHerramientas Informáticas y esta compilación de apuntes que tienen como propósito servir como guía yreferencia para los estudiantes, debido a la poca disponibilidad de material sobre el tema especí�co. Cabeaclarar que el objetivo del curso y por ende de estos apuntes, es presentar al estudiante y al profesional unenfoque práctico y aplicado de las metodologías discutidas, en vez de profundizar en el aspecto teórico y elrigor matemático de los temas ya que sobre eso existe su�ciente material de muy buena calidad y que seencuentra disponible, por lo que se pide a los lectores mantener esto en mente al utilizar los apuntes. Estasnotas no pretenden servir como libro de texto, por lo que si se requiere profundizar en la parte teórica yconceptual de los métodos y las herramientas aquí presentadas, en la sección de Bibliografía se encuentra unalista de referencias que pueden ser consultadas.

Chapter 2

CONCEPTOS BÁSICOS DEOPTIMIZACIÓN

Para iniciar, es necesario de�nir y delimitar el campo de acción sobre el cual se desarrollará el curso: laoptimización. Al enfrentarse al proceso de solución de problemas, los ingenieros se encuentran generalmentecon una o varias soluciones al mismo, sin embargo, la solución óptima en un sentido muy general es aquellaque es la mejor entre todas las soluciones posibles.

La optimización en ingeniería es una mezcla de ciencia y arte. La existencia de un conjunto de algoritmosde optimización, es decir, procedimientos ya de�nidos, demostrados y probados para obtener la soluciónóptima para determinados modelos de problema es la parte que cae dentro del ámbito cientí�co y abarcaáreas de conocimiento tales como la matemática, la estadística y las ciencias de la computación. Sinembargo, la parte generalmente más difícil y que se convierte en un arte que requiere de mucho criterioy experiencia consiste en convertir el problema real en un modelo al cual pueda aplicarse alguno de losalgoritmos mencionados, luego seleccionar y aplicar el algoritmo adecuado al modelo y �nalmente analizarla solución obtenida y convertirla en una o varias decisiones que puedan ser tomadas sobre el problema realya que muchas veces la respuesta proporcionada por el algoritmo no puede aplicarse tal cual al problemaoriginal.

2.1 Tipos de Optimización

Existen muchos criterios bajo los cuales puede categorizarse un problema de optimización.1En este curso nose pretende abarcar todos los tipos de problema de optimización existentes. Los tipos de optimización puedeclasi�carse de acuerdo a los siguientes criterios:

� Por la cantidad de variables de decisión involucradas

� Univariada: Una sola variable de decisión.

� Multivariada: Dos o mas variables de decisión.

� Por el grado de las variables de decisión y sus relaciones en la función objetivo y/o las restricciones:

� Lineal: Todas las variables en el objetivo y las restricciones tienen un exponente igual a 1 y lasoperaciones que se realizan entre ellas son solamente suma y resta.

� No Lineal: Existen variables con exponentes distintos a 1 y/o existen operaciones distintas asuma/resta entre las variables de decisión.

� Por la presencia o ausencia de restricciones en el modelo:

1http://en.wikipedia.org/wiki/Mathematical_optimization

7

CHAPTER 2. CONCEPTOS BÁSICOS DE OPTIMIZACIÓN 8

� No Restringida: Se desea optimizar una función objetivo pero no existen restricciones adicionalesa considerar en el modelo.

� Restringida: Se desea optimizar una función objetivo sujeto al cumplimiento de una o masrestricciones.

� Por el dominio de las variables de decisión:

� Continua: Las variables de decisión pertenecen al conjunto de los números reales y pueden tomarcualquier valor en dicho conjunto.

� Discreta: Las variables solo pueden tomar ciertos valores. Un caso especial es el caso de laoptimización entera.

� Combinatoria: Las variables de decisión solo pueden tomar valores dentro de un conjunto de�nidoy se busca encontrar la combinación de valores para las distintas variables que hace óptimo elresultado.

� Por la cantidad de objetivos de optimización:

� Uniobjetivo: Un solo objetivo o función objetivo.

� Multiobjetivo: Dos o mas objetivos que compiten entre sí por los recursos.

Estos son solamente algunos de los criterios de clasi�cación de un problema de optimización, pero cada unode ellos puede a su vez dividirse en otras categorías.

En el sentido estríctamente matemático, una solución óptima está asociada directamente con un puntode in�exión de una función, el cual, dependiendo del objetivo, puede tratarse de un máximo o un mínimo,por lo que cuando hablamos de optimizar, estamos hablando de encontrar para un conjunto de variables dedecisión, los valores que maximizan o minimizan una función objetivo al mismo tiempo que satisfacen unconjunto de restricciones que existen en el modelo.

2.2 Desarrollo de un Modelo para Optimización

A continuación se describe un procedimiento para el desarrollo de un modelo matemático. Al principio,mientras el estudiante se acostumbra a realizar el proceso de pensamiento para modelar, se sugiere seguirpaso a paso este algoritmo en forma sistemática. Con el paso del tiempo y la práctica constante, el procesose volverá algo natural e intuitivo.

1. Entender el problema: Aunque pueda parecer obvio e innecesario incluír este paso explícitamente,la experiencia en la solución de problemas muestra que la causa principal por la que se fracasa, esprecisamente porque no se ha de�nido y delimitado correctamente el problema a resolver por lo que noexiste una comprensión del mismo. Para asegurar el correcto entendimiento del problema, hay variasestrategias que pueden seguirse, entre las cuales una de las más útiles es hacer un esquema, dibujoo diagrama del problema, de una forma simple pero tratando de representar grá�camente todos losaspectos de la situación.

2. Identi�car el objetivo: Como se mencionó en la sección anterior, un problema de optimización buscasiempre uno de dos objetivos posibles, maximizar o minimizar algo. En función a la informaciónproporcionada y al contexto del problema en cuestión, es posible identi�car dicho objetivo. Por ejemplo,si en un problema se está tratando con aspectos como costos, distancia, mano de obra o materiales,es fácil llegar a la conclusión que lo que se busca es minimizar dichos aspectos. Por el contrario, si seestá hablando de cosas como ventas, ingresos, dinero, ganancias, rendimiento, etc. puede inferirse queel objetivo perseguido es maximizar tales cosas.

3. Identi�car las variables de decisión: Las variables de decisión son, como su nombre lo sugiere, aquellosaspectos del modelo que se encuentran bajo el control del tomador de decisiones, de manera queajustando el valor de dichas variables, se modi�ca el resultado del modelo. Generalmente estas variablesson representadas matemáticamente en forma de un vector de la forma X = x1, x2, x3,...según sea lacantidad de variables que existen en el modelo.

CHAPTER 2. CONCEPTOS BÁSICOS DE OPTIMIZACIÓN 9

Figure 2.1: Proceso de Solución de Problemas de Optimización

4. Expresar el objetivo como una función matemática de las variables de decisión: Este paso consiste enidenti�car las relaciones matemáticas existentes entre las variables de decisión que producen el objetivodel paso 2. A esta función matemática se le llama Función Objetivo. Expresado en forma matemática:

max o min Z = f(x1, x2, x3, ...)

5. Identi�car las restricciones en el problema: Una restricción en un problema de optimización se re�ere acualquier obstáculo que nos impide obtener un resultado ideal o deseado. Generalmente las restriccionesse originan de las siguientes situaciones:

(a) Limitaciones de recursos disponibles, tales como materia prima, tiempo, espacio, personal, etc.

(b) Requerimientos que deben ser cumplidos, tales como cantidades mínimas de producción, especi�cacionesde producto, calidad, etc.

(c) Condiciones sobre las variables de decisión para su aplicación en la práctica, como por ejemplo,variables no negativas, variables enteras, variables binarias, etc.

6. Expresar las restricciónes como relaciones entre las variables de decisión: Las relaciones para representarlas restricciones no se limitan solamente a relaciones de igualdad sino que pueden expresarse tambiéncomo desigualdades, por lo que es importante tener muy clara la naturaleza de la restricción, es decir,saber si:

(a) Debe cumplirse con un valor especí�co: Restricción de igualdad =

(b) Existe un valor mínimo que debe alcanzarse: Restricción de desigualdad del tipo ≥(c) Existe un valor máximo que no puede excederse: Restricción de desigualdad del tipo ≤

7. Expresar el modelo en una forma canónica o estándar: Esto permitirá identi�car y aplicar correctamenteel algoritmo de solución en la etapa correspondiente. Ciertos algoritmos requieren que el problema estéexpresado en una forma de�nida para iniciar el proceso de solución.

Este proceso se entenderá mas claramente en los siguientes capítulos cuando se desarrolle en el contextode un caso especí�co.

CHAPTER 2. CONCEPTOS BÁSICOS DE OPTIMIZACIÓN 10

Figure 2.2: Proceso para el desarrollo de un modelo de optimización

Chapter 3

HERRAMIENTAS INFORMÁTICAS

Como se mencionó en la introducción, este es un curso eminentemente práctico y aplicado, por lo que lasolución de los modelos de optimización se hará únicamente por medio de herramientas informáticas, así queen este capítulo se hará una breve introducción a las mismas. Se presentan en la seccion de bibliografía variasreferencias donde el estudiante puede consultar en detalle la teoría detrás de cada uno de los algoritmos, asícomo su desarrollo en forma manual si necesita conocerlo.

3.1 Introducción al Software Libre de Código Abierto

El movimiento de software libre de código abierto (Free and Open Source Software o FOSS)1 surgió durantela década de 1980 como una respuesta al cambio en el modelo de negocios en el mundo de la informática.Anteriormente, los programas de computadoras eran incluídos como parte de la venta del equipo o hardware yera permitido realizar copias del mismo y tener acceso incluso al código fuente para poder hacer modi�cacionespara adaptarlo a las necesidades particulares. Con el advenimiento del mercado de programas informáticos,principalmente impulsado a �nales de la década de 1970 con el surgimiendo de Microsoft®, el software seconvirtió en un producto que se vendía por separado, bajo un modelo de licenciamiento para su uso, lo cualimplica una serie de restricciones ya que las compañías desarrolladoras mantienen todos los derechos sobreel mismo, lo cual impide al comprador copiarlo, instalarlo en otras computadoras, ver el código fuente paraentender su funcionamiento o hacer modi�caciones o adaptaciones de acuerdo a sus propias necesidades.

En 1983 Richard Stallman2, un académico e informático de MIT funda el movimiento de software librecuyo objetivo es desarrollar programas que puedan ser de libre acceso para quienes deseen usarlos. Lascaracterísticas de una aplicación de software libre son principalmente las siguientes:

� Puede ser obtenido en forma gratuita, aunque esto no siempre es totalmente cierto, ya que algunasveces se puede cobrar el costo del medio en el cual se distribuya, pero no existe un pago por licenciapara su uso.

� Puede copiarse las veces que se desee e instalarse en todas las computadoras que se requiera, sinlimitaciones ni restricción alguna.

� Se puede tener acceso al código fuente para poder estudiar y comprender su funcionamiento. Tambiénpuede modi�carse si es necesario para adaptarlo a distintas necesidades.

Este último aspecto es especialmente importante en el caso especí�co de los programas cientí�cos debido aque en el proceso de investigación y desarrollo, así como en la solución de problemas, no es válido el modelode �caja negra� utilizado por el software comercial, donde se aceptan los resultados obtenidos sin validar laforma de obtenerlos, por lo que es sumamente importante entender los algoritmos que los programas utilizan.

Con la llegada y expansión de internet a nivel global, el movimiento de software libre se ha fortalecidoy extendido de tal forma que en la actualidad, los programas desarrollados bajo este modelo, compiten con

1http://en.wikipedia.org/wiki/Free_and_open-source_software2http://es.wikipedia.org/wiki/Richard_Stallman

11

CHAPTER 3. HERRAMIENTAS INFORMÁTICAS 12

los programas comerciales en calidad, incluso en algunos casos superando a sus pares comerciales. Muchasorganizaciones en todo el mundo han adoptado el sofware libre por diversas razones, siendo una de ellas elahorro en los costos de licencia, pero en muchos casos no es la principal, sino que se ha comprobado la calidady versatilidad de los programas libres por encima del software comercial.

En este curso estaremos utilizando varias aplicaciones que pertenecen a la categoría de software libre, locual presenta una serie de ventajas para el desarrollo del programa del curso. Entre las ventajas podemosmencionar las siguientes:

� Todos los programas a utilizar pueden ser descargados de internet sin ningún costo.

� Pueden instalarse en las computadoras personales de los estudiantes, lo que les permite tenerlos siempredisponibles para realizar prácticas y tareas. La mayoría de ellos puede ser instalado en diversos sistemasoperativos como MS Windows®, Linux o Mac OS®

� Pueden utilizarlo sin restricción, incluso para �nes comerciales por lo que pueden aplicarlo en su ejercicioprofesional.

� Existe una gran cantidad de material de referencia disponible en internet para aprender a utilizarlo.

� Los programas se encuentran en constante desarrollo por parte de una comunidad muy activa alrededordel mundo, por lo que frecuentemente se liberan versiones actualizadas y mejoradas.

3.2 Software a utilizar

En esta sección se enumera cada una de las aplicaciones de software libre que pueden utilizarse para resolverproblemas de optimización y se hace una breve reseña de ellas, indicando su principal área de aplicaciónasí como algunas de sus características mas importantes. Cuando es pertinente se indica el nombre de unprograma comercial similar para usarlo como referencia y punto de comparación en cuanto a funcionalidad.Es posible que no todas sean utilizadas en el curso, pero es importante conocer su existencia y aplicaciónpara quienes deseen en un futuro profundizar sobre alguna de ellas.

3.2.1 Maxima

Maxima puede ser catalogado dentro de la categoría de los CAS (Computer Algebra Systems). Un CAS esun programa matemático cuya fortaleza radica en la capacidad de realizar operaciones y manipulación sobreobjetos simbólicos. Es decir, un CAS es capaz de tomar una expresión representada en forma simbólicay realizar operaciones básicas (suma, multiplicacion, exponenciación, etc.) y también operaciones másavanzadas como derivación e integración simbólica, representación grá�ca, solución de ecuaciones, etc.

Maxima desciende del programa más antíguo dentro de los CAS, llamado Macsyma, que fué desarrolladoen la década de 1960. Es una herramienta sumamente completa, poderosa, versátil y estable, aparte de seruna aplicación 100% libre. Dentro del tema de optimización, puede ser aplicado en los siguientes casos:

� Optimización No Lineal y No Restringida para una variable

� Optimización Lineal Restringida Multivariada

� Optimizacion No Lineal Restringida Multivariada

Maxima es similar en funcionalidades a algunos programas comerciales tales como Mathematica®3, Maple®4

o MathCad®5.Maxima puede ser descargado en la siguiente dirección:http://maxima.sourceforge.net/

CHAPTER 3. HERRAMIENTAS INFORMÁTICAS 13

Figure 3.1: Imagenes de Maxima

Figure 3.2: Solver de Calc

CHAPTER 3. HERRAMIENTAS INFORMÁTICAS 14

3.2.2 OpenO�ce Calc/LibreO�ce Calc

OpenO�ce es una suite de o�cina que compite con la omnipresente Microsoft O�ce®. De hecho, existe unalto nivel de compatibilidad entre ellas de manera que OpenO�ce puede abrir archivos de O�ce. Aunquela suite se compone de una serie de aplicaciones (procesador de texto, herramienta de presentaciones, basede datos, etc.) nos interesa principalmente su aplicación de Hoja Electrónica, llamada Calc, muy similar ycompatible con Excel de MS O�ce, por lo que los procedimientos de optimización pueden fácilmente y conpocos cambios, replicarse de una herramienta a otra.

Existen 2 opciones para escoger en el caso de Calc. La primera es OpenO�ce (anteriormente llamadaStarO�ce), que es la herramienta más antigua, con casi 20 años de existencia y que ha alcanzado un nivelde madurez y estabilidad que permite sea utilizado en muchas organizacones en el mundo como un sustitutode Excel. La segunda opción es LibreO�ce, que es una derivación que hizo un grupo de desarrolladores en el2010 a partir de OpenO�ce cuando éste fué adquirido por Oracle. Por tratarse de aplicaciones de softwarelibre, el código fuente original de LibreO�ce era el mismo que OpenO�ce por lo que ambos son casi idénticos,lo que implica que puede usarse uno u otro indistintamente.

Por tratarse de una hoja electrónica, Calc puede utilizarse para un sinfín de propósitos como herramientade cálculo. En el caso de la optimización, las 3 aplicaciones aquí mencionadas cuentan con una herramientadenominada �solver� que permite resolver problemas de distinta índole. Dado que muchas personas estánfamiliarizadas con el uso de hojas electrónicas, así como su estructura matricial de celdas, se hace muy sencilloel planteamiento de modelos, especialmente en el tema de optimización de redes, tema de mucha importanciaen la ingeniería vial.

OpenO�ce puede ser descargado en:http://www.openoffice.org/

LibreO�ce puede ser descargado en:http://www.libreoffice.org/

3.2.3 SmathStudio

SmathStudio es una herramienta con cierto nivel de similitud con la herramienta comercial MathCad®mencionada anteriormente. Se trata de una aplicación de cálculo matemático interactiva que permite plasmarexpresiones matemáticas y obtener los resultados utilizando la simbología técnica tal y como se presenta en lamayoría de libros de texto y como si se estuviese trabajando sobre una hoja de papel. SmathStudio funcionabajo el concepto de region de cálculo, es decir que el resultado de una expresión depende del área dondedicha expresión se encuentre.

Adicionalmente, posee la capacidad de implementar algoritmos gracias a su capacidad de programación,lo que hace que sea muy fácil y rápido el desarrollo de procesos de cálculo que en otras herramientas seríanrelativamente complejos o extensos.

En este curso se utilizará esta herramienta para desarrollar los modelos analíticos para el estudio de líneasde espera, o Teoría de Colas, ya que permite utilizar la misma nomenclatura y simbología que se utiliza enla mayor parte de literatura sobre el tema.

SmathStudio no es un programa que cumpla en su totalidad con las características de un software libre,puesto que su código fuente no se pone a disposición de los usuarios, sin embargo, se trata de una aplicacióngratuita y que puede utilizarse para los propósitos que se desee, por lo que llena los requerimientos para serutilizada en este curso.

SmathStudio puede obtenerse en la siguiente dirección:http://en.smath.info/forum/

3.2.4 Sage

Sage es, quizá, el proyecto de software libre matemático más ambicioso y completo existente en la actualidad.Siendo un programa relativamente nuevo, iniciado en el 2005, ha logrado consolidarse en los circulos académicosmundiales como una herramienta predilecta por varias razones. La primera, Sage no reinventó la rueda

3http://www.wolfram.com/4http://www.maplesoft.com/products/maple/5http://www.ptc.com/product/mathcad/

CHAPTER 3. HERRAMIENTAS INFORMÁTICAS 15

Figure 3.3: Imagen de SmathStudio

partiendo de cero en su desarrollo, sino que hace uso de muchas otras aplicaciones matemáticas de sofware libreya existentes las cuales integra en una sola interfaz, lo que lo hace extremadamente poderoso y versátil. Otrarazón es el hecho que combina todas las herramientas con el poder y sencillez del lenguaje de programaciónde más rápido crecimiento: Python.

Las aplicaciones de Sage abarcan una amplia gama de temas, tales como álgebra, cálculo, algebra lineal,teoría de números, teoría de grafos, etc. En lo que respecta a optimización, Sage puede hacer todo lo queMaxima hace, puesto que Maxima es uno de los componentes de Sage. En adición, Sage posee ampliascapacidades de trabajar con grafos, lo que lo hace ideal para la aplicacion de algoritmos de optimización deredes, como la ruta más corta y el árbol mínimo de expansión, por mencionar algunos.

El objetivo del proyecto Sage es muy claro, convertirse en una alternativa de software libre para aplicacionescomerciales como Matlab, Mathematica, Maple, etc. Por lo que se puede ver, en poco tiempo se ha avanzadoun gran trecho hacia el logro de tal objetivo. En mi opinión, en unos cuantos años, Sage será la herramientade uso mas generalizado entre la comunidad cientí�ca y académica en el mundo.

Sage puede ser obtenido en la siguiente dirección:http://sagemath.org/

3.2.5 Lenguajes de Modelado / Minizinc

A nivel de aplicaciones industriales, comerciales u otro tipo donde el practicante de la optimización seencuentra con problemas que involucran varios miles (incluso cientos de miles) de variables de decisión yotra cantidad similar de restricciones, es indispensable recurrir a los Lenguajes de Modelado Algebraico. Enrealidad, la mayoría de programas para la solución de modelos de optimización constan de dos componentesprincipales: Un interfase de usuario que permite modelar el problema (modelador) y un motor que resuelveel problema (solver). El interfase de modelado generalmente consiste en un lenguaje que permite expresarun problema de optimización en forma abstracta, utilizando notación matricial o vectorial que se asemejabastante a la notación matemática que presentan los textos sobre el tema. Esto representa una enormeventaja, ya que el mismo modelo puede utilizarse para resolver cualquier problema similar, independientementede la cantidad de variables y/o restricciones que tenga, ya que la estructura es la misma y solo habrá quede�nir la cantidad de variables y restricciones para cada instancia especí�ca que se desee resolver. El interfaseconvierte el problema expresado por medio del lenguaje de modelado, en un objeto que puede ser enviado alsolver para su resolución, lo cual se hace en forma transparente para el usuario.

Tanto para el interfase de modelado como para el solver existen alternativas de tipo comercial y de tipolibre. Se puede combinar un modelador libre con un solver comercial y viceversa. Entre las herramientasde software libre para optimización, una de las mejores que existen es MiniZinc, que consiste en un entorno

CHAPTER 3. HERRAMIENTAS INFORMÁTICAS 16

Figure 3.4: Imagenes de Sage

CHAPTER 3. HERRAMIENTAS INFORMÁTICAS 17

Figure 3.5: Ejemplo de Modelo en MiniZinc

CHAPTER 3. HERRAMIENTAS INFORMÁTICAS 18

Figure 3.6: Imagenes de Octave

integrado de desarrollo (IDE), un lenguaje de modelado y una serie de solvers que pueden resolver distintostipos de problemas de optimización, por ejemplo, optimización lineal, optimización entera, optimización linealentera mixta, optimización combinatoria, etc. MiniZinc trae integrados varios solvers libres y gratuitos, comoya se mencionó anteriormente, pero también puede interactuar con solvers de tipo comercial lo cual lo hacemuy �exible y poderoso para aplicaciones incluso de tipo industrial. MiniZinc puede ser descargado y utilizadoen forma gratuita para cualquier aplicación de la siguiente dirección web:

https://www.minizinc.org/

3.2.6 Octave

Octave es una herramienta que puede clasi�carse dentro de las aplicaciones de Cálculo Numérico. Su objetivoes crear una alternativa de software libre para Matlab y de hecho, actualmente existe un alto nivel decompatibilidad entre ambas, cercana al 99%, es decir que el código de Matlab puede ejecutarse casi sinmodi�caciones en Octave. Sus fortalezas radican en la enorme capacidad de procesar grandes cantidades dedatos a una grán velocidad de cálculo, así como el manejo en forma natural de estructuras matriciales, lo cualla hace ideal para trabajar con algoritmos de optimización, puesto que muchos de éstos se basan en cálculomatricial.

Mas que una aplicación, tanto Matlab como Octave son mas bien un lenguaje de programación y unentorno de desarrollo de aplicaciones para el cálculo cientí�co. Existe una grán cantidad de paquetesadicionales que pueden descargarse y que extienden las funcionalidades de Octave en áreas especí�cas. Existenpaquetes especí�cos para el área de optimización, tanto lineal como no lineal.

Quizá una de las mayores desventajas de Octave es la falta de una Interfase Gráfica de Usuario oGUI por sus siglas en inglés. Aunque existen algunos proyectos que se han desarrollado en forma independientepara subsanar esta debilidad, aún no existe una interfaz que llene en su totalidad ese vacío, aunque ya se haanunciado por parte de los desarrolladores del proyecto Octave que ya se está trabajando en una GUI quevendrá integrada en futuras versiones.

Octave puede descargarse de la siguiente dirección:http://www.gnu.org/software/octave/

CHAPTER 3. HERRAMIENTAS INFORMÁTICAS 19

Figure 3.7: Imagenes de Scilab

3.2.7 Scilab

Scilab es un software muy similar a Octave y que también pertenece a la categoría de software para cálculonumérico. Aunque su compatibilidad con Matlab no es tan alta como Octave, puede ser considerado unaalternativa. Al igual que Octave, Scilab basa su fortaleza en el manejo de objetos matriciales en formanatural y simple. También puede considerarse un lenguaje y un entorno de programación para el desarrollode aplicaciones complejas.

Otra cosa que tienen en común Scilab y Octave es la amplia variedad de paquetes adicionales paraextender la funcionalidad básica hacia aplicaciones especí�cas. Scilab cuenta con un paquete (o Toolbox,como se denomina comunmente) desarrollado especí�camente para resolver problemas en el campo de laoptimización, tanto lineal como no linea.

Scilab también incluye un programa sumamente interesante denominado XCos y que sirve para modelary simular sistemas dinámicos complejos. Aunque este tema está fuera del alcance de este documento, esimportante mencionarlo porque es una alternativa al programa llamado Simulink® que es un complementode Matlab, aunque se adquiere por aparte. En estas aplicaciones, tanto XCos como Simulink es posiblemodelar, simular y analizar el comportamiento de sistemas dinámicos cuyo análisis sería extremadamentedifícil por la forma tradicional, es decir, utilizando herramientas matemáticas, ya que la complejidad de lasrelaciones es muy alta.

Scilab es una aplicación desarrollada en Francia y es utilizada por muchas organizaciones cientí�cas yacadémicas en Europa.

Scilab puede descargarse en:http://www.scilab.org/

Part II

OPTIMIZACIÓN APLICADA

20

Chapter 4

OPTIMIZACIÓN NO LINEAL NORESTRINGIDA EN UNA VARIABLE

La decisión de iniciar esta segunda parte con los modelos de optimización no lineal sin restricciones para unasola variable se basa en el hecho que este es un tema que generalmente se cubre en un curso introductoriode cálculo diferencial. La optimización (maximización o minimización) de funciones no lineales en una solavariable es una de las primeras aplicaciones de la derivada que se aprende.

Partiendo del hecho que se trata de un curso para ingenieros, es válido suponer que existe ya la basede cálculo diferencial necesaria para entender los fundamentos teóricos del tema, razón por la cual, como seaclaró en la Introducción en estos apuntes no se cubre la teoría sino solamente la aplicación de los conceptosdirectamente con el uso de las herramientas computacionales. El estudiante puede consultar cualquier librode texto de cálculo para refrescar aquellos conceptos que considere necesarios antes de avanzar a la siguientesección.

4.1 Desarrollo de un modelo de Optimización

Dicho lo anterior, la forma más directa de exponer el tema y más especí�camente, el proceso de desarrollodel modelo es a través de un ejemplo:

Los barriles que se utilizan para almacenar petróleo tienen forma cilíndrica y una capacidad de Ejemplo # 1160 litros. Hallar las dimensiones del cilindro para que el material empleado en su construcciónsea mínimo.

Paso # 1: Entender el problema

Como se mencionó el la primera parte, es necesario estar seguro que se tiene claro el problema. Para eso,generalmente es recomendable realizar un diagrama de la situación bajo análisis:

La �gura muestra el envase cilíndrico y las dimensiones que lo de�nen, en este caso el diámetro (D) y laaltura (H). Adicionalmente el enunciado del ejemplo indica que el volumen que deben contener los recipienteses de 160 litros. El material a utilizar es la super�cie total que ocupa el barril, es decir, las 2 tapas superioresy el cilindro.

21

CHAPTER 4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE 22

Paso # 2: Identi�car el Objetivo

En este caso el enunciado es muy claro respecto a que lo que se pretende es minimizar el material parafabricar el barril, y en el paso anterior identi�camos que el material corresponde al área total del cilindro,por lo que el objetivo se puede expresar como: Minimizar el Area Total del Cilindro.

Paso # 3: Identi�car las Variables de Decisión

Las Variables de Decison (VD) son los parámetros del modelo que están bajo nuestro control y que podemosmodi�car para lograr el objetivo. En este ejempo, las decisiones que debemos tomar corresponden a eldiámetro y la altura del cilindro. Puede pensarse que se trata de 2 variables independientes, pero en realidadambas están relacionadas ya que el volumen total del cilindro ya esta de�nido. El volumen y el área de uncilindro están dadas por las siguientes relaciones:

V = π ×(D2

)2 ×H ⇒ H = 4×Vπ×D2

A = 2× π ×(D2

)2+ π ×D ×H

Paso # 4: Expresar el Objetivo como una función de las Variables de Decisión

Si expresamos el Area Total y hacemos la sustitución correspondiente como se indicó en el paso anterior,obtenemos la función siguiente para el Area Total que queremos minimizar, en función de una sola variable,en este caso el diámetro (D), por lo que al resolver para D, solo debemos sustituír su valor en la expresióndespejada para H en el paso anterior.

Paso # 5: Identi�car las Restricciones

En este problema particular, como se in�ere por el título del tema, por tratarse de un problema de optimizacionlineal no restringido, no existen restricciones. Es posible que se pueda pensar que el volumen del cilindroes una restricción, pero no sería correcto. Una restricción generalmente se re�ere a ciertas condiciones quedeben cumplir las variables de decision, por ejemplo, si en este problema nos indicaran que los barriles nodeben exceder una altura de 1 metro, o si nos indicaran que el diámetro no debe exceder 70 cms nos estaríanimponiendo restricciones al modelo. Esto se hará mas claro en el siguiente capítulo.

Paso # 6: Expresar las Restricciones como relaciones de las Variables de Decisión

No aplica en este problema.

Paso # 7: Colocar el modelo en una forma canónica o estándar

En el caso de la optimización no lineal de una variable sin restricciones, basta con expresar la funciónmatemática de una variable e indicar cual es el objetivo, ya sea maximizar o minimizar, por lo que quedaríatal y como se representa en el paso # 3.

4.2 Optimización No Lineal en Maxima

Ahora vamos a introducirnos en el uso de las aplicaciones especí�cas y para este problema en particular vamosa utilizar Maxima. Este no es un tutorial introductorio de Máxima, ya que existe un grán número de ellosdisponibles en internet para ser descargados y utilizados para aprender los primeros pasos. En este curso seproporcionan algunos de ellos a los estudiantes. Al iniciar Maxima, nos encontramos con una pantalla comola mostrada abajo:

CHAPTER 4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE 23

Al iniciar a escribir algo, inmediatamente aparece el �prompt� del programa, seguido por cualquier cosaque tecleemos. Es importante recordar que para ejecutar una instrucción en Maxima, debemos presionarsimultáneamente las teclas

[SHIFT]+[ENTER]

En la siguiente pantalla se presenta el procedimiento, con sus respectivas instrucciones sobre cada paso:

Ahora, sería interesante tener una idea de la forma de la grá�ca en un intervalo de�nido, para poder intuírdonde podria encontrarse el mínimo que buscamos. Para esto, Maxima posee excelentes funcionalidades degra�cación y en forma sumamente simple, como se muestra a continuación:

CHAPTER 4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE 24

Como se puede observar en la grá�ca, el valor mínimo para esta función se encuentra cerca del valor deD=0.6, o sea, esperaríamos que el diámetro para el barril será aproximadamente de 60 cms. Sin embargo,esto es solo una aproximación a la solución exácta, la cual también podemos obtener por medio de Maxima.Como recordamos de nuestro curso básico de cálculo diferencial, para encontrar un punto de in�exión enuna función contínua y derivable en un intervalo, simplemente necesitamos encontrar la primera derivada dela función, luego igualar esta primera derivada a 0 y resolver la ecuación respectiva. Como se expresó enla introducción, es posible que algunos de los estudiantes de este curso ya hayan olvidado sus técnicas dederivación e integración y otros aspectos básicos del cálculo. No hay porque preocuparse, para esto, recurrimosa la tecnología y en este caso, a nuestras herramientas de software matemático. Hacer este procedimiento enMaxima es sumamente sencillo y puede hacerse en 2 pasos, como se muestra a continuación:

CHAPTER 4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE 25

De esta forma, obtenemos la respuesta exácta que buscamos, el diámetro del barril debe tener 0.588 mts(58 cms) de diámetro. A partir de este valor, podemos encontrar el valor de la altura, sustituyendo D en laexpresión para H en el paso # 3. Se deja esto al lector curioso, asi como un análisis del resultado obtenido.

Realizaremos un ejemplo más, aunque ya sin el detalle para cada uno de los pasos, solo para que elestudiante tenga claro el proceso. El ejemplo a resolver es el siguiente:

Una ventana normanda tiene forma de rectángulo rematado por un semicírculo. Si el perímetro Ejemplo # 2de la ventana es de 30 pies, encuentre las dimensiones de la ventana de modo que entre lacantidad más grande de luz. A continuación se presenta un diagrama que representa la ventana, paratener una idea más clara del problema:

CHAPTER 4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE 26

En este caso, necesitamos determinar las dimensiones de la ventana (Variables de Decision), o sea labase (b) y la altura (h). La base también corresponde al diámetro del semicírculo superior de la ventana.Partiendo del hecho que conocemos la longitud total del perímetro podemos utilizarla para reducir la cantidadde variables a una sola, de la siguiente forma. Para este ejemplo, vamos a poner a Maxima a realizar toda lamanipulación algebráica de las expresiones, recuerden que es un Sistema Algebráico Computarizado!!

CHAPTER 4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE 27

Podemos observar que el punto máximo se alcanza en un valor de b ligeramente mayor a 8. Ahorapodemos proceder a encontrar el valor exácto:

4.3 Optimización No Lineal en Sage

Sage es una herramienta verdaderamente impresionante y con un futuro muy prometedor en el ámbitoacadémico y cientí�co, como se mencionó en el capítulo anterior, por lo que vale la pena familiarizarsecon ella. Vamos a resolver los mismos ejemplos de la sección anterior, solo que esta vez utilizando Sage.

Sage es, como ya se mencionó, una de las herramientas más poderosas de cálculo cientí�co disponibles enla actualidad, que integra a una amplia variedad de aplicaciones en un único interfase.

Sage puede ejecutarse directamente en un navegador. Al iniciar la sesión, nos encontraremos con lapantalla que se presenta a continuación:

CHAPTER 4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE 28

Al seleccionar la opción �New Worksheet�, podemos crear una nueva hoja de trabajo, a la que deberemosdar un nombre. Una vez hecho esto, estamos ante un ambiente integrado de trabajo que nos permitirá hacermuchas cosas ya que integra la funcionalidad de muchas otras herramientas en una sola, potenciada por lafacilidad y claridad de un lenguaje de programación como Python.

CHAPTER 4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE 29

CHAPTER 4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE 30

Ahora mostraremos el desarrollo del Ejemplo # 2 de una forma mas breve, sin incluír todo el detalle delejemplo anterior:

CHAPTER 4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE 31

Como era de esperarse, los resultados son los mismos a los obtenidos por medio de Maxima. En realidad,Sage utiliza Maxima internamente para realizar la manipulación de objetos simbólicos, sin embargo, existendiferencias en los nombres de las instrucciones o funciones de un sistema a otro, por ejemplo, como vimos,en Maxima, la función para derivar es:

diff(expresión, variable)

mientras que en Sage, el mismo objetivo se logra utilizando la función siguiente:

derivative(expresión, variable)

Para el propósito especí�co de la optimización no lineal en una variable y sin restricciones, decidir laherramienta a utilizar entre Sage y Maxima es simplemente una cuestión de gustos o preferencias, aunquepara otras aplicaciones mas so�sticadas en ciencia e ingeniería, Sage es una herramienta mucho mas completay poderosa.

4.3.1 Caso Especial

Existen algunos casos en los cuales los CAS (Computer Algebra Systems) no son capaces de resolver ecuacionesen forma simbólica. Esto es relativamente común y es necesario estar preparado para afrontar estas situaciones.Vamos a demostrar como hacerlo con un ejemplo.

Dos puntos A, B se encuentran en la orilla de una playa recta, separados 6 km entre sí. Un Ejemplo # 3punto C esta frente a B a 3 km en el mar. Cuesta $400.00 tender 1 km de tubería en la playay $500.00 en el mar. Determine la forma más económica de trazar la tubería desde A hasta C. (No necesariamente debe pasar por B.) Como hemos dicho, siempre es bueno visualizar el problemautilizando algun tipo de ayuda como un diagrama. Veamos como se vería esta situación diagramada:

CHAPTER 4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE 32

De acuerdo a lo mostrado en el diagrama, la distancia total de tubería requerida es igual a la longitud dex mas la longitud de la hipotenusa del triángulo rectángulo que se forma por 6-x y 3 que son las distanciasentre los puntos A, B y C. Conociendo lo anterior, es relativamente sencillo formar la función objetivo aoptimizar, en este caso, a minimizar. Para esto, haremos uso de Sage, de la siguiente manera:

Resulta evidente por la grá�ca que el valor mínimo de la función se encuentra cerca de 2. Para estarseguros, necesitamos seguir el procedimiento usual, primero derivamos la función objetivo respecto a x y luegoresolvemos la primera derivada para x y eso debería darnos el valor mínimo. Veamos que sucede cuando lohacemos en Sage:

CHAPTER 4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE 33

¾Que sucede? Parece que la solución a la primera derivada es otra función de x en lugar de ser un númeroreal. Esto tiene una explicación simple, Sage no pudo resolver la ecuación en forma simbólica. Esto es algorelativamente común. Cuando se trabaja con expresiones algebraicas, algunos programas computarizados sonincapaces de encontrar una solución en forma simbólica o lo que se conoce como Forma Cerrada1. Cuandoesto sucede, no hay porque preocuparse, ya que siempre hay formas alternativas de encontrar los valoresque buscamos. Para esto, el lector seguramente recordará sus cursos de Métodos Numéricos en los cuales seutilizaban algoritmos iterativos para resolver una gran cantidad de problemas matemáticos, desde la soluciónde ecuaciones, pasando por la integración numérica hasta llegar a la solución de ecuaciones diferenciales yotras. Nuevamente, este material no cubre la teoría detrás de dichos algoritmos, pero sí podemos hacer usode las herramientas informáticas disponibles.

Para resolver este problema, lo que necesitamos es encontrar la solución (raíz) de una ecuación no lineal dela forma f(x)=0. Para esto existen una serie de algoritmos numéricos como el método de Newton o NewtonRaphson. Afortunadamente, Sage nos permite usar estos métodos sin tener que programarlos nosotrosmismos.

Podemos ver que Sage encuentra fácilmente la solución en forma numérica, la cual se encuentra casiexáctamente en 2, ya que la pequeña diferencia es atribuída a un error de redondeo en el cálculo numérico.

Sage nos ofrece casi siempre, mas de una forma de resolver los distintos problemas a los que nos enfrentamos.En el caso del ejemplo en cuestión, existe una forma mas directa de encontrar el valor óptimo (mínimo, eneste caso) de la función sin necesidad de recurrir al método de la primera derivada. Para esto podemosutilizar una función especial de Sage directamente sobre la función objetivo como se ve a continuación:

Esta función es sumamente útil cuando se desea optimizar funciones no lineales en varias variables, comose verá mas adelante, sin embargo, la limitación de este enfoque es que solo puede utilizarse para minimizar.

1http://es.wikipedia.org/wiki/Forma_cerrada_(matemática)

CHAPTER 4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE 34

4.4 Ejercicios

Chapter 5

OPTIMIZACIÓN LINEALRESTRINGIDA EN VARIASVARIABLES

El tema de Optimización Lineal Restringida Multivariable es uno de los temas mas importantes de este curso,puesto que su aplicación no solo se limita al campo de la ingeniería sino que también se extiende al mundode los negocios y la administración.

La optimización lineal restringida pertenece a un campo de la matemática aplicada que se llama ProgramaciónMatemática y cuyo origen se remonta a la Segunda Guerra Mundial y en especial a los aportes de GeorgeDantzig1 a quien se le atribuye el desarrollo de la Programacion Lineal la cual fue aplicada para resolverproblemas reales de optimización en el uso de recursos para las operaciones militares.

Como ya se dijo anteriormente, la Programación Lineal es un tema generalmente incluído en los contenidoscurriculares de algunas carreras de ingeniería pero lamentablemente no en todas. También se encuentra encontenidos de cursos de las carreras de Administración de Empresas, Economía, Agronomía y en algunosprogramas de postgrado, en cursos tales como Investigación de Operaciones o Métodos Cuantitativos paraAdministración.

5.1 Programación Lineal

La característica principal de la programación lineal es la condición que todas las variables de decisión tantoen la función objetivo como en las restricciones tienen grado 1. Esto garantiza la existencia de algoritmosde�nidos que pueden resolver estos problemas en forma directa. El más famoso y utilizado de estos algoritmoses el denominado Método Simplex2 que es el que comunmente se enseña en un curso de Operaciones y quese basa en algebra matricial para obtener los valores óptimos para las variables de decisión. Sin embargo, noes el único algoritmo existente, ya que entre otros podemos mencionar el Algorítmo de Punto Interior3 quetambién goza de cierta popularidad.

No entraremos en toda la teoría porque el estudiante puede revisar las referencias bibliográ�cas paraprofundizar en ella, por lo que vamos a demostrar el modelo de Programación Lineal mediante un ejemplo,el cual estaremos desarrollando nuevamente siguiendo detalladamente el proceso de modelación que se usóen el capítulo anterior ya que en este caso si podremos aplicar todos los pasos en forma explícita.

El ejemplo a desarrollar es el siguiente:

Una compañía posee dos minas: la mina A produce cada día 1 tonelada de hierro de alta calidad, Ejemplo # 33 toneladas de calidad media y 5 de baja calidad. La mina B produce cada día 2 toneladas decada una de las tres calidades. La compañía necesita al menos 80 toneladas totales de mineral

1http://es.wikipedia.org/wiki/George_Dantzig2http://es.wikipedia.org/wiki/Metodo_simplex3http://en.wikipedia.org/wiki/Interior_point_method

35

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 36

de alta calidad, 160 toneladas totales de calidad media y 200 toneladas totales de baja calidad.Sabiendo que el coste diario de la operación es de 2000 euros en cada mina, desarrollar unmodelo de optimización para la operación de las minas.

Paso # 1: Entender el Problema

Nuevamente un aspecto fundamental antes de iniciar el proceso de modelado es la comprensión de la situacióna modelar. En los ejemplos y ejercicios contenidos en los libros de texto generalmente el enunciado de losproblemas de�ne explícitamente el objetivo que se busca y cuales son las variables de decisión del modelo.En este caso, decidí en forma consciente no incluír dicha información en el enunciado para que el estudiantevaya desarrollando la habilidad para identi�car correctamente lo que se necesita, basandose en la informaciónproporcionada. Para este ejercicio, es conveniente representar el problema en forma matricial como se muestraa continuación:

Alta Calidad Calidad Media Baja Calidad Costo/Operación

Mina A 1 ton/dia 3 ton/dia 5 ton/dia 2000 ¿/díaMina B 2 ton/dia 2 ton/dia 2 ton/dia 2000 ¿/día

Requerimiento 80 ton 160 ton 200 tonEsta práctica de representar los problemas en forma matricial será de suma utilidad en en desarrollo de

modelos de programación lineal y en especial cuando se utilizan hojas electrónicas para resolver este tipo deproblemas.

Paso # 2: Identi�car el Objetivo

Como ya se dijo, un problema de optimización se reduce a una de dos alternativas, maximizar o minimizaralgo. De�nir esto debe hacerse tomando como punto de partida la información que el caso proporciona. Eneste caso en particular, el enunciado nos habla de costos de operación y no menciona ingresos o ganancias,por lo que podemos inferir que el objetivo será minimizar el costo total de operación de ambas minas.

Paso # 3:Identi�car las Variables de Decisión

Necesitamos de�nir cuales parámetros del modelo quedan bajo nuestro control, es decir, aquellos que nosotrospodemos cambiar y que van a incidir en el objetivo. Puesto que según la información proporcionada, el costode operar las minas está expresado en Euros por día, por lo que al variar la cantidad de días que operamoscada mina, estaremos cambiando el valor del objetivo planteado en el paso anterior. Puesto que podemosdecidir operar cada mina una cantidad distinta de días, la decision que debemos tomar es cuantos dias vamosa operar la mina A y cuantos dias la mina B, para que el costo sea mínimo.

Paso # 4: Expresar la Función Objetivo

Con lo de�nido en los 2 pasos anteriores, es bastante sencillo expresar el objetivo en función de las variablesde decisión. El costo total será igual a la cantidad de dias a operar cada mina multiplicado por el costo diariode operar cada una, expresandolo en forma matemática:

xA = Cantidad de dıas a operar Mina A

xB = Cantidad de dıas a operar Mina B

Min Costo Total = 2000xA + 2000xB

Paso # 5: Identi�car las Restricciones

Como se explicó con anterioridad, las restricciones provienen de limitaciones que nos impiden implementaruna solución ideal. En este ejemplo especi�co, puesto que nuestro objetivo es obtener el costo mínimo, loideal sería tener un costo de 0, lo cual implica no operar las minas ni un solo día. La razón por la cual

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 37

no podemos tomar la decisión de no operar las minas es porque debemos cumplir con los requerimientosmínimos de material (Hierro) que debemos producir. En este caso existen 3 requerimientos, uno por cadatipo de material, por lo que cada requerimiento se convierte en una restricción de la siguiente forma:

Restricción # 1 = Hierro de Alta Calidad a Producir debe ser al menos 80 toneladas.

Restricción # 2 = Hierro de Calidad Media a Producir debe ser al menos 160 toneladas.

Restricción # 3 = Hierro de Baja Calidad a Producir debe ser al menos 200 toneladas.

Paso # 6: Expresar las Restricciones como relaciones de las V.D.

Ya en el paso anterior se adelantó bastante con este tema, lo que debemos hacer ahora es simplementeexpresarlo en forma matemática. Para cumplir el requerimiento de cada uno de los tipos de material, esnecesario operar las minas cierto numero de días, lo cual, combinado con el rendimiento de cada tipo dematerial en cada mina nos debe producir al menos lo requerido. Es muy importante de�nir la naturalezade la restricción, si se trata de un límite máximo, un mínimo a cumplir o un valor exacto a obtener, paradeterminar si se trata de una igualdad (=) o una desigualdad (≤, ≥). En este caso, las 3 restricciones sere�eren a cantidades mínimas a cumplir, por lo que el signo de la restricción será ≥.

R1 : 1xA + 2xB ≥ 80

R2 : 3xA + 2xB ≥ 160

R3 : 5xA + 2xB ≥ 200

Paso # 7: Colocar el modelo en una forma estándar o canónica.

La forma canónica o estándar para un modelo de programación lineal generalmente consiste en expresar loque se pretente de la función objetivo (max/min) y todas las restricciones con un mismo sentido en cuanto ala dirección de la desigualdad. Generalmente, si el objetivo es maximizar, todas las restricciones se expresande la forma ≤y si el objetivo es minimizar, todas las restricciones se expresan como ≥. Recordemos quepodemos cambiar el sentido, o sea el signo de una restricción multiplicando ambos lados de la desigualdadpor -1. Adicionalmente, en la forma estándar se deben incluír otras restricciones que estén implícitas enel modelo, por ejemplo, que las V.D. no pueden ser negativas, si deben ser enteras, binarias, etc. Para elejemplo en cuestión, esto quedaría de la siguiente forma:

min CT = 2000xA + 2000xBs.a.

1xA + 2xB ≥ 80

3xA + 2xB ≥ 160

5xA + 2xB ≥ 200

xA, xB ≥ 0

Otra forma estándar comunmente utilizada para expresar un modelo de programación lineal es la formamatricial, la cual es utilizada para la aplicación del método Simplex. Nuevamente, en este curso no vamos aexplorar los algoritmos en detalle sino que vamos a utilizar el poder de las herramientas computacionales anuestro alcance.

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 38

5.1.1 Programación Lineal en Maxima

El método o algoritmo más utilizado por las aplicaciones informáticas para resolver problemas de programaciónlineal es el Simplex. Maxima, adicionalmente a sus capacidades, posee la versatilidad de ser expandido pormedio de módulos adicionales, algunos de ellos ya vienen por defecto en la instalación original y otros puedenser desarrollados por el usuario para �nes más especi�cos. Uno de los módulos que Maxima ya trae incluídoes el del método Simplex, el cual combinado con las capacidades algebráicas de Maxima hacen sumamentesencilla la solución de los modelos de programación lineal ya que el modelo puede expresarse tal y como lohemos expresado en el paso # 7 de la sección anterior. Esto funciona bastante bien para modelos pequeños,con pocas variables y restricciones, sin embargo, cuando se trata de modelos grandes con muchas variables yrestricciones, la solución con esta herramienta puede volverse engorrosa, por lo que para problemas grandes,es mas recomendable utilizar herramientas que utilizan la notación matricial.

A continuación mostraremos la solución al ejemplo # 3, detallando paso a paso el proceso de solución:

Como puede observarse, Maxima proporciona la solución al modelo en forma rápida, sencilla y exácta.El ejemplo anterior correspondía a un problema de minimización, por lo que a continuación vamos a

presentar un ejemplo de maximización para completar esta sección.

Un fabricante de cemento produce dos tipos de cemento, a saber en gránulos y polvo. Él no Ejemplo # 4puede hacer más de 1600 bolsas un día debido a una escasez de vehículos para transportar elcemento fuera de la planta. Un contrato de ventas establece que él debe producir 500 bolsasal dia de cemento en polvo. Debido a restricciones del proceso, se requiere el doble del tiempopara producir una bolsa de cemento granulado en relación al tiempo requerido por el cemento

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 39

en polvo. Una bolsa de cemento en polvo consume para su fabricación 0.24 minutos/bolsa yla planta opera 8 horas al día. Su ganancia es $4 por bolsa para el cemento granulado y $3por bolsa para el cemento en polvo. Nuevamente, en este ejemplo se omite la parte del enunciadoque indica explícitamente el objetivo y las variables de decisión para desarrollar la habilidad en el estudiantede identi�carlas basado en la información proporcionada. En los verdaderos problemas, aquellos que surgenen la vida real durante el ejercicio profesional, no existen enunciados que nos digan que hacer, es algo quedebemos descubrir por nosotros mismos.

Paso # 1: Entender el problema.

Nuevamente, es conveniente tratar de representar en forma matricial la información que se nos proporciona.El pensamiento multidimensional es una de las formas mas e�caces en la solución de problemas complejos.

Producto Tiempo Req. Ganancia Prod. mín Prod. max Tiempo Disp.

Cem en Polvo 0.24 min/b $3/b 500 b/díaCem Granul 0.48 min/b $4/b -

Total 1600 b/día 8 h (480 m)

Paso # 2: Identi�car el Objetivo.

Basado en la información proporcionada en el enunciado, donde se menciona la ganancia por bolsa, podemosinferir que el objetivo perseguido es el de maximizar la ganancia total obtenida.

Paso # 3: Identi�car las Variables de Decisión.

Si lo que buscamos es maximizar la ganancia total, debemos de�nr cuales son las variables que debemosmanipular para modi�car la ganancia. Es fácil deducir que la ganancia total dependerá de la cantidad debolsas de cada uno de los dos tipos de cemento que se fabrican por día.

x1 = Cantidad de Bolsas de Cemento en Polvo/dıa

x2 = Cantidad de Bolsas de Cemento Granulado/dıa

Paso # 4: Expresar la Función Objetivos.

Ganancia Total = ($3/bolsa) x1 + ($4/bolsa) x2

Es muy importante siempre chequear la consistencia dimensional tanto de la función objetivo como delas restricciones. En este caso, las variables están expresadas en bolsas y los coe�cientes están expresadosen dinero/bolsa por lo que al multiplicar ambos se obtiene solamente dinero, lo cual permite sumar ambostérminos de la función y nos dá la ganancia total en dinero.

Paso # 5: Identi�car las Restricciones.

Si pudiesemos producir una cantidad in�nita de bolsas de cada tipo de producto y venderlas todas, obtendríamosuna ganancia in�nita. Obviamente hay algo que nos impide hacer esto. Primero, aún cuando pudiesemosproducir todas las bolsas de cemento que quisieramos, existe una cantidad máxima que podemos transportar(y por ende vender) cada dia.

R1 = Cantidad Maxima De Bolsas Totales/dıa = 1600

Segundo, debemos cumplir con una cantidad mínima de bolsas de cemento en polvo por dia.

R2 = Cantidad Mınima Bolsas Cemento en Polvo = 500

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 40

Tercero, producir cada bolsa requiere de una cantidad de tiempo y disponemos de un determinado tiempode producción total por cada dia. Aunque en el enunciado no se menciona, suponemos que ambos tipos decemento se producen utilizando la misma línea de producción por lo que la suma total del tiempo requeridopara fabricar ambos productos no puede exceder el tiempo disponible.

R3 = Tiempo Disponible/dıa = 480min

Paso # 6: Expresar las Restricciones en relación a las V.D.

R1 : x1 + x2 ≤ 1600

R2 : x1 ≥ 500

R3 : 0.24x1 + 0.48x2 ≤ 480

Paso # 7: Colocar el modelo en la forma estándar.

max GT = 3x1 + 4x2

s.a.

x1 + x2 ≤ 1600

−x1 ≤ −500

0.24x1 + 0.48x2 ≤ 480

x1, x2 ≥ 0

Ahora, vamos a resolver el modelo utilizando Maxima. Hay que recordar que al iniciar el programa,debemos cargar el módulo Simplex.

La solución óptima es, entonces, producir 1200 bolsas diarias de cemento en polvo y 400 bolsas de cementogranulado, lo que produce una ganancia total por día de $5200. Es importante recordar que, de acuerdo alsigni�cado de optimalidad, ninguna otra combinación producirá una ganancia mayor a 5200. Es posible,sin embargo, que existan soluciones óptimas alternativas y que produzcan la misma ganancia total con unacombinación diferente. Si se buscara incrementar la ganancia, se deberían cambiar las condiciones bajo lascuales opera el modelo. Existe una forma de estimar el efecto que ciertos cambios en las condiciones delmodelo tendrán en la solución óptima, esto se conoce como Análisis de Sensibilidad o Análisis Post Optimo.

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 41

5.1.2 Programación Lineal en OpenO�ce/LibreO�ce Calc

El uso de hojas electrónicas para modelar y resolver problemas de optimización se ha generalizado en losúltimos años. A continuación vamos a utilizar OpenO�ce Calc para resolver los dos ejemplos anteriores deprogramación lineal. Es razonable asumir que los estudiantes ya estan familiarizados con el uso de hojaselectrónicas para otras aplicaciones, en especial MS Excel® y dado que existe un alto grado de similitud ycompatibilidad entre éste y Calc, el proceso de solución debe ser bastante sencillo. Obviaremos los pasos delproceso de solución porque ya fueron realizados en la sección anterior.

Existe una diferencia signi�cativa entre una hoja electrónica y las aplicaciones previamente utilizadas(Maxima y Sage): las hojas electrónicas no pueden manipular objetos algebráicos, sino que solamenteson capaces de trabajar con cantidades por lo que utilizan algoritmos numéricos para resolver esta clasede problemas. Adicionalmente, dada estructura matricial de las hojas electrónicas, es mas convenienterepresentar el modelo en forma de una matriz de coe�cientes.

En la imagen anterior se puede observar los datos del modelo. Para este paso, solamente se necesitaingresar los valores tal y como aparecen en la imagen, pero esto es solamente la primera parte del desarrollodel modelo ya que se deberán crear las fórmulas necesarias para relacionar las variables y los coe�cientes taly como se muestra a continuación:

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 42

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 43

Como puede verse en las imagenes anteriores, se realiza la sumatoria de los productos de cada coe�cientepor el valor de las variables de decisión, tanto en la función objetivo como en las restricciones. En esteejemplo esto se realizó uno a uno, mas adelante se verá que esto puede realizarse copiando las fórmulas haciaabajo y dejando las referencias �jas a los valores de las V.D.

Una vez completados los pasos anteriores, el modelo en la hoja electrónica está listo y podemos procedera la solución del mismo utilizando la opción de solver.

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 44

Como se esperaba, la solución obtenida es la misma a la obtenida en la sección anterior por medio deMaxima. Es interesante notar que en la hoja electrónica podemos ver los resultados para cada una de lasvariables de decisión, la función objetivo y también el valor de cada una de las restricciones. Así podemosobservar que las primeras dos restricciones se cumplen a cabalidad mientras que en la tercera restricción el

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 45

valor del lado derecho es excedido, lo cual es válido dado que la restricción es del tipo ≥.Ahora procederemos a resolver el ejemplo # 4 de la producción de cemento. Vamos a hacerlo de una

forma mas detallada, para que pueda observarse el procedimiento a seguir en la hoja electrónica:

Nuevamente, el modelo se plantea exáctamente igual que en el ejemplo anterior. Algo importante demencionar es la escogencia de valores iniciales para las variables de decisión. En realidad puede colocarsecualquier valor, sin embargo, es conveniente colocar un valor distinto de cero como valor inicial ya que dadoque Calc utiliza un algoritmo numérico para resolver el modelo, el uso de 0 puede ocasionar algún errordurante los cálculos.

Seleccionamos la opción �SOLVER� y en el cuadro de diálogo de�nimos la celda objetivo, el objetivo, queen este caso es maximización, las variables de decision y las restricciones como se muestra a continuación:

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 46

Ahora, haciendo click en �Options� nos aseguramos que esté marcada la opción que dice �Assume variablesas non-negative� que básicamente se re�ere a la restricción de no negatividad para las variables de decisión:

Aceptamos haciendo click en OK y luego hacemos click en �Solve�. Calc nos da un mensaje indicando quese ha tenido éxito en la búsqueda de la solución:

Finalmente hacemos click en la opción de guardar el resultado �Keep Result� y ya podemos ver la soluciónobtenida, que es la misma que ya conocíamos por medio de Maxima.

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 47

5.1.3 Programación Lineal en Sage

Una de las enormes ventajas de Sage es que cuenta con una gran cantidad de módulos especí�cos para elcálculo cientí�co y la programación lineal no es la excepción. Sage cuenta con una clase de objetos especialllamada MixedIntegerLinearProgram, que corresponde a un modelo de Programación Lineal Entera Mixta oMILP por sus siglas en inglés. Para entender el concepto de objeto es necesario remitirse a la literatura sobreprogramación orientada a objetos, se recomienda consultar la literatura de programación orientada a objetoscon Python. En este caso nos limitaremos a indicar que en Python, un objeto, como en cualquier lenguaje deeste tipo, tiene métodos y atributos. En el caso de un objeto de tipo MixedIntegerLinearProgram se tienenlos siguientes atributos:

� Variables de Decisión

� Función Objetivo

� Restricciones

Por lo que el procedimiento para resolver un problema de programación lineal en Sage es el siguiente:

1. Crear el objeto tipo MixedIntegerLinearProgram y asignarle un nombre (cualquier nombre de variable)

2. Asignarle los atributos anteriormente mencionados

3. Llamar el método para resolver el objeto

Esto se aclarará de una mejor forma a través de un ejemplo. Vamos a resolver en Sage el mismo problemaque se resolvió tanto en Maxima como en OpenO�ce.

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 48

Como puede verse, los resultados obtenidos son exáctamente los mismos que para los anteriores programas,aunque en el caso de una de las variables de decisión, Sage proporciona una respuesta que varía en 6*10−14,que es una cantidad muy poco signi�cativa, esto debido a la forma como Sage maneja el aritmética de punto�otante pero la explicación de esta diferencia está fuera del alcance de estas notas.

Los modelos de programación lineal se adaptan a una gran variedad de problemas en el mundo de laingeniería y los negocios. En la siguiente sección se presenta una de las áreas de aplicación de la optimizaciónlineal de mayor interés en este curso: los modelos de redes.

5.2 Modelos de Redes

Los modelos de redes aparecen en muchas aplicaciones de ciencias e ingeniería. Existe una enorme variedadde problemas y situaciones que pueden representarse en forma de una red. El estudio de las redes pertenecea otro campo de las matemáticas que lamentablemente no se encuentra en todos los programas académicosde ingeniería: Matemáticas Discretas4. Las Matemáticas Discretas comprenden un grán número de tópicosuno de los cuales es la Teoría de Grafos5. Por medio de los grafos, es posible modelar una grán cantidadde situaciones tales como: redes de carreteras, redes de distribución de servicios públicos (agua, electricidad,teléfono, etc.), redes de computadoras, relaciones entre personas, etc. Una vez se ha modelado el asunto bajoestudio, puede utilizarse los algoritmos de redes para encontrar soluciones a problemas comunes, tal como el

4http://es.wikipedia.org/wiki/Matemáticas_discretas5http://es.wikipedia.org/wiki/Teoría_de_grafos

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 49

Figure 5.1: Ejemplos de Redes

de encontrar la ruta mas corta que conecta a dos nodos o el �ujo máximo que puede moverse por toda unared.

Una de las características importantes de las redes es la facilidad de representarse en forma matricial,lo cual permite que puedan ser manipuladas y procesadas matemáticamente. Por el carácter matricial, laherramienta que mejor se presta al desarrollo de los algoritmos de redes, es la hoja electrónica. Sin embargo,existen ciertos algoritmos que requieren un desarrollo a nivel de programación, en cuyo caso, es mejor recurrira herramientas que ya incluyen dichos algoritmos prede�nidos, como es el caso de Sage.

Aunque existe una grán cantidad de métodos y algoritmos para redes, en este curso vamos a enfocarnossolo en los que mayor aplicación tienen en el campo de la ingeniería. Los algoritmos a cubrir en estas notasson los siguientes:

� Algoritmo de Transporte

� Algoritmo de Asignación

� Algoritmo de Ruta Más Corta

� Algoritmo de Flujo Máximo

� Algoritmo de Arbol Mínimo de Expansión

Antes de iniciar con el desarrollo de cada uno de los métodos, es importante recordarle a los estudiantesque estas notas no cubren la teoría, sin embargo, es necesario conocer y entender ciertos conceptos básicossobre redes, por lo que se deja al estudiante buscar en el material de referencia u otras fuentes, los siguientestérminos:

� Grafo

� Dirigido

� No Dirigido

� Conexo

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 50

Figure 5.2: Tipos de Grafos

Figure 5.3: Ejemplo de una red con pesos (distancia) y sus respectivas matrices

� No Conexo

� Fuertemente Conexo

� Simple

� Multigrafo

� Vértice o Nodo

� Arista o Arco

� Camino o Ruta

� Arbol

� Matriz de Adyacencia

� Matriz de Pesos (Distancias, Costos, etc.)

5.2.1 Modelo de Transporte

El problema de Transporte es uno de los modelos más comunes en el tema de optimización relacionada conredes. Es un problema típico en los cursos de Operaciones en muchos cursos de pre y post grado en distintosprogramas académicos. También es uno de los más sencillos de resolver por medio de una herramientainformática, en especial las hojas electrónicas, ya que su estructura se presta de forma conveniente para dichopropósito.

Nuevamente, vamos a desarrollar un ejemplo a través del cual se desarrollará el modelo y se realizará lasolución del mismo.

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 51

La Empresa transportista ABC posee varios camiones usados para acarrear piedra molida Ejemplo # 5para proyectos de carreteras en el municipio. El contratista de carreteras para quien trabajale ha dado el programa de la semana siguiente. Encontrar el plan óptimo del transporte.A continuación se muestran las tablas con los datos de requerimientos y costos por carga:

En realidad, el modelo de transporte es un caso especial de un problema de programación lineal, porlo que su solución podría muy bien seguir la secuencia presentada con anterioridad. Aunque no vamos aresolver este problema utilizando el modelo general de programación lineal, es interesante analizarlo desdeesa perspectiva. Por tratarse de un problema con 3 fuentes de oferta y 3 puntos de demanda, tendríamos untotal de 9 variables de decisión. Además, por cada punto de demanda tendríamos una restricción para cubrirel requerimiento y por cada punto de oferta tendríamos una restricción para no exceder la disponibilidad, loque hace un total de 6 restricciones. Se deja como ejercicio al estudiante plantear este modelo en la formaestándar de programación lineal.

A continuación se presenta una representación de este ejemplo utilizando una notación de redes:

El grafo anterior, de acuerdo a la taxonomía de grafos que puede consultarse en la teoría, corresponde aun grafo dirigido, bipartito, con el respectivo peso (en este caso: costo) de los arcos claramente indicado.

A partir del grafo, podemos construír la respectiva representación matricial para este problema. Portratarse de un grafo bipartito, es decir, podemos separar los nodos en dos grupos y los arcos van de un grupohacia el otro, la matriz tendrá como �las, los nodos de oferta y como columnas los nodos de demanda. Pararepresentar y resolver este problema, utilizaremos la hoja electrónica que ya hemos presentado en seccionesanteriores: Calc.

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 52

En la imagen de arriba, puede observarse el problema representado en forma matricial en la hoja electrónica.En los problemas de transporte, se acostumbra representar la oferta como �las y la demanda como columnas,los totales de la oferta y la demanda se colocan al �nal de cada �la/columna y los costos de transporte entrecada punto de oferta y cada punto de demanda se colocan en las celdas de la matriz.

El primer punto a validar en un problema de transporte es el balance entre la oferta y la demanda. Parapoder resolver correctamente el problema, debemos asegurarnos que la oferta sea igual a la demanda, o sea,que ambas estén balanceadas. Si esto no se cumple en las condiciones iniciales del problema, es necesariobalancearlo, agregando puntos de oferta o demanda ��cticios� (es decir, nodos en el grafo o �las/columnasen la matriz).

La forma de proceder es la siguiente:Oferta > Demanda: Se agrega una columna �cticia. Esta columna tendrá una demanda total que será

igual a∑Oferta−

∑Demanda

Oferta < Demanda: Se agrega una �la �cticia. Esta �la tendrá una oferta total que será igual a∑Demanda−

∑Oferta

En ambos casos, los costos asociados a la �la o columna serán igual a cero.En este ejemplo,

∑Demanda = 175

∑Oferta = 145por lo que la diferencia es de 30 cargas

semanales. Se deberá agregar una �la de oferta �cticia para compensar la diferencia.Una vez balanceado el modelo, es necesario crear otra matriz a la que llamaremos Matriz Solución que

será la que contendrá nuestras variables de decisión y donde obtendremos la distribución óptima del problemade transporte. Al igual que hicimos con el modelo de programación lineal en Calc, es necesario asignar unvalor inicial a las variables de decisión, por lo que utilizaremos 1. Los totales de �las y columnas deben serfórmulas que contienen la sumatoria de la respectiva �la/columna, tal y como se muestra a continuación:

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 53

Ahora estamos listos para de�nir nuestra función de costo total, que estará integrada por la sumatoriade multiplicar cada celda de costo por cada celda conteniendo la variable de decisión. Expresando esto enforma matemática tenemos la siguiente expresión:

min Costo Total =∑∑

(ci,j × xi,j)En la hoja electrónica, existe una función que permite realizar esta operación entre 2 o más matrices, es

decir, computar el producto de cada pareja de celdas y luego sumarlo. Esta función se llama =SUMPRODUCT()y está disponible tanto el Calc como en Excel.

La celda conteniendo este resultado será nuestra celda objetivo en el modelo al ingresarlo al solver. Ahoraestamos listos para de�nir el modelo en Solver. Las variables de decisión será la matriz conteniendo los �1�. Enel caso de las restricciones, si plantearamos el modelo en la forma tradicional de un problema de programaciónlineal, tendríamos una restricción para cada punto de oferta y una para cada punto de demanda (incluyendolas �cticias) por lo que si n es el número de �las y m es el número de columnas, el total de restricciones estadado por n + m.

En el caso de la solución por medio de la hoja electrónica, Solver nos permite de�nir en una sola restricción,un conjunto de restricciones que tienen el mismo signo. En el caso de la oferta, sabemos que no podemosexceder la cantidad disponible, por lo que todas las restricciones de oferta son del tipo ≤. En el caso de lademanda, la condición es satisfacer al menos la demanda en cada punto, por lo que todas las restricciones de

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 54

demanda son del tipo ≥.

En la �gura anterior se pueden observar los detalles de la de�nición del modelo en Solver. Buscamosminimizar la celda objetivo que contiene la suma producto de la matriz de costos y la matriz de decisión.Las celdas cambiantes son las variables de decisión y tenemos 2 restricciones, una para la oferta y una parala demanda. En las opciones de Solver, solo debemos asegurarnos que tengamos marcada la opción para queasuma que las variables son no negativas, o sea, la ya conocida restricción de no negatividad. Solver nosproporciona la solución correcta al modelo como se muestra en la siguiente imagen:

La solución presentada por Solver nos permite saber exáctamente cuanto debemos mover de cada puntode oferta a cada punto de demanda, sin infringir ninguna restricción y alcanzando el costo total más bajo

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 55

posible (de lo contrario no sería óptimo). Cuando se trata de un problema que inicialmente no se encontrababalanceado, habrá cierta cantidad que quedará asignada a un punto de oferta/demanda �cticia. En este caso,hay 30 cargas semanales que no van a poder ser cubiertas con la capacidad actual, lo que implica no satisfacercompletamente la demanda de A, pero podemos tener la certeza que lo que tenemos disponible está siendodistribuído al menor costo posible. Es posible que existan soluciones óptimas alternas, es decir, una formadiferente de distribuír la oferta entre la demanda, sin embargo el costo total será el mismo.

A continuación se muestra la solución en forma de grafo, mostrando en cada arco la cantidad que debemoverse de cada nodo oferta a los de demanda:

Este es un ejemplo de un problema típico de transporte, sin embargo, existen muchos casos que, sin serproblemas relacionados con transporte, pueden modelarse y resolverse utilizando este algoritmo. El algoritmode transporte usualmente busca la minimización del costo total de transporte (tiempo, dinero, distancia, etc.),sin embargo, también es posible utilizarlo para el caso en que se desee maximizar algo, ya sea utilidades,ingresos, ventas, etc. El proceso de solución será exáctamente el mismo, solo asegurándonos de seleccionarcorrectamente en Solver el objetivo que estamos buscando.

5.2.2 Modelo de Asignación

Así como el modelo de transporte representa un caso especial del modelo general de programación lineal,existe un tipo de problemas que puede verse como un caso especial del modelo de transporte, esto es el Modelode Asignación. El problema de asignación consiste en asignar una serie de trabajos, tareas, actividades, etc.a un grupo de personas, máquinas, lugares, etc. de forma que se pueda optimizar el resultado de dichaasignación.

La representación grá�ca de este tipo de problema es igual al modelo de transporte, es decir, se trata deun grafo bipartito dirigido, donde cada nodo de un lado del grafo está conectado con todos los nodos dellado opuesto. La única diferencia existente entre ambos modelos es que en la asignación, existe una relaciónbiunívoca en la solución �nal al modelo, de tal forma que un nodo del lado de la oferta solo puede ser asignadoa un nodo del lado de la demanda, ya que se entiende que cada nodo tiene una oferta implícita de 1 unidad.

Nuevamente, la mejor forma de presentar el modelo y la forma de solución es a través de un ejemplo, porlo que vamos a proceder a su desarrollo:

Una empresa que está desarrollando proyectos de construcción de carreteras en 4 ubicaciones Ejemplo # 6diferentes necesita asignar a cada proyecto un ingeniero. La empresa posee o�cinas en 5ciudades diferentes que se encuentran cada una a cierta distancia de cada uno de los proyectos.Cada ingeniero deberá desplazarse una vez por día entre la ciudad y el proyecto utilizandopara esto un vehículo de la compañía. Los datos de las distancias entre las ciudades y los proyectos,en Km se presentan a continuación:

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 56

En principio, este parece un problema bastante sencillo de resolver y de hecho puede que lo sea. Existenciertos problemas de asignación que pueden ser resueltos a simple vista. Sin embargo, un enfoque empírico nogarantiza encontrar una solución óptima y esto se complica mientras mas grande es la cantidad de variablesinvolucradas, o sea, mientras mas grande sea la matriz de costos/distancias. Existe un método simpli�cadopara resolver en forma manual un problema de asignación, denominado el Método Húngaro6. Sin embargo,en estas notas nos estaremos limitando a la solución por medio de computadora.

Nuevamente, el primer punto de veri�cación para este problema es que la oferta y la demanda se encuentrenbalanceadas. Como se mencionó anteriormente, en un problema de asignación la oferta y la demanda de cadanodo es igual a una unidad, lo que signi�ca que para que el problema esté balanceado, la matriz debe sercuadrada.

El ejemplo anterior consta de 5 ciudades (ingenieros) y 4 proyectos, lo que implica que uno de los ingenierosno será asignado a ningún proyecto, sin embargo, es necesario balancear la matriz agregando una columnaadicional (demanda) para hacer la matriz cuadrada. Al igual que en el modelo de transporte, el costo(distancia) para cada celda en esta columna sera igual a 0.

A continuación se muestra el ejemplo modelado en Calc:

Es importante recordar que para la matriz de asignación (o matriz solución) los valores de la suma de�las y columnas debe ser una formula, no un valor. También, como se ve en la �gura, la celda D20 contieneuna formula =SUMPRODUCT() para calcular el resultado de la sumatoria del producto individual de lasceldas de ambas matrices. Ahora veamos el planteamiento del modelo en Solver:

6http://es.wikipedia.org/wiki/Algoritmo_húngaro

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 57

Podemos ver la celda objetivo, que es la que contiene la suma producto de las matrices, también elobjetivo que es minimizar dicha celda, las variables de decisión (celdas cambiantes) que son las de la matrizsolución que contienen los �1�. La principal diferencia respecto al modelo de transporte se observa al de�nirlas restricciones. De�nimos 2 restricciones, una para la columna que contiene las sumatorias de �las y otrapara la �la que contiene las sumatorias de columnas, sin embargo, a diferencia de transporte, aquí igualamosambas restricciones a 1, lo que quiere decir que Solver deberá hacer que solamente una celda por �la y unacelda por columna sean distintas de cero e igual a uno. Las opciones son las mismas que en el modelo detransporte:

La solución al modelo se muestra a continuación:

Como se observa en la matriz de asignación, en la solución óptima, el ingeniero de la ciudad 4 es quienqueda asignado al proyecto �cticio, es decir que en la práctica, será el único que no quede asignado a unproyecto. Los otros 4 ingenieros quedan asignados a un proyecto de tal forma que se minimiza la distanciatotal que deben recorrer entre las ciudades y los proyectos, que será de 240 kilómetros (o 480 si tomamos elviaje redondo) asumiendo que cada ingeniero visita una vez por día el proyecto.

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 58

Figure 5.4: Ruta Mas Corta

5.2.3 Modelo de Ruta Más Corta

El problema de la ruta más corta es quizá uno de los que mas interés despierta debido a sus obvias aplicaciones.Existen varios algoritmos para resolver dicho problema, de los cuales el más conocido es el Algoritmo deDijkstra.7El objetivo del algoritmo también es bastante obvio: encontrar el camino más corto entre dosnodos cualesquiera en una red que puede ser dirigida o no dirigida. La �gura 5.4 muestra un ejemplo de unared dirigida donde se trata de encontrar el camino o la ruta más corta entre el nodo 1 y el nodo 9. De lade�nición de camino o ruta, sabemos que es una secuencia de arcos y nodos intermedios que conectan dosnodos en una red.

En este modelo, nuevamente es muy útil el poder representar la red en forma matricial. Para tal propósito,se coloca cada uno de los nodos como �las y como columnas, por lo que siempre se obtiene una matrizcuadrada. Cada elemento de la matriz, que es una intersección entre una �la y una columna representa elarco que conecta ambos nodos. En este modelo, será necesario generar 3 matrices para representar nuestroproblema:

� Matriz de Adyacencia: La matriz se compone de 0's y 1's, donde un 1 indica que existe un arcoconectando directamente 2 nodos, es decir, ambos nodos son adyacentes. Si el grafo es no dirigido,es decir, los arcos no tienen un sentido de�nido sino que los nodos se conectan en ambos sentidos, lamatriz de adyacencia será simétrica respecto a su diagonal principal. En un grafo dirigido los arcostienen una dirección especí�ca, por lo que la matriz de adyacencia no será simétrica sino que tendrá un1 en el sentido del arco y un 0 en el sentido contrario.

� Matriz de Distancias: La matriz de distancia se obtiene simplemente sustituyendo los elementos igualesa 1 en la matriz de adyacencia, por la respectiva distancia para dicho arco. Al igual que la matriz deadyacencia, en un grafo dirigido esta matriz será simétrica respecto a la diagonal principal.

� Matriz Solución: Si se representara el problema de ruta mas corta como un problema de programaciónlineal, el número de variables de decisión de tal problema sería igual al cuadrado del número de nodosen la red. La matriz de decisión tiene las mismas dimensiones que las dos matrices anteriores y una vezresuelto el modelo, tendrá un 1 si el arco que conecta al nodo �la con el nodo columna es parte de laruta mas corta, de lo contrario tal elemento será igual a 0.

Vamos a realizar un ejemplo para la solución del modelo de ruta más corta:

Encontrar la ruta más corta entre los nodos 1 y 6 en el modelo de red representado por la �gura Ejemplo # 7que se muestra a continuación: La red puede representar cualquier cosa, la distancia entre distintospuntos, la duración en tiempo de una serie de actividades en un proceso o proyecto, etc.

7http://es.wikipedia.org/wiki/Algoritmo_de_Dijkstra

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 59

En este ejemplo, puede observarse que se trata de un grafo no dirigido, ya que los arcos no tienen unsentido de�nido, por lo que podemos asumir que es posible moverse en ambos sentidos. Vamos a representarel modelo en forma de las tres matrices que se mencionaron anteriormente:

Hasta este momento, todo lo que se ha ingresado al modelo en la hoja electrónica son solamente datos,sin fórmulas de cálculo . Como se observa, la matriz de decisión (solución) está compuesta de 1's que sonlas variables de decisión que la hoja electrónica calculará al momento de la optimización por lo que en lasolución óptima, solo algunas de esas variables tendrán un valor de 1 y el resto serán 0.

Para completar el modelo, vamos a ingresar algunas fórmulas de cálculo que necesitamos para ingresarlo aSolver para ser resuelto. El primer cálculo que necesitamos hacer es el de la distancia total, que no es mas queel resultado de multiplicar la matriz de distancias por la matriz de decisión, elemento por elemento. Como yasabemos, esto puede hacerse por medio de la función +SUMPRODUCT() como se muestra a continuación:

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 60

Luego, tenemos que realizar varios cálculos en la matriz solución. Vamos a calcular la suma de cada �lay cada columna de la siguiente forma:

Como siguiente paso, vamos a colocar en la parte de abajo de la matriz solución, una �la calculada,que es el resultado de la diferencia entre el total de �la y el total de columna. Por ejemplo, debajo de lacolumna 1 colocamos una fórmula para calcular la diferencia entre la suma de la �la 1 menos la columna 1.Es importante que el orden sea siempre

∑fila −

∑columna. Por tratarse de una matriz cuadrada con el

mismo número de �las y de columnas y dado que como valores iniciales ingresamos 1's en todas las celdas,esta diferencia siempre va a dar 0, tal y como se muestra a continuación:

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 61

Finalmente, vamos a agregar una última �la abajo de la que acabamos de ingresar, donde vamos aidenti�car los 2 nodos entre los cuales vamos a calcular la Ruta Mas Corta. Para esto, colocamos un valorde 1 en el nodo de inicio y un -1 en el nodo de llegada, dejando en 0 todos los demás, tal y como se muestraa continuación:

Ahora, estamos listos para ingresar nuestro modelo a Solver para encontrar la solución. Al igual que encualquier problema de programación lineal, tenemos que de�nir la celda objetivo, las variables de decisión ylas restricciones, lo cual en nuestro modelo sería de la siguiente forma:

� Celda Objetivo. Es la celda que contiene la distancia total, es decir, el resultado de multiplicar la matrizde distancias por la matriz solución.

� Variables de Decisión. Corresponde a la matriz solución o matriz de decisión, asegurandonos deseleccionar solo los elementos de la matriz, no los encabezados de �la ni columna.

� Restricciones. Este modelo tiene 2 restricciones.

� R1: Cada elemento en la matriz de decisión debe ser menor o igual al elemento correspondienteen la matriz de adyacencia. La razón de esta restricción es garantizar que la solución solo puedeconsiderar los arcos existentes y no agregar un arco donde no existe, por lo que si dos nodos sonadyacentes, el arco entre ellos puede ser parte de la Ruta Mas Corta, puesto que tendrá un 1 en

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 62

la matriz de adyacencia pero si los nodos no son adyacentes, el valor en la matriz de adyacenciaes de 0 por lo que no existe un camino entre dichos nodos.

� R2: La �la que contiene las diferencias entre las sumas de �las y columnas debe ser igual a la �ladonde se identi�ca el nodo de entrada y salida. Esto nos garantiza que se identi�que solamenteuna ruta, con un único punto de entrada y uno de salida.

A continuación se muestra el cuadro de diálogo para el Solver de�niendo el modelo:

En el cuadro de opciones, debemos asegurarnos que esté seleccionada la opción para asumir variables nonegativas:

Con esto estamos listos para que Solver proceda a resolver el modelo, el cual queda como se muestra enla �gura siguiente:

Como puede observarse, la matriz solución presenta solamente 2 celdas con valor de 1 (resaltadas en color

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 63

verde) y el resto con 0. Las celdas con 1 son, en coordenadas(�la,columna): (1,4) y (4,6). Esto quiere decirque la Ruta Mas Corta entre los nodos 1 y 6 inicia en el nodo 1, luego va al nodo 4 y �nalmente al nodo6. En la celda objetivo, podemos ver la longitud total de dicha ruta, que es de 4 unidades de distancia. Alcorroborar la red original, podemos constatar que, efectivamente, no existe ningún camino para llegar delnodo 1 al nodo 6 que tenga una longitud menor a 4 unidades. Como en cualquier problema de optimizaciónlineal, es posible que existan soluciones alternas, es decir, una ruta diferente, pero podemos tener la certezaque ninguna solución será menor a 4 unidades. En este ejemplo en particular, no existe ningún otro caminocon una longitud igual a 4 para llegar del nodo 1 al 6.

Ahora procederemos a resolver el mismo ejemplo en Sage para ilustrar la facilidad de trabajar con losalgoritmos de redes en esta poderosa y versatil herramienta.

Una de las aplicaciones para las cuales Sage ya viene preparado, es la de Teoría de Grafos. Sage permitela creación, visualización y manipulación de grafos y ya incluye una gran variedad de algoritmos para losmismos. Existen distintas formas de representar un grafo en Sage. Podemos hacerlo por medio de una matrizde adyacencia, una lista de arcos y un diccionario de arcos y nodos entre otras. Por simplicidad, vamos aescoger la segunda, es decir, vamos a representar el grafo en forma de una lista de arcos. Cada elemento dela lista estará formado por una triada de la forma (X, Y, Z) donde X y Y representan los números de losnodos y Z representa el peso (costo) del arco que los une.

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 64

5.2.4 Modelo de Flujo Máximo

El problema de �ujo máximo es uno de los más comunmente encontrados en aplicaciones de redes paraingeniería. El problema básicamente consiste en determinar la cantidad máxima de un tipo de material quepuede �uír entre 2 nodos, llamados comunmente fuente y sumidero, respectivamente, en una red que puederepresentar distintas situaciones como puede ser:

� Una red de tuberías

� Una red de carreteras

� Una red de computadoras

� Una red de distribución eléctrica

� etc.

El algoritmo más utilizado para resolver este modelo es el denominado Ford Fulkerson8que busca incrementargradualmente el �ujo en cada camino hasta alcanzar el máximo posible en la red. Se deja al lector la lecturay comprensión del algoritmo, ya que nos estaremos limitando al planteamiento y solución del modelo pormedio de una hoja de cálculo electrónica.

Este algoritmo parte de los siguientes principios:

� Existe un �ujo que viaja desde un unico lugar de origen hasta un unico lugar de destino a través dearcos que conectan nodos intermedios.

� Cada arco tiene una capacidad que no puede ser excedida.

� La capacidad no necesariamente será la misma para cada arco.

� La capacidad de un arco en un sentido puede ser distinta a la capacidad en el sentido contrario.

A continuación se presenta un ejemplo de dicho problema, con el cual se desarrollará la solución al mismo:

Una ciudad es atravesada por una red interestatal de carreteras de norte a sur que le permite Ejemplo # 8alcanzar un nivel de 15000 vehículos/hora en el horario �pico�. Debido a un programa demantenimiento general, el cual requiere el cierre de dichas vías, un grupo de ingenieros hapropuesto una red de rutas alternas para cruzar la ciudad de norte a sur, la cual incorporaavenidas importantes. La red propuesta es la siguiente, en donde se indica claramente lacantidad máxima de vehículos (en miles) que pueden circular por dichas vías en cada sentido:En la grá�ca siguiente puede observarse la red, donde cada arco tiene 2 valores de �ujo. Por ejemplo, el �ujodel nodo 1 al 2 es de 5 unidades (en este caso, miles de vehículos/hora) mientras que en el sentido contrario(de 2 a 1) el �ujo es 0, lo que en este ejemplo, indicaría que se trata de una vía en un solo sentido.

Para resolver el modelo de �ujo máximo, es necesario representar el problema en forma matricial. Seutilizarán 2 matrices a las cuales denominaremos Matriz de Capacidades y Matriz Solución, respectivamente.

8http://es.wikipedia.org/wiki/Algoritmo_de_Ford-Fulkerson

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 65

Nuevamente, la imagen anterior muestra las 2 matrices iniciales que solamente contienen datos, sin incluírningún cálculo ni fórmula en la hoja electrónica. La primera es la matriz de capacidades, que contiene paracada arco conectando un par de nodos, la capacidad en un sentido, tomando en cuenta que las �las representannodos de salida y las columnas, nodos de llegada. Así, por ejemplo, la �la 1 contiene la capacidad máxima quepuede salir del nodo 1, llegando a los nodos 2, 3 y 4, mientras que la columna 2 contiene el �ujo máximo quepuede llegar de los nodos 1 y 3. La matriz de decisión o matriz solución contiene los 1's que son simplementevalores iniciales que Solver utilizará para encontrar la solución al modelo.

Ahora debemos proceder a agregar las fórmulas de cálculo, las cuales para este caso se realizan sólamenteen la matriz de decisión. Al igual que en el problema de Ruta Más Corta, se procede a calcular la sumatoriapara cada una de las �las y para cada una de las columnas. Luego, al igual que en RMC procedemosa calcular, en forma de �la, la diferencia entre la sumatoria de �las y la sumatoria de columnas, en eseorden,

∑fila−

∑columna, con una sola diferencia respecto a RMC: para este modelo esta diferencia no se

calcula para el nodo de salida (fuente) ni para el nodo de llegada (sumidero) sino solamente para los nodosintermedios. En este ejemplo, queremos calcular el �ujo máximo de norte a sur, es decir, entre el nodo 1 yel nodo 7 por lo que no se calcula la diferencia para esos 2 nodos.

Finalmente, agregamos, abajo de la �la anterior, los valores de �ujo neto para los nodos intermedios, queal igual que en el modelo RMC deben ser todos igual a 0.

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 66

Con esto, ya podemos proceder a plantear el modelo en Solver. Aquí también hay algunas diferenciasrespecto a los modelos anteriores. Los parámetros del modelo son los siguientes:

1. La celda objetivo corresponde a la celda que contiene la sumatoria de la �la 1, en este ejemplo, la celdaJ14, ya que esto corresponde a todo lo que sale del nodo fuente y que eventualmente llegará al nodosumidero.

2. Esta celda debe ser maximizada.

3. Las variables de decisión, como siempre, son las que están en nuestra matriz de decisión o matrizsolución.

4. Las restricciones del modelo pueden plantearse en 2 pasos:

(a) La matriz de decisión debe ser menor o igual a la matriz de capacidad.

(b) El �ujo neto en los nodos intermedios debe ser igual a 0

5. Las variables de decisión deben ser no negativas

El modelo planteado en Solver se muestra a continuación:

Al resolver el modelo, la solución se muestra en la matriz de decisión:

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 67

En la matriz de decisión puede verse claramente que el �ujo máximo a través de esta red es de 14000vehículos/hora, lo cual es insu�ciente para manejar la capacidad de la red original. Aunque en la matriztambién puede verse el �ujo en cada uno de los arcos, esto puede apreciarse mejor cuando lo representamosgrá�camente, donde puede comprobarse que ninguno de los �ujos individuales excede la capacidad del arcorespectivo:

Nuevamente procederemos a mostrar lo sencillo que es hacer el mismo ejercio pero utilizando Sage.

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 68

5.2.5 Arbol Mínimo de Expansión

Como se indicó anteriormente, el estudiante debió haber realizado una revisión bibliográ�ca para algunostérminos importantes en el lenguaje de grafos. Como resultado de dicha revisión, seguramente encontró elconcepto de Arbol, el cual, en el contexto de Teoría de Grafos, se re�ere a un grafo conexo que no

contiene ciclos.

El algoritmo de Arbol Mínimo de Expansión es de suma utilidad en aplicaciones de ingeniería relacionadasa la plani�cación de instalación de servicios públicos, tales como:

� Redes de carreteras

� Redes de cableado para eléctricidad, telefonía, CATV, datos, etc.

� Redes de distribución de agua potable, gas, etc.

El objetivo de dicho algoritmo es interconectar un conjunto de nodos de tal forma que el costo total (lasuma de los costos de los arcos) para dicha conexión sea mínima. Hay que recordar que en el contexto deoptimización, el término costo es un concepto genérico que puede representar cualquier característica que sedesea minimizar, lo que puede referirse a la cantidad de material requerido (cable, asfalto, tubería, etc.).

El algoritmo mas comunmente utilizado para encontrar un árbol de expansión mínima es el denominadoAlgoritmo de Kruskal 9. Este es un algoritmo que cae en la categoría de los denominados �algoritmos voraces�10 por la forma como se desarrolla, buscando en cada paso la mejor opción disponible. Esto hace que laaplicación de dicho algoritmo sea muy sencilla de realizar manualmente. Nuevamente se deja al estudiantela tarea de leer y entender el algoritmo en las fuentes de consulta disponibles.

Aunque es posible aplicar programación lineal para resolver el problema del árbol mínimo de expansión,para esto se requiere de algunos conceptos (teoría de dualidad, relajación, etc.) que están fuera del alcancede estas notas por lo que para la solución de este problema, por lo que en este caso vamos utilizar unicamenteSage para este algoritmo.

Uno de los algoritmos que ya vienen por defecto en Sage es el de Arbol Mínimo de Expansión. Parautilizarlo, simplemente debemos crear la red para la cual deseamos calcular el árbol. Vamos a desarrollarun ejemplo sencillo donde se demostrará paso a paso el uso de la herramienta para la aplicación de estealgoritmo.

La ciudad de Vancouver está plani�cando el desarrollo de una nueva linea en sistemas de Ejemplotránsito. El sistema debe conectar 8 puntos distintos entre residencias, centros comerciales yotros puntos importantes. El departamento de plani�cación de tránsito de la ciudad necesita

9http://es.wikipedia.org/wiki/Algoritmo_de_Kruskal10http://es.wikipedia.org/wiki/Algoritmo_voraz

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 69

Figure 5.5: Ejemplos de árbol

seleccionar un conjunto de rutas que conecten los distintos puntos al menor costo posible. Lared seleccionada debe considerar la factibilidad y el costo de cada ruta. A continuación se muestrala red para este ejemplo. Los nodos en esta red representan los distintos puntos que deben interconectarsepor medio del sistema. Los arcos entre los nodos indican la factibilidad de construír la línea entre cada parde nodos, así, por ejemplo, el arco entre los nodos 1 y 3 indica que es factible la construcción mientras que laausencia de un arco entre los nodos 1 y 4 indica que no es factible construir una linea que una directamenteesos 2 puntos. Los valores en los arcos indican el costo (en millones de US$) de construir la línea en ese arcoen particular.

Ahora vamos a proceder a representar el modelo de red en Sage.

Así, por ejemplo, el arco entre el nodo 1 y el 3 se representaría de la forma (1,3,33) y el arco entre 1 y 2quedaría de la forma (1,2,28).

Para de�nir una lista en Sage, encerramos los elementos entre corchetes [] separándolos por comas. Ledaremos a la lista un nombre, que en este caso será �arcos�, de la siguiente forma:

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 70

Sage nos muestra el arbol indicando claramente los vértices que lo forman y el peso de cada uno, así comoel peso (costo) total del mismo que es de 236 que en este ejemplo corresponde a millones de US$. La grá�casiguiente muestra como quedaría formado el sistema de tránsito para la ciudad con la solución obtenida:

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 71

Todos los nodos de la red han sido conectados por medio del árbol mínimo de expansión con lo cual seoptimiza el uso de los recursos para la construcción del sistema de tránsito requerido.

5.2.6 Problema del Conjunto de Cobertura (Set Covering)

El problema del conjunto de cobertura, o set covering 11, es un tipo de problema de optimización que surgecuando se desea encontrar la cantidad mínima de vértices en un grafo donde se deben asignar recursos paralograr cubrir todos los otros vértices, asumiendo que un vértice se considera cubierto cuando tiene recursosasignados o es adyacente a otro vértice donde existen recursos asignados.

Para resolver un problema de conjunto de cobertura, es necesario, al igual que se hizo en el problema deruta más corta, construír una matriz de cobertura, que es muy similar a la matriz de adyacencia, con unaúnica diferencia: en la matriz de adyacencia, se considera que un nodo no es adyacente a si mismo, mientrasque en una matriz de cobertura, se considera que un nodo sí se cubre a si mismo, por lo que al observarambas matrices, la diferencia se nota en la diagonal principal de la matriz, la cual es 0 para el caso de lamatriz de adyacencia y es 1 en el caso de la matriz de cobertura.

Se ilustra el método por medio del desarrollo de un ejemplo:

La red que se muestra en la �gura, representa los sitios que necesitan ser atendidos por una Ejemploempresa de mantenimiento de estaciones de servicio, con sus respectivas distancias en millas. Seha determinado que desde un sitio, se pueden atender todos aquellos puntos que se encuentren auna distancia menor o igual a 30 millas. Se desea determinar la cantidad mínima de nodos dondedebe ubicarse una sucursal para poder atender a todos los sitios, cumpliendo con la condición

11https://es.wikipedia.org/wiki/Problema_del_conjunto_de_cobertura

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 72

anteriormente descrita.Lo primero que se necesita es construir la matriz de cobertura a partir del grafo

5.2.7 Problema del Agente Viajero

Uno de los problemas más famosos en el mundo de la optimización es el que se conoce como el Problemadel Agente Viajero (Traveling Salesman Problem)12 debido a la complejidad que su solución conlleva. Enforma resumida, el problema se puede describir de la siguiente forma: dado un conjunto de ciudades (onodos en un grafo) que se encuentran conectados y se conocen las distancias, se necesita encontrar un tour(saliendo de uno de los nodos o ciudades y volviendo al mismo nodo de partida) de manera que se visitentodos los nodos (ciudades) y que la distancia total recorrida sea mínima. Para entender la forma como lacomplejidad de solución de este problema crece, pensemoslo de la siguiente forma: si queremos resolver elproblema para 5 ciudades, debemos primero elegir la ciudad de partida, esto nos da 5 posibilidades, luego,tenemos 4 posibilidades para elegir la ciudad siguiente a visitar, después tenemos 3 posibilidades para laciudad siguiente y así sucesivamente. Como podrá apreciar el lector, se trata de un problema que crece enforma factorial respecto al número de ciudades a visitar. En realidad, ya que la distancia entre las ciudadeses la misma en ambos sentidos (de A a B es igual que de B a A) y que cada ruta constituye un ciclo, por lo

que el punto de partida no es importante, el número total de rutas posibles es igual a (n−1)!2 .

Dado lo anterior, el espacio de búsqueda para el problema de 5 ciudades es de 12 posibles rutas, pero sihablamos de un problema con 10 ciudades, el número posible de rutas es de 181,440 y si el problema fuera de20 ciudades, el número posible de tours sería de 6.082E16. Si nuestra computadora pudiese evaluar 1 millónde tours cada segundo, tardaría poco menos de 1929 años para encontrar el tour óptimo.

El problema del viajero pertenece a la categoría de los problemas NP completos 13. Esta terminologíapertenece a la teoría de complejidad computacional, que es algo que está fuera del alcance de estas notas, sinembargo, basta decir que no existe un algoritmo que garantice poder encontrar una solución óptima. Paraproblemas de un tamaño relativamente pequeño (algunas decenas o incluso cientos de nodos) puede utilizarsealgunos algoritmos que son capaces de encontrar el tour óptimo, por ejemplo, programación dinámica, branchand bound (rami�cación y acotamiento) y otros. Afortunadamente, Sage nos facilita la vida para solucionarestos problemas sin tener que preocuparnos de la operatoria.

Para demostrar este tipo de problemas, lo haremos por medio de un ejemplo:

La tabla siguiente muestra las distancias (en km) entre algunas de las principales ciudades Ejemploeuropeas. Si un turista mochilero desea realizar un tour visitando todas las ciudades, ¾cual

12http://es.wikipedia.org/wiki/Problema_del_viajante13http://es.wikipedia.org/wiki/NP-completo

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 73

debe ser el orden en que debería hacerlo para recorrer la mínima distancia total? Para procedera resolver este problema, es necesario cambiar un poco la estrategia respecto a los otros modelos de redes quehemos resuelto anteriormente. En los modelos anteriores, nosotros le indicamos a Sage en forma explícitacada uno de los arcos de la forma (inicio, �n, distancia), sin embargo, en este tipo de problemas, esto seríapoco práctico, ya que la cantidad de arcos crecería en forma cuadrática respecto al número de ciudades avisitar, por lo que, aunque en este problema es manejable ya que son solamente 6 ciudades, en un problemamayor sería demasiado engorroso.

Vamos entonces a atacar el problema de una forma mas inteligente, aprovechando las ventajas que Sagenos da al hacer uso de las estructuras de programación de Python. Para ello, primero vamos a ingresar lamatriz de distancias en su forma puramente matricial, de la siguiente forma:

Esta forma es sumamente práctica ya que si tuviesemos un problema de 20 ciudades, solamente deberíamosingresar la matriz de distancias en lugar de ingresar los 400 nodos individualmente. Una vez que tenemos losarcos, la creación del grafo y su posterior solución es sumamente sencilla. Veamos:

Notese que por tratarse de un grafo dirigido, Sage dibuja dos arcos entre cada par de nodos, uno en cada

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 74

sentido, lo cual sería importante en caso que las distancias fueran diferentes, lo cual no es el caso, sin embargopara la solución de este tipo de modelos, siempre debemos declararlo como un grafo dirigido.

La solución nos muestra el tour óptimo entre las 6 ciudades, el cual es independiente del punto de inicio(igual al de �nal) ya que se puede iniciar en cualquiera de los 6 nodos y seguir el orden indicado por el grafo.Al regresar al nodo (ciudad) de partida, se habrá recorrido una distancia total de 4773 km que es el valormínimo de todos los posibles tours.

5.2.8 Problema del Agente Viajero en MiniZinc

5.3 Programación Entera

La programación entera se re�ere a los casos de programación lineal para los cuales, las variables de decisiónpueden tomar solamente valores enteros. Esto aplica en casos en los cuales las soluciones reales no tienensentido en la práctica, como cuando estamos optimizando variables discretas. Esto restringe aún más elespacio de soluciones o de un problema de optimización lineal. Contrario a lo que pueda pensarse, resolverproblemas de programación entera es mucho más complejo comparado con los problemas de programaciónlineal con variables reales, ya que en el caso de las variables enteras, el problema se convierte en uno debúsqueda en un conjunto �nito u optimización combinatoria, lo cual, dependiendo del tamaño del espaciode búsqueda, puede ser extremadamente difícil ya que no existe un algoritmo e�ciente, como el caso delmétodo Simplex, para encontrar dichas soluciones. Tampoco resolver un problema de programación enteraes tan simple como redondear o aproximar la solución real a los valores enteros mas cercanos. Es mucho más

CHAPTER 5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES 75

complejo que eso y aunque existen algoritmos que proporcionan dichas soluciones (Branch and Bound14 ,Gomory Cuts 15, etc.) ninguno garantiza obtener la solución en un tiempo polinomial como lo hace el métodoSimplex.

5.3.1 Programación Binaria

5.3.2 Programación Lineal Entera Mixta (PLM/MILP)

5.4 Ejercicios

14https://en.wikipedia.org/wiki/Branch_and_bound15https://en.wikipedia.org/wiki/Cutting-plane_method

Chapter 6

OPTIMIZACIÓN NO LINEAL NORESTRINGIDA EN VARIASVARIABLES

Al igual que en el caso de la optimización no restringida en una variable, este tipo de problemas perteneceal campo del cálculo diferencial, aunque en este caso se trata de cálculo multivariado. Existe una diversidadde métodos para resolver estos problemas y la mayoría involucran el gradiente de la función1. El gradiente,como el estudiante recuerda de sus cursos de cálculo multivariado, es un vector que está compuesto por lasderivadas parciales de la función respecto a cada una de las variables de dicha función y que es perpendicularu ortogonal al punto de la super�cie de la función en el cual se obtiene.

Nuevamente se deja al estudiante refrescar estos conceptos y la teoría relacionada ya que como lo hemoshecho hasta aquí, recurriremos a nuestras herramientas tecnológicas para resolver este tipo de problemas.En este caso nuevamente haremos uso de Sage como la herramienta por excelencia. Como lo habrá notadoel estudiante, Sage es una especie de navaja del ejército suizo para el cálculo matemático por computadora,aquella que tiene una herramienta para cada necesidad, solo que si quisieramos tener una navaja suiza contantas opciones como Sage, talvez se vería algo como esto:

En el caso de la optimización multivariada no lineal y no restringida, Sage nos presenta con una funciónque nos facilita el trabajo enormemente y la cual se mostrará a continuación a través de un ejemplo:

Suponga que se está desarrollando un proyecto de carreteras en 4 frentes distintos, A, B, C y D Ejemploque tienen coordenadas en un plano cartesiano igual a (2,3), (7,2), (5,4) y (4,2) respectivamente.Es necesario establecer una centro de operaciones para abastecer de insumos los 4 frentes. Cada

1http://es.wikipedia.org/wiki/Gradiente

76

CHAPTER 6. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN VARIAS VARIABLES 77

frente tiene distinta demanda de insumos por lo que se ha estimado que se tienen que realizar9 viajes diarios al frente A, 5 viajes diarios al frente B, 3 viajes al frente C y 6 viajes al frenteD cada día. Se necesita determinar las coordenadas para establecer el centro de operacionesde manera que la distancia total recorrida cada día a los 4 frentes sea mínima. En un problemade este tipo, se puede utilizar dos tipos de distancias como función a minimizar, la Distancia Euclidiana2 ola Distancia Manhattan3. Para desarrollar este ejemplo, estaremos utilizando la distancia euclidiana.

Como primer paso, es interesante ver la ubicación en el plano cartesiano de los puntos que representan losfrentes. Para esto, podemos utilizar las maravillosas funcionalidades de gra�cación de Sage que nos permitevisualizar esto de una forma rápida y sencilla. A continuación se muestra la sesión de Sage conteniendo lasinstrucciones para hacer esto:

2http://es.wikipedia.org/wiki/Distancia_euclidiana3http://es.wikipedia.org/wiki/Geometría_del_taxista

CHAPTER 6. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN VARIAS VARIABLES 78

El objetivo en este ejemplo es minimizar la distancia total euclidiana, la cual puede ser expresada por lasiguiente ecuación:

DT =∑√

(x− xi)2 + (y − yi)2

Donde x y y son las coordenadas del centro de operaciones y xiy yison las coordenadas de cada uno delos frentes. Al sustituír los valores para este ejemplo, la distancia total queda de la siguiente manera:

DT =√

(x− 2)2 + (y − 3)2 +√

(x− 7)2 + (y − 2)2 +√

(x− 5)2 + (y − 4)2 +√

(x− 4)2 + (y − 2)2

Como puede observarse, la distancia total corresponde a una función claramente no lineal en 2 variables.Ahora, procedemos a ingresar la función de Distancia Total en Sage para después poderla optimizar,

utilizando para ello la rutina de optimización no lineal que Sage ya tiene prede�nida.

CHAPTER 6. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN VARIAS VARIABLES 79

Como puede observarse en la �gura anterior, el punto que señala la ubicación óptima para el Centrode Operaciones se encuentra en las coordenadas (3.94, 2.19) lo que se ubica muy cercano al punto D cuyascoordenadas son (4,2). Esto quiere decir que al ubicar el Centro de Operaciones en esas coordenadas, seestará minimizando la distancia total que se recorre cada día a cada uno de los frentes.

Como se mencionó al inicio de esta sección, la mayoría de algoritmos para resolver problemas de optimizaciónno lineal en varias variables utilizan métodos basados en el cálculo de gradientes para las funciones, lo cual

CHAPTER 6. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN VARIAS VARIABLES 80

implica el cálculo y evaluación de derivadas parciales. Existen diversos métodos para hacer esto, la mayoríautiliza técnicas numéricas. Estas técnicas presumen que la función objetivo es derivable y tiene caracteristicas�suaves�, es decir, gradientes moderados. En el ejemplo anterior, podemos visualizar la función que estamosoptimizando ya que Sage también permite realizar grá�cos en 3D y en este caso, por tratarse de una funciónde 2 variables, generará una super�cie tridimensional. Veamos la grá�ca:

De hecho, con Sage podemos manipular la gra�ca en 3D, rotándola para verla desde distintos ángulos, locual nos puede dar una mejor idea de donde puede estar el valor óptimo.

Cuando las funciones a minimizar no son �suaves� sino que presentan demasiados óptimos locales, losmétodos basados en cálculo no son la mejor alternativa. En estos casos se deben utilizar técnicas heurísticas,de las cuales se habla un poco en el capítulo 8.

6.1 Ejercicios

Chapter 7

OPTIMIZACIÓN NO LINEALRESTRINGIDA EN VARIASVARIABLES

En el caso de la optimización no lineal con restricciones en varias variables, entramos en un territorio masescabroso y complejo desde la perspectiva del análisis matemático, ya que en este caso tampoco se cuentacon un algoritmo que funcione de una manera universal para cualquier tipo de problema. Los métodos pararesolver este tipo de problemas, por tratarse de funciones no lineales y en varias variables son inevitablementebasados en cálculo diferencial, aunque estos no necesariamente garantizan la solución e�caz de cualquierproblema. Debido a muchas condiciones de complejidad que se presentan, la solución de estos problemasno es trivial y de hecho, hasta hace relativamente muy poco tiempo se empezó a estudiar estos problemasy a desarrollar metodologías de solución, muchas de ellas quedan fuera del alcance de estas notas por loque no serán abordadas. En cambio, nos enfocaremos en algunos problemas relativamente sencillos peroque demuestran la forma como estos problemas pueden ser abordados. En el caso de problemas demasiadocomplejos para ser resueltos en forma analítica, se requiere el uso de métodos numéricos o técnicas heurísticasde las cuales se habla un poco en el capítulo 8.

Para la optimización no lineal con restricciones pueden presentarse dos situaciones respecto al tipo derestricciones:

� Restricciones de igualdad

� Restricciones de desigualdad

Se tratarán ejemplos sencillos de cada una de ellas.

7.1 RESTRICCIONES DE IGUALDAD

Uno de las metodologías más utilizadas ante esta situación y que seguramente el lector recordará de suscursos de cálculo multivariado es el de los Multiplicadores de Lagrange1. Al igual que en los casos anteriores,se deja al estudiante la inquietud de revisar la bibliografía pertinente para cubrir los fundamentos teóricos dela metodología, pero baste decir que este es uno de los métodos para los cuales contar con una herramientainformática de manipulación algebraica es de suma utilidad, puesto que el método requiere realizar variasoperaciones sobre objetos algebraicos, por ejemplo, derivadas parciales y solución de ecuaciones no lineales,lo cual puede complicarse bastante al momento de realizarlo de forma manual.

La forma general del método de Multiplicadores de Lagrange es la siguiente: Por ejemplo, para determinarlos valores mínimos y máximos de la funciónf(x, y, z) sujeta a la restricción g(x, y, z) = k determinar todoslos valores de x, y, z y λtales que:

1http://es.wikipedia.org/wiki/Multiplicadores_de_Lagrange

81

CHAPTER 7. OPTIMIZACIÓN NO LINEAL RESTRINGIDA EN VARIAS VARIABLES 82

∇f(x, y, z) = λ∇g(x, y, z)

Recordando que ∇f se re�ere al gradiente de una función, es decir, el vector formado por las derivadasparciales de la función respecto a cada una de sus variables, como sigue: ∇f = (∂f∂x ,

∂f∂y ,

∂f∂z )

De esto se obtiene el Lagrangiano que queda de la siguiente forma:

L = f − λ(g − k)

Y luego derivando parcialmente esta expresión respecto a cada una de las variables x, y, z, λ se obtieneun sistema de ecuaciones simultáneas, muchas veces no lineales, las cuales se deben resolver para encontrarla solución al problema original, de la forma:

∂L

∂x= 0

∂L

∂y= 0

∂L

∂z= 0

∂L

∂λ= 0

Por lo que en el caso de una función de 3 variables y una restricción, se requiere resolver un sistema de4 ecuaciones simultáneas no lineales. Por cada restricción que se tenga se agregará un multiplicador y porende, una variable y una ecuación más al sistema.

Vamos a desarrollar un ejemplo para ayudar a aclarar este procedimiento, apoyándonos en Sage pararealizar todo el proceso. El ejemplo es el siguiente:

Cuales deben ser las dimensiones de un envase para leche de forma rectangular, volumen de Ejemplo # 11512 cm3 y costo mínimo, si el material de los lados de la caja cuestan 10 centavos el centrimetrocuadrado y el material de la tapa y el fondo cuestan 20 centavos el centímetro cuadrado. Eneste caso, vamos a realizar un diagrama para representar la caja de carton y poder asignar una variable acada una de las dimensiones de la caja:

En este caso, lo que se desea es minimizar la función de costo total del material necesario para el envase,el cual estaría dado por la siguiente ecuación:

CT = 10 ∗ (2xz) + 10 ∗ (2yz) + 20 ∗ (2xy)

CT = 20xz + 20yz + 40xy

Mientras que la restricción en este caso se re�ere al volumen total que el envase debe contener:

V T = xyz = 512

Ahora aplicando el lagrangiano a las 2 ecuaciones anteriores nos queda de la siguiente manera:

L = CT − λ(V T − 512)

Ahora podemos utilizar Sage para resolver el modelo:

CHAPTER 7. OPTIMIZACIÓN NO LINEAL RESTRINGIDA EN VARIAS VARIABLES 83

Como se puede ver, Sage nos proporciona todas las soluciones al sistema de ecuaciones, incluyendo lassoluciones complejas. Para efectos prácticos solo nos interesa la única solución real positiva por lo que eneste caso, las dimensiones óptimas para el envase son x = 6.35cm,y = 6.35cm y z = 12.7cm.

En resumen, Sage nos permite resolver un problema relativamente complejo sin tener que preocuparnospor realizar el proceso de derivación parcial y luego de solución de las ecuaciones simultáneas no lineales, locual puede llegar a ser bastante engorroso y complejo para ciertos problemas.

7.2 RESTRICCIONES DE DESIGUALDAD

Como se mencionó en la sección anterior, la optimización no lineal restringida es un campo sumamentecomplejo y que es objeto de constante investigación y desarrollo por parte de expertos en muchas disciplinascientí�cas como matemáticas, ciencias de la computación, física, estadística, etc. Es importante que elestudiante entienda un concepto clave en optimización no lineal, la diferencia entre un óptimo local y unóptimo global.

1. Optimo Local: Se re�ere a un valor máximo o mínimo de una función respecto al conjunto de valorescercanos2. En otras palabras, se re�ere a un valor óptimo en una región especí�ca del dominio dela función. Una función puede tener muchos óptimos locales. Para encontrar un óptimo local puederecurrirse a métodos basados en gradientes y buscar el punto en el que el gradiente es 0. Existen variosalgoritmos e�cientes para la búsqueda de óptimos locales.

2http://en.wikipedia.org/wiki/Local_optimum

CHAPTER 7. OPTIMIZACIÓN NO LINEAL RESTRINGIDA EN VARIAS VARIABLES 84

Figure 7.1: Ejemplo de una función con muchos óptimos locales

2. Optimo Global: El óptimo global es un valor máximo o mínimo de una función en todo su dominio3.Como se mencionó anteriormente, una función puede tener varios óptimos locales por lo que el óptimoglobal será el máximo (o mínimo) de todos los óptimos locales. La búsqueda de óptimos globales es unproblema sumamente complejo ya que no existen algoritmos que garanticen poder encontrarlos. Paraencontrar óptimos locales generalmente se debe recurrir a algoritmos heurísticos y que muchas veces sondiseñados para un problema especí�co por lo que dependerá del tipo de problema y sus característicasparticulares. Estos algoritmos se basan en explorar en forma selectiva todo el espacio de soluciones.

Al igual que en la sección anterior, vamos a presentar un ejemplo relativamente sencillo de aplicación deoptimización no lineal multivariada con restricciones de desigualdad, esto principalmente para demostrar eluso de las herramientas para su solución, especí�camente Sage que ya viene preparado con algoritmos paraeste tipo de problemas. La clave del éxito en la solución de estos problemas es el correcto planteamiento delmodelo matemático, algo en lo cual ya hemos abundado con ejemplos a lo largo de estas notas y la selecciónde la herramienta para su solución, que en este caso es Sage. Veamos un ejemplo especí�co de un problemano lineal en varias variables y con restricciones de desigualdad:

Una compañía petrolífera debe determinar cuántos barriles de petróleo debe extraer en los Ejemplo # 12próximos 2 años. Si la compañía extrae x1 millones de barriles durante un año, se podrávender cada barril en 30− x1 Euros. Si extrae x2 millones de barriles durante el segundo año,se podrán vender en 35 − x2 Euros cada barril. El costo de extraer x1 barriles el primer añoes de x21 millones de Euros y el costo para extraer x2 millones de barriles el segundo año es de2x22 millones de Euros. Se puede obtener como máximo un total de 20 millones de barriles depetróleo y se puede gastar como máximo 250 millones de Euros en la extracción. Formular elproblema de optimización para determinar cuánto debe extraer durante los próximos 2 años.En este caso, el problema nos da su�cientes indicios sobre el objetivo, ya que se nos proporciona informaciónde precio de venta por barril así como el costo de extraer el petróleo. Basado en esto podemos inferir que lacompañía buscará maximizar su ganancia. Las variables de decisión también son bastante obvias puesto queel enunciado del problema prácticamente nos da la pauta que debemos decidir cuántos millones de barrilesextraer el primer año (lo que se denomina como x1y cuántos millones de barriles debemos extraer el segundoaño, denotado por x2. Con esto nuestro modelo quedará de la siguiente forma:

max G=(30− x1)x1 − x21 + (35− x2)x2 − 2x22

3http://en.wikipedia.org/wiki/Global_optimum

CHAPTER 7. OPTIMIZACIÓN NO LINEAL RESTRINGIDA EN VARIAS VARIABLES 85

max G = 30x1 − 2x21 + 35x2 − 3x22

Sujeto a las siguientes restricciones:

x1 + x2 ≤ 20

x21 + 2x22 ≤ 250

Como puede observarse, se trata de un modelo de programación matemática que es claramente no lineal,puesto que la función objetivo presenta 2 variables de decisión elevadas al cuadrado. De igual forma, el modeloes restringido por la presencia de 2 restricciones, una de las cuales contiene también a ambas variables elevadasal cuadrado. Para resolver este modelo, vamos a recurrir nuevamente a nuestra navaja del ejército suizo, Sage,que ya contiene una serie de rutinas para la optimización no lineal restringida.

Uno de los módulos que Sage contiene, pero que en realidad pertenece al lenguaje de programación Python,es Scipy. Se trata de una librería de funciones cientí�cas y matemáticas. Entre estas funciones existe unadenominada �optimize� que a su vez contiene una serie de rutinas para realizar optimización de funciones.Lo primero que debemos hacer es importar esta librería, para lo cual hacemos lo siguiente:

El módulo �optimize� contiene a su vez una rutina denominada COBYLA que sirve para optimizaciónrestringida. COBYLA viene de las siglas Constrained Optimization BY Linear Aproximation4 que traducidosigni�ca Optimización Restringida Por Aproximación Lineal. Este es un método desarrollado por MichaelPowel y que permite optimizar funciones sin utilizar gradientes o derivadas si no, como su nombre lo indica,aproximaciones lineales. Se deja al estudiante leer mas acerca de este método. Una particularidad de laimplementación de este algoritmo en Python es que solamente permite encontrar el mínimo de una funciónen la cual todas las restricciones son del tipo ≥ 0 . En este ejemplo tenemos un problema de maximizacióncon restricciones ≤. Vamos a recurrir a una manipulación muy común en optimización que permite convertirun problema de maximización en minimización y viceversa. Recordemos que:

max f ≡ min − f

Por lo que la función objetivo a minimizar quedaría de la siguiente forma:

min −G = 2x21 + 3x22 − 30x1 − 35x2

Igualmente, para invertir el signo de las restricciones, simplemente las multiplicamos por −1 y pasamostodos los términos al lado izquierdo para que quede 0 del lado derecho, con lo cual quedarían de la siguienteforma:

20− x1 − x2 ≥ 0

250− x21 − 2x22 ≥ 0

Adicionalmente, debemos agregar en forma explícita las restricciones de no negatividad para las variablesya que este algoritmo no asume dicha condición:

x1 ≥ 0

x2 ≥ 0

Ahora vamos a proceder a de�nir las funciones en Sage. Para esto, vamos a utilizar esta vez el formatode de�nición de funciones de Python, que tiene la forma

4http://en.wikipedia.org/wiki/COBYLA

CHAPTER 7. OPTIMIZACIÓN NO LINEAL RESTRINGIDA EN VARIAS VARIABLES 86

def nombrefunción(parámetros):

return expresión

y vamos a de�nir una función para cada una de las expresiones anteriores, es decir, la función objetivo ycada una de las restricciones. En el caso de los parámetros, en lugar de utilizar variables individuales vamosa utilizar una lista a la que vamos a llamar X y cada uno de sus elementos será una variable de decisión.Recordemos que el primer elemento de una lista tiene el índice 0. También vemos que las funciones para lasrestricciones deben retornar solamente el lado izquierdo ya que la rutina asume que el lado derecho es ≥ 0.Veamos como se hace en Sage:

Ahora ya podemos proceder a llamar la subrutina de optimización, la cual tiene la siguiente estructura:

optimize.fmin_cobyla(función_objetivo, [lista de valores iniciales],

[lista de restricciones], rhoend=tolerancia)

Como podemos observar, Sage nos proporciona la solución al modelo. En la �gura anterior podemos verla solución en la cual los valores de las variables están denotadas por X, por lo que la solución para x1es 7.5 ypara x2es igual a 5.8333. El valor de la función objetivo está dado por F = −2.1458E + 02 pero recordemosque estabamos minimizando el negativo de la función objetivo original por lo que debemos cambiarle el signo,entonces la solución para la máxima ganancia que la empresa petrolera puee obtener es de 214.58 millonesde Euros, extrayendo el primer año 7.5 millones de barriles y el segundo año 5.833 millones de barriles decrudo.

Existe otra rutina que Sage también trae de�nida y que puede ser utilizada en estos problemas deoptimización multivariada no lineal restringida. La estructura es parecida a la rutina anterior, aunquecambia un poco el orden de los factores:

minimize_constrained(función_objetivo, [lista de restricciones],

[lista de valores iniciales])

Si utilizamos esta rutina, obtenemos los mismos valores para las variables de decisión:

CHAPTER 7. OPTIMIZACIÓN NO LINEAL RESTRINGIDA EN VARIAS VARIABLES 87

En este ejemplo ambas rutinas tienen exito en encontrar la solución y ambas coinciden, sin embargo,como ya se mencionó, la solución de problemas de optimización no lineal es un problema complejo y no existegarantía de poder llegar a la solución óptima. Algunas veces, si al principio no se tiene éxito en obtener unasolución con una de las rutinas, puede probarse con otra o se puede probar cambiando los valores iniciales delas variables para que el algoritmo inicie la búsqueda en un punto diferente, pero eso tampoco nos da certezade que vamos a obtener la solución óptima.

7.3 Ejercicios

Chapter 8

OPTIMIZACIÓN COMBINATORIA YPROGRAMACIÓN LÓGICA CONRESTRICCIONES

88

Chapter 9

MÉTODOS HEURÍSTICOS PARAOPTIMIZACIÓN

89