Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Intro A Lingo
Intro A Lingo
INTRODUCCIN A LINGO - 1
Introduccin a LINGO
LINGO (LINear Generalize Optimizer) es una verstil herramienta para la formulacin,
resolucin y anlisis de problemas de programacin 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
(optimizacin multiobjetivo) solamente ingresando como mximo unas decenas de lneas.
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 ms destacables de LINGO es su lenguaje de modelado. Este lenguaje
permite expresar un problema de una manera muy similar a la notacin matemtica
normal. Adems es posible expresar sumatorias 1 mediante expresiones iterativas, lo cual
lleva a modelos que son ms compactos y fciles de mantener. Otro aspecto a destacar
del lenguaje de modelado es la seccin de datos, que permite aislar los datos de la
formulacin del modelo. Por esto LINGO puede leer datos incluso de una hoja de clculo
separada, base de datos, o archivo de texto. Con datos independientes del modelo, es ms
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
matemtico estndar es que el alumno no debe conocer demasiado el lenguaje de
modelado, slo debe saber plantear los modelos matemticos de los problemas a resolver.
Hoy da los Solvers comerciales ms 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 solucin, sin interaccin especial alguna por parte del usuario. El
tamao de los problemas que las corporaciones estn tratando han crecido
dramticamente. Esto significa que los usuarios necesitan herramientas ms avanzadas
para recopilar y administrar los datos, formular modelos y enviarlos al solver. Aqu es
donde un lenguaje de modelado es muy valioso.
Sumas generalizadas.
APRENDIENDO LINGO
2 - INTRODUCCIN A LINGO
Producto
1
1
0
3
2
0
2
2
Capacidad
Disponible
4
12
18
1
2
3
Ganancia
3
5
unitaria
Datos del problema de Wyndor Glass Co.
Aprendiendo LINGO
INTRODUCCIN A LINGO - 3
Para formular el problema lineal primero debemos determinar los elementos del mismo:
Variables de decisin:
Funcin Objetivo:
Restricciones: x1
2x2
3x1 + 2x2
Capacidad Planta1.
Capacidad Planta2.
Capacidad Planta3.
Z = 3x1 + 5x2
Sujeto a:
x1
2x2
3x1 + 2x2
Max
4
12
18
x1 0 ; x2 0
<=4;
2*X2 <=12;
3*X1 + 2*X2 <=18;
APRENDIENDO LINGO
4 - INTRODUCCIN A LINGO
Como siguiente paso debemos ingresar este modelo en la aplicacin para lo cual debemos
iniciar la aplicacin:
Como puede observarse se trata de dos ventanas: en primer plano la ventana del modelo
actual (con fondo blanco) y detrs se encuentra el entorno de programacin 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 posicin 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 opcin Save del men File o mediante el botn 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 ttulo de la
ventana del modelo. Los archivos de LINGO por default tienen la extensin .lg4.
Aprendiendo LINGO
INTRODUCCIN A LINGO - 5
Luego de guardar nuestro modelo estamos en condiciones de ordenar a LINGO que intente
resolverlo. Para esto ltimo recurrimos a la opcin SOLVE del men LINGO o bien al botn
Solve (indicado en la imagen).
Value
2.000000
6.000000
Slack or Surplus
36.00000
2.000000
0.000000
0.000000
3
36.00000
Reduced Cost
0.000000
0.000000
Dual Price
1.000000
0.000000
1.500000
1.000000
APRENDIENDO LINGO
6 - INTRODUCCIN A LINGO
Variable
X1
X2
Value
2.000000
6.000000
Row
BENEFICIO
PLANTA_1
PLANTA_2
PLANTA_3
Slack or Surplus
36.00000
2.000000
0.000000
0.000000
Reduced Cost
0.000000
0.000000
Dual Price
1.000000
0.000000
1.500000
1.000000
Aprendiendo LINGO
INTRODUCCIN A LINGO - 7
Variables limitadas
Considerando que @FREE pone el lmite superior e inferior de la variable especificada a
ms-menos infinito (quitando cualquier lmite en la variable), la funcin de @BND le
permite poner lmite superior e inferior especficos en una variable. En otras palabras,
@BND limita el rango de una variable dentro de algn intervalo.
La sintaxis para @BND es:
@BND (lower_bound, nombre_de_variable, upper_bound);
APRENDIENDO LINGO
8 - INTRODUCCIN A LINGO
En trminos matemticos, LINGO interpreta @BND como:
limite_inferior <= nombre_de_variable <= limite_superior
Adems, @BND no cuenta contra el lmite del nmero total de restricciones que
Lingo impone en algunas versiones. En general, se usa @BND en lugar de una
restriccin siempre que sea posible.
Un ejemplo de @BND sera:
@BND (-1, X1, 1);