lingo

43
Taller Lingo Eliseo Melgarejo http://www.udec.cl/ ~eliseomelgarejo Agradecimientos Christopher Ramírez http://www.udec.cl/crramirez

Upload: e-rodrigo-munoz

Post on 22-Nov-2014

327 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Lingo

Taller Lingo

Eliseo Melgarejohttp://www.udec.cl/~eliseomelgarejo

AgradecimientosChristopher Ramírezhttp://www.udec.cl/crramirez

Page 2: Lingo

Contenidos

Introducción Lingo Métodos de resolución Sintaxis

Page 3: Lingo

QUÉ ES LINGO?

Linear INteractive and General Optimizer

Herramienta que resuelve problemas de programación lineal, no lineal, entera y

cuadrática.

Page 4: Lingo

Métodos de resolución

Modelos no linealesGeneral Nonlinear SolverGlobal SolverPermite encontrar soluciones globales a modelos no-lineales convexosMultistart SolverThe multistart solver intelligently generates a sequence of candidate starting points in the solution space of NLP and mixed integer NLPs

Page 5: Lingo

Métodos de resolución

Modelos linealesSimplex SolversPrimal and dual simplexMixed Integer SolverIt contains several advanced solution techniques such as cut generation, tree reordering to reduce tree growth dynamically, and advanced heuristic and presolve strategies.Barrier Solver

The barrier solver is an alternative way for solving linear and quadratic programming problems.

Page 6: Lingo

Programación lineal

Page 7: Lingo

7

Sintaxis

- Por extensión (no necesita estructura)- Por comprensión o algebraica (estructurada)

Page 8: Lingo

8

Sintaxis de LINGO: función objetivo

El nombre de la función objetivo o de cualquier restricción debe ir entre corchetes.

Para declarar la función objetivo debe usarse la palabra “MAX” o “MIN” seguidas del signo “=“.

Los comentarios deben empezar con el carácter “!”.

Lámina obtenida de Taller Lingo Eduardo Villablanca

Lámina obtenida de Taller Lingo Eduardo Villablanca

Page 9: Lingo

Sintaxis de LINGO: Variables

Por defecto LINGO considera todas las variables como reales y positivas a menos que se especifiquen como:

@GIN : Variables enteras.@BIN : Variables binarias.@FREE : Variables positivas ó negativas.@BND : Limita la variable dentro de un rango

finito.

Lámina obtenida de Taller Lingo Eduardo Villablanca

Lámina obtenida de Taller Lingo Eduardo Villablanca

Page 10: Lingo

10

Sintaxis de LINGO: Variables

Sintaxis:

@GIN : @GIN(variable_X);

@BIN : @BIN(variable_X);

@FREE : @FREE(variable_X);

@BND : @BND(lim_inf,X,lim_sup);

Lámina obtenida de Taller Lingo Eduardo Villablanca

Lámina obtenida de Taller Lingo Eduardo Villablanca

Page 11: Lingo

Ejemplo

Una empresa manufacturera ha discontinuado la producción de cierta línea de productos no provechosa. Esto creó un exceso considerable en la capacidad de producción. El gerente está considerando dedicar esta capacidad en exceso a uno o más de tres productos; llamémoslo productos 1, 2 y 3. La capacidad disponible de las máquinas, que podría limitar la producción y los requerimientos por unidad de producto, se resume como sigue:

Page 12: Lingo

Ejemplo

El departamento de ventas indica que el potencial de ventas para los productos 1 y 2 es mayor que la tasa de producción máxima y que el potencial de ventas para el producto 3 es de 20 unidades por semana. La utilidad unitaria sería de $30, $12 y $ 15 respectivamente, para los productos 1, 2 y 3.

Page 13: Lingo

Modelo Ej1 X1: Cantidad producida del producto 1 X2: Cantidad producida del producto 2 X3: Cantidad producida del producto 3

MAX Z = 30*X1 + 12*X2 + 15*X3 S/A

9*X1 + 3*X2 + 5*X3 <= 500 (Restricción de horas de fresadora)

5*X1 + 4*X2 + 0*X3 <= 350 (Restricción de horas de torno)

3*X1 + 0*X2 + 2*X3 <= 150 (Restricción de horas de rectificadora)

X3 <= 20 (Restricción de mercado) X1,X2,X3 >=0;

Page 14: Lingo

Modelo Ej1

MODELO LINGOMAX = 30*X1 + 12*X2 + 15*X3;9*X1 + 3*X2 + 5*X3 <= 500;5*X1 + 4*X2 + 0*X3 <= 350;3*X1 + 0*X2 + 2*X3 <= 150;X3 <= 20;

!alternativo@gin(x1);@gin(x2);@gin(x3);

Page 15: Lingo

Ej1 (PE)

Page 16: Lingo

Problema 2

MODELE UN PROBLEMA DE PROGRAMACION ENTERA QUE PERMITA MAXIMIZAR EL VAN TOTAL

Proyecto VAN INVERSION

1 16 5

2 22 7

3 12 4

4 8 3

PRESUPUESTO

14

Page 17: Lingo

Ejercicio 3

Page 18: Lingo

18

Sintaxis

Algebraica

Page 19: Lingo

Estructura Lingo

MODEL:

SETS:

!declaramos las variables y variables de decisión.

ENDSETS

DATA:

!ingresamos los datos de cada variable.

ENDDATA

!FUNCIÓN OBJETIVO

!RESTRICCIONES

END

Page 20: Lingo

20

Sets (conjuntos o entidades)

Sets son grupos de objetos relacionados.

LINGO reconoce 2 tipos de conjuntos : Primitivos:

Es un conjunto compuesto sólo de objetos que nopueden ser reducidos posteriormente. Ejemplo : PLANTAS

Derivados: Son definidos a partir de uno o más conjuntos. Ejemplo :

ARCOS

Page 21: Lingo

Conjuntos primitivos

Un conjunto primitivo se define de la siguiente manera:

PLANTAS / P1 P2 P3/ : O;

Listado explícito de la lista miembros

PLANTAS / miembro1..miembroN/ : O;

Listado implícito de la lista miembros

Page 22: Lingo

Conjuntos primitivos

Lista miembros Implícito (formato)

Ejemplo Conjunto de miembros

1..n 1..5 1,2,3,4,5

stringM..stringN TRUCKS3..

TRUCKS204

TRUCKS3, TRUCKS4,…,

TRUCKS204

DayM..dayN MON..FRI MON,TUE,WED,THU,FRI

monthM..monthN OCT..JAN OCT,NOV,DEC,JAN

Page 23: Lingo

Conjuntos primitivos

Ejemplo

PLANTAS /P1..P3/ : O;

Page 24: Lingo

Usando Conjuntos Una forma alternativa, cuando se utiliza el formato 1..n, tu

puedes definir la longitud del conjunto en la sección DATA y entonces realizar la referencia : DATA:

Número_de_plantas = 3; ENDDATA

SETS: PLANTAS /1..Número_de_plantas/ : O;

ENDSETS

Page 25: Lingo

Conjuntos derivados

Para definir un conjunto derivado, tu especificas :

El nombre del conjunto Sus conjuntos PADRES Opcionalmente, sus miembros Opcionalmente, sus atributos

setname(Lista_conj_padres)[/lista_miembros/][:lista_atrib]

Page 26: Lingo

setname(Lista_conj_padres)[/lista_miembros/][:lista_atrib]

EJEMPLO :

SETS:PRODUCTO /A B /;MAQUINA /M N/;SEMANA /1..2/;

ASIGNACION(PRODUCTO,MAQUINA,SEMANA);ENDSETS

Conjuntos derivados

Page 27: Lingo

27

Operadores y Funciones

Funciones Matemáticas:@ABS(…) : valor absoluto@COS(…) : coseno@SIN(…) : seno@TAN(…) : tangente@FLOOR(…) : entero inferior@LOG(…) : logaritmo@SQRT(…) : raíz cuadrada

Page 28: Lingo

28

Operadores y Funciones

#EQ# : igual a #NE# : no igual a #GT# : mayor estricto a #GE# : mayor igual a #LT# : menor estricto a #LE#: menor igual a #NOT# : no (excluye un elemento) #AND# : y #OR# : ó

Page 29: Lingo

Algunas funciones especiales

Función Uso

@FOR Es utilizado para generar conjuntos de restricciones

@SUM Calcula la suma de una expresión sobre todos los miembros de un conjunto

@MIN Calcula el mínimo de una expresión sobre todos los miembros de un conjunto

@MAX Calcula el máximo de una expresión sobre todo los miembros de un conjunto

Page 30: Lingo

Función @SUMSETS:

CLIENTES / C1 C2 C3 C4 C5/ : Demanda;ENDSETSDATA :

DEMANDA = 5 1 3 4 6;ENDDATA

Demanda_total = @SUM(CLIENTES(J):DEMANDA(J));

Demanda_total = @SUM(CLIENTES:DEMANDA);

Demanda_3 = @SUM(CLIENTES(J)|J #LE3# :DEMANDA(J));

Page 31: Lingo

Función @MIN, @MAXSETS:

CLIENTES / C1 C2 C3 C4 C5/ : Demanda;ENDSETSDATA :

DEMANDA = 5 1 3 4 6;ENDDATA

Min_demanda = @MIN(CLIENTES(J):DEMANDA(J));Max_demanda = @MAX(CLIENTES(J):DEMANDA(J));

Min_demanda = @SUM(CLIENTES:DEMANDA);Max_demanda = @SUM(CLIENTES:DEMANDA);

Page 32: Lingo

Función @FOR

SETS:CAMIONES / RENAULT FORD DODGE / : CARGA;

ENDSETS

@FOR(CAMIONES(T) : CARGA(T) <= 2500);

CARGA(RENAULT)<=2500;CARGA(FORD) <= 2500;CARGA(DODGE)<=2500;

Page 33: Lingo

Powerco tiene tres plantas de generación de energía eléctrica que suministran energía requerida a cuatro ciudades.

Cada planta puede suministrar las siguientes cantidades de kilowatt-hora (kwh) de energía eléctrica :

La planta 1, 35 millones; la planta 2, 50 millones; la planta 3, 40 millones.Las demandas máximas de energía en estas ciudades, que se presentan al mismo momento son las siguientes (en kwh):La ciudad 1, 45 millones; la ciudad 2, 20 millones; la ciudad 3, 30 millones; la ciudad 4; 30 millones.

Utilizando el Lenguaje de Modelamiento

Page 34: Lingo

Utilizando el lenguaje de modelamiento

C1 C2 C3 C4 Oferta(US$

) (US$) (US$) (US$)

P1 8 6 10 9 35

P2 9 12 13 7 50

P3 14 9 16 5 40

Demanda 45 20 30 30

Los costos para enviar 1 millón de kwh de energía de una planta a una ciudad depende de la distancia que la energía tiene que viajar. Formule un PL que minimice el costo para satisfacer la demanda máxima de energía de cada ciudad.

Page 35: Lingo

Modelo

i,jx

jDx

iOx

as

xcz

ij

jj

ij

iiij

ij

0

1,2,3,4

1,2,3

.

minij

ij

Page 36: Lingo

Definiendo los conjuntosTenemos los siguientes conjuntos a definir :

PLANTASCLIENTES

ARCOS

SETS:PLANTAS / P1 P2 P3/ : O;

CLIENTES / C1 C2 C3 C4/ : D;

ARCOS(PLANTAS,CLIENTES) : C,X;ENDSETS

Page 37: Lingo

Función Objetivo

i j

ijxc ijmin

LINGO MIN = @SUM(ARCOS(I,J) : C(I,J) * X(I,J));

j i

Page 38: Lingo

Restricciones de oferta

iOx ij

ij

@FOR(PLANTAS(I) : @SUM(CLIENTES(J):X(I,J))<=O(I));

i

j

LINGO

Page 39: Lingo

Restricciones de demanda

jDx ji

ij

@FOR(CLIENTES(J) : @SUM(PLANTAS(I):X(I,J))>=D(J));

i

j

LINGO

Page 40: Lingo

Colocando los datos…

DATA:O = 35 50 40;

D = 45 20 30 30;

C = 8 6 10 9 9 12 13 7 14 9 16 5;

ENDDATA

Page 41: Lingo

Resolviendo…

MIN = @SUM(ARCOS(I,J) : C(I,J) * X(I,J));

@FOR(PLANTAS(I) : @SUM(CLIENTES(J):X(I,J))<=O(I));

@FOR(CLIENTES(J) : @SUM(PLANTAS(I):X(I,J))>=D(J));

END

Page 42: Lingo

MODELO FINALMODEL:SETS:

PLANTAS / P1 P2 P3/ : O;

CLIENTES / C1 C2 C3 C4/ : D;

ARCOS(PLANTAS,CLIENTES) : C,X;ENDSETSDATA:

O = 35 50 40;

D = 45 20 30 30;

C = 8 6 10 9 9 12 13 7 14 9 16 5;

ENDDATA

MIN = @SUM(ARCOS(I,J) : C(I,J) * X(I,J));

@FOR(PLANTAS(I) : @SUM(CLIENTES(J):X(I,J))<=O(I));

@FOR(CLIENTES(J) : @SUM(PLANTAS(I):X(I,J))>=D(J));

END

Page 43: Lingo

Problema 2

MODELE UN PROBLEMA DE PROGRAMACION ENTERA QUE PERMITA MAXIMIZAR EL VAN TOTAL

Proyecto VAN INVERSION

1 16 5

2 22 7

3 12 4

4 8 3

PRESUPUESTO

14