You are on page 1of 15

MANUAL DE USUARIO

LINGO.
Funciones de 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 sumatorias1
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.

Uno de los rasgos ms poderosos de LINGO es su aplicacin en el lenguaje


de modelo matemtico. El cual permite expresar un problema de una
manera muy similar a la anotacin matemtica normal pudiendo tambin,
expresar una serie entera de restricciones en una declaracin compacta.
Esto lleva a modelos que son mucho ms fciles de mantener. Otro
aspecto es la seccin de los datos, que le permite aislar los datos de la
formulacin del modelo. De hecho LINGO puede leer datos incluso de una
hoja de clculo separada, base de datos, o archivo de texto. Con datos
independientes del modelo, es mucho ms fcil de hacer cambios, y hay
menos oportunidad de error cuando se realiza el modelo.

Sintaxis de LINGO

La sintaxis que se utiliza en este programa es muy sencilla. Para el nombre


de las variables se establece que deben tener 32 caracteres como mximo,
Deben comenzar con una letra seguido de letras, dgitos o _ . El compilador
de LINGO no distingue entre maysculas y minsculas.

Con respecto a las sentencias:

Todas las sentencias deben terminar en un punto y coma. Para darle un


nombre a la funcin objetivo o a las restricciones, estos se deben colocar
entre corchetes. Para declarar la funcin objetivo debemos colocar las
palabras reservadas MAX o MIN, resaltadas en azul, seguidas del signo =.
Los comentarios deben comenzar con un signo !, los cuales son resaltados
en verde.

Nombre de las restricciones

LINGO tiene la habilidad de nombrar las restricciones en su modelo. sta es


una prctica buena por dos razones. Primero, los nombres de restricciones
se usan en el reporte de las soluciones que los hacen ms fcil interpretar.
Segundo, muchos de los mensajes del error de LINGO se refieren a una
restriccin dada por nombre. Dar nombre a una restriccin es bastante
simple. se inserta el nombre entre corchetes, adelante de una lnea de
cdigo. El nombre debe obedecer los requisitos normales para un nombre de
LINGO.

Uso de funciones de dominio de variables

A menos que especificifique lo contrario, los valores de las variables por


defecto en un modelo de LINGO son no-negativo y continuas. Ms
especficamente, las variables pueden asumir algn valor real desde cero a
infinito positivo. En muchos casos, este dominio de valor por defecto puede
ser impropio. Por ejemplo, usted puede querer una variable que asuma
valores negativos, o se podra querer una variable restringida puramente a
valores enteros. LINGO proporciona cuatro funciones de variables dominio
que le permite sustituir el dominio predefinido de una variable. Los nombres
de estas funciones y una descripcin breve de su uso son: @GIN restringe
una variable para comenzar con valores enteros, @BIN hace una variable
binario (es decir, 0 o 1). Por ejemplo @BIN( X); @FREE permite que una
variable pueda asumir algn valor real, positivo o negativa @BND limita
una variable dentro de 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 nmero
entero. Una variable entero binaria requiere ser cero o uno. Cualquier
modelo que contiene uno o ms variables enteras, es requerido para un
modelo programacin entera (IP) En muchos proyectos de modelos, usted
se enfrentar con tipos de decisiones (si/no). Algunos ejemplos incluiran
Produce/No Produce, Abre un Plan/Cierra un Plan, etc. Las variables binarias
son el mtodo normal usado por modelar estas decisiones de si/no.

Variables libres

Por defecto, las variables en LINGO tiene un lmite inferior de cero y un lmite
superior de infinito. @FREE quita el lmite inferior cero y permite que la
variable tome valores negativos. La sintaxis es: @FREE (variable_name);
donde la variable_name es el nombre de la variable libre.

La funcin de @FREE puede usarse en cualquier parte del modelo donde


normalmente ira restriccin. Algunos ejemplos de @FREE son: Ejemplo
1: @FREE (X); hace una variable X libre

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, variable_name, el upper_bound);

donde el variable_name es la variable a ser limitada debajo por el


lower_bound y limitado superiormente por el upper_bound. Lower_bound y "
upper_bound deben ser valores numricos o variables cuyos valores han sido
fijados en la seccin de datos. @BND puede usarse en cualquier lugar que
normalmente se usara una restriccin en el modelo. En trminos
matemticos, LINGO interpreta que este @BND funcionan como:
lower_bound <= variable_name <= upper_bound Adems, @BND no
cuenta contra el lmite con el nmero total de JERGA de constreimiento
impone en algunas versiones. En general, se usa @BND en lugar de una
restriccin siempre que sea posible. Algunos ejemplos de @BND son:

Ejemplo 1: @BND (-1, X, 1);

Operadores y Funciones

LINGO proporciona varias funciones y operadores al modelo matemtico. Se


muestran las categoras siguientes: Los Operadores Normales:
Aritmtica, lgicos, y correlativos como +, -, =,
Mathematical - las funciones matemticas Trigonomtricas y generales.

Ej @ABS( X)

Financial - las funciones financieras

Probabilidad de - las Funciones utilizadas para determinar una gama amplia


de probabilidad y las respuestas estadsticas. Poisson

Dominio de variables - son funciones que definen el rango de valores


(dominio) que una variable puede asumir

Manejadores de conjuntos - las Funciones til para manipular conjuntos.

Set Looping - Funciones loop que se utilizan para realizar operaciones en un


conjunto de datos

Import/Export - son funciones que crean conexiones con las fuentes de los
datos externas.

Miscellaneous - funciones de distintos tipos.


Como utilizar Lingo
La manera ms directa de aprender a montar es subirse al caballo, siguiendo
esa premisa, comenzaremos nuestro aprendizaje mediante el planteo y
resolucin de uno de los problemas clsicos de la programacin 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 mayora de los captulos
de la quinta edicin del libro Introduccin a la Investigacin de
Operaciones de Hillier-Lieberman.

El planteo de este problema se puede leer en la seccin 3.1 del mencionado


libro y se resume a continuacin:

La WYNDOR GLASS CO. produce artculos de vidrio de alta calidad,


incluyendo ventanas y puertas de vidrio. La empresa tiene tres plantas de
produccin. 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 lnea de produccin. Se
descontinuarn varios productos no rentables y se dejar libre una parte de
la capacidad de produccin para emprender la fabricacin 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 conclusin que la compaa puede vender todo lo que pueda
producir de cualquiera de los productos. Sin embargo, como ambos
productos compiten por la misma capacidad de produccin de la planta 3, no
es obvio qu mezcla de los dos productos sera ms redituable. Por todo
esto, la gerencia pidi al departamento de investigacin de operaciones que
estudiara el asunto.
Despus de hacer algunas investigaciones, el departamento mencionado
determin: 1. El porcentaje de capacidad de produccin 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
informacin se resume en la siguiente tabla:

Para formular el problema lineal primero debemos determinar los elementos


del mismo:

Variables de decisin: x1: unidades producidas del producto 1 por minuto.


x2: unidades producidas del producto 2 por minuto.

Funcin Objetivo: Z = 3x1 + 5x2

La funcin objetivo representa la contribucin a la ganancia por minuto por


lo cual deseamos maximizarla.

Restricciones: x1 4 Capacidad Planta1.

2x2 12 Capacidad Planta2.

3x1 + 2x2 18 Capacidad Planta3.

Entonces el modelo matemtico del problema sera.


El modelo matemtico expresado en el lenguaje de modelado de LINGO
sera:

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 lneas que comienzan con ! son comentarios y sern ignoradas por Lingo.

Como siguiente paso debemos ingresar este modelo en la aplicacin para lo


cual debemos iniciar la aplicacin:

Seleccionando el men: Inicio/Programas/Lingo XX/Lingo XX

O haciendo doble click en el icono LINGO del escritorio

Luego de iniciar la aplicacin 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 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.

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).
Al finalizar la resolucin del modelo nos mostrar la ventana de resultados:

En primer lugar podemos observar el nmero de iteraciones, en realidad el


nmero de iteraciones ms uno (ya que Lingo llama a la primera SBF como
iteracin uno). A continuacin nos informa el valor de la funcin objetivo en
el punto ptimo (en nuestro ejemplo 36), el valor de las variables bsicas y
su costo reducido, y por ltimo el sobrante (o slack) y el precio sombra (dual
price) de cada restriccin. Se debe tener en cuenta que la fila (row) 1 es el
funcional.

Ejemplo.
1. ENUNCIADO

La empresa WINDOOR Ltda. fabrica puertas y ventanas de madera. Existen


dos modelos de puertas: puertas dobles y puertas simples: y dos modelos de
ventanas: ventanas dobles y ventanas simples. El insumo ms importante es
la madera. El proceso de corte de las partes se realiza en dos sierras
elctricas de precisin y el barnizado lo efecta personal experimentado. Las
cantidades de madera y los tiempos de corte y barnizado que requiere cada
producto se muestran en la Tabla 1.

Los proveedores de la madera pueden entregar hasta 800 [m2] en un mes.


Adems se pueden utilizar hasta 400 [hrs] de sierra para el corte y 400 [hrs-
hom] para el barnizado.

La empresa est comprometida con una constructora para entregar 90


puertas simples y 50 ventanas dobles en el mes. Los precios de venta
unitarios y costos unitarios de produccin se muestran en la Tabla 2.
VARIABLES DE DECISION

Las decisiones que la empresa desea tomar se refieren a la cantidad de


puertas y ventanas de cada tipo a producir en el perodo considerado.

x1 = cantidad de puertas dobles a fabricar en el mes.

x2 = cantidad de puertas simples a fabricar en el mes.

x3 = cantidad de ventanas dobles a fabricar en el mes.

x4 = cantidad de ventanas simples a fabricar en el mes.

RESTRICCIONES

Las restricciones deben establecer las limitaciones existentes en cuanto a la


disponibilidad de recursos y la necesidad de cumplir con los compromisos
contrados para el perodo.

A. Disponibilidad de recursos
La cantidad de madera utilizada en la produccin total no puede
exceder la cantidad mxima que la empresa puede adquirir.

4.0x1 + 1.5x2 + 3.0x3 + 1.8x4 =<800

La cantidad de horas mquina de sierra utilizada no puede exceder la


cantidad mxima disponible.

1.5x1 + 1.0x2 + 2.0x3 + 0.8x4 =<400

La cantidad de horas hombre para barnizado utilizada no puede


exceder la cantidad mxima disponible.

2.0x1 + 1.2x2 + 1.5x3 + 0.8x4 =<400

B. Cumplimiento de compromisos de entrega


La cantidad de puertas simples debe ser al menos suficiente para
cumplir los compromisos contrados.

x2>= 90

La cantidad producida de ventanas dobles debe ser al menos suficiente


para cumplir con los compromisos contrados.

X3>= 50
C. No negatividad de las variables

x1 , x2 , x3 , x4>= 0

FUNCION OBJETIVO

Como se dijo en el enunciado el problema consiste en maximizar el


beneficio durante el mes de operacin.

Beneficio total = ingreso total - costo total

Hay que destacar que, tanto el beneficio como el costo total, dependen
de las cantidades que finalmente se decida producir, es decir, dependen
de las variables que se definieron.

Btotal = 40x1 + 30x2 + 25x3 + 30x4

Max 40x1 + 30x2 + 25x3 + 30x4

4.0x1 + 1.5x2 + 3.0x3 + 1.8x4 <=800

1.5x1 + 1.0x2 + 2.0x3 + 0.8x4 <=400

2.0x1 + 1.2x2 + 1.5x3 + 0.8x4 <=400

x2>= 90 X3 >=50 x1 , x2 , x3 , x4 <=0

Solucion en lingo.
Estados del Solver: Solver Status

Si no hay errores de formulacin durante la fase de compilacin, LINGO


invocar el Solver interno apropiado para comenzar a buscar la solucin
ptima del modelo.

You might also like