Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2015
2015
1 / 41
2015
2 / 41
Problemas en GMPL
2015
3 / 41
2015
4 / 41
2015
5 / 41
Ejemplo
set alimento;
param precio{i in alimento};
var x{i in alimento} >= 0;
2015
6 / 41
2015
7 / 41
Ejemplo
minimize costo :
sum{i in alimento} precio[i] * x[i];
2015
8 / 41
2015
9 / 41
2015
10 / 41
2015
11 / 41
Aunque por lo general vamos a querer tener los datos del modelo en un
archivo diferente, de modo de poder instanciar un mismo modelo con
distintos juegos de datos
sentencia;
sentencia;
. . .
sentencia;
end;
data;
bloque de datos;
bloque de datos;
. . .
bloque de datos;
end;
Archivo de datos
2015
12 / 41
Bloque de datos
Ejemplo
Conjuntos
set nombre := t1 , . . . ,tn ;
set alimento := Leche Carne Arroz Papa Tomate;
Parmetros (Escalar)
param nombre := v;
param T := 4;
Parmetros (Vector)
param nombre := t1 , v1 ,
param precio := Leche 24
t2 , v 2 ,
Carne 190
...
Arroz 32
tn1 , vn1 ,
Papa 25
tn , v n ;
Tomate 50;
2015
13 / 41
c2
a12
a22
. . .
am2
...
cn :=
. . . a1n
. . . a2n
. . .
. . . amn ;
Gr Pr Ca :=
20 34 49
250 180 0
2,5 67 780
1
21 170
2
11 47;
2015
14 / 41
Problema de la dieta
El problema trata de la seleccin de alimentos que satisfacen requisitos
nutricionales a costo mnimo. Dado un conjunto de alimentos, con su
informacin nutricional y precio, el objetivo es seleccionar las cantidades de
alimentos a adquirir de forma de minimizar el costo de la dieta, mientras se
cumple con requisitos nutricionales. Estos requisitos se establecen como cotas
mnimas de algunos componentes nutricionales.
Cuadro: Contenido de nutrientes y precios por alimento
Alimento
Leche (L)
Carne (Kg)
Arroz (Kg)
Papa (Kg)
Tomate (Kg)
Requisitos (/da)
Grasas(g)
20
250
2.5
1
2
60
Protenas(g)
34
180
67
21
11
120
Carbohidratos(g)
49
0
780
170
47
280
Precio($)
24
190
32
25
50
2015
15 / 41
s.a.
20xL + 250xC + 2,5xA + xP + 2xT 60,
(Grasas)
xL , xC , xA , xP , xT 0.
2015
16 / 41
# PROBLEMA DE LA DIETA
#
3
4
5
set alimento ;
/ Alimentos /
6
7
8
10
11
set nutriente ;
/ Nutrientes /
param p r e c i o { i i n a l i m e n t o } ;
/ Precio por alimento /
12
13
14
param r e q u i s i t o { j i n n u t r i e n t e } ;
/ Requisitos n u t r i c i o n a l e s d i a r i o s /
15
16
17
param c o n t e n i d o { i i n a l i m e n t o , j i n n u t r i e n t e } ;
/ Contenido n u t r i c i o n a l j por alimento i /
2015
17 / 41
19
20
22
23
25
26
v a r x { i i n a l i m e n t o } >= 0 ;
/ Cantidades a ser adquiridas /
m i n i m i z e c o s t : sum{ i i n a l i m e n t o } p r e c i o [ i ] x [ i ] ;
/ C o s t o minimo /
s . t . demanda { j i n n u t r i e n t e } : sum{ i i n a l i m e n t o } x [ i ]
c o n t e n i d o [ i , j ] >= r e q u i s i t o [ j ] ;
/ Satisfaga los r e q u i s i t o s d i a r i o s para el n u t r i e n t e i /
2015
18 / 41
28
data ;
29
30
31
32
s e t n u t r i e n t e := Grasas P r o t e i n a s Carbohidratos ;
33
34
35
36
37
38
param p r e c i o : = Leche
Carne
Arroz
Papa
Tomate
24 / ( $ p o r l i t r o ) /
190 / ( $ p o r Kg ) /
32 / ( $ p o r Kg ) /
25 / ( $ p o r Kg ) /
5 0 ; / ( $ p o r Kg ) /
39
40
41
42
param r e q u i s i t o : = G r a s a s
60
/ ( g d i a r i o s ) /
Proteinas
120 / ( g d i a r i o s ) /
Carbohidratos 280; / ( g d i a r i o s ) /
2015
19 / 41
44
45
46
47
48
49
50
51
param c o n t e n i d o :
Grasas P r o t e i n a s Carbohidratos :=
#
(g)
(g)
(g)
Leche
20
34
49
C a r n e 250
180
0
Arroz 2.5
67
780
Papa
1
21
170
Tomate
2
11
47;
end ;
2015
20 / 41
Resolucin
2015
21 / 41
Problem:
Rows:
Columns:
Non-zeros:
Status:
Objective:
dieta
4
5
19
OPTIMAL
cost = 80.3187251 (MINimum)
2015
22 / 41
No.
Row name
St
Activity
Lower bound
Upper bound
Marginal
------ ------------ -- ------------- ------------- ------------- ------------1 cost
B
80.3187
2 demanda[Grasas]
NL
60
60
0.414343
3 demanda[Proteinas]
NL
120
120
0.462151
4 demanda[Carbohidratos]
B
368.988
280
2015
23 / 41
No.
-----1
2
3
4
5
Column name
-----------x[Leche]
x[Carne]
x[Arroz]
x[Papa]
x[Tomate]
St
Activity
Lower bound
Upper bound
Marginal
-- ------------- ------------- ------------- ------------B
2.96414
0
NL
0
0
3.22709
B
0.286853
0
NL
0
0
14.8805
NL
0
0
44.0876
2015
24 / 41
Problema de distribucin
2015
25 / 41
2015
26 / 41
Para simplificar el modelo vamos a suponer que contamos con dos plantas
(Seattle y San Diego) y tres almacenes (New York, Chicago y Topeka).
En el cuadro mostramos los costos de envo (en dlares americanos) por
unidad desde las plantas a los almacenes.
Cuadro: Costos de distribucin (dlares por lata)
Almacenes
Plantas
Seattle
San Diego
New York
Chicago
Topeka
2.5
2.5
1.7
1.8
1.8
1.4
2015
27 / 41
Decisiones:
xSeattleNew York
xSeattleChicago
xSeattleTopeka
xSan DiegoNew York
xSan DiegoChicago
xSan DiegoTopeka
Objetivo:
min
transporte[i, j] x[i, j]
i{Seattle,SanDiego} j{NewYork,Chicago,Topeka}
2015
28 / 41
2015
29 / 41
P
P
min
i{Seattle,SanDiego}
j{NewYork,Chicago,Topeka} transporte[i, j] x[i, j]
s.a.
x
500
x
750
300
Pi{Seattle,San Diego} iNew York
x
300
2015
30 / 41
# PROBLEMA DE TRANSPORTE
#
3
4
5
set planta ;
/ Plantas /
6
7
8
10
11
s e t almacen ;
/ Almacenes /
param c a p a c i d a d { i i n p l a n t a } ;
/ C a p a c i d a d de l a p l a n t a i /
12
13
14
param demand { j i n a l m a c e n } ;
/ Demanda d e l mercado j /
15
16
17
param t r a n s p o r t e { i i n p l a n t a , j i n a l m a c e n } ;
/ C o s t o de t r a n s p o r t e p o r l a t a de c o n s e r v a /
2015
31 / 41
19
20
22
23
25
26
m i n i m i z e c o s t : sum{ i i n p l a n t a , j i n a l m a c e n } t r a n s p o r t e [ i , j ]
x[ i , j ];
/ C o s t o s t o t a l e s de t r a n s p o r t e /
s . t . s u p p l y { i i n p l a n t a } : sum{ j i n a l m a c e n } x [ i , j ] <= c a p a c i d a d
[ i ];
/ S u j e t o a l o s l i m i t e s de l a p l a n t a i /
27
28
29
2015
32 / 41
31
32
33
s e t p l a n t a : = S e a t t l e SanDiego ;
34
35
s e t a l m a c e n : = NewYork C h i c a g o Topeka ;
36
37
38
param c a p a c i d a d : = S e a t t l e
SanDiego
500
750;
39
40
41
42
300
300
300;
43
44
45
46
param t r a n s p o r t e :
NewYork
Seattle
2.5
SanDiego
2.5
Chicago
1.7
1.8
Topeka : =
1.8
1.4 ;
47
48
end ;
2015
33 / 41
No.
Row name
St
Activity
Lower bound
Upper bound
Marginal
------ ------------ -- ------------- ------------- ------------- ------------1 cost
B
1680
2 supply[Seattle]
NU
500
500
< eps
3 supply[San-Diego]
B
400
750
4 demand[New-York]
NL
300
300
2.5
5 demand[Chicago]
NL
300
300
1.7
6 demand[Topeka]
NL
300
300
1.4
2015
34 / 41
2015
35 / 41
2015
36 / 41
Pn
t=1 (pt xt
+ ht st + ft yt )
2015
37 / 41
Pn
min
t=1 (pt xt + ht st + ft yt )
s.a.
s
t1 + xt = dt + st , t = 1, . . . , n
xt Myt , t = 1, . . . , n
s0 = 0,
xt 0, t = 1, . . . , n
st 0, t = 1, . . . , n
yt {0, 1}, t = 1, . . . , n
2015
38 / 41
3
4
5
set periodo ;
/ Periodos /
6
7
param M;
8
9
10
param f { i i n p e r i o d o } ;
/ C o s t o f i j o de p r o d u c i r en e l p e r i o d o t /
11
12
13
param p { i i n p e r i o d o } ;
/ C o s t o u n i t a r i o de p r o d u c c i o n en e l p e r i o d o t , /
14
15
16
param h { i i n p e r i o d o } ;
/ c o s t o u n i t a r i o de a l m a c e n a m i e n t o en e l p e r i o d o t /
17
18
19
param d { i i n p e r i o d o } ;
/ demanda en e l p e r i o d o t /
2015
39 / 41
21
22
v a r x { i i n p e r i o d o } >= 0 ;
/ C a n t i d a d e s a p r o d u c i r s e en e l p e r i o d o t /
23
24
25
v a r s { i i n ( p e r i o d o u n i o n { 0 } ) } >= 0 ;
/ i n v en t a r io al f i n a l del periodo t /
26
27
28
30
31
var y{ i in p e r i o d o } , b i n a r y ;
/ 1 s i s e p r o d u c e en e l p e r i o d o t , 0 en o t r o c a s o /
m i n i m i z e c o s t o : sum{ i i n p e r i o d o } p [ i ] x [ i ] + h [ i ] s [ i ] +
f [ i ] y[ i ];
/ C o s t o minimo /
2015
40 / 41
33
34
s . t . e q u i l i b r o { i i n p e r i o d o } : s [ i 1] + x [ i ] = d [ i ] + s [ i ] ;
/ E q u i l i b r i o de i n v e n t a r i o /
35
36
37
s . t . a c t i v { i i n p e r i o d o } : x [ i ] <= M y [ i ] ;
/ A c t i v a c i o n de l a p r o d u c c i o n /
38
39
40
s . t . i n i c i a l : s [0] = 0;
/ Inventario i n i c i a l /
2015
41 / 41