Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
HERRAMIENTAS INFORMÁTICAS
Versión 1.1
23 de septiembre de 2017
Índice general
I. ASPECTOS BÁSICOS 5
1. INTRODUCCION 6
3. HERRAMIENTAS INFORMÁTICAS 12
3.1. Introducción al Software Libre de Código Abierto . . . . . . . . . . . . . . . . . . 12
3.2. Software a utilizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.1. Maxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.2. OpenOce Calc/LibreOce Calc . . . . . . . . . . . . . . . . . . . . . . . 14
3.2.3. SmathStudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.4. Sage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.5. Octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.6. Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2
Índice general
3
Índice de guras
1.1. Mapa Conceptual del Contenido . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4
Parte I.
ASPECTOS BÁSICOS
5
1. INTRODUCCION
La idea de desarrollar estas notas surgió hace algunos años cuando me fué solicitado por
primera vez impartir el curso denominado Algebra y Tecnología Informática en la Maestría en
Ingeniería Vial de la Universidad de San Carlos de Guatemala. El objetivo de ese curso, como
me fué planteado en ese momento, era que los estudiantes de maestría aprendieran a utilizar
herramientas informáticas para la solución de problemas matemáticos complejos.
Inicialmente se me solicitó que el curso se orientara al uso del programa Matlab®
1 como la
base del curso. Matlab® es reconocido a nivel mudial como la herramienta de cálculo mate-
mático mas utilizada en ciencia e ingeniería. Sin embargo, por tratarse de un programa de tipo
comercial, su uso implica el pago de una licencia por un período de tiempo limitado. Esto trae
serias desventajas ya que para desarrollar el curso se requiere un laboratorio equipado con el pro-
grama y las respectivas licencias, lo cual presentaba un obstáculo, tanto para impartir las clases
magistrales como para que los estudiantes llevaran a cabo las respectivas 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 mi propia experiencia: Para aprender a utilizar una herramienta, del tipo que sea (mecánica,
tecnológica u otro tipo) es necesario tener un propósito u objetivo denido para su uso. El proceso
de aprendizaje de los procedimientos y métodos para el uso de aplicaciones informáticas, cuando
no se dá dentro de un contexto especíco, es frágil y poco ecaz, ya que los estudiantes aprenden
el cómo pero no el para qué, por lo que mas temprano que tarde los conocimientos caen en el
olvido. Muchos de los estudiantes que cursan la maestría son profesionales que culminaron sus
estudios a nivel de licenciatura hace ya varios años y mucho de sus conceptos matemáticos se
encuentran en desuso lo que diculta aún mas el proceso, ya que en muchos casos 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 dicultad, relacionada con el uso de programas comerciales que
requieren licencia, he optado en los últimos años por el uso de aplicaciones que pertenecen a la
corriente del Software Libre (FOSS, Free and Open Source Software, por sus siglas en inglés).
Dentro de esta categoría se encuentra un conjunto de herramientas que poseen todas o casi todas
las características requeridas para cumplir el objetivo del curso, que son igual o en algunos casos
más poderosas que el software comercial y que tienen la enorme ventaja de que pueden obtenerse
sin ningún tipo de restricción para su instalación y uso, en forma gratuita y por tiempo indenido.
Otro aspecto que considero importante es el no restringir el curso a una sola aplicación, puesto
que eso limita al estudiante al uso del software que conoce, lo que ocasiona que al encontrarse en
el ejercicio profesional, si dicho progrma no está disponible y más aún si se trata de un software
comercial cuyo costo de licenciamiento es elevado, no pueda tener las herramientas necesarias para
la solución de problemas. Es por 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 afrontar cualquier problema matemático.
En lo que respecta al segundo inconveniente, el del propósito denido, opté por un campo
de suma importancia en todas las ramas de ingeniería, pero que lamentablemente no siempre
está incluído en las redes 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 que este tema debería ser de inclusión obligada en
1
http://www.mathworks.com/products/matlab/
6
1. INTRODUCCION
todos los programas académicos de ingeniería. En el caso de la Ingeniería Civil, que es de donde
provienen la mayoría de profesionales que cursan la Maestría en Ingeniería Vial, este tema no se
incluye en su malla curricular.
Combinando entonces un propósito claramente denido con un conjunto de herramientas dis-
ponibles y aptas para tal n, surge el curso que más apropiadamente se denomina Optimización
para Ingenieros con Herramientas Informáticas y esta compilación de apuntes que tienen como
propósito servir como guía y referencia para los estudiantes, debido a la poca disponibilidad
de material sobre el tema especíco. Cabe aclarar que el objetivo del curso y por ende de estos
apuntes, es presentar al estudiante y al profesional un enfoque práctico y aplicado de las metodo-
logías discutidas, en vez de profundizar en el aspecto teórico y el rigor matemático de los temas
ya que sobre eso existe suciente material de muy buena calidad y que se encuentra disponible,
por lo que se pide a los lectores mantener esto en mente al utilizar los apuntes. Estas notas no
pretenden servir como libro de texto, por lo que si se requiere profundizar en la parte teórica y
conceptual de los métodos y las herramientas aquí presentadas, en la sección de Bibliografía se
encuentra una lista de referencias que pueden ser consultadas.
7
2. CONCEPTOS BÁSICOS DE
OPTIMIZACIÓN
Para iniciar, es necesario denir y delimitar el campo de acción sobre el cual se desarrollará
el curso: la optimización. Al enfrentarse al proceso de solución de problemas, los ingenieros se
encuentran generalmente con una o varias soluciones al mismo, sin embargo, la solución óptima
en un sentido muy general es aquella que 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
algoritmos de optimización, es decir, procedimientos ya denidos, 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. Sin embargo, la parte generalmente más difícil y que se convierte
en un arte que requiere de mucho criterio y experiencia consiste en convertir el problema real
en un modelo al cual pueda aplicarse alguno de los algoritmos mencionados, luego seleccionar y
aplicar el algoritmo adecuado al modelo y nalmente analizar la solución obtenida y convertirla
en una o varias decisiones que puedan ser tomadas sobre el problema real ya que muchas veces
la respuesta proporcionada por el algoritmo no puede aplicarse tal cual al problema original.
Existen muchos criterios bajo los cuales puede categorizarse un problema de optimización. En
1
este curso no se pretende abarcar todos los tipos de problema de optimización existentes. Los
tipos de optimización puede clasicarse de acuerdo a los siguientes criterios:
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 las operaciones que se realizan entre ellas son solamente suma y resta.
1
http://en.wikipedia.org/wiki/Mathematical_optimization
8
2. CONCEPTOS BÁSICOS DE OPTIMIZACIÓN
Discreta: Las variables solo pueden tomar ciertos valores. Un caso especial es el caso
de la optimización entera.
Combinatoria: Las variables de decisión solo pueden tomar valores dentro de un con-
junto denido y se busca encontrar la combinación de valores para las distintas varia-
bles que hace óptimo el resultado.
Multiobjetivo: Dos o mas objetivos que compiten entre sí por los recursos.
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, es precisamente porque no se ha denido y delimitado correctamente
9
2. CONCEPTOS BÁSICOS DE OPTIMIZACIÓN
el problema a resolver por lo que no existe una comprensión del mismo. Para asegurar el
correcto entendimiento del problema, hay varias estrategias que pueden seguirse, entre las
cuales una de las más útiles es hacer un esquema, dibujo o diagrama del problema, de una
forma simple pero tratando de representar grácamente todos los aspectos de la situación.
3. Identicar las variables de decisión: Las variables de decisión son, como su nombre lo
sugiere, aquellos aspectos del modelo que se encuentran bajo el control del tomador de
decisiones, de manera que ajustando el valor de dichas variables, se modica el resultado
del modelo. Generalmente estas variables son representadas matemáticamente en forma de
un vector de la forma X = x1 , x2 , x3, ...según sea la cantidad de variables que existen en
el modelo.
4. Expresar el objetivo como una función matemática de las variables de decisión: Este paso
consiste en identicar las relaciones matemáticas existentes entre las variables de deci-
sión que producen el objetivo del paso 2. A esta función matemática se le llama Función
Objetivo. Expresado en forma matemática:
a) Limitaciones de recursos disponibles, tales como materia prima, tiempo, espacio, per-
sonal, etc.
b) Requerimientos que deben ser cumplidos, tales como cantidades mínimas de produc-
ción, especicaciones de 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 representar las restricciones no se limitan solamente a relaciones de igualdad sino que
pueden expresarse también como desigualdades, por lo que es importante tener muy clara
la naturaleza de la restricción, es decir, saber si:
Este proceso se entenderá mas claramente en los siguientes capítulos cuando se desarrolle
en el contexto de un caso especíco.
10
2. CONCEPTOS BÁSICOS DE OPTIMIZACIÓN
11
3. HERRAMIENTAS INFORMÁTICAS
Como se mencionó en la introducción, este es un curso eminentemente práctico y aplicado, por
lo que la solución de los modelos de optimización se hará únicamente por medio de herramientas
informáticas, así que en este capítulo se hará una breve introducción a las mismas. Se presentan
en la seccion de bibliografía varias referencias 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.
El movimiento de software libre de código abierto (Free and Open Source Software o FOSS)
1
surgió durante la 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 y era permitido realizar copias del mismo y tener acceso
incluso al código fuente para poder hacer modicaciones para adaptarlo a las necesidades parti-
culares. 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 se convirtió en
un producto que se vendía por separado, bajo un modelo de licenciamiento para su uso, lo cual
implica una serie de restricciones ya que las compañías desarrolladoras mantienen todos los de-
rechos sobre el mismo, lo cual impide al comprador copiarlo, instalarlo en otras computadoras,
ver el código fuente para entender su funcionamiento o hacer modicaciones o adaptaciones de
acuerdo a sus propias necesidades.
2
En 1983 Richard Stallman , un académico e informático de MIT funda el movimiento de
software libre cuyo objetivo es desarrollar programas que puedan ser de libre acceso para quienes
deseen usarlos. Las caracterí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
algunas veces se puede cobrar el costo del medio en el cual se distribuya, pero no existe un
pago por licencia para su uso.
Puede copiarse las veces que se desee e instalarse en todas las computadoras que se requiera,
sin limitaciones ni restricción alguna.
Se puede tener acceso al código fuente para poder estudiar y comprender su funcionamiento.
También puede modicarse 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 a que en el proceso de investigación y desarrollo, así como en la solución de problemas,
no es válido el modelo de caja negra utilizado por el software comercial, donde se aceptan los
resultados obtenidos sin validar la forma 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
fortalecido y extendido de tal forma que en la actualidad, los programas desarrollados bajo este
modelo, compiten con los programas comerciales en calidad, incluso en algunos casos superando
1
http://en.wikipedia.org/wiki/Free_and_open-source_software
2
http://es.wikipedia.org/wiki/Richard_Stallman
12
3. HERRAMIENTAS INFORMÁTICAS
a sus pares comerciales. Muchas organizaciones en todo el mundo han adoptado el sofware libre
por diversas razones, siendo una de ellas el ahorro en los costos de licencia, pero en muchos casos
no es la principal, sino que se ha comprobado la calidad y 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, lo cual presenta una serie de ventajas para el desarrollo del programa del curso. Entre las
ventajas podemos mencionar 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 siempre disponibles para realizar prácticas y tareas. La mayoría de ellos puede ser
instalado en diversos sistemas operativos como MS Windows®, Linux o Mac OS®
Pueden utilizarlo sin restricción, incluso para nes comerciales por lo que pueden aplicarlo
en su ejercicio profesional.
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 alrededor del mundo, por lo que frecuentemente se liberan versiones actualizadas y
mejoradas.
En esta sección se enumera cada una de las aplicaciones de software libre que pueden utilizarse
para resolver problemas de optimización y se hace una breve reseña de ellas, indicando su principal
área de aplicación así como algunas de sus características mas importantes. Cuando es pertinente
se indica el nombre de un programa 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ón para 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 es un programa matemático cuya fortaleza radica en la capacidad de realizar operacio-
nes y manipulación sobre objetos simbólicos. Es decir, un CAS es capaz de tomar una expresión
representada en forma simbólica y realizar operaciones básicas (suma, multiplicacion, exponen-
ciación, etc.) y también operaciones más avanzadas 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é
desarrollado en la década de 1960. Es una herramienta sumamente completa, poderosa, versátil
y estable, aparte de ser una aplicación 100 % libre. Dentro del tema de optimización, puede ser
aplicado en los siguientes casos:
13
3. HERRAMIENTAS INFORMÁTICAS
3
http://www.wolfram.com/
4
http://www.maplesoft.com/products/maple/
5
http://www.ptc.com/product/mathcad/
14
3. HERRAMIENTAS INFORMÁTICAS
Por tratarse de una hoja electrónica, Calc puede utilizarse para un sinfín de propósitos como
herramienta de cálculo. En el caso de la optimización, las 3 aplicaciones aquí mencionadas cuentan
con una herramienta denominada solver que permite resolver problemas de distinta índole.
Dado que muchas personas están familiarizadas con el uso de hojas electrónicas, así como su
estructura matricial de celdas, se hace muy sencillo el planteamiento de modelos, especialmente
en el tema de optimización de redes, tema de mucha importancia en la ingeniería vial.
OpenOce puede ser descargado en:
http://www.openoffice.org/
LibreOce 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 in-
teractiva que permite plasmar expresiones matemáticas y obtener los resultados utilizando la
simbología técnica tal y como se presenta en la mayoría de libros de texto y como si se estuvie-
se trabajando sobre una hoja de papel. SmathStudio funciona bajo el concepto de region de
cálculo, es decir que el resultado de una expresión depende del área donde dicha 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ían relativamente complejos o extensos.
En este curso se utilizará esta herramienta para desarrollar los modelos analíticos para el
estudio de líneas de espera, o Teoría de Colas, ya que permite utilizar la misma nomenclatura y
simbología que se utiliza en la 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ón gratuita y que puede utilizarse para los propósitos que se desee, por
lo que llena los requerimientos para ser utilizada en este curso.
15
3. HERRAMIENTAS INFORMÁTICAS
3.2.4. Sage
Sage es, quizá, el proyecto de software libre matemático más ambicioso y completo existen-
te en la actualidad. Siendo un programa relativamente nuevo, iniciado en el 2005, ha logrado
consolidarse en los circulos académicos mundiales como una herramienta predilecta por varias
razones. La primera, Sage no reinventó la rueda partiendo de cero en su desarrollo, sino que hace
uso de muchas otras aplicaciones matemáticas de sofware libre ya existentes las cuales integra en
una sola interfaz, lo que lo hace extremadamente poderoso y versátil. Otra razón es el hecho que
combina todas las herramientas con el poder y sencillez del lenguaje de programación de 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 que Maxima hace, puesto que Maxima es uno de los componentes de Sage.
En adición, Sage posee amplias capacidades de trabajar con grafos, lo que lo hace ideal para la
aplicacion de algoritmos de optimización de redes, 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 aplicaciones comerciales como Matlab, Mathematica, Maple, etc. Por lo que se puede ver, en
poco tiempo se ha avanzado un gran trecho hacia el logro de tal objetivo. En mi opinión, en unos
cuantos años, Sage será la herramienta de 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. Octave
Octave es una herramienta que puede clasicarse dentro de las aplicaciones de Cálculo Numé-
rico. Su objetivo es crear una alternativa de software libre para Matlab y de hecho, actualmente
existe un alto nivel de compatibilidad entre ambas, cercana al 99 %, es decir que el código de
Matlab puede ejecutarse casi sin modicaciones en Octave. Sus fortalezas radican en la enorme
capacidad de procesar grandes cantidades de datos a una grán velocidad de cálculo, así como
16
3. HERRAMIENTAS INFORMÁTICAS
17
3. HERRAMIENTAS INFORMÁTICAS
el manejo en forma natural de estructuras matriciales, lo cual la hace ideal para trabajar con
algoritmos de optimización, puesto que muchos de éstos se basan en cálculo matricial.
Mas que una aplicación, tanto Matlab como Octave son mas bien un lenguaje de programación
y un entorno de desarrollo de aplicaciones para el cálculo cientíco. Existe una grán cantidad de
paquetes adicionales que pueden descargarse y que extienden las funcionalidades de Octave en
áreas especícas. Existen paquetes 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 o GUI por sus siglas en inglés. Aunque existen algunos proyectos que se han desarrollado
en forma independiente para subsanar esta debilidad, aún no existe una interfaz que llene en su
totalidad ese vacío, aunque ya se ha anunciado por parte de los desarrolladores del proyecto
Octave que ya se está trabajando en una GUI que vendrá integrada en futuras versiones.
Octave puede descargarse de la siguiente dirección:
http://www.gnu.org/software/octave/
3.2.6. Scilab
Scilab es un software muy similar a Octave y que también pertenece a la categoría de software
para cálculo numérico. Aunque su compatibilidad con Matlab no es tan alta como Octave, puede
ser considerado una alternativa. Al igual que Octave, Scilab basa su fortaleza en el manejo de
objetos matriciales en forma natural y simple. También puede considerarse un lenguaje y un
entorno de programación para el desarrollo de aplicaciones complejas.
Otra cosa que tienen en común Scilab y Octave es la amplia variedad de paquetes adicionales
para extender la funcionalidad básica hacia aplicaciones especícas. Scilab cuenta con un pa-
quete (o Toolbox, como se denomina comunmente) desarrollado especícamente para resolver
problemas en el campo de la optimización, tanto lineal como no linea.
Scilab también incluye un programa sumamente interesante denominado XCos y que sirve
para modelar y simular sistemas dinámicos complejos. Aunque este tema está fuera del alcance
de este documento, es importante mencionarlo porque es una alternativa al programa llamado
Simulink® que es un complemento de Matlab, aunque se adquiere por aparte. En estas aplica-
18
3. HERRAMIENTAS INFORMÁTICAS
ciones, tanto XCos como Simulink es posible modelar, simular y analizar el comportamiento de
sistemas dinámicos cuyo análisis sería extremadamente difícil por la forma tradicional, es decir,
utilizando herramientas matemáticas, ya que la complejidad de las relaciones es muy alta.
Scilab es una aplicación desarrollada en Francia y es utilizada por muchas organizaciones
cientícas y académicas en Europa.
Scilab puede descargarse en:
http://www.scilab.org/
19
Parte II.
OPTIMIZACIÓN APLICADA
20
4. OPTIMIZACIÓN NO LINEAL NO
RESTRINGIDA EN UNA VARIABLE
La decisión de iniciar esta segunda parte con los modelos de optimización no lineal sin restric-
ciones para una sola variable se basa en el hecho que este es un tema que generalmente se cubre
en un curso introductorio de cálculo diferencial. La optimización (maximización o minimización)
de funciones no lineales en una sola variable 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
base de cálculo diferencial necesaria para entender los fundamentos teóricos del tema, razón por
la cual, como se aclaró en la Introducción en estos apuntes no se cubre la teoría sino solamente
la aplicación de los conceptos directamente con el uso de las herramientas computacionales. El
estudiante puede consultar cualquier libro de texto de cálculo para refrescar aquellos conceptos
que considere necesarios antes de avanzar a la siguiente sección.
Dicho lo anterior, la forma más directa de exponer el tema y más especícamente, el proceso
de desarrollo del modelo es a través de un ejemplo:
Los barriles que se utilizan para almacenar petróleo tienen forma cilíndrica y una capaci- Ejemplo # 1
dad de 160 litros. Hallar las dimensiones del cilindro para que el material empleado en su
construcción sea mínimo.
La gura muestra el envase cilíndrico y las dimensiones que lo denen, en este caso el diámetro
(D) y la altura (H). Adicionalmente el enunciado del ejemplo indica que el volumen que deben
contener los recipientes es de 160 litros. El material a utilizar es la supercie total que ocupa el
barril, es decir, las 2 tapas superiores y el cilindro.
21
4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE
Ahora vamos a introducirnos en el uso de las aplicaciones especícas y para este problema
en particular vamos a utilizar Maxima. Este no es un tutorial introductorio de Máxima, ya que
existe un grán número de ellos disponibles en internet para ser descargados y utilizados para
aprender los primeros pasos. En este curso se proporcionan algunos de ellos a los estudiantes. Al
iniciar Maxima, nos encontramos con una pantalla como la mostrada abajo:
22
4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE
Al iniciar a escribir algo, inmediatamente aparece el prompt del programa, seguido por cual-
quier cosa que tecleemos. Es importante recordar que para ejecutar una instrucción en Maxima,
debemos presionar simultáneamente las teclas
[SHIFT]+[ENTER]
Ahora, sería interesante tener una idea de la forma de la gráca en un intervalo denido,
para poder intuír donde podria encontrarse el mínimo que buscamos. Para esto, Maxima posee
excelentes funcionalidades de gracación y en forma sumamente simple, como se muestra a
continuación:
23
4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE
Como se puede observar en la gráca, el valor mínimo para esta función se encuentra cerca
del valor de D=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 inexión en una función contínua y derivable en un
intervalo, simplemente necesitamos encontrar la primera derivada de la función, luego igualar
esta primera derivada a 0 y resolver la ecuación respectiva. Como se expresó en la introducción, es
posible que algunos de los estudiantes de este curso ya hayan olvidado sus técnicas de derivación e
integración y otros aspectos básicos del cálculo. No hay porque preocuparse, para esto, recurrimos
a la tecnología y en este caso, a nuestras herramientas de software matemático. Hacer este
procedimiento en Maxima es sumamente sencillo y puede hacerse en 2 pasos, como se muestra a
continuación:
24
4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE
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 la expresió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 el estudiante 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í- Ejemplo # 2
metro de la ventana es de 30 pies, encuentre las dimensiones de la ventana de modo que
entre la cantidad más grande de luz. A continuación se presenta un diagrama que representa
la ventana, para tener una idea más clara del problema:
25
4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE
26
4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE
27
4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE
Al seleccionar la opción New Worksheet, podemos crear una nueva hoja de trabajo, a la
que deberemos dar un nombre. Una vez hecho esto, estamos ante un ambiente integrado de
trabajo que nos permitirá hacer muchas cosas ya que integra la funcionalidad de muchas otras
herramientas en una sola, potenciada por la facilidad y claridad de un lenguaje de programación
como Python.
28
4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE
29
4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE
Ahora mostraremos el desarrollo del Ejemplo # 2 de una forma mas breve, sin incluír todo el
detalle del ejemplo anterior:
30
4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE
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, existen diferencias 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)
derivative(expresión, variable)
Dos puntos A, B se encuentran en la orilla de una playa recta, separados 6 km entre sí. Ejemplo # 3
Un punto C esta frente a B a 3 km en el mar. Cuesta $400.00 tender 1 km de tubería en
la playa y $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 problema utilizando algun tipo de ayuda como un diagrama. Veamos como se vería
esta situación diagramada:
31
4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE
Resulta evidente por la gráca que el valor mínimo de la función se encuentra cerca de 2. Para
estar seguros, necesitamos seguir el procedimiento usual, primero derivamos la función objetivo
respecto a x y luego resolvemos la primera derivada para x y eso debería darnos el valor mínimo.
Veamos que sucede cuando lo hacemos en Sage:
32
4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE
¾Que sucede? Parece que la solución a la primera derivada es otra función de x en lugar de ser
un número real. Esto tiene una explicación simple, Sage no pudo resolver la ecuación en forma
simbólica. Esto es algo relativamente común. Cuando se trabaja con expresiones algebraicas,
algunos programas computarizados son incapaces de encontrar una solución en forma simbólica
1
o lo que se conoce como Forma Cerrada . Cuando esto sucede, no hay porque preocuparse, ya
que siempre hay formas alternativas de encontrar los valores que buscamos. Para esto, el lector
seguramente recordará sus cursos de Métodos Numéricos en los cuales se utilizaban algoritmos
iterativos para resolver una gran cantidad de problemas matemáticos, desde la solución de ecua-
ciones, pasando por la integración numérica hasta llegar a la solución de ecuaciones diferenciales y
otras. Nuevamente, este material no cubre la teoría detrás de dichos algoritmos, pero sí podemos
hacer uso de 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 de la forma f (x)=0. Para esto existen una serie de algoritmos numéricos como el método
de Newton o Newton Raphson. Afortunadamente, Sage nos permite usar estos métodos sin tener
que programarlos nosotros mismos.
Podemos ver que Sage encuentra fácilmente la solución en forma numérica, la cual se encuentra
casi exá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, en este caso) de la función sin necesidad de recurrir al método de la
primera derivada. Para esto podemos utilizar 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
1
http://es.wikipedia.org/wiki/Forma_cerrada_(matemática)
33
4. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN UNA VARIABLE
variables, como se verá mas adelante, sin embargo, la limitación de este enfoque es que solo
puede utilizarse para minimizar.
4.4. Ejercicios
34
5. OPTIMIZACIÓN LINEAL
RESTRINGIDA EN VARIAS VARIABLES
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 mundo de los negocios y la administración.
La optimización lineal restringida pertenece a un campo de la matemática aplicada que se
llama Programación Matemática y cuyo origen se remonta a la Segunda Guerra Mundial y en
especial a los aportes de George Dantzig
1 a quien se le atribuye el desarrollo de la Programacion
Lineal la cual fue aplicada para resolver problemas 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 contenidos curriculares de algunas carreras de ingeniería pero lamentablemente no en todas.
También se encuentra en contenidos de cursos de las carreras de Administración de Empresas,
Economía, Agronomía y en algunos programas de postgrado, en cursos tales como Investigación
de Operaciones o Métodos Cuantitativos para Administración.
Una compañía posee dos minas: la mina A produce cada día 1 tonelada de hierro de alta Ejemplo # 3
calidad, 3 toneladas de calidad media y 5 de baja calidad. La mina B produce cada día 2
toneladas de cada una de las tres calidades. La compañía necesita al menos 80 toneladas
totales de mineral 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 un modelo de optimización para la operación de las minas.
1
http://es.wikipedia.org/wiki/George_Dantzig
2
http://es.wikipedia.org/wiki/Metodo_simplex
3
http://en.wikipedia.org/wiki/Interior_point_method
35
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
36
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
debemos cumplir con los requerimientos mínimos de material (Hierro) que debemos producir. En
este caso existen 3 requerimientos, uno por cada tipo de material, por lo que cada requerimiento
se convierte en una restricción de la siguiente forma:
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.
R1 : 1 xA + 2 xB ≥ 80
R2 : 3 xA + 2 xB ≥ 160
R3 : 5 xA + 2 xB ≥ 200
1 xA + 2 xB ≥ 80
3 xA + 2 xB ≥ 160
5 xA + 2 xB ≥ 200
xA , xB ≥ 0
Otra forma estándar comunmente utilizada para expresar un modelo de programación lineal
es la forma matricial, la cual es utilizada para la aplicación del método Simplex. Nuevamente,
en este curso no vamos a explorar los algoritmos en detalle sino que vamos a utilizar el poder de
las herramientas computacionales a nuestro alcance.
37
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
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 # 4
puede hacer más de 1600 bolsas un día debido a una escasez de vehículos para transportar
el cemento fuera de la planta. Un contrato de ventas establece que él debe producir 500
38
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
bolsas al dia de cemento en polvo. Debido a restricciones del proceso, se requiere el doble
del tiempo para producir una bolsa de cemento granulado en relación al tiempo requerido
por el cemento en polvo. Una bolsa de cemento en polvo consume para su fabricación
0.24 minutos/bolsa y la planta opera 8 horas al día. Su ganancia es $4 por bolsa para el
cemento granulado y $3 por bolsa para el cemento en polvo. Nuevamente, en este ejemplo se
omite la parte del enunciado que indica explícitamente el objetivo y las variables de decisión para
desarrollar la habilidad en el estudiante de identicarlas basado en la información proporcionada.
En los verdaderos problemas, aquellos que surgen en la vida real durante el ejercicio profesional,
no existen enunciados que nos digan que hacer, es algo que debemos descubrir por nosotros
mismos.
39
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
Segundo, debemos cumplir con una cantidad mínima de bolsas de cemento en polvo por dia.
Tercero, producir cada bolsa requiere de una cantidad de tiempo y disponemos de un de-
terminado tiempo de producción total por cada dia. Aunque en el enunciado no se menciona,
suponemos que ambos tipos de cemento se producen utilizando la misma línea de producción
por lo que la suma total del tiempo requerido para fabricar ambos productos no puede exceder
el tiempo disponible.
R2 : x1 ≥ 500
s.a.
x1 + x2 ≤ 1600
−x1 ≤ −500
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 cemento granulado, lo que produce una ganancia total por día de $5200. Es importante
40
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
recordar que, de acuerdo al signicado 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 una combinación diferente. Si se buscara incrementar la
ganancia, se deberían cambiar las condiciones bajo las cuales opera el modelo. Existe una forma
de estimar el efecto que ciertos cambios en las condiciones del modelo tendrán en la solución
óptima, esto se conoce como Análisis de Sensibilidad o Análisis Post Optimo.
En la imagen anterior se puede observar los datos del modelo. Para este paso, solamente se
necesita ingresar los valores tal y como aparecen en la imagen, pero esto es solamente la primera
parte del desarrollo del modelo ya que se deberán crear las fórmulas necesarias para relacionar
las variables y los coecientes tal y como se muestra a continuación:
41
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
42
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
Como puede verse en las imagenes anteriores, se realiza la sumatoria de los productos de cada
coeciente por el valor de las variables de decisión, tanto en la función objetivo como en las
restricciones. En este ejemplo esto se realizó uno a uno, mas adelante se verá que esto puede
realizarse copiando las fórmulas hacia abajo 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
proceder a la solución del mismo utilizando la opción de solver.
43
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
44
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
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 impor-
tante de mencionar es la escogencia de valores iniciales para las variables de decisión. En realidad
puede colocarse cualquier valor, sin embargo, es conveniente colocar un valor distinto de cero co-
mo valor inicial ya que dado que Calc utiliza un algoritmo numérico para resolver el modelo, el
uso de 0 puede ocasionar algún error durante los cálculos.
45
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
Ahora, haciendo click en Options nos aseguramos que esté marcada la opción que dice Assu-
me variables as non-negative que básicamente se reere 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 que se ha tenido éxito en la búsqueda de la solución:
46
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
Variables de Decisión
Función Objetivo
Restricciones
Esto se aclarará de una mejor forma a través de un ejemplo. Vamos a resolver en Sage el mismo
problema que se resolvió tanto en Maxima como en OpenOce.
47
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
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 signicativa, 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 la ingeniería y los negocios. En la siguiente sección se presenta una de las áreas de aplicación
de la optimización lineal de mayor interés en este curso: los modelos de redes.
Los modelos de redes aparecen en muchas aplicaciones de ciencias e ingeniería. Existe una
enorme variedad de problemas y situaciones que pueden representarse en forma de una red.
El estudio de las redes pertenece a otro campo de las matemáticas que lamentablemente no
se encuentra en todos los programas académicos de ingeniería: Matemáticas Discretas . Las
4
Matemáticas Discretas comprenden un grán número de tópicos uno de los cuales es la Teoría de
5
Grafos . Por medio de los grafos, es posible modelar una grán cantidad de 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 bajo
estudio, puede utilizarse los algoritmos de redes para encontrar soluciones a problemas comunes,
4
http://es.wikipedia.org/wiki/Matemáticas_discretas
5
http://es.wikipedia.org/wiki/Teoría_de_grafos
48
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
tal como el de encontrar la ruta mas corta que conecta a dos nodos o el ujo máximo que puede
moverse por toda una red.
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, la herramienta 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 recurrir a herramientas que ya incluyen dichos algoritmos
predenidos, como es el caso de Sage.
Aunque existe una grán cantidad de métodos y algoritmos para redes, en este curso vamos a
enfocarnos solo en los que mayor aplicación tienen en el campo de la ingeniería. Los algoritmos
a cubrir en estas notas son los siguientes:
Algoritmo de Transporte
Algoritmo de Asignación
Antes de iniciar con el desarrollo de cada uno de los métodos, es importante recordarle a los
estudiantes que estas notas no cubren la teoría, sin embargo, es necesario conocer y entender
ciertos conceptos básicos sobre redes, por lo que se deja al estudiante buscar en el material de
referencia u otras fuentes, los siguientes términos:
Grafo
Dirigido
No Dirigido
49
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
Figura 5.3.: Ejemplo de una red con pesos (distancia) y sus respectivas matrices
Conexo
No Conexo
Fuertemente Conexo
Simple
Multigrafo
Vértice o Nodo
Arista o Arco
Camino o Ruta
Arbol
Matriz de Adyacencia
50
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
La Empresa transportista ABC posee varios camiones usados para acarrear piedra molida Ejemplo # 5
para proyectos de carreteras en el municipio. El contratista de carreteras para quien trabaja
le 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:
51
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
Oferta > Demanda: Se agrega una columna cticia. Esta columna tendrá una demanda
Of erta −
P P
total que será igual a Demanda
Oferta < Demanda: Se agrega una la cticia. Esta la tendrá una oferta total que será
Demanda −
P P
igual a Of erta
En ambos casos, los costos asociados a la la o columna serán igual a cero.
P P
En este ejemplo, Demanda = 175 Of erta = 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 Solu-
ción que será la que contendrá nuestras variables de decisión y donde obtendremos la distribución
óptima del problema de transporte. Al igual que hicimos con el modelo de programación lineal
en Calc, es necesario asignar un valor inicial a las variables de decisión, por lo que utilizaremos
1. Los totales de las y columnas deben ser fórmulas que contienen la sumatoria de la respectiva
la/columna, tal y como se muestra a continuación:
52
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
Ahora estamos listos para denir nuestra función de costo total, que estará integrada por la
sumatoria de multiplicar cada celda de costo por cada celda conteniendo la variable de decisión.
Expresando esto en forma matemática tenemos la siguiente expresión:
(ci,j × xi,j )
PP
min Costo T otal =
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. Ahora estamos listos para denir el modelo en Solver. Las variables de decisión será la
matriz conteniendo los 1. En el caso de las restricciones, si plantearamos el modelo en la forma
tradicional de un problema de programación lineal, tendríamos una restricción para cada punto
de oferta y una para cada punto de demanda (incluyendo las cticias) por lo que si n es el número
de las y m es el número de columnas, el total de restricciones esta dado por n + m.
En el caso de la solución por medio de la hoja electrónica, Solver nos permite denir en una
sola restricción, un conjunto de restricciones que tienen el mismo signo. En el caso de la oferta,
sabemos que no podemos exceder la cantidad disponible, por lo que todas las restricciones de
oferta son del tipo ≤. En el caso de la demanda, la condición es satisfacer al menos la demanda
en cada punto, por lo que todas las restricciones de demanda son del tipo ≥.
53
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
En la gura anterior se pueden observar los detalles de la denición del modelo en Solver.
Buscamos minimizar 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 para la demanda. En las opciones de Solver, solo debemos asegurarnos
que tengamos marcada la opción para que asuma que las variables son no negativas, o sea, la
ya conocida restricción de no negatividad. Solver nos proporciona 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 punto de oferta a cada punto de demanda, sin infringir ninguna restricción y alcanzando el
costo total más bajo posible (de lo contrario no sería óptimo ). Cuando se trata de un problema
que inicialmente no se encontraba balanceado, 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
54
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
Este es un ejemplo de un problema típico de transporte, sin embargo, existen muchos casos
que, sin ser problemas relacionados con transporte, pueden modelarse y resolverse utilizando
este algoritmo. El algoritmo de 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 seleccionar correctamente en Solver
el objetivo que estamos buscando.
Una empresa que está desarrollando proyectos de construcción de carreteras en 4 ubicaciones Ejemplo # 6
diferentes necesita asignar a cada proyecto un ingeniero. La empresa posee ocinas en 5
ciudades 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
utilizando para 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:
55
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
En principio, este parece un problema bastante sencillo de resolver y de hecho puede que lo sea.
Existen ciertos problemas de asignación que pueden ser resueltos a simple vista. Sin embargo,
un enfoque empírico no garantiza encontrar una solución óptima y esto se complica mientras
mas grande es la cantidad de variables involucradas, o sea, mientras mas grande sea la matriz
de costos/distancias. Existe un método simplicado para resolver en forma manual un problema
6
de asignación, denominado el Método Húngaro . Sin embargo, en estas notas nos estaremos
limitando a la solución por medio de computadora.
Nuevamente, el primer punto de vericación para este problema es que la oferta y la demanda
se encuentren balanceadas. Como se mencionó anteriormente, en un problema de asignación la
oferta y la demanda de cada nodo es igual a una unidad, lo que signica que para que el problema
esté balanceado, la matriz debe ser cuadrada.
El ejemplo anterior consta de 5 ciudades (ingenieros) y 4 proyectos, lo que implica que uno de
los ingenieros no será asignado a ningún proyecto, sin embargo, es necesario balancear la matriz
agregando una columna adicional (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 contiene una formula =SUMPRODUCT() para calcular el resultado de la sumatoria
del producto individual de las celdas de ambas matrices. Ahora veamos el planteamiento del
modelo en Solver:
6
http://es.wikipedia.org/wiki/Algoritmo_húngaro
56
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
Podemos ver la celda objetivo, que es la que contiene la suma producto de las matrices, también
el objetivo que es minimizar dicha celda, las variables de decisión (celdas cambiantes) que son
las de la matriz solución que contienen los 1. La principal diferencia respecto al modelo de
transporte se observa al denir las restricciones. Denimos 2 restricciones, una para la columna
que contiene las sumatorias de las y otra para la la que contiene las sumatorias de columnas,
sin embargo, a diferencia de transporte, aquí igualamos ambas restricciones a 1, lo que quiere
decir que Solver deberá hacer que solamente una celda por la y una celda por columna sean
distintas de cero e igual a uno. Las opciones son las mismas que en el modelo de transporte:
57
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
Matriz de Adyacencia: La matriz se compone de 0's y 1's, donde un 1 indica que existe
un arco conectando directamente 2 nodos, es decir, ambos nodos son adyacentes. Si el
grafo es no dirigido, es decir, los arcos no tienen un sentido denido sino que los nodos se
conectan en ambos sentidos, la matriz de adyacencia será simétrica respecto a su diagonal
principal. En un grafo dirigido los arcos tienen una dirección especíca, por lo que la matriz
de adyacencia no será simétrica sino que tendrá un 1 en el sentido del arco y un 0 en el
sentido contrario.
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 Ejemplo # 7
7
http://es.wikipedia.org/wiki/Algoritmo_de_Dijkstra
58
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
gura que se muestra a continuación: La red puede representar cualquier cosa, la distancia
entre distintos puntos, la duración en tiempo de una serie de actividades en un proceso o proyecto,
etc.
En este ejemplo, puede observarse que se trata de un grafo no dirigido, ya que los arcos no
tienen un sentido denido, por lo que podemos asumir que es posible moverse en ambos sentidos.
Vamos a representar el 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 son las variables de decisión que la hoja electrónica calculará al momento de la
optimización por lo que en la solució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 a Solver para ser resuelto. El primer cálculo que necesitamos hacer es el de la distancia
total, que no es mas que el resultado de multiplicar la matriz de distancias por la matriz de
decisión, elemento por elemento. Como ya sabemos, esto puede hacerse por medio de la función
+SUMPRODUCT() como se muestra a continuación:
59
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
Luego, tenemos que realizar varios cálculos en la matriz solución. Vamos a calcular la suma
de cada la y 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 la columna 1 colocamos una fórmula para calcular la diferencia entre la suma
f ila −
P P
de la la 1 menos la columna 1. Es importante que el orden sea siempre 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:
60
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
Finalmente, vamos a agregar una última la abajo de la que acabamos de ingresar, donde
vamos a identicar los 2 nodos entre los cuales vamos a calcular la Ruta Mas Corta. Para esto,
colocamos un valor de 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 muestra a continuación:
Ahora, estamos listos para ingresar nuestro modelo a Solver para encontrar la solución. Al
igual que en cualquier problema de programación lineal, tenemos que denir la celda objetivo,
las variables de decisión y las 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 multi-
plicar la matriz de distancias por la matriz solución.
61
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
R2: La la que contiene las diferencias entre las sumas de las y columnas debe ser
igual a la la donde se identica el nodo de entrada y salida. Esto nos garantiza que
se identique solamente una ruta, con un único punto de entrada y uno de salida.
En el cuadro de opciones, debemos asegurarnos que esté seleccionada la opción para asumir
variables no negativas:
Con esto estamos listos para que Solver proceda a resolver el modelo, el cual queda como se
muestra en la gura siguiente:
Como puede observarse, la matriz solución presenta solamente 2 celdas con valor de 1 (resal-
tadas en color verde) y el resto con 0. Las celdas con 1 son, en coordenadas(la,columna): (1,4)
y (4,6). Esto quiere decir que la Ruta Mas Corta entre los nodos 1 y 6 inicia en el nodo 1, luego
va al nodo 4 y nalmente al nodo 6. En la celda objetivo, podemos ver la longitud total de dicha
62
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
ruta, que es de 4 unidades de distancia. Al corroborar la red original, podemos constatar que,
efectivamente, no existe ningún camino para llegar del nodo 1 al nodo 6 que tenga una longitud
menor a 4 unidades. Como en cualquier problema de optimización lineal, es posible que existan
soluciones alternas, es decir, una ruta diferente, pero podemos tener la certeza que ninguna so-
lución será menor a 4 unidades. En este ejemplo en particular, no existe ningún otro camino con
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 los algoritmos 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
permite la creación, visualización y manipulación de grafos y ya incluye una gran variedad de
algoritmos para los mismos. Existen distintas formas de representar un grafo en Sage. Podemos
hacerlo por medio de una matriz de adyacencia, una lista de arcos y un diccionario de arcos y
nodos entre otras. Por simplicidad, vamos a escoger la segunda, es decir, vamos a representar el
grafo en forma de una lista de arcos. Cada elemento de la lista estará formado por una triada
de la forma (X, Y, Z) donde X y Y representan los números de los nodos y Z representa el peso
(costo) del arco que los une.
63
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
un tipo de material que puede uír entre 2 nodos, llamados comunmente fuente y sumidero,
respectivamente, en una red que puede representar distintas situaciones como puede ser:
etc.
8
El algoritmo más utilizado para resolver este modelo es el denominado Ford Fulkerson que busca
incrementar gradualmente el ujo en cada camino hasta alcanzar el máximo posible en la red.
Se deja al lector la lectura y comprensión del algoritmo, ya que nos estaremos limitando al
planteamiento y solución del modelo por medio 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 de arcos que conectan nodos intermedios.
Una ciudad es atravesada por una red interestatal de carreteras de norte a sur que le permite Ejemplo # 8
alcanzar un nivel de 15000 vehículos/hora en el horario pico. Debido a un programa de
mantenimiento general, el cual requiere el cierre de dichas vías, un grupo de ingenieros ha
propuesto una red de rutas alternas para cruzar la ciudad de norte a sur, la cual incorpora
avenidas importantes. La red propuesta es la siguiente, en donde se indica claramente la
cantidad 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 ujo del 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 ma-
tricial. Se utilizarán 2 matrices a las cuales denominaremos Matriz de Capacidades y Matriz
Solución, respectivamente.
8
http://es.wikipedia.org/wiki/Algoritmo_de_Ford-Fulkerson
64
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
Nuevamente, la imagen anterior muestra las 2 matrices iniciales que solamente contienen datos,
sin incluír ningún cálculo ni fórmula en la hoja electrónica. La primera es la matriz de capacidades,
que contiene para cada arco conectando un par de nodos, la capacidad en un sentido, tomando
en cuenta que las las representan nodos de salida y las columnas, nodos de llegada. Así, por
ejemplo, la la 1 contiene la capacidad máxima que puede salir del nodo 1, llegando a los nodos
2, 3 y 4, mientras que la columna 2 contiene el ujo máximo que puede llegar de los nodos 1 y
3. La matriz de decisión o matriz solución contiene los 1's que son simplemente valores 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ólamente en la matriz de decisión. Al igual que en el problema de Ruta Más Corta, se procede
a calcular la sumatoria para cada una de las las y para cada una de las columnas. Luego, al
igual que en RMC procedemos a calcular, en forma de la, la diferencia entre la sumatoria de
f ila −
P P
las y la sumatoria de columnas, en ese orden, 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 nodos intermedios. En este ejemplo,
queremos calcular el ujo máximo de norte a sur, es decir, entre el nodo 1 y el 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
65
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
intermedios, que al igual que en el modelo RMC deben ser todos igual a 0.
Con esto, ya podemos proceder a plantear el modelo en Solver. Aquí también hay algunas
diferencias respecto a los modelos anteriores. Los parámetros del modelo son los siguientes:
3. Las variables de decisión, como siempre, son las que están en nuestra matriz de decisión o
matriz solución.
66
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
En la matriz de decisión puede verse claramente que el ujo máximo a través de esta red es
de 14000 vehículos/hora, lo cual es insuciente para manejar la capacidad de la red original.
Aunque en la matriz también puede verse el ujo en cada uno de los arcos, esto puede apreciarse
mejor cuando lo representamos grácamente, donde puede comprobarse que ninguno de los ujos
individuales excede la capacidad del arco respectivo:
Nuevamente procederemos a mostrar lo sencillo que es hacer el mismo ejercio pero utilizando
Sage.
67
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
Redes de carreteras
El objetivo de dicho algoritmo es interconectar un conjunto de nodos de tal forma que el costo
total (la suma de los costos de los arcos) para dicha conexión sea mínima. Hay que recordar que
en el contexto de optimización, el término costo es un concepto genérico que puede representar
cualquier característica que se desea 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 denominado Algoritmo de Kruskal
9 . Este es un algoritmo que cae en la categoría de los
la mejor opción disponible. Esto hace que la aplicación de dicho algoritmo sea muy sencilla de
realizar manualmente. Nuevamente se deja al estudiante la 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 alcance de estas notas por lo que para la solución de este problema, por lo que
en este caso vamos utilizar unicamente Sage para este algoritmo.
Uno de los algoritmos que ya vienen por defecto en Sage es el de Arbol Mínimo de Expansión.
Para utilizarlo, simplemente debemos crear la red para la cual deseamos calcular el árbol. Vamos
a desarrollar un ejemplo sencillo donde se demostrará paso a paso el uso de la herramienta para
la aplicación de este algoritmo.
La ciudad de Vancouver está planicando el desarrollo de una nueva linea en sistemas de Ejemplo # 9
9
http://es.wikipedia.org/wiki/Algoritmo_de_Kruskal
10
http://es.wikipedia.org/wiki/Algoritmo_voraz
68
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
tránsito. El sistema debe conectar 8 puntos distintos entre residencias, centros comerciales y
otros puntos importantes. El departamento de planicación de tránsito de la ciudad necesita
seleccionar un conjunto de rutas que conecten los distintos puntos al menor costo posible.
La red seleccionada debe considerar la factibilidad y el costo de cada ruta. A continuación
se muestra la red para este ejemplo. Los nodos en esta red representan los distintos puntos que
deben interconectarse por medio del sistema. Los arcos entre los nodos indican la factibilidad de
construír la línea entre cada par de nodos, así, por ejemplo, el arco entre los nodos 1 y 3 indica
que es factible la construcción mientras que la ausencia de un arco entre los nodos 1 y 4 indica
que no es factible construir una linea que una directamente esos 2 puntos. Los valores en los
arcos indican el costo (en millones de US$) de construir la línea en ese arco en 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 2 quedaría de la forma (1,2,28).
Para denir una lista en Sage, encerramos los elementos entre corchetes [] separándolos por
comas. Le daremos a la lista un nombre, que en este caso será arcos, de la siguiente forma:
69
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
ge
nos muestra el arbol indicando claramente los vértices que lo forman y el peso de cada uno, así
como el peso (costo) total del mismo que es de 236 que en este ejemplo corresponde a millones de
US$. La gráca siguiente muestra como quedaría formado el sistema de tránsito para la ciudad
con la solución obtenida:
70
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
Todos los nodos de la red han sido conectados por medio del árbol mínimo de expansión con
lo cual se optimiza el uso de los recursos para la construcción del sistema de tránsito requerido.
solución conlleva. En forma resumida, el problema se puede describir de la siguiente forma: dado
un conjunto de ciudades (o nodos 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 visiten todos los nodos (ciudades) y que la distancia
total recorrida sea mínima. Para entender la forma como la complejidad de solución de este pro-
blema crece, pensemoslo de la siguiente forma: si queremos resolver el problema para 5 ciudades,
debemos primero elegir la ciudad de partida, esto nos da 5 posibilidades, luego, tenemos 4 posi-
bilidades para elegir la ciudad siguiente a visitar, después tenemos 3 posibilidades para la ciudad
siguiente y así sucesivamente. Como podrá apreciar el lector, se trata de un problema que crece
en forma factorial respecto al número de ciudades a visitar. En realidad, ya que la distancia entre
las ciudades es 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
(n−1)!
posibles es igual a
2 .
Dado lo anterior, el espacio de búsqueda para el problema de 5 ciudades es de 12 posibles rutas,
pero si hablamos de un problema con 10 ciudades, el número posible de rutas es de 181,440 y
si el problema fuera de 20 ciudades, el número posible de tours sería de 6.082E16. Si nuestra
computadora pudiese evaluar 1 millón de 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
12 . Esta
terminología pertenece a la teoría de complejidad computacional, que es algo que está fuera del
alcance de estas notas, sin embargo, basta decir que no existe un algoritmo que garantice poder
encontrar una solución óptima. Para problemas de un tamaño relativamente pequeño (algunas
decenas o incluso cientos de nodos) puede utilizarse algunos algoritmos que son capaces de
encontrar el tour óptimo, por ejemplo, programación dinámica, branch and bound (ramicación y
acotamiento) y otros. Afortunadamente, Sage nos facilita la vida para solucionar estos 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 Ejemplo # 9
11
http://es.wikipedia.org/wiki/Problema_del_viajante
12
http://es.wikipedia.org/wiki/NP-completo
71
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
europeas. Si un turista mochilero desea realizar un tour visitando todas las ciudades, ¾cual
debe ser el orden en que debería hacerlo para recorrer la mínima distancia total? Para
proceder a resolver este problema, es necesario cambiar un poco la estrategia respecto a los
otros modelos de redes que hemos resuelto anteriormente. En los modelos anteriores, nosotros
le indicamos a Sage en forma explícita cada uno de los arcos de la forma (inicio, n, distancia),
sin embargo, en este tipo de problemas, esto sería poco práctico, ya que la cantidad de arcos
crecería en forma cuadrática respecto al número de ciudades a visitar, por lo que, aunque en este
problema es manejable ya que son solamente 6 ciudades, en un problema mayor sería demasiado
engorroso.
Vamos entonces a atacar el problema de una forma mas inteligente, aprovechando las ventajas
que Sage nos da al hacer uso de las estructuras de programación de Python. Para ello, primero
vamos a ingresar la matriz de distancias en su forma puramente matricial, de la siguiente forma:
72
5. OPTIMIZACIÓN LINEAL RESTRINGIDA EN VARIAS VARIABLES
Notese que por tratarse de un grafo dirigido, Sage dibuja dos arcos entre cada par de nodos,
uno en cada sentido, lo cual sería importante en caso que las distancias fueran diferentes, lo cual
no es el caso, sin embargo para 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 valor mínimo de todos los posibles tours.
5.3. Ejercicios
73
6. OPTIMIZACIÓN NO LINEAL NO
RESTRINGIDA EN VARIAS VARIABLES
Al igual que en el caso de la optimización no restringida en una variable, este tipo de problemas
pertenece al campo del cálculo diferencial, aunque en este caso se trata de cálculo multivaria-
do. Existe una diversidad de métodos para resolver estos problemas y la mayoría involucran
1
el gradiente de la función . El gradiente, como el estudiante recuerda de sus cursos de cálculo
multivariado, es un vector que está compuesto por las derivadas parciales de la función respecto
a cada una de las variables de dicha función y que es perpendicular u ortogonal al punto de la
supercie 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 hemos hecho 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á notado el 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 con tantas opciones como Sage, talvez
se vería algo como esto:
1
http://es.wikipedia.org/wiki/Gradiente
2
http://es.wikipedia.org/wiki/Distancia_euclidiana
3
http://es.wikipedia.org/wiki/Geometría_del_taxista
74
6. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN VARIAS VARIABLES
El objetivo en este ejemplo es minimizar la distancia total euclidiana, la cual puede ser expre-
sada por la siguiente ecuación:
Xq
DT = (x − xi )2 + (y − yi )2
Donde x y y son las coordenadas del centro de operaciones y xi y yi son las coordenadas de
cada uno de los frentes. Al sustituír los valores para este ejemplo, la distancia total queda de la
siguiente manera:
75
6. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN VARIAS VARIABLES
q q q q
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 predenida.
Como puede observarse en la gura anterior, el punto que señala la ubicación óptima para el
76
6. OPTIMIZACIÓN NO LINEAL NO RESTRINGIDA EN VARIAS VARIABLES
Centro de Operaciones se encuentra en las coordenadas (3.94, 2.19) lo que se ubica muy cercano
al punto D cuyas coordenadas son (4,2). Esto quiere decir que al ubicar el Centro de Operaciones
en esas coordenadas, se estará 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ón no lineal en varias variables utilizan métodos basados en el cálculo de gradientes
para las funciones, lo cual implica el cálculo y evaluación de derivadas parciales. Existen diversos
métodos para hacer esto, la mayoría utiliza 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 estamos optimizando ya que Sage también
permite realizar grácos en 3D y en este caso, por tratarse de una función de 2 variables, generará
una supercie tridimensional. Veamos la gráca:
De hecho, con Sage podemos manipular la graca en 3D, rotándola para verla desde distintos
ángulos, lo cual 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, los mé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
77
7. OPTIMIZACIÓN NO LINEAL
RESTRINGIDA EN VARIAS VARIABLES
En el caso de la optimización no lineal con restricciones en varias variables, entramos en
un territorio mas escabroso y complejo desde la perspectiva del análisis matemático, ya que
en este caso tampoco se cuenta con un algoritmo que funcione de una manera universal para
cualquier tipo de problema. Los métodos para resolver este tipo de problemas, por tratarse de
funciones no lineales y en varias variables son inevitablemente basados en cálculo diferencial,
aunque estos no necesariamente garantizan la solución ecaz de cualquier problema. Debido a
muchas condiciones de complejidad que se presentan, la solución de estos problemas no es trivial
y de hecho, hasta hace relativamente muy poco tiempo se empezó a estudiar estos problemas y
a desarrollar metodologías de solución, muchas de ellas quedan fuera del alcance de estas notas
por lo que no serán abordadas. En cambio, nos enfocaremos en algunos problemas relativamente
sencillos pero que demuestran la forma como estos problemas pueden ser abordados. En el caso
de problemas demasiado complejos para ser resueltos en forma analítica, se requiere el uso de
métodos numéricos o técnicas heurísticas de 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 de restricciones:
Restricciones de igualdad
Restricciones de desigualdad
Uno de las metodologías más utilizadas ante esta situación y que seguramente el lector recor-
1
dará de sus cursos de cálculo multivariado es el de los Multiplicadores de Lagrange . 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 de la metodología, pero baste decir que este es uno de los
métodos para los cuales contar con una herramienta informática de manipulación algebraica es
de suma utilidad, puesto que el método requiere realizar varias operaciones sobre objetos al-
gebraicos, 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 determinar los valores mínimos y máximos de la funciónf (x, y, z) sujeta a la restricción
g(x, y, z) = k determinar todos los valores de x, y, z y λtales que:
∇f (x, y, z) = λ∇g(x, y, z)
Recordando que ∇f se reere al gradiente de una función, es decir, el vector formado por
las derivadas parciales de la función respecto a cada una de sus variables, como sigue: ∇f =
( ∂f ∂f ∂f
∂x , ∂y , ∂z )
De esto se obtiene el Lagrangiano que queda de la siguiente forma:
1
http://es.wikipedia.org/wiki/Multiplicadores_de_Lagrange
78
7. OPTIMIZACIÓN NO LINEAL RESTRINGIDA EN VARIAS VARIABLES
L = f − λ(g − k)
Y luego derivando parcialmente esta expresión respecto a cada una de las variables x, y, z, λ
se obtiene un sistema de ecuaciones simultáneas, muchas veces no lineales, las cuales se deben
resolver para encontrar la solución al problema original, de la forma:
∂L
=0
∂x
∂L
=0
∂y
∂L
=0
∂z
∂L
=0
∂λ
Por lo que en el caso de una función de 3 variables y una restricción, se requiere resolver un
sistema de 4 ecuaciones simultáneas no lineales. Por cada restricción que se tenga se agregará un
multiplicador y por ende, 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 para realizar todo el proceso. El ejemplo es el siguiente:
Cuales deben ser las dimensiones de un envase para leche de forma rectangular, volumen Ejemplo #
de 512 cm3 y costo mínimo, si el material de los lados de la caja cuestan 10 centavos el 11
centrimetro cuadrado y el material de la tapa y el fondo cuestan 20 centavos el centímetro
cuadrado. En este caso, vamos a realizar un diagrama para representar la caja de carton y
poder asignar una variable a cada 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:
Mientras que la restricción en este caso se reere 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)
79
7. OPTIMIZACIÓN NO LINEAL RESTRINGIDA EN VARIAS VARIABLES
Como se puede ver, Sage nos proporciona todas las soluciones al sistema de ecuaciones, inclu-
yendo las soluciones complejas. Para efectos prácticos solo nos interesa la única solución real po-
sitiva por lo que en este 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
preocuparnos por realizar el proceso de derivación parcial y luego de solución de las ecuaciones
simultáneas no lineales, lo cual puede llegar a ser bastante engorroso y complejo para ciertos
problemas.
1. Optimo Local: Se reere a un valor máximo o mínimo de una función respecto al conjunto
2
de valores cercanos . En otras palabras, se reere a un valor óptimo en una región especíca
del dominio de la función. Una función puede tener muchos óptimos locales. Para encontrar
un óptimo local puede recurrirse a métodos basados en gradientes y buscar el punto en el
2
http://en.wikipedia.org/wiki/Local_optimum
80
7. OPTIMIZACIÓN NO LINEAL RESTRINGIDA EN VARIAS VARIABLES
2. Optimo Global: El óptimo global es un valor máximo o mínimo de una función en todo
3
su dominio . Como se mencionó anteriormente, una función puede tener varios óptimos
locales por lo que el óptimo global será el máximo (o mínimo) de todos los óptimos locales.
La búsqueda de óptimos globales es un problema sumamente complejo ya que no existen
algoritmos que garanticen poder encontrarlos. Para encontrar óptimos locales generalmente
se debe recurrir a algoritmos heurísticos y que muchas veces son diseñados para un problema
especíco por lo que dependerá del tipo de problema y sus características particulares. 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 aplica-
ción de optimización no lineal multivariada con restricciones de desigualdad, esto principalmente
para demostrar el uso de las herramientas para su solución, especícamente Sage que ya viene
preparado con algoritmos para este tipo de problemas. La clave del éxito en la solución de estos
problemas es el correcto planteamiento del modelo matemático, algo en lo cual ya hemos abun-
dado con ejemplos a lo largo de estas notas y la selección de la herramienta para su solución, que
en este caso es Sage. Veamos un ejemplo especíco de un problema no 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 #
próximos 2 años. Si la compañía extrae x1 millones de barriles durante un año, se podrá 12
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ño es
de x21 millones de Euros y el costo para extraer x2 millones de barriles el segundo año es de
2x22 millones de Euros. Se puede obtener como máximo un total de 20 millones de barriles de
petróleo y se puede gastar como máximo 250 millones de Euros en la extracción. Formular
el problema de optimización para determinar cuánto debe extraer durante los próximos 2
años. En este caso, el problema nos da sucientes indicios sobre el objetivo, ya que se nos
proporciona información de precio de venta por barril así como el costo de extraer el petróleo.
Basado en esto podemos inferir que la compañía buscará maximizar su ganancia. Las variables
3
http://en.wikipedia.org/wiki/Global_optimum
81
7. OPTIMIZACIÓN NO LINEAL RESTRINGIDA EN VARIAS VARIABLES
de decisión también son bastante obvias puesto que el enunciado del problema prácticamente
nos da la pauta que debemos decidir cuántos millones de barriles extraer el primer año (lo que
se denomina como x1 y cuántos millones de barriles debemos extraer el segundo año, denotado
por x2 . Con esto nuestro modelo quedará de la siguiente forma:
x1 + x2 ≤ 20
El módulo optimize contiene a su vez una rutina denominada COBYLA que sirve para
optimización restringida. COBYLA viene de las siglas Constrained Optimization BY Linear
Aproximation
4 que traducido signica Optimización Restringida Por Aproximación Lineal. Este
es un método desarrollado por Michael Powel 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 la implementación de este
algoritmo en Python es que solamente permite encontrar el mínimo de una función en la cual
todas las restricciones son del tipo ≥0 . En este ejemplo tenemos un problema de maximización
con restricciones ≤. Vamos a recurrir a una manipulación muy común en optimización que
permite convertir un problema de maximización en minimización y viceversa. Recordemos que:
max f ≡ min −f
Igualmente, para invertir el signo de las restricciones, simplemente las multiplicamos por −1
y pasamos todos los términos al lado izquierdo para que quede 0 del lado derecho, con lo cual
quedarían de la siguiente forma:
4
http://en.wikipedia.org/wiki/COBYLA
82
7. OPTIMIZACIÓN NO LINEAL RESTRINGIDA EN VARIAS VARIABLES
20 − x1 − x2 ≥ 0
x1 ≥ 0
x2 ≥ 0
Ahora vamos a proceder a denir las funciones en Sage. Para esto, vamos a utilizar esta vez el
formato de denición de funciones de Python, que tiene la forma
def nombrefunción(parámetros):
return expresión
y vamos a denir una función para cada una de las expresiones anteriores, es decir, la función
objetivo y cada una de las restricciones. En el caso de los parámetros, en lugar de utilizar variables
individuales vamos a 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 las restricciones deben retornar solamente el lado izquierdo
ya que la rutina asume que el lado derecho es ≥ 0. Veamos como se hace en Sage:
83
7. OPTIMIZACIÓN NO LINEAL RESTRINGIDA EN VARIAS VARIABLES
Como podemos observar, Sage nos proporciona la solución al modelo. En la gura anterior
podemos ver la solución en la cual los valores de las variables están denotadas por X, por lo que
la solución para x1 es 7.5 y para x2 es igual a 5.8333. El valor de la función objetivo está dado
por F = −2.1458E + 02 pero recordemos que 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 millones de Euros, extrayendo el
primer año 7.5 millones de barriles y el segundo año 5.833 millones de barriles de crudo.
Existe otra rutina que Sage también trae denida y que puede ser utilizada en estos problemas
de optimización multivariada no lineal restringida. La estructura es parecida a la rutina anterior,
aunque cambia un poco el orden de los factores:
Si utilizamos esta rutina, obtenemos los mismos valores para las variables de decisión:
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 existe garantía de poder llegar a la solución óptima. Algunas veces, si al principio
no se tiene éxito en obtener una solución con una de las rutinas, puede probarse con otra o
se puede probar cambiando los valores iniciales de las variables para que el algoritmo inicie la
búsqueda en un punto diferente, pero eso tampoco nos da certeza de que vamos a obtener la
solución óptima.
7.3. Ejercicios
84
8. MÉTODOS HEURÍSTICOS PARA
OPTIMIZACIÓN
85
Parte III.
MODELOS DE LINEAS DE
ESPERA
86