Está en la página 1de 6

PROGRAMACIN ENTERA

Fichero Wn503-12-(2011).doc

DESCRIPCIN DEL PROBLEMA


Una compaa considera la apertura de almacenes en cuatro ciudades: Nueva York, Los Angeles,
Chicago y Atlanta. Cada almacn puede enviar 100 unidades a la semana. El coste semanal fijo para
mantener abierto cada almacn es de 400 dlares en Nueva York, de 500 dlares en Los ngeles, de
300 dlares en Chicago y de 150 dlares en Atlanta. La regin 1 del pas requiere semanalmente 80
unidades; la regin 2, 70 unidades; y la regin 3, 40 unidades. En la Tabla 11 se muestran los costes
(incluyendo los costes de produccin y de envo ) para enviar 1 unidad de la fabrica a una regin. Se
desea satisfacer las demandas semanales a un coste mnimo, sujetas a la informacin anterior y a las
restricciones siguientes:
1. Si se abre el almacn en Nueva York, entonces hay que abrir el almacn en Los ngeles.
2. Se pueden abrir a lo ms dos almacenes.
3. Hay que abrir el almacn en Atlanta o en Los ngeles.
Formule un PE que se utilice para minimizar los costes semanales de satisfacer la demanda.

Tabla 11
DE
Nueva York
Los ngeles
Chicago
Atlanta

Regin 1
20
48
26
24

HACIA
Regin 2
40
15
35
50

Regin 3
50
26
18
35

SOLUCIN:
Variables de decisin:
xij = cantidad semanal de mercanca a enviar desde la ciudad i a la regin j.

1 si se abre almacn en laciudad i


yi
0 en caso contrario
Modelo:
Minimizar z = 400y1 + 500y2 + 300y3 + 150y4
+ 20 x11 + 40 x12 + 50 x13
+ 48 x21 + 15 x22 + 26 x23
+ 26 x31 + 35 x32 + 18 x33
+ 24 x41 + 50 x42 + 35 x43
Sujeta a:
1.

xij0 para i=1,2,3,4 y j=1,2,3.

2.

yi{0,1} para i=1,2,3,4.

3.

Restricciones asociadas a la satisfaccin de la demanda de cada regin:


x11 + x21 + x31 +x41 = 80 (regin 1).
x12 + x22 + x32 +x42 = 70 (regin 2).
x13 + x23 + x33 +x43 = 40 (regin 3).

4.

Restricciones asociadas a la capacidad (oferta) al almacn de cada ciudad:


x11 + x12 + x13 100y1 (Nueva York).
x21+ x22 + x23 100y2 (Los Angeles).
x31 + x32 + x33 100y3 (Chicago).
Pgina 1 de 6

PROGRAMACIN ENTERA

Fichero Wn503-12-(2011).doc

x41 + x42 + x43 100y4 (Boston).

Pgina 2 de 6

PROGRAMACIN ENTERA
5.

Fichero Wn503-12-(2011).doc

Otras restricciones para indicar determinadas limitaciones sobre apertura de almacenes:


y1 y2
y1 + y2 + y3 + y4 2
y2+y4 1

PROGRAMACIN DEL PROBLEMA EN AMPL USANDO EL FORMATO 0.


Modelo explicito donde el fichero .mod incluye simultneamente el modelo y los datos.
Fichero Wn503-12-f0.mod
# Problema del libro de Winston, pgina 503
# Fichero Wn503-12-f0.mod
#variables de decision
var x11>=0;
var x12>=0;
var x13>=0;
var x21>=0;
var x22>=0;
var x23>=0;
var x31>=0;
var x32>=0;
var x33>=0;
var x41>=0;
var x42>=0;
var x43>=0;
var y1 binary;
var y2 binary;
var y3 binary;
var y4 binary;
# Funcin objetivo
minimize objetivo: 400*y1 + 500*y2 + 300*y3 + 150*y4
+ 20*x11 + 40*x12 + 50*x13
+ 48*x21 + 15*x22 + 26*x23
+ 26*x31 + 35*x32 + 18*x33
+ 24*x41 + 50*x42 + 35*x43 ;
# Restricciones asociadas a la satisfaccin de la demanda de cada regin ;
subject to res_demanda_region_1: x11 + x21 + x31 +x41 = 80;
subject to res_demanda_region_2: x12 + x22 + x32 +x42 = 70 ;
subject to res_demanda_region_3: x13 + x23 + x33 +x43 = 40 ;
# Restricciones asociadas a la capacidad (oferta) al almacn de cada ciudad:
subject to res_oferta_Nueva_York: x11 + x12 + x13 <= 100*y1 ;
subject to res_oferta_Los_Angeles: x21+ x22 + x23 <= 100*y2 ;
subject to res_oferta_Chicago:
x31 + x32 + x33 <= 100*y3 ;
subject to res_oferta_Boston:
x41 + x42 + x43 <= 100*y4 ;
# Otras restricciones para indicar determinadas limitaciones sobre apertura de almacenes:
subject to res_1: y1 <= y2 ;
subject to res_2: y1 + y2 + y3 + y4 <= 2 ;
subject to res_3: y2+y4 >= 1 ;

Solucin con AMPL:


z = 4 750.
y1 = 0, y2 = 1, y3 = 0, y4 = 1
x11 = 0, x12 = 0, x13 = 0
x21 = 0, x22 = 70, x23 = 30
x31 = 0, x32 = 0, x33 = 0
x41 = 80, x42 = 0, x43 = 10

Pgina 3 de 6

PROGRAMACIN ENTERA

Fichero Wn503-12-(2011).doc

PROGRAMACIN DEL PROBLEMA EN AMPL USANDO EL FORMATO 1.


Formato 1 significa usar los parmetros m y n asociados al nmero de plantas (orgenes)
y ciudades (destinos), respectivamente y, por tanto, nombrar las plantas y las ciudades
usando nmeros.
Fichero Wn503-12-f1.mod
# Problema del libro de Winston, pgina 503, nmero 12
# Fichero Wn503-12-f1.mod
param m;
param n;

# m es el nmero de CIUDADES
# n es el nmero de REGIONES

set CIUDADES:=1..m;
set REGIONES:=1..n;
param oferta{CIUDADES}>=0;
param demanda{REGIONES}>=0;
param coste_fijo{CIUDADES}>=0;
param coste_var{CIUDADES, REGIONES}>=0;
var y{CIUDADES} binary ;
var x{CIUDADES, REGIONES}>=0;
# funcin objetivo;
minimize objetivo: (sum{ i in CIUDADES } y[i]) + (sum {i in CIUDADES,j in REGIONES } coste[i,j]*x[i,j]);
subject to res_oferta{i in CIUDADES}:
sum{j in REGIONES } x[i,j] <= oferta[i]*y[i];
# restricciones asociadas a la oferta en cada origen
subject to res_demanda{j in REGIONES}:
sum{i in CIUDADES} x[i,j] >= demanda[j]; # restricciones asociadas a la demanda en cada destino
subject to res_1: y[1] <= y[2] ;
subject to res_2: y[1] + y[2] + y[3] + y[4] <= 2 ;
subject to res_3: y[2] +y[4] >= 1 ;

Fichero Wn503-12-f1.dat
# Problema del libro de Winston, pgina 503, nmero 12
# Fichero Wn503-12-f1.dat
param m:=4;
param n:=3;
param oferta:=
1 100
2 100
3 100
4 100 ;
param demanda:=
1 80
2 70
3 40;
param coste_fijo:=
1 400
2 500
3 300
4 150 ;
param coste_var:
1 2 3 :=
1 20 40 50
2 48 15 26
3 26 35 18
4 24 50 35 ;

Pgina 4 de 6

PROGRAMACIN ENTERA

Fichero Wn503-12-(2011).doc

PROGRAMACIN DEL PROBLEMA EN AMPL USANDO EL FORMATO 2.


Formato 2 significa usar los nombres asociados a las plantas y ciudades; por tanto, no se usan los
parmetros m y n asociados al nmero de plantas (orgenes) y al nmero de ciudades (destinos),
respectivamente.
Fichero Wn503-12-f2.mod
# Problema del libro de Winston, pgina 503, nmero 12
# Fichero Wn503-12-f2.mod
set CIUDADES;
set REGIONES;
param oferta{CIUDADES}>=0;
param demanda{REGIONES}>=0;
param coste_fijo{CIUDADES}>=0;
param coste{CIUDADES, REGIONES}>=0;
var y{CIUDADES} binary ;
var x{CIUDADES, REGIONES}>=0;
# funcin objetivo;
minimize objetivo: (sum{ i in CIUDADES } y[i]) + (sum {i in CIUDADES,j in REGIONES } coste[i,j]*x[i,j]);
subject to res_oferta{i in CIUDADES}:
sum{j in REGIONES }x[i,j] <= oferta[i] *y[i];
# restricciones asociadas a la oferta en cada origen
subject to res_demanda{j in REGIONES}:
sum{i in CIUDADES}x[i,j] >= demanda[j]; # restricciones asociadas a la demanda en cada destino
subject to res_1: y['Nueva_York'] <= y['Los_Angeles'] ;
subject to res_2: y['Nueva_York'] + y['Los_Angeles'] + y['Chicago'] + y['Boston'] <= 2 ;
subject to res_3: y['Los_Angeles'] +y['Boston'] >= 1 ;

Fichero Wn503-12-f2.dat
# Problema del libro de Winston, pgina 503, nmero 12
# Fichero Wn503-12-f1.dat
param: CIUDADES: oferta :=
Nueva_York 100
Los_Angeles100
Chicago
100
Boston
100 ;
param: REGIONES: demanda:=
Region_1 80
Region_2 70
Region_3 40;
param coste_fijo:=
Nueva_York 400
Los_Angeles500
Chicago
300
Boston
150 ;
param coste_var:
Region_1
Nueva_York 20
Los_Angeles48
Chicago
26
Boston
24

Region_2
40
15
35
50

Region_3 :=
50
26
18
35 ;

Pgina 5 de 6

PROGRAMACIN ENTERA

Fichero Wn503-12-(2011).doc

PROGRAMA EN LINGO PARA LA RESOLUCIN DEL PROBLEMA ANTERIOR


! Problema de Winston pagina 491, ejercicio 12 ;
SETS:
ciudades/1..4/:coste_fijo,y;
! coste_fijo indica los precios por mantener abierto los almacenes ;
variable binaria que indica si se abre o no el almacn ;
regiones/1..3/: demanda ;
! demanda es la demanda de cada regin ;
repartos(ciudades,regiones):coste_unitario,x ;
! coste_unitario indica el precio por enviar una unidad desde la
ciudad i a la regin j ;
! x es una variable continua que indica la cantidad de mercanca a
enviar desde la ciudad i a la regin j ;
ENDSETS
DATA:
coste_fijo = 400,500,300,150
demanda =
80, 70, 40
coste_unitario = 20, 40, 50
48, 15, 26
26, 35, 18
24, 50, 35
ENDDATA

! y es una

;
;
,
,
,
;

!Funcin objetivo;
MIN = @SUM(ciudades: coste_fijo*y)
+ @SUM(repartos(i,j):coste_unitario*x) ;
!Restricciones a las variables;
@FOR(ciudades: @BIN(y));
!Restricciones funcionales;
! para indicar la demanda semanal de cada regin ;
x(1,1)+x(2,1)+x(3,1)+x(4,1)=80;
x(1,2)+x(2,2)+x(3,2)+x(4,2)=70;
x(1,3)+x(2,3)+x(3,3)+x(4,3)=40;
! de un modo ms breve podra ponerse:
;
! @FOR(regiones(j): @SUM(ciudades(i): x(i,j)) = demanda(j) ) ;
! para indicar que cada almacn puede enviar [a lo ms] 100 unidades
a la semana ;
x(1,1)+x(1,2)+x(1,3)<=M*y(1);
x(2,1)+x(2,2)+x(2,3)<=M*y(2);
x(3,1)+x(3,2)+x(3,3)<=M*y(3);
x(4,1)+x(4,2)+x(4,3)<=M*y(4);
M=100;
! de un modo ms breve podra ponerse:
;
! @FOR(ciudades(i): @SUM(regiones(j): x(i,j)) <= M*y(j) ) ;
! para indicar determinadas limitaciones sobre apertura de almacenes ;
y(1)<=y(2) ;
y(1)+y(2)+y(3)+y(4)<=2 ;
y(2)+y(4)>=1 ;

Solucin obtenida con el programa LINGO de la pgina siguiente:


z = 4 750.
y1 = 0, y2 = 1, y3 = 0, y4 = 1,
x11 = 0, x12 = 0, x13 = 0
x21 = 0, x22 = 70, x23 = 30
x31 = 0, x32 = 0, x33 = 0
x41 = 80, x42 = 0, x43 = 10

Pgina 6 de 6

También podría gustarte