Vous êtes sur la page 1sur 40

Modelando con LINGO

Introduccin

El LINGO es un software de modelaje y


resolucin de problemas lineales y no
lineales de optimizacin.
LINGO integra:

R.Delgadillo

un lenguaje para expresar modelos de


optimizacin
un entorno completo para la creacin y
edicin de los problemas, y
un conjunto de solucionadores.
2

Introduccin

Caractersticas principales de LINGO


incluyen:

R.Delgadillo

Lenguaje de modelaje algebraico


Opciones de datos convenientes
Modelo interactivo (crear aplicaciones )
Amplia documentacin y Ayuda
Herramientas y Solucionadores

Introduccin

R.Delgadillo

El lenguaje de modelaje del LINGO


permite representar un modelo de una
forma simple e intuitiva
Reescribiendo tanto la funcin objetivo
como las restricciones de forma simple
y directa.

Modelando con LINGO

Ejemplo:
Una empresa elabora tres tipos de forraje usando cuatro tipos
de cereales. Cada saco de forraje contiene 50 kg. y se vende al
precio (en soles) indicado en la tabla siguiente, que contiene
tambin la composicin de cada saco y las existencias de
cereales en la fbrica:

R.Delgadillo

Forraje

Avena

Maz

Cebada

Trigo

Precio

25

25

20

20

10

12

20

30

6.20

Existenc

50000

80000

40000

10000

Determinar el nmero de sacos que deber producir la empresa


de cada tipo de forraje para maximizar el ingreso.
5

Modelando con LINGO

R.Delgadillo

El modelo matemtico correspondiente del problema


es:
Max 9x + 12y + 6.2z
s.a
25x + 20z 50 000
25x + 20y 80 000
20y + 30z 40 000
10y 10 000
x, y, z >0

Modelando con LINGO


En LINGO se escribe como:
Max = 9*x+12*y+6.2*z;
25*x+20*z < 50000;
25*x+20*y < 80000;
20*y+30*z < 40000;
10*y < 10000;
Obs:

R.Delgadillo

La Funcin objetivo se escribe con Max = (Min =)


La desigualdades se escriben <= (>=) se abrevia por <
(>). La igualdad se escribe =
No es necesario introducir la restricciones de no negatividad
Cada instruccin termina obligatoriamente con ;
7

Modelando con LINGO


Obs:

R.Delgadillo

Los cambios de lnea son irrelevantes, por claridad se


escribe cada ecuacin en una lnea .
Los nombres de variables no pueden contener espacios ni
signos especiales ( , , ) .
LINGO no distingue entre maysculas y minsculas.
No se pueden omitir los signos de multiplicacin *

Colocando titulo al modelo


Es posible dar un titulo al modelo, que ser mostrado
en la solucin generado por el LINGO.
Para el ejemplo podemos colocar
MODEL:
TITLE: Problema de mezcla;

R.Delgadillo

Colocando etiquetas
Se puede colocar etiquetas (nombres) a las
restricciones y funcin objetivo, esto es til
por dos razones:
Los etiquetas son usados en el listado de
soluciones generadas, lo que facilita su
lectura e interpretacin.
Los mensajes de errores pueden mencionar la
etiqueta para su localizacin.

R.Delgadillo

10

Colocando etiquetas

R.Delgadillo

Las etiquetas van entre [] y se colocan al


inicio de una restriccin o funcin objetivo
Los etiquetas no pueden contener espacio en
blanco, ni signos especiales( , , )

Deben comenzar con un carcter


alfabtico (A-Z), seguido de un
alfabtico, numrico o un underline (_)
No pueden exceder mas de 32
caracteres.
11

Colocando etiquetas
Ejemplo:
[Ingresos] Max = 9*x+12*y+6.2*z;
[Avena] 25*x+20*z < 50000;
[Maiz]
25*x+20*y < 80000;
[Cebada] 20*y+30*z < 40000;
[Trigo] 10*y < 10000;

R.Delgadillo

12

Colocando etiquetas
Ejemplo:
[FO] MIN = @SUM (rutas (i,j): costo(i,j) * qtdEnviada
(i,j) );
@FOR(fabricas(i):
[Cap_fabricas] @SUM(almacenes(j):qtdEnviada(i,j))<=
capacidad(i));
@FOR(almacenes(j):
[Dem_almacenes] @SUM(fabricas(i):qtdEnviada(i,j))=
demanda(j));

R.Delgadillo

13

Insertando comentarios
Un comentario queda definido por un signo
de exclamacin (!) y un punto y coma (;)
los cuales determinan su inicio y fin.
Ejemplo
! Funcin Objetivo;
[Ingresos] Max = 9*x+12*y+6.2*z;
! Las capacidades de las fabricas no se pueden
sobrepasar;
@FOR(fabricas(i):
@SUM(almacenes(j):qtdEnviada(i,j))<= capacidad(i));
R.Delgadillo

14

Modelo

R.Delgadillo

15

Dando solucin al modelo

R.Delgadillo

Una vez introducido un modelo, LINGO lo resuelve si


seleccionamos el men LINGO Solve
O, si pulsamos en el icono en forma de diana.
LINGO genera entonces un documento .lgr que, para
el ejemplo anterior contiene lo siguiente:

16

Solucin

R.Delgadillo

17

Operadores y funciones del


LINGO
Los operadores pueden ser:
Binarios: cuando requieren dos argumentos,
uno inmediatamente a la derecha e izquierda
del operador
Unarios: cuando requiere apenas un
argumento.

R.Delgadillo

18

Operadores y funciones del


LINGO
Operadores Aritmticos
LINGO posee cinco operadores aritmticos
binarios:
Operador Descripcin
^

Potenciacin

Multiplicacin

Divisin

Adicin

Substraccin

El nico operador unario, es la negacin (-),


que es aplicado al operando inmediatamente
a la derecha del signo de negacin.
R.Delgadillo

19

Operadores y funciones del


LINGO
Los operadores Lgicos:
Son usados principalmente en expresiones condicionales
Retornan TRUE (1) o FALSE (0)
Operador

Valor de Retorno

#NOT#

TRUE si el operando a la derecha es falso

#EQ#

TRUE si los operando son iguales

#NE#

TRUE si los operando no son iguales

#GE#

TRUE Si el operando de la izq. >= que el de la der.

#GT#

TRUE si el operando de la izq. > que el de la der.

#LE#

TRUE si el operando de la izq. <= que el de la der.

#LT#

TRUE si el operando de la izq. < que el de la der.

#AND#

TRUE si ambos operandos tienen valor TRUE

#OR#

FALSE si ambos operandos tienen valor FALSAE

R.Delgadillo

20

Operadores y funciones del


LINGO
Los operadores relacionales: son usados en el
modelo para especificar si el lado izquierdo
de una expresin debe ser igual, menor o
mayor que el lado derecho

R.Delgadillo

Operador

Descripcin

La expresin de la izq. Debe ser igual a la


expresin de la derecha

<=

La expresin de la izq. Debe ser menor o igual


a la expresin de la derecha

>=

La expresin de la izq. Debe ser mayor o igual


a la expresin de la derecha
21

Operadores y funciones del


LINGO
El nivel de prioridad de los operadores es:
Nivel

Operadores

Alto

#NOT# -(negacin)
^
* /
+ #EQ# #NE# #GT# #GE# #LT# #LE#
#AND# #OR#

Bajo

R.Delgadillo

<= = >=

22

Operadores y funciones del


LINGO
LINGO tiene un conjunto de funciones
matemticas:
Funcin

Retorna

@ABS(X)

Regresa el valor absoluto de X

@COS(X)

Regresa el coseno de X, X es un ngulo en radianes

@SIN(X)

Regresa el seno de X, X es un ngulo en radianes

@TAN(X)

Regresa la tangente de X, X es un ngulo en radianes

@FLOOR(X)

Regresa el menor entero mas prximo de X

@SMIN(X1,
X2,XN)

Regresa el valor mnimo de los elementos X1, X2,


, XN

@SMAX(X1,
X2,XN)

Regresa el valor mximo de los elementos X1, X2,


, XN

R.Delgadillo

23

Operadores y funciones del


LINGO
Funciones de dominio: LINGO asume que las
variables son continuas e mayores o iguales a
cero, sin embargo las variables pueden tomar
valores distintos de estos
Funcin

Descripcin

@BIN (variable)

Limita a la variable a asumir valores 0 1

@BND(inf,var,sup)

Limita a la variable a sumir valores entre inferior y


superior

@FREE(variable)

Permite que la variable asuma valores (-,0,+)

@GIN(variable)

Limita a la variable a asumir valores enteros

R.Delgadillo

24

El problema de mezcla

El problema de mezcla anterior puede ser


reescrito de esta forma:
max z

cjxj
j
n

s.a

aij x j

bi

i 1,..., m

xj

Donde:
x j = Es la variable de decisin, que indica la cantidad de cereal i que se
incluye en la mezcla.
c j = Es el precio del forraje de tipo i
bi = La cantidad que se tiene en stock del cereal j
aij = La cantidad de cereal j que se utiliza en la produccin del forraje i.

R.Delgadillo

25

Conjuntos

R.Delgadillo

LINGO permite introducir los modelos en


trminos de conjuntos de ndices, lo cual
aporta numerosas ventajas:
Las ecuaciones son independientes de los
datos
Si el modelo tiene varias ecuaciones que
siguen un mismo esquema, se pueden
introducir todas ellas como una nica frmula
general.
La estructura del modelo se simplifica
26

Conjuntos

Para el problema de mezcla:


SETS:
Cereal/Avena, Maiz, Cebada, Trigo/:Existencias;
Forraje /1..3/: Precio, Sacos;
ENDSETS

R.Delgadillo

Las palabras SETS: ENDSETS determinan una


seccin en un modelo de LINGO.
Para definir un conjunto escribimos su
nombre, luego sus elementos entre barras / /
y luego separadas por : las variables
asociadas al conjunto.
27

Conjuntos

Para asignar un valor fijo a algunas


variables (y convertirlas as en
constantes) usamos una seccin DATA:

DATA:
Existencias = 50000 80000 40000 10000;
Precio = 9, 12, 6.20;
ENDDATA

R.Delgadillo

28

Conjuntos
Si hubiramos querido asignar a todas las
existencias el valor 10 000 podramos haber
escrito Existencias = 10000;
Si hubiramos querido dejar las existencias
de cebada como variable podramos haber
escrito:
Existencias = 50000, 80000, , 10000;
(en este caso es obligatorio el uso de comas)

R.Delgadillo

29

Conjuntos

La declaracin de los elementos de un


conjunto puede hacerse indistintamente en la
seccin SETS o DATA. Ejemplo:
SETS:
Cereal:Existencias;
Forraje/1..3/: Precio, Sacos;
ENDSETS
DATA:
Cereal = Avena Maiz Cebada trigo;
Existencias = 50000 80000 40000 10000;
Precio = 9, 12, 6.20;
ENDDATA

R.Delgadillo

30

Conjuntos

R.Delgadillo

Para introducir la cantidad de cada cereal que


contiene cada tipo de forraje.
SETS:
Cereal:Existencias;
Forraje/1..3/: Precio, Sacos;
Par (forraje, cereal):cantidad;
ENDSETS
DATA:
Cereal = Avena Maiz Cebada trigo;
Cantidad = 25 25 0 0
0 20 20 10
20 0 30 0;
Existencias = 50000 80000 40000 10000;
Precio = 9, 12, 6.20;
ENDDATA

31

conjuntos

Es posible asignar un valor inicial a una


variable sin que por ello LINGO deje de
considerarla variable. Para ello no asignamos
el valor en la seccin DATA, sino en una
seccin INIT:
INIT:
sacos = 1000;
ENDINIT

R.Delgadillo

As, las tres variables sacos toman el valor inicial


1000. Si slo queremos asignar dicho valor a
sacos(1) escribimos sacos = 1000, , ;
32

Ecuaciones sobre conjuntos


Para introducir las ecuaciones de un
modelo cuando los datos estn
expresados en trminos de conjuntos.
Para el ejemplo:

[Ingresos] Max = @Sum(Forraje(p):


precio(p)*sacos(p));
@For(Cereal(c):[Limite] @Sum(forraje(p): Cantidad(p,
c)*sacos(p))<Existencias(c));

R.Delgadillo

33

Ecuaciones sobre conjuntos

R.Delgadillo

La lnea de la funcin objetivo empieza como


siempre, con una etiqueta seguida de Max =.
@Sum() : Suma para todo forraje p el precio de p
por el nmero de sacos producidos de p.
@For(): define simultneamente cuatro
restricciones, una para cada cereal. Se lee: Para
todo cereal c, definimos la restriccin etiquetada
[Limite] como que la suma para todo forraje p de la
cantidad de cereal c en el forraje p por el nmero de
sacos producidos de p ha de ser que las
existencias de c.
34

Ecuaciones sobre conjuntos

R.Delgadillo

Las instrucciones de LINGO que recorren los


elementos de un conjunto son las siguientes:
@For(Conjunto(i): ) Repite una tarea para todo i
@Sum(Conjunto(i): ) Suma una expresin para todo i
@Prod(Conjunto(i): ) Multiplica una expresin para
todo i
@Max(Conjunto(i): ) Calcula el mximo para todo i
@Min(Conjunto(i): ) Calcula el mnimo para todo i
@Writefor(Conjunto(i): ) Escribe una expresin para
todo i
35

Ecuaciones sobre conjuntos


En general, cuando dentro de estas
instrucciones slo aparece un ndice,
ste se puede suprimir.
Por ejemplo, la funcin objetivo se
podra haber introducido as:
[Ingresos] Max = @Sum(Forraje:
precio*sacos);

R.Delgadillo

36

Ecuaciones sobre conjuntos

R.Delgadillo

Podemos anidar cualquiera de estas


instrucciones dentro de otra. Por
ejemplo:
@Sum(A(i): @Sum(B(j): c(i)*d(j)))
calcula la suma de ci*dj para todo i del
conjunto A y todo j del conjunto B.

37

Ecuaciones sobre conjuntos

R.Delgadillo

Los bucles pueden recorrer conjuntos


de pares, ternas etc., en cuyo caso
hemos de introducir tantas variables
como componentes tiene el conjunto.
Por ejemplo, si queremos sumar todas
las cantidades para todo forraje y todo
cereal, podemos escribir:
@Sum(Par (p, c): Cantidad(p, c))
38

El problema de Mezcla
[Ingresos] Max = @Sum(Forraje(p): precio(p)*sacos(p));
@For(Cereal(c):
[Limite] @Sum(forraje(p): Cantidad(p,c)*sacos(p))<Existencias(c));
SETS:
Cereal:Existencias;
Forraje/1..3/: Precio, Sacos;
Par (forraje, cereal):cantidad;
ENDSETS
DATA:
Cereal = Avena Maiz Cebada trigo;
Cantidad = 25 25 0 0
0 20 20 10
20 0 30 0;
Existencias = 50000 80000 40000 10000;
Precio = 9, 12, 6.20;
ENDDATA
R.Delgadillo

39

Ejercicios

R.Delgadillo

Modele y resuelva los problemas:


1, 2 y 3 de los ejercicios de Modelos
lineal.

40

Vous aimerez peut-être aussi