Lindo Systems

! Lock box location model;
! Given cash volumes in each customer region,
  fixed cost per month of a processing facility at
 each candidate facility location, 
  delivery time between customer regions and facility locations,
  and cost of capital applied to delivery times,
 decide which facility should serve each customer;

! Keywords: lockbox location, facility location, location,
            uncapacitated location;

SETS:
 LBLOC: CPM, Y;
 CUST: CASH_VOL;
 CXL( CUST, LBLOC): DLAY, X;
ENDSETS
DATA:
  CUST=  ! The customer regions;
   Seattle Los_Angeles  Houston Philadelphia   Miami;
  CASH_VOL=   ! Monthly cash volume in $1000;
      5000        5000     5000         5000    5000;
  LBLOC=!   The possible lock box locations;
   New_York Atlanta Cincinnati Denver Seattle	Home_Office;
  CPM=     ! Fixed cost/month of a lockbox at this location;
       1300     975       1000   1100    2000             0;
  DAILY_CC= .00027;  ! Daily cost of capital;

  ! Average mail delay between locations in days;	
  DLAY=	
	    4       4         3       1       2        2 !Seattle;	
	    4       3         3       1       2        3 !Los Angeles;	
          3       3         3       2       3        3 !Houston;	
          1       2         2       3       3        3 !Philadelphia;	
          3       1         2       4       3        4;!Miami;	
ENDDATA
  
 ! Minimize monthly fixed + delay costs;
   MIN = FIXED_COSTS + DELAY_COSTS;
     
    FIXED_COSTS = @SUM( LBLOC(j): CPM(j)*Y(j));
    DELAY_COSTS = @SUM( CXL(i,j): DLAY(i,j)*1000*CASH_VOL(i)*DAILY_CC*X(i,j));

! Each customer region i must be assigned to some lockbox j;
   @FOR(CUST(i):
     @SUM( LBLOC(j): X(i,j)) = 1;
      );

! If customer i assigned to location j, then j must be open;
   @FOR( CXL(i,j):
     X(i,j) <= Y(j);
       );

! Location j is either open or closed, 1 or 0;
   @FOR( LBLOC(j):  @BIN(Y(j)));