Performance Mean 65
Solutions to Exam 2 zWe have a single commodity in warehouses around the country and wish to ship it to our customers at minimum cost. The carrier charges us a cost per unit shipped that depends only on the location of the warehouse and the location of the customer. Transportation Model
Weight & Cube zWe have several commodities in warehouses around the country and wish to ship them to our customers at minimum cost. The commodities have different unit weights and densities. The carrier charges us a cost per truck load shipped that depends only on the location of the warehouse and the location of the customer. The truck has both a weight limit and a cubic capacity. If we ship a truck that is only partially full, the carrier will charge us for the larger of the fraction of the weight limit of the truck that we use or the fraction of the cubic capacity of the truck that we use. General Linear Programming Model
Single Sourcing zWe have a single commodity in warehouses around the country and wish to ship it to our customers at minimum cost. The carrier charges us a cost per unit shipped that depends only on the location of the warehouse and the location of the customer. Each customer insists on receiving all of his demand from a single warehouse. Different customers may be served from different warehouses, but no customer can be served by more than one warehouse. zGeneral Mixed Integer Linear Programming Model
Sets and Parameters z/* The Plants */ zset PLANTS; z/* The DCS */ zset DCS; z/* The Cross Docks */ zset CROSSDOCKS; z/* The capacity at each plant */ zparam Capacity{PLANTS}; z/* The Demand at each Cross Dock */ zparam Demand{CROSSDOCKS};
Variables and Objective z/* The set of shipments possible */ zset EDGES := (PLANTS cross DCS) union (DCS cross CROSSDOCKS); z/* The unit cost on each edge */ zparam Cost{EDGES}; z/* The variables are the quantities shipped on each edge */ zvar Ship{EDGES} >= 0; z/* The Objective: Minimize Freight Costs */ zminimize FreightCost: z sum{(f,t) in EDGES} Cost[f,t]*Ship[f,t];
Constraints z/* Constraints: Observe plant capacities */ zs.t. PlantCapacities {plant in PLANTS}: zsum{(plant, dc) in EDGES} Ship[plant, dc] <= Capacity[plant]; z/* Constraints: Meet Demand at each CROSSDOCK */ zs.t. MeetDemand{dock in CROSSDOCKS} z sum{(dc,dock) in EDGES} Ship[dc,dock] >= Demand[dock]; z/* Constraints: Conserve Flow at DC's */ zs.t. ConserveFlow{dc in DCS} z sum {(plan, dc) in EDGES} Ship[plant, dc] z = sum {(dc, dock) in EDGES} Ship[dc, dock];
Single Sourcing etc zThe model described above does not impose the single sourcing constraints at the DCs or the single destination for the plants. Here’s how to do that -- merge the following with the previous model z/* Whether or not we use each edge */ var UseEdge{EDGES} binary; s.t. DefineUseEdgePlant{(plant, dc) in EDGES: plant in PLANTS}: Ship[plant, dc] <= Capacity[plant]*UseEdge[plant,dc]; s.t. DefineUseEdgeDock{(dc, dock) in EDGES: dock in CROSSDOCKS}: Ship[dc, dock] <= Demand[dock]*UseEdge[dc, dock];
Single Sourcing etc. /* Use one edge from each plant */ s.t. SingleDCforPlant {plant in PLANTS}: sum{dc in DCS} UseEdge[plant,dc] = 1; /* Use one edge to each Cross Dock */ s.t. SingleDCforCrossDock{dock in CROSSDOCKS}: sum{dc in DCS} UseEdge[dc, dock] = 1;
Building the System zDisney is planning to build tunnels to connect its merchandise warehouse in EuroDisney to all of the stores in the park. For safety reasons, the company will not allow tunnels to connect except at the warehouse or at stores. It wishes to minimize the cost of building the tunnels. Minimum Spanning Tree Model
Using the System zAfter the tunnels (described in d.) are built, Disney is concerned with getting special orders to the stores from the warehouse as quickly as possible using a combination of the tunnels and surface streets. It has estimates of the time required to travel through each tunnel and down each street. Shortest Path Model
Formulation zPratt & Whitney is preparing to make final arrangements for delivery of jet engines from its final assembly plants to aircraft manufacturers’ sites. zEach jet engine is transported in a 747. A 747 can carry only a single engine at a time. zEach engine costs $100 million. Pratt & Whitney estimates inventory carrying cost at about 25%/year.
P & W Formulation zThe set of P&W Plants zset PLANTS; zThe set of customer manufacturing sites zset SITES; zThe capacities of the plants in engines per year zparam Capacity{PLANTS}; zThe demands at the customer manufacturing sites in engines per year zparam Demand{SITES};
zThe freight cost per engine from each plant to each customer site zparam FreightCost{PLANTS, SITES}; zThe travel time in days from each plant to each customer site zparam TravelDays{PLANTS, SITES}; zThe Engine Cost in $/engine zparam EngineCost; zThe inventory carrying cost as a fraction of the value of the item charged per year zparam HoldingCost;
The Heart of the Matter zCalculated parameter, the freight and inventory cost incurred per engine shipped from each plant to each site in $/engine zparam Cost{plant in PLANTS, site in SITES} z := FreightCost[plant, site] + z HoldingCost*EngineCost* z TravelDays[plant, site]/365;
The Model zVariables: Number of engines shipped from each plant to each customer manufacturing site zThis is a transportation problem (with integer data) so we don't need to specify that these variables be integral. zvar Ship{PLANTS, SITES} >= 0;
The Model zObjective: Minimize annual freight and pipeline inventory costs minimize TotalCost: sum{plant in PLANTS, site in SITES} Cost[plant, site]*Ship[plant, site]; s.t. ObserveCapacity {plant in PLANTS}: sum{site in SITES} Ship[plant, site] <= Capacity[plant]; s.t. MeetDemand{site in SITES}: sum{plant in PLANTS} Ship[plant, site] >= Demand[site];
Set Covering/Location zIntel Corporation is facing increasing pressure to provide consignment inventory to computer manufacturers in emerging markets including Eastern Europe. The company has 10 major customers in the region and holds options to lease at 5 sites in the region. It would like to exercise the fewest options necessary to guarantee it has a warehouse within 200 miles of each customer. zFormulate an optimization model to identify which lease options Intel should exercise in order to ensure it has the fewest possible warehouses and has a warehouse within 200 miles of each customer.
zThe set of Intel Sites zset SITES; zThe set of Customer Sites zset CUSTS; zThe distance data zparam Dist{SITES, CUSTS}; zThe allowed distance (200 miles) zparam MaxDist;
zCalculated parameter: is customer within 200 miles of the site? zParam Covers{site in SITES, cust in CUSTS} z := if Dist[site,cuts] < MaxDist z then 1 else 0; zVariables: Open the site or not zvar Open{SITES} binary;
The Model zObjective: Minimize the number of sites opened zmiminize OpenSites: z sum {site in SITES} Open[site]; zs.t. CoverEachCustomer{cust in CUSTS} z sum{site in SITES} Covers[site, cust]*Open[site] z >= 1;
zset PRODUCERS; zset PRODUCTS; zset PORTS; zset DCS; zset CROSSDOCKS; zparam Supply{PRODUCERS, PRODUCTS}; zparam Demand{CROSSDOCKS, PRODUCTS};
zset EDGES dimen 2; zparam Cost{EDGES}; zvar Flow{EDGES, PRODUCTS}>=0; zminimize FreightCost: zsum{(f,t) in EDGES, prd in PRODUCTS} Cost[f,t]*Flow[f,t,prd];
zs.t. RespectSupply{producer in PRODUCERS, z prd in PRODUCTS}: zsum{(producer, t) in EDGES, prd in PRODUCTS} z Flow[producer, t, prd] z<= Supply[producer, prd]; zs.t. MeetDemand{crossdock in CROSSDOCKS, z prd in PRODUCTS}: zsum{(f, crossdock) in EDGES, prd in PRODUCTS} z Flow[f, crossdock, prd] z>= Demand[crossdock, prd];
The Problem zs.t. ConserveFlow{fac in PORTS union DCS}: z sum{(f, fac) in EDGES, z prd in PRODUCTS} Flow[f, fac, prd] z = sum{(fac, t) in EDGES, z prd in PRODUCTS} Flow[fac, t, prd];