You are on page 1of 12

Optimización de Sistemas I

Ayudantía N°5
LINGO

• Software para formular, resolver y analizar problemas de


optimización lineal y no lineal.

2
Ingresando Modelo a LINGO

• Antes de comenzar el modelo se escribe MODEL: y al finalizar END.

• Ejemplo función objetivo:


MAX = 100 * PRODUCCION – 50 * PRODUCCION;

• Ejemplo restricción:
PRODUCCION <= 1000;

Cada línea en LINGO termina con punto y coma. Si falta algún punto
y coma el modelo no se resolverá y el programa arrojará ERROR.

3
Ingresando Modelo a LINGO

• Las expresiones se pueden escribir en mas de una línea,


ejemplo:
MAX = 100 * PRODUCCION
– 50 * PRODUCCION;

• Se pueden escribir comentarios, comenzando con ! y


terminando con punto y coma, ejemplo:
PRODUCCION <= 1000; ! Límite de producción;

4
Ingresando Modelo a LINGO

• No se distingue entre mayúsculas y minúsculas, ejemplo:


PRODUCCION es lo mismo que produccion y que
PrOdUcCiOn

• Los nombres de las variables tienen que comenzar con una letra
(A-Z), los siguientes caracteres pueden ser letras, numéros o
guión bajo (_). Los nombres pueden ser de hasta 32 caracteres
de largo. Ejemplo:
PRODUCCION  BIEN
1PRODUCCION  MAL
PRODUCCION#  MAL

5
Resolviendo Modelo en LINGO

• Seleccionar Solve en
el menú de LINGO, o
presionar el botón
Solve de la barra de
herramientas.
Aparecerá esta
ventana de estado
para monitorear el
problema (número de
variables, de
restricciones, tiempo
utilizado, etc.):

6
Resolviendo Modelo en LINGO

• Cuando LINGO
termine de resolver el
modelo, creará una
nueva ventana con el
título Solution Report,
conteniendo los
detalles de la
solución. La ventana
es como la imagen
que se muestra:

7
Indexamiento en LINGO
• Lingo permite definir conjuntos de objetos de la siguiente manera:

SETS:
WAREHOUSES / WH1 WH2 WH3 WH4 WH5 WH6/: CAPACITY;
VENDORS / V1 V2 V3 V4 V5 V6 V7 V8/ : DEMAND;
ENDSETS

• Las palabras SETS: y ENDSETS siempre van. Entre estas palabras se


definen los conjuntos de la siguiente forma:

Nombre_Conjunto/Elementos_Conjunto/Datos_Conjunto

• Un atributo puede ser una variable o un dato. 8


Indexamiento en LINGO
• Lingo permite definir conjuntos compuestos de objetos de la siguiente
manera:

SETS:
WAREHOUSES / WH1 WH2 WH3 WH4 WH5 WH6/: CAPACITY;
VENDORS / V1 V2 V3 V4 V5 V6 V7 V8/ : DEMAND;
LINKS( WAREHOUSES, VENDORS): COST, VOLUME;
ENDSETS

• Se entiende de la siguiente manera:


Nombre_Conjunto (Conjuntos_Asociados)/Atributos_Conjuntos

• Un atributo puede ser una variable o un dato. 9


Ingresando datos en LINGO
• Ejemplo:
DATA:
Las palabras DATA: y
CAPACITY = 60 55 51 43 41 52;
ENDDATA
siempre se escriben. DEMAND = 35 37 22 32 41 32 43 38;
Entre ellas se COST = 6 2 6 7 4 2 5 9
ingresan los datos según 49538582
los 52197433
nombres de los
76739271
atributos
Ingresados en el área de 23957265
SETS. 5 5 2 2 8 1 4 3;
ENDDATA
10
Algunas funciones en LINGO

• @SUM(LINKS(I,J):VOLUME(I,J)); Sumatoria en los subíndices I, J


correspondientes al conjunto LINKS. Lo que se suma es VOLUME.

• @FOR(WAREHOUSES(I):………………..); Para todo I, correspondiente


al conjunto WAREHOUSES. Los puntos suspensivos representan la
restricción que se repetirá para todo I. La función @FOR puede
llevar funciones, como @SUM, dentro de ella.

• @BND(0,X(1,1),3); Establece cotas (Bounds) a las variables. El uso


de BND no se contabiliza como restricción, por lo que los modelos
quedan más reducidos en tamaño.

11
Ejercicio

• Implementar ejercicio 3 de la Tarea 1 en


LINGO.

12

You might also like