Aprendiendo LINGO INTRODUCCIÓN A LINGO - 1



Documentos relacionados
Investigación Operativa 2002 Software Para Programación Lineal LINGO/LINDO

Análisis de los datos

BREVE MANUAL DE SOLVER

Práctica de informática del programa LINDO

Centro de Capacitación en Informática

El programa Minitab: breve introducción a su funcionamiento. Para mostrar la facilidad con la que se pueden realizar los gráficos y cálculos

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

GedicoPDA: software de preventa

En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas.

Ecuaciones de primer grado con dos incógnitas

MANUAL DE AYUDA MODULO TALLAS Y COLORES

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Sistema de Gestión Portuaria Sistema de Gestión Portuaria Uso General del Sistema

G R U P O S INDICE Cómo crear una cuenta en ARQA? Cómo tener un grupo en ARQA? Secciones y funcionalidades de los grupos Configuración del grupo

Manual para el uso del Correo Electrónico Institucional Via Webmail

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

PS.Vending Almacén Pocket PC

Alberto Marcano Díaz

UNIDAD 1. LOS NÚMEROS ENTEROS.

Hacer clic sobre la figura, para extraer todos los registros o presionar la tecla F2.

Manual para la utilización de PrestaShop

FICHERO DE AYUDA DEL PROGRAMA MEGAPRIMI

La ventana de Microsoft Excel

Una vez que tengamos el padrón de un determinado tributo con todos sus datos actualizados, podemos generar los recibos de ese padrón.

APÉNDICE E: MANUAL DE USUARIO PARA EL SISTEMA DE MONITOREO DE REDES LAN.

Profr. Efraín Soto Apolinar. La función lineal. y = a 0 + a 1 x. y = m x + b

CURSO DE INTRODUCCIÓN AL WORD

SOLUCION DE MODELOS DE PROGRAMACION LINEAL EN UNA HOJA DE CALCULO. PROBLEMAS DE TRANSPORTE Y ASIGNACION.

Bases de datos en Excel

Curso PHP Módulo 1 R-Luis

FICHERO DE AYUDA DEL PROGRAMA MEGAEURO

LibreOffice - curso avanzado

PRÁCTICAS DE GESTIÓN GANADERA:

MACROS. Automatizar tareas a través del uso de las macros.

Charla No 3: Fórmulas de mayor uso.

PRÁCTICA 1: Optimización con Excel 2010

Cálculo Simbólico también es posible con GeoGebra

Creación de Funciones de Conducción

Bibliotecas Escolares. Perfil de Lector.

Roberto Quejido Cañamero

15 CORREO WEB CORREO WEB

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes?

CURSO INSTALACION E IMPLEMENTACION ALOJA SOFTWARE HOTEL MODULO 04: Reservas- Planning- Cuentas del Hotel [1]

2) Se ha considerado únicamente la mano de obra, teniéndose en cuenta las horas utilizadas en cada actividad por unidad de página.

Operación de Microsoft Excel

Indicaciones específicas para los análisis estadísticos.

OBTENER DATOS EXTERNOS

Hoja1!C4. Hoja1!$C$4. Fila

Curso de Excel. Empresarial y Finanzas SESIÓN 5: ÍNDICE EXCEL. Documento propiedad de J. David Moreno Universidad Carlos III de Madrid

Guía N 1: Fundamentos básicos(i)

Introducción a la plataforma Moodle Aníbal de la Torre Plataforma Moodle. Accediendo a los contenidos

SOLUCIÓN CASO GESTIÓN DE PERSONAL I

Conciliación bancaria en CheqPAQ Cargado de estado de cuenta

Windows XP Instalación y configuración de hardware

Introducción

Programación Lineal. Ficha para enseñar a utilizar el Solver de EXCEL en la resolución de problemas de Programación Lineal

Archivo de correo con Microsoft Outlook contra Exchange Server

MICROSOFT EXCEL Introducción: Qué es y para qué sirve Excel2007? TECNOLOGIA/ INFORMATICA: MS-EXCEL

HOOTSUITE: GESTOR DE CUENTAS EN REDES SOCIALES

Grupo: Documentación Tipo documento: Manual de Usuario V.1.0 /2011 René Darío Pacios Díaz

Gestión de Retales WhitePaper Noviembre de 2009

Manual Consultas Web - PC Sistel Ver 486R4+ - USUARIO JEFATURA

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)

Unidad Didáctica 12. La publicación

Manual Usuario Final plataforma Optenet

Versión 1.0. BOLETÍN (JUNIO 2009) a2móvil PC. a2 softway C. A.

MANUAL DE AYUDA MÓDULO GOTELGEST.NET PREVENTA/AUTOVENTA

Kaldeera Advanced Forms 2009 Guía del usuario

Para descargar la versión más reciente de Skype accedemos al sitio web de Skype y luego hacemos clic en Descargar Skype para escritorio de Windows.

Instalación del programa PSPP y obtención de una distribución de frecuencias.

DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO

Acceder al Correo Electronico - Webmail

MANUAL DE FACTURACIÓN TOUCH SCREEN

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

TPVFÁCIL. Caja Real. Definiciones.

2_trabajar con calc I

UNIVERSIDAD DE MEDELLÍN NUEVO PORTAL WEB MANUAL DE USUARIO GESTOR DE CONTENIDOS

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

Capítulo 1 Documentos HTML5

Manual de operación Tausend Monitor

Curso Excel Básico - Intermedio

Diplomado en. Servicio Nacional. De Facilitadores Judiciales

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

Un programa entero de dos variables Jueves, 4 de abril. La región factible. Por qué programación entera? Variables 0-1

Internet Information Server

Módulo Cédulas de Auditorías desde Excel

ESTÁNDAR DESEMPEÑO BÁSICO Recopila información, la organiza y la procesa de forma adecuada, utilizando herramientas tecnológicas.

Practica 1 Instalación del SGBD. Ing. María Elena Reyes Castellanos. Miguel Ángel Garduño Córdova Isaac Méndez Hernández

Capítulo 9. Archivos de sintaxis

MANUAL DE LA APLICACIÓN HELP DESK

GUIA PRÁCTICA PARA LA FIRMA DIGITAL DE UN PDF A PARTIR DE UN PDF CREADO POR TI.

BASES DE DATOS - Microsoft ACCESS 2007-

TUTORIAL. Edición de contenido y creación de entradas y páginas Wordpress

Manual de Usuaria FACEBOOK. Presentación

MATERIAL 2 EXCEL 2007

CREACIÓN Y CONFIGURACIÓN DE WIKIS

Manual Ingreso Notas y Acta Electrónica

Redes de Área Local: Configuración de una VPN en Windows XP

Transcripción:

Aprendiendo LINGO INTRODUCCIÓN A LINGO - 1 Introducción a LINGO LINGO (LINear Generalize Optimizer) es una versátil herramienta para la formulación, resolución y análisis de problemas de programación lineal y no lineal. Esto significa que usando LINGO es posible resolver sistemas de ecuaciones con una o varias variables independientes (modelos directos) o bien una o varias variables interdependientes (optimización multiobjetivo) solamente ingresando como máximo unas decenas de líneas. LINGO está disponible para DOS, Windows y Linux. Al margen de que las interfaces pueden diferir, las versiones para cada una de estas plataformas tienen exactamente las mismas funcionalidades. Uno de los rasgos más destacables de LINGO es su lenguaje de modelado. Este lenguaje permite expresar un problema de una manera muy similar a la notación matemática normal. Además es posible expresar sumatorias 1 mediante expresiones iterativas, lo cual lleva a modelos que son más compactos y fáciles de mantener. Otro aspecto a destacar del lenguaje de modelado es la sección de datos, que permite aislar los datos de la formulación del modelo. Por esto LINGO puede leer datos incluso de una hoja de cálculo separada, base de datos, o archivo de texto. Con datos independientes del modelo, es más simple hacer cambios, y se reduces las posibilidades de equivocarse al plantear el modelo. La ventaja de la proximidad del lenguaje de modelado con el lenguaje del modelo matemático estándar es que el alumno no debe conocer demasiado el lenguaje de modelado, sólo debe saber plantear los modelos matemáticos de los problemas a resolver. Hoy día los Solvers comerciales más avanzados, tales como CPLEX (el solver por default de LINGO), pueden ser vistos como una caja negra donde el usuario puede enviar modelos en gran escala, con cientos de miles de variables, y estar razonablemente seguro que el paquete producirá una solución, sin interacción especial alguna por parte del usuario. El tamaño de los problemas que las corporaciones están tratando han crecido dramáticamente. Esto significa que los usuarios necesitan herramientas más avanzadas para recopilar y administrar los datos, formular modelos y enviarlos al solver. Aquí es donde un lenguaje de modelado es muy valioso. 1 Sumas generalizadas.

2 - INTRODUCCIÓN A LINGO APRENDIENDO LINGO Comenzando a utilizar LINGO La manera más directa de aprender a montar es subirse al caballo, siguiendo esa premisa, comenzaremos nuestro aprendizaje mediante el planteo y resolución de uno de los problemas clásicos de la programación lineal, me refiero por supuesto, al problema de mezcla de productos. Utilizaremos como punto de partida el problema de la Wyndor Glass Co. Planteado como ejemplo prototipo a lo largo de la mayoría de los capítulos de la quinta edición del libro Introducción a la Investigación de Operaciones de Hillier-Lieberman. El planteo de este problema se puede leer en la sección 3.1 del mencionado libro y se resume a continuación: La WYNDOR GLASS CO. produce artículos de vidrio de alta calidad, incluyendo ventanas y puertas de vidrio. La empresa tiene tres plantas de producción. Los marcos y molduras se hacen en la planta 1, los marcos de madera se fabrican en la planta 2 y en la 3 se produce el vidrio y se ensamblan los productos. Debido a que las ganancias se han reducido, la gerencia general ha decidido reorganizar la línea de producción. Se descontinuarán varios productos no rentables y se dejará libre una parte de la capacidad de producción para emprender la fabricación de uno o dos productos nuevos que han tendido demanda. Uno de los productos propuestos (Producto 1) es una puerta de vidrio de 2,6 m con marco de aluminio. El otro (Producto 2) es una ventana grande (1,3 m x 2 m) para vidrio doble con marco de madera. El departamento de mercadotecnia ha obtenido como conclusión que la compañía puede vender todo lo que pueda producir de cualquiera de los productos. Sin embargo, como ambos productos compiten por la misma capacidad de producción de la planta 3, no es obvio qué mezcla de los dos productos sería más redituable. Por todo esto, la gerencia pidió al departamento de investigación de operaciones que estudiara el asunto. Después de hacer algunas investigaciones, el departamento mencionado determinó: 1. El porcentaje de capacidad de producción de cada planta para cada producto. 2. El porcentaje de esta capacidad que requiere cada unidad producida por minuto. 3. La ganancia unitaria de cada producto. Esta información se resume en la siguiente tabla: Planta Producto Capacidad 1 2 Disponible 1 1 0 4 2 0 2 12 3 3 2 18 Ganancia unitaria 3 5 Datos del problema de Wyndor Glass Co.

Aprendiendo LINGO INTRODUCCIÓN A LINGO - 3 Para formular el problema lineal primero debemos determinar los elementos del mismo: Variables de decisión: x 1: unidades producidas del producto 1 por minuto. x 2: unidades producidas del producto 2 por minuto. Función Objetivo: Z = 3x 1 + 5x 2 La función objetivo representa la contribución a la ganancia por minuto por lo cual deseamos maximizarla. Restricciones: x 1 4 Capacidad Planta1. 2x 2 12 Capacidad Planta2. 3x 1 + 2x 2 18 Capacidad Planta3. Entonces el modelo matemático del problema sería: Z = 3x 1 + 5x 2 Max Sujeto a: x 1 4 2x 2 12 3x 1 + 2x 2 18 y x 1 0 ; x 2 0! Problema 3.1 Hillier-Lieberman Pag. 30 - Wyndor Glass Co. Xj = Cantidad a producir del producto j ; Max = 3*X1 + 5*X2;!Sujeto a: ; X1 <=4; 2*X2 <=12; 3*X1 + 2*X2 <=18; Modelo matemático del problema. El modelo matemático expresado en el lenguaje de modelado de LINGO sería: Problema equivalente en lenguaje LINGO. A menos que especifique lo contrario, el valor de las variables por defecto en un modelo de LINGO son no-negativas y continuas. Por ello para nuestro modelo no es necesario incluir las condiciones de no negatividad. Las líneas que comienzan con! son comentarios y serán ignoradas por Lingo. De forma más general un comentario es un bloque de texto (puede estar compuesto de una o más líneas) que comienza con un signo de exclamación (!) y termina con punto y coma (;).

4 - INTRODUCCIÓN A LINGO APRENDIENDO LINGO Como siguiente paso debemos ingresar este modelo en la aplicación para lo cual debemos iniciar la aplicación: Seleccionando el menú: Inicio Programas Lingo XX Lingo XX O haciendo doble click en el icono LINGO del escritorio Luego de iniciar la aplicación aparece la pantalla principal de LINGO y un modelo en blanco: Como puede observarse se trata de dos ventanas: en primer plano la ventana del modelo actual (con fondo blanco) y detrás se encuentra el entorno de programación de LINGO del cual se pueden destacar tres áreas: en la parte superior el menú de opciones, debajo la barra de botones y en la parte inferior la barra de estado (donde se puede observar: el estado del solver, la posición en el modelo, etc). Proceda a escribir el modelo en la ventana del modelo (note que la sintaxis de cada uno de los componentes del mismo se destaca en un color diferente) y cuando este listo proceda a guardarlo mediante la opción Save del menú File o mediante el botón guardar de la barra de menú. Dele el nombre que considere conveniente, en nuestro caso lo nombramos [Hill97] - Cap. 3 - Pag. 30 - Ej. 3.1 como se podrá observar en la barra de título de la ventana del modelo. Los archivos de LINGO por default tienen la extensión.lg4.

Aprendiendo LINGO INTRODUCCIÓN A LINGO - 5 Luego de guardar nuestro modelo estamos en condiciones de ordenar a LINGO que intente resolverlo. Para esto último recurrimos a la opción SOLVE del menú LINGO o bien al botón Solve (indicado en la imagen). Al finalizar la resolución del modelo nos mostrará la ventana de resultados: Global optimal solution found at iteration: 3 Objective value: 36.00000 Variable Value Reduced Cost X1 2.000000 0.000000 X2 6.000000 0.000000 Row Slack or Surplus Dual Price 1 36.00000 1.000000 2 2.000000 0.000000 3 0.000000 1.500000 4 0.000000 1.000000 En primer lugar podemos observar el número de iteraciones, en realidad el número de iteraciones más uno (ya que Lingo llama a la primera SBF como iteración uno). A continuación nos informa el valor de la función objetivo en el punto óptimo (en nuestro ejemplo 36), el valor de las variables básicas y su costo reducido, y por último el sobrante (o slack) y el precio sombra (dual price) de cada restricción. Se debe tener en cuenta que la fila (row) 1 es el funcional.

6 - INTRODUCCIÓN A LINGO APRENDIENDO LINGO El lenguaje de modelado de LINGO Sintaxis de LINGO La sintaxis que se utiliza en este programa es muy sencilla. Para el nombre de las variables y otros identificadores se establece que pueden tener 32 caracteres como máximo, Deben comenzar con una letra seguido de letras, dígitos o _. LINGO no distingue entre mayúsculas y minúsculas. Con respecto a las sentencias: Todas las sentencias deben terminar en un punto y coma. Para darle un nombre a la función objetivo o a las restricciones, estos se deben colocar entre corchetes. Para declarar la función objetivo debemos colocar las palabras reservadas MAX o MIN, (aparecerán resaltadas en azul), seguidas del signo =. Los comentarios deben comenzar con un signo!, los cuales aparecen resaltados en verde. Nombre de las restricciones Como se pudimos observar en los resultados de la resolución del problema resulta un poco confuso distinguir las distintas restricciones del modelo. LINGO tiene la habilidad de nombrar las restricciones en su modelo. Ésta es una buena práctica por dos razones: Primero, los nombres de restricciones se usan en el reporte de las soluciones que los hacen más fácil interpretar. Segundo, en muchos de los mensajes de error de LINGO se indica la restricción mediante su nombre. Dar nombre a una restricción es bastante simple. Se inserta el nombre entre corchetes, adelante de una línea de código. El nombre debe obedecer los requisitos normales para un identificador de LINGO.! Problema 3.1 Hillier-Lieberman Pag. 30 - Wyndor Glass Co. Xj = Cantidad a producir del producto j ; [Beneficio] Max = 3*X1 + 5*X2;!Sujeto a: Restricciones de tiempo de produccion; [Planta_1] X1 <=4; [Planta_2] 2*X2 <=12; [Planta_3] 3*X1 + 2*X2 <=18; Modelo con nombres en las restricciones. Resuelva nuevamente el modelo y notará los cambios:... Variable Value Reduced Cost X1 2.000000 0.000000 X2 6.000000 0.000000 Row Slack or Surplus Dual Price BENEFICIO 36.00000 1.000000 PLANTA_1 2.000000 0.000000 PLANTA_2 0.000000 1.500000 PLANTA_3 0.000000 1.000000

Aprendiendo LINGO INTRODUCCIÓN A LINGO - 7 Uso de funciones de dominio de variables Como se dijo anteriormente, a menos que especifique lo contrario, el valor de las variables por defecto en un modelo de LINGO son no-negativas y continuas. Más específicamente, las variables pueden asumir algún valor real desde cero a infinito positivo. En muchos casos, este dominio de valor por defecto puede ser impropio. Por ejemplo, se puede querer una variable que asuma valores negativos, o se podría querer una variable restringida puramente a valores enteros. LINGO proporciona cuatro funciones de dominio de variables que permite sustituir el dominio predefinido de una variable. Los nombres de estas funciones y una descripción breve de su uso son: @GIN restringe el dominio de la variable a valores enteros. @BIN hace que la variable tome valores binarios (es decir, 0 o 1). @FREE permite que la variable pueda asumir cualquier valor real. @BND limita los valores de la variable a un rango finito. Variables enteras y binarias LINGO le da la posibilidad de definir dos tipos de variables enteras, una general y otra binaria. Una variable entera general requiere ser un número entero. Una variable entero binaria requiere ser cero o uno. Cualquier modelo que contiene uno o más variables enteras, es requerido para un modelo programación entera (IP) En muchos proyectos de modelos, usted se enfrentará con tipos de decisiones (si/no). Algunos ejemplos incluirían Produce/No Produce, Abre un Plan/Cierra un Plan, etc. Las variables binarias son el método normal usado por modelar estas decisiones de si/no. Variables libres Por default, las variables en LINGO tiene un límite inferior de cero y un límite superior de infinito. @FREE quita el límite inferior cero y permite que la variable tome valores negativos. La sintaxis es: @FREE (nombre_de_variable); donde la variable_name es el nombre de la variable libre. La función @FREE puede usarse en cualquier parte del modelo donde normalmente iría una restricción. Un ejemplo de @FREE sería: @FREE (X1); haría libre a la variable X1. Variables limitadas Considerando que @FREE pone el límite superior e inferior de la variable especificada a más-menos infinito (quitando cualquier límite en la variable), la función de @BND le permite poner límite superior e inferior específicos en una variable. En otras palabras, @BND limita el rango de una variable dentro de algún intervalo. La sintaxis para @BND es: @BND (lower_bound, nombre_de_variable, upper_bound); donde el nombre_de_variable es la variable a ser limitada debajo por el limite_inferior y limitada superiormente por el limite_superior. Limite_inferior y limite_superior deben ser valores numéricos o variables cuyos valores han sido fijados en la sección de datos. @BND puede usarse en cualquier lugar que normalmente se usaría una restricción en el modelo.

8 - INTRODUCCIÓN A LINGO APRENDIENDO LINGO En términos matemáticos, LINGO interpreta @BND como: limite_inferior <= nombre_de_variable <= limite_superior Además, @BND no cuenta contra el límite del número total de restricciones que Lingo impone en algunas versiones. En general, se usa @BND en lugar de una restricción siempre que sea posible. Un ejemplo de @BND sería: @BND (-1, X1, 1); haría que la variable X1 sólo pueda tomar valores entre -1 y 1. Operadores y Funciones LINGO proporciona varias funciones y operadores para agergar al modelo matemático. Se muestran las categorías siguientes: Los Operadores Normales: Aritmética, lógicos, y correlativos como +, -, =, <=. Mathematical: las funciones matemáticas, trigonométricas y generales. Financial: las funciones financieras. Probabilidad: las Funciones utilizadas para determinar una gama amplia de probabilidad y las respuestas estadísticas. Dominio de variables: son funciones que definen el rango de valores (dominio) que una variable puede asumir. Manejadores de conjuntos: las funciones útiles para manipular conjuntos. Set Looping: Funciones loop que se utilizan para realizar operaciones en un conjuntos de datos. Import/Export: son funciones que crean conexiones con las fuentes de los datos externas. Miscellaneous: funciones de distintos tipos.