Location Problems John H. Vande Vate Fall, 2002 1
Where to Locate Facilities Rectilinear Location Problems Euclidean Location Problems Location - Allocation Problems 2
Basic Intuition 1 4 On the line, if the objective is to min … The maximum distance traveled The maximum distance left + right The distance traveled there and back to each customer The item-miles traveled 1 4 3
Rectilinear Distance Travel on the streets and avenues Distance = number of blocks East-West + number of blocks North-South Manhattan Metric 4
Rectilinear Distance 9 5 4 5
Locate a facility... To minimize the sum of rectilinear distances Intuition Where? Why? 6
Solver Model 7
Locate a facility... To minimize the max of rectilinear distances Intuition Where? Why? 8
Models Set Customers; Param X{Customer}; Param Y{Customer}; var Xloc >= 0; var Yloc >= 0; var Xdist{Customer}; var Ydist{Customer}; 9
Constraints DefineXdist1{c in Customer}: Xdist[c] >= X[c]-Xloc; Xdist[c] >= Xloc-X[c]; DefineYdist1{c in Customer}: Ydist[c] >= Y[c]-Yloc; DefineYdist2{c in Customer}: Ydist[c] >= Yloc-Y[c]; 10
Objective Total Distance: Maximum Distance? sum{c in Customer}(Xdist[c]+Ydist[c]); Maximum Distance? 11
Minimize The Max? Var Xloc; Var Yloc; Var Xmax >= 0; var Ymax >= 0; min objective: Xmax + Ymax; s.t. DefineXdist1{c in Customer}: Xmax >= X[c]-Xloc; DefineXdist2{c in Customer}: Xmax >= Xloc-X[c]; DefineYdist1{c in Customer}: Ymax >= Y[c]-Yloc; DefineYdist2{c in Customer}: Ymax >= Yloc-Y[c]; 12
Min the Max! Var Xloc; var Yloc; var Xdist{Customer}>= 0; var Ydist{Customer}>= 0; var dmax; min objective: dmax; s.t. DefineMaxDist{c in Custs}: dmax >= Xdist[c] + Ydist[c]; 13
Min the Max Cont’d DefineXdist1{c in Customer}: Xdist[c] >= X[c]-Xloc; DefineXdist2{c in Customer}: Xdist[c] >= Xloc-X[c]; DefineYdist1{c in Customer}: Ydist[c] >= Y[c]-Yloc; DefineYdist2{c in Customer}: Ydist[c] >= Yloc-Y[c]; 14
Solver Model 15
Locate a facility... To minimize the max of rectilinear distances Intuition Where? Why? 16
Finding the Center(s) 17
Assignment #1 NIMBY…. Maximize the Minimum Distance Can’t say Xdist[c] <= X[c] - Xloc; Come up with a good formulation 18
Outline Rectilinear Location Problems Euclidean Location Problems Location - Allocation Problems 19
Locating a single facility Distance is not linear Distance is a convex function Local Minimum is a global Minimum 20
Where to Put the Facility Total Cost = S ckdk(x,y) = S ck(xk- x)2 + (yk- y)2 Total Cost/x = S ck (xk - x)/dk(x,y) Total Cost/x = 0 when x = [Sckxk/dk(x,y)]/[Sck/dk(x,y)] y = [Sckyk/dk(x,y)]/[Sck/dk(x,y)] But dk(x,y) changes with location... 21
Iterative Strategy Start somewhere, e.g., x = [Sckxk]/[Sck] y = [Sckyk]/[Sck] as though dk= 1. Step 1: Calculate values of dk Step 2: Refine values of x and y x = [Sckxk/dk]/[Sck/dk] y = [Sckyk/dk]/[Sck/dk] Repeat Steps 1 and 2. ... 22
Solver Model 23
Convex Minimization Call on Convex Minimization Tool Minos, Interior Point Methods, … Typically don’t support discrete variables too… 24
Locating Several Facilities Fixed Number of Facilities to Consider Single Sourcing Two Questions: Location: Where Allocation: Whom to serve Each is simple Together they are “harder” 25
Iterative Approach Put the facilities somewhere Step 1: Assign the Customers to the Facilities Step 2: Find the best location for each facility given the assignments (see previous method) Repeat Step 1 and Step 2 …. 26
Assign Customers to Facilities Uncapacitated (facilities can be any size) “Greedy”: Assign each customer to closest facility Capacitated Use Optimization 27
Allocation Model Var x{Custs, Facs} binary; minimize AllocationCost: sum{c in Custs, f in Facs} C[c,f]*x[c,f]; s.t. AssignEachCust{c in Custs}: sum{f in Facs} x[c,f] = 1; s.t. FacilityCapacity{f in Facs}: sum{c in Custs}D[c]*c[c,f] <= Cap[f]; 28
Set Covering Models 29
WesternAir 30
The Rest of the Story If there is If there is labor content… Value Added: E.g., BMW Assembly Plant High Value items: E.g., Intel EU distribution center If there is labor content… Competition… Service vs Cost... 31