Multilevel Distribution    Model: MULLDC

In this model, we minimize shipping costs over a three tiered distribution system consisting of plants, distribution centers, and customers. Plants produce multiple products, which are shipped to distribution centers. If a distribution center is used, it incurs a fixed cost. Customers are supplied by a single distribution center.

MODEL:

! MULLDC;

! Multilevel DC location model, based on

 Geoffrion/Graves, Man. Sci., Jan., 1974;

! Original LINGO model by Kamaryn Tanner;

SETS:

! Two products;

 PRODUCT/ A, B/;

! Three plants;

 PLANT/ P1, P2, P3/;

! Each DC has an associated fixed cost, F,

 and an "open" indicator, Z.;

 DISTCTR/ DC1, DC2, DC3, DC4/: F, Z;

! Five customers;

 CUSTOMER/ C1, C2, C3, C4, C5/;

! D = Demand for a product by a customer.;

 DEMLINK( PRODUCT, CUSTOMER): D;

! S = Capacity for a product at a plant.;

 SUPLINK( PRODUCT, PLANT): S;

! Each customer is served by one DC,

 indicated by Y.;

 YLINK( DISTCTR, CUSTOMER): Y;

! C= Cost/ton of a product from a plant to a DC,

 X= tons shipped.;

 CLINK( PRODUCT, PLANT, DISTCTR): C, X;

! G= Cost/ton of a product from a DC to a customer.;

 GLINK( PRODUCT, DISTCTR, CUSTOMER): G;

ENDSETS

DATA:

! Plant Capacities;

S = 80, 40, 75,

    20, 60, 75;

! Shipping costs, plant to DC;

C = 1,     3,   3,   5,       ! Product A;

    4,   4.5, 1.5, 3.8,

    2,   3.3, 2.2, 3.2,

    1,     2,   2,   5,       ! Product B;

    4,   4.6, 1.3, 3.5,

    1.8,   3,   2, 3.5;

! DC fixed costs;

F = 100, 150, 160, 139;

! Shipping costs, DC to customer;

G =   5,   5,   3,   2,   4,  ! Product A;

    5.1, 4.9, 3.3, 2.5, 2.7,

    3.5,   2, 1.9,   4, 4.3,

    1,   1.8, 4.9, 4.8,   2,

    5,   4.9, 3.3, 2.5, 4.1,  ! Product B;

    5,   4.8,   3, 2.2, 2.5,

    3.2,   2, 1.7, 3.5,   4,

    1.5,   2,   5,   5, 2.3;

! Customer Demands;

D =  25,  30,  50,  15,  35,

     25,   8,   0,  30,  30;

ENDDATA

!--------------------------------------------------;

! Objective function minimizes costs.;

[OBJ] MIN = SHIPDC + SHIPCUST + FXCOST;

SHIPDC = @SUM( CLINK: C * X);

SHIPCUST =

 @SUM( GLINK( I, K, L):

  G( I, K, L) * D( I, L) * Y( K, L));

FXCOST = @SUM( DISTCTR: F * Z);

 

! Supply Constraints;

@FOR( PRODUCT( I):

 @FOR( PLANT( J):

  @SUM( DISTCTR( K): X( I, J, K)) <= S( I, J))

);

 

! DC balance constraints;

@FOR( PRODUCT( I):

 @FOR( DISTCTR( K):

  @SUM( PLANT( J): X( I, J, K)) =

   @SUM( CUSTOMER( L): D( I, L)* Y( K, L)))

);

 

! Demand;

@FOR( CUSTOMER( L):

 @SUM( DISTCTR( K): Y( K, L)) = 1

);

 

! Force DC K open if it serves customer L;

@FOR( CUSTOMER( L):

 @FOR( DISTCTR( K): Y( K, L) <= Z( K))

);

 

! Y binary;

@FOR( DISTCTR( K):

 @FOR( CUSTOMER( L): @BIN( Y( K,L)))

);

 

END

Model: MULLDC