Documentos de Académico
Documentos de Profesional
Documentos de Cultura
8.0
max 2 x1 4 x2 2.5 x3 ;
3 x1 4 x2 2 x3 600;
2 x1 x2 2 x3 400;
x1 3 x2 3 x3 300;
Modelo LINGO
También podemos incluir al modelo LINGO comentarios, de
tal manera que mejore la legibilidad de éste.
Sintaxis general de LINGO
Una expresión puede ser escritas en muchas
líneas, pero la expresión debe ser terminada por un
punto y coma. Por ejemplo, podríamos haber
utilizado dos líneas para la función objetivo.
P2 9 12 13 7 50
P3 14 9 16 5 40
Deman 45 20 30 30
da
Modelo
min z c
ij
ij xij
s.a
x
i
ij Oi i 1,2,3
x
j
ij Dj j 1,2,3,4
xij 0 i,j
Función Objetivo
min c
ij
ij xij
cij C(I,J)
xij X(I,J));
Las Restricciones de oferta
x
j
ij Oi i
@FOR(PLANTAS(I) : @SUM(CLIENTES(J):X(I,J))
<=O(I));
j
@SUM(CLIENTES(J) :
xij X(I,J)
Oi O(I));
Las Restricciones de demanda
x
i
ij Dj j
@FOR(CLIENTES(J) : @SUM(PLANTAS(I):X(I,J))
>=D(J));
i
@SUM(PLANTAS(I) :
xij X(I,J)
Dj D(J));
EL MODELO LINGO ES
MODEL :
@FOR(PLANTAS(I) :
@SUM(CLIENTES(J):X(I,J))<=O(I));
@FOR(CLIENTES(J) :
@SUM(PLANTAS(I):X(I,J))>=D(J));
END
Definiendo los conjuntos
Tenemos los siguientes conjuntos a definir :
PLANTAS
CLIENTES
ARCOS
SETS:
PLANTAS / P1 P2 P3/ : O;
CLIENTES / C1 C2 C3 C4/ : D;
ARCOS(PLANTAS,CLIENTES) : C,X;
ENDSETS
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
MODELO LINGO
CARACTERISTICAS
ADICIONALES
PODEMOS COLOCARLES NOMBRES A NUESTRA
FUNCION OBJETIVO, RESTRICCIONES Y UN TITULO
AL MODELO
• Primitivos
• Derivados
PLANTAS / P1 P2 P3/ : O;
Usando Conjuntos
Un conjunto primitivo se define de la
siguiente manera :
– setname [/lista_miembros/][: lista_atributos];
PLANTAS / miembro1..miembroN/ : O;
Usando Conjuntos
Lista miembros Ejemplo Conjunto de
Implícito (formato) miembros
1..n 1..5 1,2,3,4,5
stringM..stringN TRUCKS3.. TRUCKS3,
TRUCKS204 TRUCKS4,
…,TRUCKS
204
DayM..dayN MON..FRI MON,TUE,
WED,THU,F
RI
monthM..monthN OCT..JAN OCT,NOV,D
EC,JAN
Usando Conjuntos
Como una ilustración, en el ejemplo
Powerco, podríamos haber definido el
conjunto PLANTAS como :
– PLANTAS /P1..P3/ : O;
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
Usando Conjuntos : 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]
Usando Conjuntos : conjuntos
derivados
setname(Lista_conj_padres)[/lista_miembros/][:lista_atrib]
EJEMPLO :
SETS:
PRODUCTO /A B /;
MAQUINA /M N/;
SEMANA /1..2/;
ASIGNACION(PRODUCTO,MAQUINA,SEMANA);
ENDSETS
Usando Conjuntos : conjuntos
derivados y filtros
EJEMPLO :
CAMIONES_PESADOS(CAMIONES) | CAPACIDAD(&1) #GT# 50000;
Demanda_total = @SUM(CLIENTES(J):DEMANDA(J));
Demanda_total = @SUM(CLIENTES:DEMANDA);
Min_demanda = @MIN(CLIENTES(J):DEMANDA(J));
Max_demanda = @MAX(CLIENTES(J):DEMANDA(J));
Min_demanda = @SUM(CLIENTES:DEMANDA);
Max_demanda = @SUM(CLIENTES:DEMANDA);
Función @FOR
SETS:
CAMIONES / RENAULT FORD DODGE / : CARGA;
ENDSETS
CARGA(RENAULT)<=2500;
CARGA(FORD) <= 2500;
CARGA(DODGE)<=2500;
Usando funciones de dominios
para variables
Tipos variables definición
@SUM(ARTICULOS:PESO*INCLUYE)<=CAPACIDAD_MOCHILA;
@FOR(ARTICULOS:@BIN(INCLUYE));
END
VARIABLES ACOTADAS
@BND(cota_inferior,nombre_variable,cota_superior);