SlideShare a Scribd company logo
1 of 42
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
Warehouse Network Design
Recommendation Report
Senior Design Group Members:
Saila Balasubramanian
Ryan Bechtel
Linh Nguyen
Rigan Patel
Brad Sims
Brian Turner
Faculty Advisor:
Dr. Marc Goetschalckx
Sponsor Contact:
Stan Boddy
Aftermarket Processes Manager
- USA and Canada
stan.boddy@sandvik.com
(404) 589-3861
December 5, 2008
1
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
Table of Contents
Executive Summary………………………………………………………………………………………….….…………2
Client Description…..….………………………………………………………………………………….…….…………3
Problem Description..………………..……………………………………………………………….……….…………3
Design Strategy …………….….……………………………………………………………………….…………………..5
Data……………………….………..………………………………………………………………….…..………….………..6
Data Collection….……….……………………………………………………………....…………………..….….……..6
Data Analysis…….……………………………………………………………………..….………………..………….……6
Data Aggregation……………………………………………………….……………….………………………………….7
ItemAggregation..……………..…………………………………………………..…….…………….…………………7
CustomerAggregation………………………………………………..…………..…………….…….………………..9
TransportationCost.………………………………………………………………..….…….………..……….………10
DemandCalculation………………………………………………………………………………….………………….11
Model Formulation…………………………………………………………………………….……..…….….……….12
Adjustments While Running the Model……………………………………….…………………….…………19
Results………………………………………………………………………………..……………….………………………20
InventoryManagementFiles…………………………………………………….…………………..……………25
Value……………………………………………………………………………………………………………………………25
Sources of Error……..…………………………………………………………………………………………………….26
Works Cited…………………………………………………………………………………….……………………………28
Appendix A…….………………………………………………….……………………..………………….………………29
Appendix B…….………………………………………………….……………………..………………….………………33
LinearizedModel Formulation…………………………………………………….…………………..……………36
2
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
I. Executive Summary
Sandvik Mining and Construction (SMC), a division of the Sandvik Group, supplies quality
equipment and parts to mining and construction companies. SMC was created in 1997 through
a series of company acquisitions. As a result, it did not decide the locations of its warehouses or
the allocation of items in those warehouses. At the time, inventory was not allocated optimally,
and this has not been rectified. In addition, SMC does not employ an inventory analyst, who
could make recommendations for improvements. Hence inventory allocations and customer-
warehouse assignments are not centralized decisions made by the company. These
shortcomings have resulted in lower customer service levels and excess inventory.
We have determined that Sandvik will benefit from a supply-chain network redesign. After
examining the inventory levels at Sandvik’s warehouses in US and Canada, we discovered that
the company has approximately $31 million worth of slow-moving inventory. These items have
been ordered 25 or fewer times in the last 5 years. This $31 million worth of inventory
represents approximately 28% of Sandvik’s total inventory quantity, but 50% of the total
inventory value. Selling this inventory to customers in a different country or discarding it can
generate salvage value. In addition, doing so will free up storage space in the warehouses and
reduce holding costs.
Sandvik has a customer base of roughly 2,650 active customer locations, 48,000 item types, and
a distribution network of 25 warehouses. In order to tackle a problem of this magnitude, we
needed to organize, filter, and aggregate customer, inventory and warehouse data. We
discussed this with the client and were able to reduce the warehouse list to the 17 major
warehouses. Performing the aggregation resulted in 187 customer groups and 74 item groups.
These aggregated groups reduced our data to a size that a mathematical programming model
could handle. Our model’s objective was to minimize holding and transportation costs. Sandvik
wanted all customer demand to be met and the service level to be 95% for each customer, and
these were constraints in the model. We assumed that all warehouses will remain open and in
use. Since we were not dealing with Sandvik’s entire inventory, we could not determine if an
entire warehouse should be closed.
Now that we have run the model and found an optimal solution, we are providing Sandvik with
a recommendation report of our findings. This includes optimal inventory levels for each item
group in each warehouse, shipping and holding costs under the new network, and total value
added. Sandvik uses a binary method to determine service level. A specific order receives a 1 if
all items in the order are delivered on time; otherwise the order receives a 0. Sandvik then
determines the overall network service level by calculating the average service level over all
orders. Sandvik has found their current service level to be 62%. In addition, the report includes
a sensitivity analysis of the tradeoffs between logistics cost and service level. This is in case the
company’s business objectives change in the future; they can choose to reduce costs by
compromising service level or increase the service level by incurring additional costs. At their
current service level, Sandvik can save $250,000 by implementing our recommendations.
3
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
II. Client Description
The Sandvik Group was founded nearly 150 years ago in Sweden. It began as a small ironworks
company that was known for producing high quality steel using the Bessemer method. Today,
the company has expanded into 130 countries, with over 47,000 employees and approximately
$12 billion in annual sales. Its three main areas are Sandvik Tooling, Sandvik Material
Technology, and Sandvik Mining & Construction. The company first established a subsidiary in
the US in 1919.
Sandvik Mining & Construction deals with a variety of products including drilling tools, mining,
construction, and demolition equipment. Products range from drill bits and crushers, to cutting
and conveying systems. It was created in 1997 through the acquisitions of Kanthal, a resistance
materials manufacturer, and Tamrock, a mining equipment manufacturer. The division we are
dealing with is SMC, and more specifically, their U.S.-Canada region. This business area focuses
on supplying products for the mining and construction industries, and SMC is a world leader in
its field. In 2007, SMC made over $4 billion in sales, or over 35% of Sandvik’s total sales.
The company now has 25 warehouse locations in the U.S.-Canada region. These warehouses
serve 1,200 active customers and 2,650 active locations. The facilities were obtained through
company acquisitions, along with all the items in them. Sandvik’s business objectives include
reducing this on-hand inventory and overall costs, while preserving customer service levels.
III. ProblemDescription
Sandvik Mining & Construction’s inventory in the U.S.-Canada region is valued at $60 million
and consists of 1.2 million individual items. The division has been built mainly through the
acquisition of 11 separate companies. All of the warehouses in the U.S.-Canada region, and the
mining equipment they contain, were acquired through these acquisitions. This has led to
misallocated products and a lack of planning in warehouse-customer assignments. Our team’s
goal was to improve Sandvik’s warehouse network by eliminating excess inventory, optimizing
transportation costs, and reducing holding costs.
A large amount of the inventory value is from items Sandvik knows to be slow-moving, which
the company refers to as strategic stock. These items are the focus of our optimization effort.
Sandvik labels these items as “Z” and “0” items, based on sales over the past 12 months. “Z”
items have only been sold once or twice in the last 12-month period, while “0” items have not
been sold at all. After analyzing the available data, we decided to modify Sandvik’s labels, and
came up with our own inventory list that included all items that sold 25 or fewer times in the
past 5 years. This list consists of 18,500 item types, including 340,000 individual parts (28% of
total inventory) and make up 50% of total inventory value ($30 million). Historical data shows
that only 72,000 individual pieces have been sold in the past five years. This gave us a better
idea of which items are slow-moving in long run. Sandvik keeps these items in stock because
the customers need these parts to be stored on hand in order to get them quickly, even though
4
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
they do not order these items frequently. When these items are ordered, they are needed
within 3 days. However, the customers want Sandvik to carry the items and pay holding costs.
These holding costs are estimated to be 7% of the total inventory value, about $2.2 million a
year.
Sandvik did not have a strategy on where to store specific items for each customer, or how
many of each item to store. As a result, Sandvik believes that 50% of the stock stored in the
U.S.-Canada region was excess inventory. Because Sandvik is a worldwide seller, the company
can sell items currently in the North American region to customers around the world. Any
inventory in the region that is found to be obsolete could be salvaged or sold in other countries.
Inventory can only be sold worldwide if it is held at the central warehouse in Chicago, IL, so
items would have to be moved there to allow for international sales.
Though these items are rarely ordered, it is very important for Sandvik to deliver such items
within the quoted lead time in order to preserve customer goodwill. Therefore, finding the
optimal quantity and location for the strategic stock is an important task. Warehouses were not
carrying the optimal inventory levels of items demanded by the customers located nearby. This
resulted in Sandvik’s inability to meet its customer service level goal of 95%. Sandvik calculates
its service level using a binary system. If all the items ordered are shipped and reach the
customer within the quoted lead time (generally 3 days), the order receives a “1”. Otherwise, if
any item is missing or late, the order receives a “0”. The overall service level is then calculated
by averaging the values assigned to the orders. As a result, if an item is not located within a
distance that allows it to be delivered on time, the customer service level for that order will be
compromised, even if every other item in that order was promptly delivered. All items in our
model are delivered by trucks and therefore speed of delivery does not differ.
Because strategic stock items are important to customers, their service level needs to be as
close as possible to Sandvik’s goal; Sandvik’s current overall customer service level is 62%. The
actual amount of improvement will depend on Sandvik’s business goals; they will need to
decide whether improved customer service level or lowered costs are more important to them,
and this decision may change as the business progresses. Determining which items to have at
each location and the optimal quantities of all inventory items will allow Sandvik to raise their
customer service level while simultaneously minimizing logistics costs.
Due to the low frequency of demand for strategic stock, we expected to find that they were in
excess in the U.S.-Canada region, just as Sandvik believed. By optimizing inventory levels, our
goal was to be able to meet the demand and service level requirements while minimizing
holding costs. Sandvik’s low customer service level indicates that the system is not currently
running at its optimal level and this inefficiency is due to a lack of inventory management.
Issues include not setting optimal inventory levels for each item and having multiple
warehouses hold the same items for a single customer. For example, if a customer in California
places an order, the current system allows the order to be filled by any warehouse in the
system. The order could be shipped from the warehouse in Pennsylvania, but the California
warehouse would forecast based on demand in the region, and order items to fulfill future
5
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
orders from that customer. At the same time, the Pennsylvania warehouse replenishes its stock
for the same repeat orders. As a result, both warehouses would be holding the same items for
one customer, leading to excess inventory. This situation also results in shipping costs that
would not be incurred if the items were stored closer to the customer. In the optimized model,
warehouses will work together to completely fulfill a customer’s demand in order to reduce
excess inventory. Optimal inventory levels of strategic items will reduce the current holding
costs while avoiding unnecessary shipping costs.
IV. DesignStrategy
Our design strategy focused on building a computer-based mathematical network model. A
network model can be used as a powerful tool to solve various problems in a distribution
network. Today’s computer-based technologies allow us to design complex models that can
imitate many details of multifaceted networks. Companies can use these programs to better
understand the system so they can make informed decisions to improve the overall network’s
efficiency and profitability. Mathematical models can be used to solve various practical issues in
industry, such as determining optimal inventory levels that should be maintained at each
warehouse in a network. Mathematical models can also be implemented in order to help
companies determine exactly when and how much inventory should be ordered. This allows
companies to reduce logistics costs while meeting customer demand. However, such important
problems are also extremely complex. They contain so many variables and interrelationships
that, without building a computer-based network model, it is almost impossible to completely
resolve these problems (Kutanoglu, 2007).
The model that we created encompasses all of the components of Sandvik’s distribution
network. The model contains products, customers, and each warehouse’s location. The model
performs functions such as factoring in the different distances between customers and
warehouses in order to calculate shipping costs; this will help determine which warehouse will
ship to which customer.
However, there are limitations to the capabilities of a computer-based mathematical model.
The extremely large quantity of different types of products Sandvik sells, approximately 49,000,
and the large number of customers Sandvik caters to, about 1,200, makes the problem difficult
and time-consuming for computer software to solve. In situations such as these, the common
practice is to aggregate data into groups so the software is able to manage the data. This means
that within the model we are grouping items by similar characteristics, such as demand, price,
and weight. Customers can be aggregated into groups by geographical region. Through
aggregation, we make the model smaller and therefore able to provide us with important
decision-making information. Also, aggregation will not hinder our ability to make general rules
about decision-making policies, such as what inventory levels to maintain and where to allocate
inventory.
The actual formulation of a mathematical network model contains two main components: an
objective function and its constraints. In our model, our objective was to minimize yearly
6
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
holding cost and our constraints were customer demand (we had to meet 100% of the demand)
and customer service levels (the service level had to be greater than or equal to the current
62%). However, we did not address the fixed warehouse costs. Since we only focused on a
portion of Sandvik’s inventory, we were not able to determine if warehouses should remain
open or be closed. Even if a particular warehouse should optimally have an inventory level of 0
for all slow-moving items, it may still be needed to store fast-moving items. While reducing
fixed costs would help the client reduce their total cost, this was beyond the scope of our
project. In addition, since we are not dealing with the entire inventory, warehouse space is not
a constraint that we will have to address.
Holding costs are directly dependent on the quantity of products at each warehouse, meaning
that they will be calculated per unit of inventory. Holding costs consist of capital costs, the
costs required to obtain the average inventory levels, and inventory service costs, such as taxes
on inventory and insurance (Simchi-Levi, 2002). Sandvik currently estimates holding cost to be
7% of total inventory value. This 7% is made up of a 5% capital cost that is paid to Sandvik
Sweden and an additional 2% cost for storage operations. The transportation costs are the
costs incurred by shipping products from a warehouse to any of Sandvik’s customers.
V. Data
Data Collection
In order to solve the problem described above, we collected data on items, customers,
warehouses, transportation, and sales history for the entire U.S.-Canada region. Fortunately,
Sandvik was able to provide us with a database containing data for the last 5 years. Even so,
much of the data was incomplete or inaccurate; we were able to fix some problems with help
from Sandvik, but the data still had to be cleaned up and formatted.
Data Analysis
In order to use the data obtained from Sandvik, we needed to know certain attributes; for items,
we needed weight, price, and demand, and for customers, we needed zip code and demand
history. Any other fields in the tables were ignored in order to simplify data manipulation.
Logistics costs for items are dependent on weight, which determines shipping cost, and price,
which is used to calculate holding costs. Past demand was necessary in order to determine
whether or not to focus on an item (we only dealt with items that have sold on average less
than 5 times per year). Likewise we needed zip codes to determine customer-warehouse
distances. Finally, we were not concerned with customers who have not ordered any items in
the past 5 years.
Though Sandvik had sufficient data for most customers and items, we were still left with
incomplete, erroneous, or redundant records. The erroneous records were beyond our or even
Sandvik’s abilities to correct and were removed from the data. We also filtered the records by
7
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
customer number and zip code to ensure that a single facility was not included more than once.
We could not filter just by customer number since a company could have multiple locations
under a single customer number. As for the incomplete records, we attempted to fill in as
much unavailable data as possible. Unfortunately, checking and correcting 49,000 items and
1,200 customers was impossible given the time-frame of our project. As a result, we consulted
with Sandvik, who instructed us to disregard any test data, inaccurate records, or records
missing any of the necessary fields. Likewise, we were able to remove records where Sandvik
was its own customer; these records dealt with internal transfers of products and capital, and
were not relevant to our calculations.
We were aware that even this reduced amount of data would make calculations difficult and
time-consuming. Sandvik provided us with the addresses of 25 different warehouses, but
directed us to focus on 17 warehouses that they deemed the most important; some
“warehouses” that Sandvik ships to are no more than someone’s garage, and such facilities are
not within the scope of our project.
Data Aggregation
We realized that we would have to aggregate items and customers to a manageable size that
would not compromise our accuracy. In order to get these aggregated groups, we had to
determine what attributes to aggregate by, and the target number of categories. We aimed for
20-50 aggregated item groups and 150-250 aggregated customer groups. We also had to be
able to justify our decisions based on the nature of Sandvik’s warehouse network and the
objectives of our project.
Item Aggregation
Our item data initially included 48,703 item types with a total value of about $60 million. Over
half of the value, $30.9 million, was made up of items that sold on average less than 5 times per
year; this also includes items that have not sold at all in the last 5 years. After the initial step of
cutting down the inventory in question to just items that have sold less than 5 times a year, we
decided there needed to be three facets by which we aggregated our items: price, weight, and
demand. Price was necessary to calculate the holding cost. Weight was needed for the
transportation calculation. Demand was required for the model’s customer-warehouse
assignment. No other attributes were deemed appropriate for our model. For example, we did
try aggregation by criticality, a field Sandvik had for each item describing how quickly to ship an
item, but after careful deliberation we came to the conclusion that it was not a useful attribute
because the service parts all have the same urgency. For each of these attributes, we
determined the ranges of values for the groups based on a log scale.
8
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
Price Aggregation
For price we analyzed the following distribution chart:
Figure 1. Price Distribution
The chart above was created once we realized that the items ranging from $0.01 to $10, 3,579
items, only amounted to about $512,000, 1.7% of the value. This amount was determined to
be negligible, and the items were eliminated from our data. This reduced our item list to 9,560
item types with a total value of approximately $15.1 million.
We wanted to break down the price groups on a log scale because this method groups items
with approximately the same values together. The reasoning behind this is that an item valuing
$10 and an item valuing $100 would incur more similar holding costs than a $10 item compared
to a $1,000 item. The ranges are $10-$100, $100-$500, $500-$1,000, $1,000-$5,000, $5,000-
$10,000, and $10,000+ and are coded 1, 2, 3, 4, 5, and 6 respectively.
Weight Aggregation
The second aspect of aggregation we looked at was weight class. Originally the data did not
come with a weight attribute associated with each item, so we had to append the weights using
Microsoft Access’s join abilities. After the join we ran into another problem. Even after Sandvik
provided us with additional information, about 500 item types still did not have weights
9
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
associated with them. We decided to extrapolate weights for these items by looking at items
with prices within 10% of their own, and taking the average of those weights. We then assigned
the average values within those price groups to the items missing weights.
We then decided to group the items by weight classes on a log scale, just like we did with prices.
An item weighing 0.01 Kg and an item weighing 1 Kg are more similar in shipping costs than an
item weighing 0.01 Kg and an item weighing 100 Kg. We ended up with 4 classes of weights: 0-
1, 1-10, 10-100 and 100 + kilograms coded as 1, 2, 3 and 4 respectively.
Demand Aggregation
Originally we did not aggregate the items by demand, but after running the model with items
only aggregated by price and weight we found an anomaly that could only be solved by adding
another facet of item aggregation. The model was treating items that had only sold once in the
past 5 years the same as an item that sold 25 times in the past year. To fix this problem, we
aggregated the items by demand. We made the groups’ ranges such that the model will treat
items with similar demand the same. The groups we decided on are 1-3, 4-8, 9-15, and 16-25,
with the numbers indicating how many times the item had been ordered in the last 5 years. For
example the model will treat items demanded once in the past 5 years the same as an item
demanded 3 times in the past 5 years. The reason for the ranges getting larger as the demand
increases is that the percentage increase becomes less and less. For example, the difference
from 1 to 2 is the same as the difference from 20 to 21, but the change in percentage is vastly
different; 1 to 2 is a 100% increase, whereas 20 to 21 is a 5% increase. The resulting demand
groups are coded as 1, 2, 3, and 4 respectively.
Concatenating these three aggregate group numbers (price, weight, and demand) gives us our
final aggregated number for each item group. Theoretically, we expected to have 96 aggregated
items (111, 112, 113,…, 644), but in reality we ended up with just 76. This was due to the fact
that certain classes like “141” (items between the values of $10-$100, weights of 100+
kilograms, and items demanded 1-3 times in the past 5 years) did not exist in the data; no items
matched the attributes for that group.
Customer Aggregation
When aggregating customers, our primary focus was grouping by customer location, which is
indicated by the zip code. However, grouping by entire zip code resulted in thousands of
aggregated groups. The zip code format differs between the U.S. and Canada. In the U.S., the
zip code is made up of 5 digits, and in Canada, the zip code is made up 6 alphanumeric
characters. We decided to use broader aggregation criteria and tried to group customers by zip-
3, the first three characters of the zip code. This still gave us almost a thousand aggregated
groups in the US alone.
In the end, we chose to focus on the first two characters of the zip code, or zip-2. For instance,
a customer located in 30332 would count as one customer in the zip zone 30. We ran a query
10
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
grouping customers by zip-2 and we found a total of 187 two-digit aggregated groups in the
U.S.-Canada region. There are an average of 10 customer locations per group, and a total of
2,650 active locations in the entire region. We used the zip-2 zones and cross-referenced them
with sales to determine the demand of slow-moving items for each region.
Transportation Cost
While we had address information for all warehouses and customers, Sandvik did not have the
specific distances for each customer-warehouse combination. However, we were able to find a
formula that would take in longitudes and latitudes of two zip codes as input and return the
distance between the two.
2
2
1
)
2
sin(
*
)
cos(
*
)
cos(
)
2
sin(
sin
)
69
(
2 b
a
b
a
b
a
ab
lon
lon
lat
lat
lat
lat
D



 
A representative zip code was chosen from each 2-digit zip zone region in order to use this
formula; latitude and longitude information is only available for 5-digit (U.S.) or 6-character
(Canada) zip codes. For instance, the zip zone of 99 is represented by 99501. We then set up a
table with the customer zip codes on one axis and the warehouse zip codes on the other. We
obtained longitudes and latitudes for each zip code and plugged them into the formula to
calculate straight-line distances from the warehouses to the customers.
The value 69 is approximately the number of miles per degree for the latitude of the
continental U.S. It takes long distance calculations into account and corrects for the earth’s
curvature. This formula was suggested by United States Geological Survey. Although the
equation results in a fairly accurate straight-line distance calculation, it underestimates the
actual road distance. To correct this, we multiply Dab by a circuitry factor, p=1.14 (Simchi-Levi,
2002). For example, a manufacturer may need to ship a single fully loaded truck from Chicago,
IL to Boston, MA. To calculate transportation cost for this shipment, we need geographical data.
The longitude and latitude of Chicago are -87.65 and 41.85 respectively. For Boston, they are
-71.06 and 42.36 respectively. Applying the above equation leads to a straight-line distance
from Chicago to Boston of 855 miles.
855
)
2
)
06
.
71
(
)
65
.
87
(
sin(
*
)
36
.
42
cos(
*
)
85
.
41
cos(
)
2
36
.
42
85
.
41
sin(
sin
)
69
(
2 2
2
1







Multiplying this number by the circuitry factor, 1.14, leads to an estimate of the actual road
distance equal to 975 miles. Using Google Maps, we compared our calculated distance to the
actual one of 984, which indicates a percent error of about 1%.
Sandvik has contracts with Manitoulin for delivery in Canada and Con-Way in the U.S. In order
to determine transportation costs, we focused on the total cost per mile and total cost per ton
for both the U.S. and Canada. Generally speaking, U.S. transportation costs tend to be higher
11
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
than those in Canada. The differences in pricing policy towards clients also tend to differ from
company to company. A client with a long-term contract may enjoy a lower per-mile price than
a client with a short-term contract with either company. Differences in the business models of
shipping companies also have a significant impact on the prices they charge. However, the
transportation quotes used in the model do not take into account any discounts. In addition,
we needed an acceptable estimate for transportation rates that could be used in both the U.S.
and Canada. Unfortunately, we were unable to get reliable quotes from Sandvik’s dedicated
shippers. As a result, we used the recorded averages for freight costs from 1990 and 1998 to
extrapolate a rate of $0.28 per ton-mile to estimate current shipping costs (Ergun, 2008).
Demand Calculation
After aggregating our customers and items, the model still needed demand for every item
group for every customer zone. We used the sales history to calculate the average number of
each item group that was sold to each customer zone. This gave us the demand for each item
group over the 5 year period. For example, in the last 5 years, customer zone 02 has placed 2
orders for items in item group 113. One order was for 2 items and the other was for 6. This
gives us an average of 4 items over 5 years. However, we wanted to run the model on a per
year basis, so we had to divide each demand by 5 to get demand per year. So in our example
the demand per year is 4/5 or 0.8. As a final product we have a single average demand per
aggregated item group per customer zone.
Figure 2. Demand Density Map
12
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
Figure 2 shows the average demand per zip-2 region. The highest concentrations of demand are
located on the east and west coasts. It is also important to note that while the demands in the
west are higher per region, the regions are also much larger than those on the east coast, so
they naturally will have more demand per region. However, we can deduce that regions in the
east have higher demand densities because they have relatively high demands in smaller
geographic areas. This will be an important point to remember in order to understand the
results of our model.
VI. Model Formulation
The formulation below is exclusively based on the research paper “Integrated inventory and
transportation mode selection: A service parts logistics system” by Mehmet and Kutanoglu
(2007), as referenced in the “Works Cited”. The original formulations are shown in the appendix.
Many adjustments have been made to suit our specific problem.
In order to formulate our model we have made several assumptions. Several of these
assumptions are based on the nature of the demand. The assumptions are as follows:
 The facilities use a continuous review policy with a one-to-one replenishment policy,
(S-1, S).
 Demand follows a Poisson distribution, which is typical for low-demand systems.
 A part’s demand can be met by more than one warehouse.
 Target service levels are determined before solving the model.
 Warehouse delivery capabilities are known.
 The model assumes that unfulfilled demand is lost sales
In general, our formulation is a mixed-integer mathematical program that minimizes the total
net costs of Sandvik’s warehouse network. The function also adheres to certain constraints. In
order to show how the model is developed, we first look at the non-linear formulation of the
model. Then we show how we linearize the model, followed by the final complete model we
used. To see the final model that we used, skip to the “Final Formulation” (p. 18).
Before the details of the model are explained, we must first identify the formal sets and indices
which will be used throughout the rest of the formulation.
Sets and indices:
I Set of warehouses, indexed by i = 1, 2, 3….I
J Set of customers, indexed by j = 1, 2…J
K Set of products, indexed by k = 1, 2…K
L Set of stock levels, indexed by l =1, 2…L
Now that sets and indices are defined, we will identify the parameters for this model.
13
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
Demand and Service Parameters:
ik
 Mean lead time demand rate that warehouse i receives for product k
jk
d Mean demand rate of customer j for product k
k
d Total demand rate for product k; the sum of all customer demand for product k
k
 Target service level percentage for customer, percentage of demand that can be met by
warehouse k given a lead time of three days
ik
t Replenishment lead time for product k at warehouse i
kl
b Fill rate of product k given stock level l; the percentage of demand that can be filled
from on-hand inventory
ij
 Takes on a value of 1 if facility i can deliver to customer j within the determined service
time window, 0 otherwise
Cost Parameters:
h Equals 0.07. Used to calculate the holding cost, which is 7% of inventory value
k
NumItems Number of items in aggregated product group k
k
Value Average value of the items in aggregated product group k
j
NumCust Number of customers in aggregated customer group j
ijk
c Transportation cost for item k from warehouse i to customer j
l stock level, l = {0,1,2,3,4,5}
Decision Variables:
ijk
X Long-run fraction of item k’s demand at demand customer point j that is
allocated to warehouse i
ikl
W 1 if stock level l is selected for product k at warehouse i, 0 otherwise
Now that our parameters and variables have been formally defined, we can effectively explain
the formulation. The goal of our mathematical program is to reduce costs; therefore, the
objective function includes the following costs:
Minimize

 
i k j
ijk
jk
ijk
j
k
i k l
ikl
k
k X
d
c
NumCust
NumItems
W
Value
NumItems
l
h )
)(
(
)
)(
)(
)(
( (A0)
The objective function accounts for the many effects of aggregation. Since our model deals with
aggregated items we cannot treat items in the model as if they are individual items. The model
calculates the total cost for storing an entire aggregated item at a certain stock level.
14
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
When we multiply the stock level l for an item group by k
NumItems and k
Value , we calculate
the total cost for holding each individual item within that item group. This calculation will then
give us the total holding cost for keeping an aggregated item group at a certain stock level. The
final variable of the holding cost calculation is ikl
W . The objective function will calculate the
holding cost for a product at every possible stock level. ikl
W will “select” which stock level is
actually used. If the model does not select a stock level, then ikl
W = 0; therefore, the cost is zero.
If the stock is selected by the model, then ikl
W = 1. The cost for maintaining that stock level is
then added to the objective function.
For example, let’s say an item group has 25 items in it, 25

k
NumItems , with an average value
of $100, k
Value = 100. If the model returns that this group should have a stock level of 2 (so
1
2 
ik
W ), then the objective function will calculate the holding cost as follows. The stock level
of 2 will be multiplied by the number of items in the group; this gives us the total quantity
stored, which is 50 items. This value is then multiplied by the average value of the items in this
group, which gives us $5000. To calculate the total holding cost for these items, we simply
multiply the total value of the inventory ($5000) by 7%. This value equals $350. Since this stock
level has been selected by the model, the total is then multiplied by one.
350
$
)
1
)(
100
)($
25
)(
2
%)(
7
( 
Items
Stock
If this stock level had not been selected ( 0
2 
ik
W ), the total would have been multiplied by 0.
0
$
)
0
)(
100
)($
25
)(
2
%)(
7
( 
Items
Stock
Likewise, in the transportation section of the object function, we added two new variables: the
variable already introduced, k
NumItems , and j
NumCust . We multiply both of these values into
the transportation cost calculation in order to account for the cost of shipping every item in an
item group to every customer in a customer group. Again, since our customers and products
are aggregated, we must add in these variables to show the total cost.
Let’s look at an example. Say that a product group has 20 items, 20

k
NumItems , and that the
items in this group are being shipped to a customer group with 40 customers, j
NumCust = 40.
Also, let us assume that the transportation cost for this example, factoring in distance and
weight, is $250. Finally let us also assume that the warehouse shipping these items is
responsible for 50% of this customer’s demand for this particular product group, 5
.

ijk
X . The
total yearly cost to ship these items would equal the number of items shipped times the
number of customers these items are shipped to. This calculation gives us a total number of
800 shipments. We then multiply this by the actual percentage of orders the warehouse fills,
which gives us 400 shipments. To find the total cost, we multiply the number of shipments by
the cost to ship an item, giving us a final yearly transportation cost of $100,000.
15
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
000
,
100
$
)
250
)($
5
.
0
)(
40
)(
20
( 
Customers
Items
Subject To
(A1) Ensures that demand at each customer point is met for each item. When we sum together
all the long run fraction-of-demand variables, ijk
X , the result is 1. This means that all of the
demand has been fulfilled by some warehouse.
K
k
J
j
X
i
ijk 




 1 (A1)
(A2) Ensures that if demand for product k from customer j is allocated to warehouse i then
warehouse i will have a stock level greater than zero for that product k.
k
j
i
W
X
l
ikl
ijk ,
,
, 
  (A2)
(A3) This constraint forces a warehouse to pick only one stock level.
k
i
W
l
ikl ,
1

 (A3)
(A4) This constraint calculates the mean lead time demand based on a given lead time, ik
t , the
demand rate for a product at a customer, and the allocation variable.
 

j
ijk
jk
k
ik k
i
X
d
t ,
,
 (A4)
(A5) The total demand for product k is equal to the sum of the demands from each customer j
for product k.
k
d
d
j
jk
k 
  , (A5)
The method we used calculated the fill rate, kl
b , using a table lookup process. We calculated fill
rates for a product given its lead time demand, ik
 , and the stock level l using the Poisson
cumulative distribution. The Poisson distribution is used to determine the number of events
that will happen within a certain period of time. In this problem we want to determine the
probability of a product k being ordered within product k’s lead time. We use this probability to
determine which stock level can meet demand and fulfill the service level requirements. The
formulation of this calculation is shown below.
k
i
r
b ik
L
r
r
ik
kl ,
,
!
/
))
(exp(
1
0


 




16
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
We then created a table containing many of the possible values that the fill rate could equal
given a lead time demand and stock level. A portion of this table is shown below.
Stock Level
Lead Time Demand 1 2 3 4 5
0.3 0.740818 0.963064 0.996401 0.999734 0.999984
0.33 0.718924 0.956169 0.995314 0.99962 0.999975
0.36 0.697676 0.94884 0.994049 0.999474 0.999963
0.39 0.677057 0.941109 0.992599 0.999293 0.999946
0.42 0.657047 0.933006 0.990958 0.999071 0.999923
0.45 0.637628 0.924561 0.989121 0.998805 0.999894
0.48 0.618783 0.915799 0.987083 0.998489 0.999857
0.51 0.600496 0.906748 0.984843 0.998119 0.999812
0.54 0.582748 0.897432 0.982397 0.997691 0.999755
0.57 0.565525 0.887875 0.979745 0.9972 0.999687
0.6 0.548812 0.878099 0.976885 0.996642 0.999606
Table 1. Fill Rates by Stock Level and Lead Time Demand
The search function we created is provided with a lead time demand for a product at a
warehouse. The search function then scans through the lead time demand column until it finds
two values that the value provided is between. It then returns the fill rates, kl
b , for the lead
time demand lower than the actual lead time demand for all the possible stock levels.
For example, a product has a lead time demand of ik
 = 0.5. The search function searches
through the lead time demand column and sees that 0.5 is between 0.48 and 0.51. The function
then returns the fill rates associated with .48, which are {.618, .915, .987, .998, .999).
Based on the set of fill rates, the model will select the appropriate stock level needed in order
to ensure that the network is operating at the determined service level. It is important to note
that while we calculated the possible fill rates outside of the model, the model will actually read
in a lead time demand, ik
 , and look up the fill rate, kl
b , associated with that ik
 . The
calculation of kl
b is not independent of the model.
Notice in the table that, as the stock level increases for each lead time demand, ik
 , the fill rate
increases as well. Also notice that as the demand increases for each stock level, the fill rate
decreases. Both of these trends are expected. First if we increase the inventory of a product,
then we also increase the probability of being able to fill demand for that product. Likewise, if
we keep the stock level constant as the demand increases, we should then expect a decrease in
Poisson distribution fill rates
17
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
the probability that we can fill this demand. The graph below shows this relationship for each
stock level.
Figure 3. Fill Rate vs. Lead Time Demand
The following constraints are associated with calculating and restricting the service level:
(A6) Only allows ikl
V to be greater than or equal to zero if product i is stocked at facility k. In
essence, a product cannot have a service level if it is not even in stock at the facility.
l
k
i
W
M
V ikl
ikl ,
,
,
3 
 (A6)
(A7) ikl
V must be greater than or equal to 0.
l
k
i
Vikl ,
,
,
0 
 (A7)
(A8)(A9) The following constraints calculate the service level for the entire network. The right-
hand side of (A8) and (A9) is the actual calculation of the service level for a product k at
warehouse i with stock level l. k
jk d
d / is the percentage of the total demand for a product that
customer j has for product k. This percentage is then multiplied by ijk
X , which gives the
percentage of product k’s demand met by warehouse i. Now that we have the actual amount of
demand that a warehouse is meeting for a product, we multiply this value by the fill rate, ik
b ,
which is the probability that a warehouse will be able to meet the demand of a product at a
certain stock level. By multiplying all these values together we obtain a long term service level
which calculates the percentage of demand that a warehouse is able to meet on a yearly basis.
18
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
 

j
ik
ijk
k
jk
ji
ikl l
k
i
b
X
d
d
V ,
,
,
*
*
)
/
(
( (A8)
 



j
ikl
ik
ijk
k
jk
ji
ikl l
k
i
W
M
b
X
d
d
V ,
,
),
1
(
*
*
)
/
(
( 3
 (A9)
(A10) States that the service level, ln
ik
V , must be greater than the assigned service level for
product k. k
 is the predetermined service level for each product group.
k
V k
i l
ikl 

 ,
 (A10)
(A11) Used to calculate the cost of shipping item k to customer j from warehouse i. The cost is
a function of a product group’s weight and the distance between the warehouse and the
customer. The constant, .2845, is the average estimated rate in dollars to ship a product. The
unit is a ton*mile. The cost calculated here is then used in the objective function to calculate
the transportation cost.
k
j
i
Weights
Dist
c k
ij
ijk ,
,
),
)(
(
2845
. 
 (A11)
(A12) ikl
W is a binary variable.
l
k
i
or
Wikl ,
,
,
1
0 
 (A12)
Final Formulation

 
i k j
ijk
jk
ijk
j
k
i k l
ikl
k
k X
d
c
NumCust
NumItems
W
Value
NumItems
lh )
)(
(
)
)(
( (A0)
K
k
J
j
X
i
ijk 




 1 (A1)
k
j
i
W
X
l
ikl
ijk ,
,
, 
  (A2)
k
i
W
l
ikl ,
1

 (A3)
 

j
ijk
jk
k
ik k
i
X
d
t ,
,
 (A4)
k
d
d
j
jk
k 
  , (A5)
l
k
i
W
M
V ikl
ikl ,
,
,
3 
 (A6)
l
k
i
Vikl ,
,
,
0 
 (A7)
 

j
ik
ijk
k
jk
ji
ikl l
k
i
b
X
d
d
V ,
,
,
*
*
)
/
(
( (A8)
19
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
 



j
ikl
ik
ijk
k
jk
ji
ikl l
k
i
W
M
b
X
d
d
V ,
,
),
1
(
*
*
)
/
(
( 3
 (A9)
k
V k
i l
ikl 

 ,
 (A10)
k
j
i
Weights
Dist
C k
ij
ijk ,
,
),
)(
(
2845
. 
 (A11)
l
k
i
or
Wikl ,
,
,
1
0 
 (A12)
VII. Adjustments While Running the Model
During the actual running and testing of the model we were forced to make several changes
due to the nature of our problem. As shown before, ikl
W is a binary variable that can only take
on a value of 0 or 1. This causes the model to be a mixed-integer linear program. Running the
model with the binary constraint resulted in a very long run time of several days. Our model
had 268,678 constraints and 247,484 variables, with over 6,000 binary variables. For what we
wanted to do, this time constraint was unacceptable. So for all our runs, we decided to relax
the binary constraint and allowed the model to run with ikl
W able to take on values between 0
and 1, inclusively. After this adjustment the runtime of the model was about 4-5 minutes. The
typical output for ikl
W under these conditions is shown below.
Product Warehouse
Stock
Level Wikl
2 55 1 0.654344
2 55 2 0.088767
2 55 3 0.133225
2 55 4 0.123664
2 55 5 0
Table 2. Sample ikl
W Output
The table above shows us the values calculated for ikl
W for a particular product and warehouse.
Notice that each stock level has a ikl
W value associated with it. In order to actually calculate the
specific stock level for this item at this warehouse, we calculated the expected value of the
ikl
W by multiplying the stock level by its ikl
W value. We then rounded to the nearest integer to
finally determine the stock level for a particular product at a warehouse. The calculation is
shown below.
1*(.65) + 2*.08 + 3*.13+4*.12+5*0 =1.72 ≈ 2
The stock level for this particular product-warehouse combination is equal to 2. We applied this
method to all product-warehouse combinations. Using the stock levels determined from this
process, we recalculated the holding cost of the entire warehouse network. The recalculated
holding cost was only an average of 1.8% different from the cost calculated by the relaxed
20
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
linear model. This verifies our method as a reasonable technique to determine the actual stock
levels of an item group at a warehouse. The separate results for the holding costs at multiple
service levels are shown below.
Service Level 0.40 0.45 0.50 0.55 0.60
Original $ 1,458,470 $ 1,549,490 $ 1,648,380 $ 1,751,700 $ 1,865,960
Recalculation $ 1,358,960 $ 1,516,720 $ 1,648,380 $ 1,709,620 $ 1,877,820
Service Level 0.65 0.70 0.75 0.80 0.85
Original $ 1,983,680 $ 2,106,980 $ 2,232,610 $ 2,370,210 $ 2,503,660
Recalculation $ 2,078,580 $ 2,109,450 $ 2,230,600 $ 2,329,260 $ 2,463,520
Service Level 0.90 0.95 1.00
Original $ 2,626,640 $ 2,751,220 $ 2,884,300
Recalculation $ 2,620,850 $ 2,831,340 $ 2,884,610
Table 3. Holding Costs
For additional information about the formulation of the model, please reference the Xpress
formulation of our model in the appendix.
VIII. Results
We have run the model for service levels between 40% and 100% in 5% increments. We
obtained the total network holding cost and transportation cost for each service level. In
addition, we obtained the inventory levels for each aggregated item group at each warehouse.
The chart on the following page shows the total costs for all service levels.
21
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
Network Costs
Service
Level 40% 45% 50% 55% 60%
Holding
Cost $1,358,960 $1,516,720 $1,648,380 $1,709,620 $1,877,820
Transport
Cost $192,204 $221,176 $248,398 $278,631 $301,497
Total Cost $1,551,164 $1,737,896 $1,896,778 $1,988,251 $2,179,317
Service
Level 65% 70% 75% 80% 85%
Holding
Cost $2,078,580 $2,109,450 $2,230,600 $2,329,260 $2,463,520
Transport
Cost $325,575 $348,811 $374,107 $390,538 $414,013
Total Cost $2,404,155 $2,458,261 $2,604,707 $2,719,798 $2,877,533
Service
Level 90% 95% 100%
Holding
Cost $2,620,850 $2,831,340 $2,884,610
Transport
Cost $453,730 $497,373 $537,627
Total Cost $3,074,580 $3,328,713 $3,422,237
Table 4. Logistics Costs by Service Level
The costs in the table above clearly show that the holding cost and the transportation cost both
increase as the service level increases. This relationship is intuitive since Sandvik must ensure
that it can meet more customer demand in the allotted time, in order to reach a higher service
level. The only way for Sandvik to do this is to increase its inventory levels at warehouses, which
leads to increased holding costs. Backordering the items will get them delivered to the
customer, but not in the desired time frame. The model assumes that these items are counted
as lost sales. The chart below (Figure 4) highlights the relationship between costs and service
level. In addition, the transportation cost will increase as the service level increases. As the
service level increases, Sandvik is meeting more customer demand, and therefore is shipping
more items, which results in increased transportation costs.
22
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
Figure 4. Sensitivity Analysis
In order to visualize the output, we created maps that show the inventory distribution
throughout the U.S.-Canada region. Below in Figure 5 we show the distribution of inventory for
the 60% service level. Each circle on the chart below represents a warehouse location. The size
of the circle is directly correlated to the total inventory value at the corresponding warehouse.
Figure 5. Inventory Values for Service Level = 60%
23
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
While customers are distributed all throughout the U.S.-Canada region, the map clearly shows
that the inventory is more highly concentrated in the northeast U.S. and in southeast Canada.
One would think that since the customers are distributed fairly evenly throughout the U.S.-
Canada region, the inventory should also be spread evenly. However the items that we are
focusing on have extremely low demand rates. Therefore, if every warehouse held the same
products, then the inventory would greatly exceed the demand, and holding costs would be
much higher. The model determined that it is actually more cost effective to have inventory
centralized; it optimized the network and reduced costs by concentrating the inventory in
fewer locations.
The reason the inventory is located in the northeast is that there is a higher demand in the east
than in the west for both the U.S. and Canada. Since part of our goal is to minimize shipping
costs, the inventory should be concentrated in the regions that have the highest demand. The
model determined that inventory should be located in the east. By storing inventory for
multiple customers at one warehouse location, the network can save on holding costs as well.
Figure 6. Inventory Values for Service Level = 95%
Figure 6 shows the effect of an increased service level on inventory levels and holding costs. It is
easy to see that many of the circles have increased in size, representing the increased amounts
of inventory being held at those warehouses. As previously discussed, this result makes sense.
As the service level for the network increases, the inventory held at each location should also
increase so that Sandvik can meet more of the customer demand.
We are providing Sandvik with the inventory level of an item group at a warehouse location,
which is output from our model. This information is presented in Excel tables that show both
the warehouses and the inventory level for all aggregated item groups at each warehouse
24
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
location. For example, in Table 5 below, item group 111 has an inventory level of two at the
Brier Hill, PA warehouse.
111 112 113 114 121
Brier Hill, PA 2
Olyphant, PA 1 1 1
Narvon, PA 1
Chateauguay, QC
Val d'Or, QC 2
Lively (Sudbury), ON
Timmins, ON
Yellowknife, NT
Creighton, SK
Laval, QC 1 1 1 2
Table 5. Stock Levels for Service Level = 70%
Table 6 below is a sample of the inventory levels when the service level is at 95%. We can see
that the inventory levels for certain item groups at some of the warehouses increased as a
result of the higher service level. For example, the inventory level for item group 111 at Brier
Hill, PA is now three.
111 112 113 114 121
Brier Hill, PA 3 1 1 1
Olyphant, PA 1
Narvon, PA 2
Chateauguay, QC
Val d'Or, QC 3
Lively (Sudbury), ON
Timmins, ON
Yellowknife, NT
Creighton, SK
Laval, QC 1 2 2 2
Table 6. Stock Levels for Service Level = 95%
25
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
Inventory Management Files
Included in this report is a disc that contains the following files:
1. The first document is the “Item Inventory” Excel file. This file includes all the items
we focused on, broken down into the aggregated groups that we imported into the
model. This means all items that have sold less than or equal to 25 times in the past
5 years. The file consists of 75 sheets. The first sheet is a legend which tells how to
read the aggregated item code. Then followed by 74 sheets, each of which lists an
aggregated item group, the group’s attributes (weight, price, and demand), and all
the individual items in that group.
2. The second document is another Excel file titled “Model Results.” This file includes
every warehouse’s stock level for each aggregated item group for each service level
from 40% to 100% (in intervals of 5%). The left side of each sheet will correspond to
the warehouses, and the top row will be the aggregated item group. The stock levels
will have a value from 1 to 5 if the item must be stored in a particular warehouse.
The stock level indicates many of each item group should be kept at a particular
warehouse. If the value in a cell is 3, then 3 of each item in the corresponding item
group should be kept at the corresponding warehouse. Tables 5 and 6 are examples
of the output table.
3. The final file is the “Sandvik - Georgia Tech Senior Design Files.” This file is an Access
file that includes a full list of the inventory we broke down into aggregated groups,
as well as a complete list of unsold items in the past 5 years. This can be used to
determine which items are actually salvageable.
IX. Value
Sandvik’s annual shipping costs are about $1.5 million and their holding costs are estimated to
be 7% of the total inventory value, roughly $4.2 million. Sandvik’s overall logistics costs, which
include fixed costs, are approximately $7 million. The slow-moving items, about $31 million
worth of inventory, incur $2.16 million in holding costs annually. $15.8 million dollars of this
inventory have not been sold in the past five years, rendering it obsolete. If Sandvik were to
remove these items from their inventory, they would save $1.1 million dollars per year in
holding costs, in addition to profiting from the items’ salvage value. When we ran our model on
the remaining $15.1 million of inventory at Sandvik’s current service level of 62%, the inventory
level calculated by the model was greater than Sandvik’s current inventory level. The holding
cost was calculated to be $1.91 million, which is higher than the estimated holding cost of $1.06
million that Sandvik currently incurs annually. However, with the removal of the obsolete items,
Sandvik would still realize an overall savings of $250,000 per year by implementing our
recommendations.
26
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
Sandvik will profit from reduced warehouse costs by eliminating stock. While safety stock is
necessary to avoid stock-outs, the company agreed that items that have not sold in the last 5
years can be considered obsolete and unsellable. In other words, the company does not need
to keep any of these items on hand. Freeing up the currently underutilized capital tied up in
obsolete items would improve Sandvik’s bottom line and profits. This inventory also takes up
warehouse space that could be used for more profitable items. Additional value can be realized
from the items being placed in warehouses closer to the customers demanding them. The new
network design and its shorter shipping distances will result in reduced shipping costs and
reduced shipping times, thereby improving Sandvik’s service level. Finally, the items that are
considered unsellable still have salvage value.
We found that $15.8 million worth of inventory did not sell at all in the last 5 years. We
recommend that Sandvik eliminate these excess items and salvage them. Unfortunately,
incomplete data and inconsistent policies prevented us from calculating the exact salvage value
of the unsold items. The primary material is steel, but this information is useless without the
weights and compositions of these items. We did not have weight data for many of the items
and did not have composition data for any of them. We found rates for steel that were price
per ton, but were unable to convert these values into raw dollars because of incomplete data.
Although we were able to determine that mixed salvage steel has a non-negative salvage value
(Burgoyne, 2003). In addition, Sandvik informed us that warehouses salvage extra items
individually and that there are no overarching policies regarding salvage. As a result, different
warehouses employ different companies at different costs or rates of return. Despite the
difficulties with coming up with the exact monetary value of doing so, we can conclude that
Sandvik will profit from salvaging their excess inventory.
X. Sources of Error
There are some possible errors with our results that must be discussed thoroughly. The main
concern with our results is our calculated cost values. The model that we formulated to address
Sandvik’s inventory problem consistently returned higher costs for the network than we
expected. We hypothesize that some of this increase in costs is due to the nature of our data
aggregation.
With aggregation, we grouped similar items and customers. As we explained earlier, we
grouped items with similar demand, weight, and price. Because our items are grouped, when
the model states that an item group should be at a certain stock level, this means that every
item in that group must be stored at that stock level regardless of the actual demand of that
product. Also, when we ship an item group to a customer group, every item in that group is
calculated as being shipped to every customer.
For example, with inventory, if the model says that we should keep a stock level of 2 for
product group 111 at the Brier-Hill warehouse, then we will be keeping a stock level quantity of
27
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
2 for each individual product in the group at that warehouse. The number of items in our
defined item groups ranges from 1 to as many as 917.
2*(917) = 1,834 items at Brier Hill
Likewise, for transportation, if the model decides to ship product group 111 to customer group
01, the model calculates the cost for shipping each individual product in the group 111 to each
individual customer in the group 01.
(Number of Items in Group 111)*(Number of Customers in Group 01)
(917 Items)(7 Customers) = 6,419 Shipments
The model accurately calculates costs based on the results, but due to aggregation using every
single item and customer in its calculations at the same time, the costs may be overstated. The
only way that we could correct this error would be to actually treat every item and customer
individually; however, this is impractical because the model would become extremely
cumbersome and unsolvable.
An additional source of error arises from the fact that Sandvik’s service level is calculated for
total inventory and not specifically for the group of items we are dealing with. This makes an
accurate comparison nearly impossible. For example, Sandvik’s current service level is
calculated as being 62% overall, but this includes both fast and slow-moving inventory. When
we ran our model at a 62% service level, this service level was only for slow-moving items.
Since we are not comparing the same type of item, we cannot necessarily compare Sandvik’s
service level to our model’s service level.
28
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
Works Cited
1. Kutanoglu, Erhan and Divi Lohiya. “Integrated inventory and transportation mode selection:
A service parts logistics system.” ScienceDirect. 21 February 2007: 665-683.
2. Candas, Mehmet F. and Erhan Kutanoglu. “Benefits of considering inventory in service parts
logistics network design problems with time-based service constraints.” IIE Transactions.
01 February 2007: 159-176.
3. Robeson, James F. and WilliamC. Copacino. “The Logistics Handbook.” New York, NY: The
Free Press, 1994.
4. Simchi-Levi, David et al. “Designing and Managing the Supply Chain.” McGraw-Hill Higher
Education, 2002.
5. Burgoyne, Dan. “Construction & Demolition (C&D) Waste Diversion in California.” State of
California, Department of General Services.
<<http://www.ciwmb.ca.gov/ConDemo/CaseStudies/DGSDiversion.pdf>>.
6. Ergun, Ozlem. "Transportation Costs and Rates." Online PowerPoint. 11 Oct 2008.
<<t-square.gatech.edu>>.
29
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
Appendix A
Xpress Code:
model Sandvik
optionsnoimplicit
uses"mmxprs","mmive","mmodbc"
parameters
ALPHA = .60 !customerservice level
end-parameters
! declarationssection
declarations
NUMCUSTOMERS = 187
NUMWAREHOUSES = 17
NUMPRODUCTS = 74
NUMSTOCKLEVELS = 5
I = 1..NUMWAREHOUSES
J = 1..NUMCUSTOMERS
K = 1..NUMPRODUCTS
L = 1..NUMSTOCKLEVELS
dummy1 = 76 ! Numberof rowsin fillratetable
dummy2 = 6 ! Numberof columnsusedinfillratetable
dum1 = 1..dummy1
dum2 = 1..dummy2
X : array(I,J,K) of mpvar !DV* 0<X<1, demandallocationdecisionvariable
W : array(I,K,L) of mpvar !DV* 1 or 0 if a productas a stocklevel of L at a warehouse.
V : array(I,K,L) of mpvar !DV?* Service Level
C : array(I,J,K) of real !Costfor a product k to travel froma warehouse i toa customerj
SIGMA : array(J,I) of integer ! 1 if warehouse i canmeetdemandof customerj
B : array(K,L) of real !fill rate
Dk : array(K) of real !Total demandforproduct i byall customers
LAMBDA : array(I,K) of linctr !Leadtime demandof product k at warehouse i
Objective :linctr
M3 : linctr
HoldingCost:linctr
TransportCost:linctr
30
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
x : array(I,J) of mpvar
LeadTimeTable :array(K) of real !Table of leadtimesforeachproductk
ValuesTable :array(K) of real !Table of average valuesforeachproduct k
WeightsTable :array(K) of real !Table of average weightsforeachproductk
D : array(J,K) of real !Table of demandforproduct i from customerj
Distances: array(J,I) of real !Table of distancesfromwarehouse i tocustomerj
FillRateTable:array(dum1,dum2) of real !Table of fill ratesgivenastock level andleadtime
demand
NumberItems:array(K) of real !Table of the numberof itemsinaggregateditemgroup
k
NumCustomers:array(J) of integer !Numberof customerisaggregatedcustomergroupk
end-declarations
!The followingimportsall the excel tablesintoxpress
initializationsfrom"mmodbc.odbc:four.xls"
ValuesTable as'Value74'
WeightsTable as'Tons2'
LeadTimeTable as'Years'
FillRateTableas'fillrate2'
D as 'Udemand2'
Distancesas 'Distances'
SIGMA as 'Sigma'
NumberItemsas'NumOfItems2'
NumCustomersas'numcust4'
end-initializations
forall (i inI, k inK, l in L)
W(i,k,l) is_binary
!W must be between0and1
forall(i inI,kinK,l inL)
W(i,k,l) <=1
forall(i inI,kinK,l inL)
W(i,k,l) >=0
forall(i inI,kin K)
sum(l inL) W(i,k,l)<=1
!Calculatescostas costper ton-mile
forall (i inI, j in J,k in K)
C(i,j,k):=.2845*Distances(j,i)*WeightsTable(k)
31
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
!Solvesfortotal demandof a product
forall (kinK)
Dk(k):=sum(j inJ) D(j,k)
!DemandAllocationvariable mustbe lessthan1and greaterthan 0
forall(i inI,j inJ,kinK)
X(i,j,k) <=1
forall(i inI,j inJ,kinK)
X(i,j,k) >=0
!Demandallocationforeachwarehouse i customerj andproduct kmust sumto 1
forall(j inJ,kin K)
sum(i inI) X(i,j,k) =1
!If demandisallocatedtoa warehouse fora certainproduct,thenthe stock level musthave avalue
forall(i inI,j in J,k in K)
X(i,j,k) <=sum(l inL) W(i,k,l)
! Each service level mustbe greaterthan0
forall (i inI, k inK, l in L)
V(i,k,l) >=0
!Calculatesthe leadtime demand:The demandexpectedtooccur fora productduringitsleadtime from
suppliers
forall (i inI, k inK)
LAMBDA(i,k):=LeadTimeTable(k)*sum(j inJ) (D(j,k)*X(i,j,k))
!Extracts fillratesforstocklevelsgivenalambda
forall(aindum1,i inI, k1 inK, l inL)
if FillRateTable(a,1).sol <=LAMBDA(i,k1).solthen
if FillRateTable(a+1,1).sol >=LAMBDA(i,k1).sol then
B(a+1,l):=FillRateTable(a+1,l+1)
if FillRateTable(a+2,1).sol >=LAMBDA(i,k1).solthen
B(a+2,l):=FillRateTable(a+2,l+1)
if FillRateTable(a+3,1).sol >=LAMBDA(i,k1).solthen
B(a+3,l):=FillRateTable(a+3,l+1)
. . .
. . .
. . .
. . .
if FillRateTable(a+74,1).sol>=LAMBDA(i,k1).sol then
B(k1,l):=FillRateTable(a+74,l+1)
end-if
end-if
32
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
end-if
. . .
. . .
end-if
forall(i inI,k inK, l in L)
M3 := sum(j inJ) SIGMA(j,i)*D(j,k)*B(k,l)/Dk(k)
forall (i inI, k inK, l in L)
V(i,k,l) <=M3.sol*W(i,k,l)
!Calculatesthe service level forall product,warehousesandcustomers
forall (i inI, k inK, l in L)
V(i,k,l) <=sum(j inJ) ((SIGMA(j,i)*B(k,l)*D(j,k)*X(i,j,k))/Dk(k))
forall (i inI, k inK, l in L)
V(i,k,l)>=sum(j inJ) ((SIGMA(j,i)*D(j,k)*X(i,j,k)*B(k,l))/Dk(k)) - M3.sol*(1-W(i,k,l))
! For all productsthe service level mustsumtoat leastalphaforeach warehouse andstocklevel
forall (kinK)
sum(i inI, l in L) V(i,k,l) >=ALPHA
!Calculatesthe total holdingcost
HoldingCost:=(sum(i inI,kinK,l inL) (l*.07*NumberItems(k)*ValuesTable(k)*W(i,k,l)))
!Calculatesthe total transportationcost
TransportCost:=sum(i in I,j inJ,kinK) (NumberItems(k)*C(i,j,k)*D(j,k)*NumCustomers(j)*X(i,j,k))
!Objective functionintermsof holdingandtransportationcost
Objective :=(HoldingCost)+(TransportCost)
!Invoke the Optimizertosolve problemwithobjectivefunctionObjective
minimize(Objective)
writeln("Beginrunningmodel")
writeln(" Total Cost: $",Objective.sol)
writeln(" HoldingCost:$", HoldingCost.sol)
writeln(" TransportCost:$", TransportCost.sol)
writeln("Endrunningmodel")
end-model
33
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
Appendix B
The formulations below are the original models that our final model was based on. They are
exclusively based on the research paper “Integrated inventory and transportation mode
selection: A service parts logistics system” by Mehmet and Kutanoglu (2007), as referenced in
the “Works Cited”.
In order to formulate our model we have made several assumptions. Several of these
assumptions are based on the nature of the demand. The assumptions are as follows:
 The facilities use a continuous review policy with a one-to-one replenishment policy,
(S-1, S).
 Demand follows a Poisson distribution, which is typical for low demand systems.
 A part’s demand can be met by more than one warehouse.
 Target service levels are determined before solving the model.
 Warehouse delivery capabilities are known.
In general, our formulation is a mixed-integer mathematical program that minimizes the total
net costs of Sandvik’s warehouse network. The function also adheres to certain constraints. In
order to show how the model is developed, we will first look at the non-linear formulation of
the model. Then we show how we linearize the model, followed by the final complete model
we used. To see the final model that we used, skip to the “Complete Linearized Model
Formulation” (p. 41).
Before the details of the model are explained, we must first identify the formal sets and indices
which will be used throughout the rest of the formulation.
Sets and indices:
I Set of warehouses, indexed by i = 1, 2, 3….I
J Set of customers, indexed by j = 1, 2…J
K Set of products, indexed by k = 1, 2…K
L Set of stock levels, indexed by l =1, 2…L
Now that sets and indices are defined, we will identify the parameters for this model. One of
the main parameters needed for this type of problem is the demand rate. Since we are dealing
with rarely demanded service parts, we can assume, based on previous studies, that the
demand follows a Poisson distribution. Because of this assumption, we call the mean demand
rate  . Depending on the indices attached to a  , we allow for creative representation of the
mean demand. Next, we create a service level parameter,  , which can take on percentage
values between 0 and 100%.
34
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
Demand and Service Parameters:
ik
 Mean lead time demand rate that warehouse i receives for product k
jk
d Mean demand rate of customer j for product k
k
d Total demand rate for product k; the sum of all customer demand for product k
j
 Target service level percentage for customer j
ik
t Replenishment lead time for product k at warehouse i
ij
 Takes on a value of 1 if facility i can deliver to customer j within determined
service time window, 0 otherwise
Cost Parameters:
h Standard holding cost percentage applied to the value of inventory
k
v Dollar value of item k
ijk
c Transportation cost for item k from warehouse i to customer j
i
f Fixed cost associated with operating a warehouse
Decision Variables:
ik
S Inventory level of base stock for item k at facility i
ijk
X Long-run fraction of part k’s demand at demand customer point j allocated to
warehouse i
ik
 Long-run fill rate of facility i for product k
i
Y Takes on a value of 1 if warehouse is open, 0 if otherwise
Now that our parameters and variables have been formally defined, we can effectively explain
the formulation. The goal of our mathematical program is to reduce costs; therefore, the
objective function includes the following costs:
Minimize i
i
i
i k j
ijk
jk
ijk
i k
ik
k Y
f
X
d
c
S
hv 

 

)
( (N0)
Holding cost, the first part of the objective, is the cost of storing items at each warehouse. In
our model, it is simply calculated as the holding cost times the stock level times the dollar value
of the item. The second part expresses transportation costs as a function of the cost of shipping
items from the warehouse to the customer times the demand rate, jk
d , and the allocation
variable, ijk
X . The last expression represents the fixed cost associated with using a warehouse.
In addition, the objective function will be limited by the following primary constraints:
35
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
(N1) The following constraint defines the fill rate variable. It assumes a Poisson distribution with
demand ik
 and is calculated from the cumulative distribution function of the Poisson. The fill
rate is the probability that the demand can be met from stock on hand. The probability can be
modeled by the Poisson distribution because the demand is relatively infrequent.

)
,
( ik
ik
ik S

 k
i
r
ik
S
r
ik
ik
,
,
!
/
))
(exp(
1
0






 (N1)
(N2) This constraint ensures that the appropriate service level for each customer is met. This
constraint depends not only on j
 , but also on the fill rate variable ik
 . The fill rate is the
percentage of demand that a warehouse is able to meet.
 

i j
j
k
ik
ijk
jk
ij k
d
X
d ,
)
/(
)
( 

 (N2)
(N3) When we sum together all the long run fraction-of-demand variables, ijk
X , it makes sense
that the total should be equal to 1. This indicates that all of the demand has been fulfilled by
some warehouse.
k
j
X
I
i
ijk ,
1



(N3)
(N4) When a warehouse is not open, meaning i
Y takes on a value of zero, no demand should be
allocated to that particular warehouse. Otherwise, ijk
X may take on any values up to 1.
k
i
Y
X i
ijk ,
, 
 (N4)
(N5) For some stock level L, where L is the maximum capacity at the largest warehouse, the
base stock level cannot exceed that maximum capacity.
k
i
LY
S i
ik ,
, 
 (N5)
(N6) This constraint calculates the mean lead time demand based on a given lead time, ik
t , the
demand rate for a product at a customer, and the allocation variable.
 

j
ijk
jk
ik
ik k
i
X
d
t ,
,
 (N6)
(N7) We define the allocation variable, ijk
X , as a number between 0 and 1.
K
k
J
j
I
i
Xijk 






 ,
,
,
1
0 (N7)
(N8) We define i
Y , the warehouse open/close variable as binary. 1 if open, 0 otherwise.
i
or
Yi 
 ,
1
0 (N8)
(N9) The stock level, ik
S , is defined as an integer value with the maximum level being L.
36
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
k
i
L
Sik ,
},
,...,
2
,
1
,
0
{ 
 (N9)
Below is the complete formulation:
Minimize k
i
i
i k j
ijk
jk
ijk
i k
ik
k Y
f
X
d
c
S
hv 

 

)
( (N0)
Subject To

)
,
( ik
ik
ik S
d
 k
i
r
ik
S
r
ik
ik
,
,
!
/
))
(exp(
1
0






 (N1)
 

i j
j
i
ik
ijk
jk
ij k
d
X
d ,
)
/(
)
( 

 (N2)
k
j
X
I
i
ijk ,
1



(N3)
k
i
Y
X i
ijk ,
, 
 (N4)
k
i
LY
S i
ik ,
, 
 (N5)
 

j
ijk
jk
ik
ik k
i
X
d
t
d ,
, (N6)
K
k
J
j
I
i
Xijk 






 ,
,
,
1
0 (N7)
i
or
Yi 
 ,
1
0 (N8)
k
i
L
Sik ,
},
,...,
2
,
1
,
0
{ 
 (N9)
The above model represents a non-linear, mixed integer mathematical program. Non-linear
mathematical programs are more difficult and time consuming to solve than their linear
counterparts. Therefore, we need to linearize the constraint expressions. In constraint (N2)
above, decision variables ijk
X and ik
 are multiplied together. This represents a non-linear
relationship. Also ik
 is determined by the cumulative Poisson distribution. This is not a linear
formulation. The next section shows the linearized formulation of this programming model.
LinearizedModel Formulation
Minimize i
i
i
i k j
ijk
jk
ijk
i k l
ikl
ik Y
f
X
d
c
W
lh 

 
 (L0)
(L0) The only change to the objective function from the original formulation is in the calculation
of the holding costs. The model will now select a level l from a set of possible stock levels, ik
S .
The stock level l will only be chosen at facility i for product k if 1

ikl
W . Below we show how we
determine the value of ikl
W .
37
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
The mathematical program will now iterate though a set of stock levels. The constraints below
will determine when 1

ikl
W , which will choose the appropriate stock level l. The stock level l is
then multiplied by the holding cost for item k.
Subject To
(L1) Ensures that demand at each customer point is met for each item. When we sum together
all the long run fraction-of-demand variables, ijk
X , the result is 1. This means that all of the
demand has been fulfilled by some warehouse.
K
k
J
j
X
i
ijk 




 1 (L1)
(L2) Ensures that if demand for product k from customer j is allocated to warehouse i then
warehouse i will have a stock level greater than zero for that product k.
k
j
i
W
X
l
ikl
ijk ,
,
, 
  (L2)
(L3) If warehouse i is open, then 1

i
Y , 0

i
Y otherwise. This constraint states that if
0

i
Y then ikl
W must take on a value of 0 for the stock level l of item k at warehouse i. If
1

i
Y then the stock level i can equal a single value from the set L.
k
i
Y
W i
l
ikl ,


 (L3)
(L4) This formulation is discussed in the non-linear formulation. It determines the lead time
demand rate.
 

j
ijk
jk
ik
ik k
i
X
d
t ,
,
)
(
 (L4)
(L5) The total demand for product i is equal to the sum of demand from each customer j for
product i.
k
d
d
j
jk
k 
  , (L5)
(L6)(L7)(L8)(L9) These constraints deal with approximating the fill rate. In the original
formulation the fill rate is determined by the Poisson cumulative distribution with the
parameter equal to the mean demand.

)
,
( ik
ik
ik S
d
 k
i
r
ik
S
r
ik
ik
,
,
!
/
))
(exp(
1
0






 (N1)
In order to linearize the model we must approximate the Poisson distribution. To do this we
created a step function that will break the Poisson distribution into separate intervals. Once we
38
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
have separated the Poisson distribution into intervals we created equations that scan these
intervals in order to calculate the fill rate.
So, given a specific lead time demand, ik
 , that ik
 will lie in a particular interval. Once the
correct interval is found, the model used the midpoint of the interval in order to calculate the
fill rate according to the Poisson distribution. Let’s look at a specific example using Figure 7
below. Given that 40
.

ik
 , the model scanned the intervals until it has found the interval that
contains the value of 40
.

ik
 . Once that interval is found, the model will use the midpoint of
that interval in order to approximate the fill rate as shown in the graph below. So instead of
using 40
.

ik
 to calculate ln
k
b , the model will use 43
.

ik
 to solve for ln
k
b .
Figure 7. Fill Rate Approximation
Below are the equations that actually perform the interval search. We begin by introducing the
variables and parameters that are used.
ikn
R indicates if function is currently in interval n for facility i for product k takes valueof 0 or
1
kn
a upper boundary of interval n for product k
ikn
Q indicates that ik
 in interval n for facility i and product k, takes value of 0 or 1
39
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
1
M largest possible value of mean lead time demand for part k at facility i
2
M represents upper bound of interval n
(L6) Initializes the variable 0
ik
R
k
i
Rik ,
,
0
0 
 (L6)
(L7)(L8) The following functions perform the search operation and determine if ik
 is in a
certain interval n. The equations either force ikn
R
equal to 0 or 1. If ikn
R
= 0, then ik
 is not in
the interval. If ik
kn
a 

is positive, then equations (L8) will force
1

ikn
R
, which we use to
determine interval containing ik
 . If ik
kn
a 

is negative, equation (L7) forces
0

ikn
R
, indicating
that ik
 is not in the current interval
)
,
( 1 kn
kn a
a  .
n
k
i
R
M
a ikn
ik
kn ,
,
),
1
(
1 


  where k
ik d
t
M 
1 (L7)
n
k
i
R
M
a ikn
ik
kn ,
,
),
(
2 

  where kn
a
M 
2 (L8)
(L9) Indicates if ik
 is within a certain interval )
,
( 1 kn
kn a
a  . If 1
1
, 
 
n
ik
ikn R
R , then ik
 is within
the interval )
,
( 1 kn
kn a
a  . ikn
Q will equal 0 otherwise.
n
k
i
R
R
Q n
ik
ikn
ikn ,
,
,
1
, 

  (L9)
Using the interval scanning process above, We can now calculate the service level. First we
introduce new variables and parameters.
ln
ik
V service level satisfied at facility i for part k
ln
k
b approximated fill rate for part k stock level l
3
M highest possible service level
(L10) Only allows ln
ik
V to be a value greater than zero if 1

ikn
Q . This ensures that the service
level will be calculated with the current fill rate, as explained above.
n
l
k
i
Q
M
V ikn
ik ,
,
,
,
3
ln 
 (L10)
(L11) Only allows ln
ik
V to be greater than zero if product i is stocked at facility k. Essentially a
product cannot have a service level if it is not even stored at the facility.
n
l
k
i
W
M
V ikl
ik ,
,
,
,
3
ln 
 where ln
3 )
/
( k
k
jk
ij
J
j
b
d
d
M 


 (L11)
40
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
(L12) ln
ik
V must be greater than 0.
n
l
k
i
Vik ,
,
,
,
0
ln 
 (L12)
(L13)(L14) The following equations maximize the value of ln
ik
V . If ikn
Q = ikl
W =1, then the two
functions force the value of ln
ik
V to converge to the same value. ln
ik
V is calculated by multiplying
the maximum possible service level( 3
M ) with ijk
X which is the variable that determines the
long run fraction of demand for product k from customer j met by warehouse i. So given a stock
level l we calculate the maximum service level for each product k stored at warehouse I.
 

j
k
k
ijk
jk
jk
ik n
l
k
i
d
b
X
d
V ,
,
,
),
/(
)
( ln
ln  (L13)
 





j
ikl
ikn
k
k
ijk
jk
jk
ik n
l
k
i
W
M
Q
M
d
b
X
d
V ,
,
,
),
1
(
)
1
(
))
/(
)
(( 3
3
ln
ln  (L14)
(L15) States that the service level, ln
ik
V , must be greater than the assigned service level for all
product k. k
 is the predetermined service level for each product group.
k
V k
i l n
ik 

 ,
ln  (L15)
(L16) ,
,
, ikn
ikl
i Q
W
Y and ikn
R are binary variables.
n
l
k
i
or
R
Q
W
Y ikn
ikn
ikl
i ,
,
,
,
1
0
,
,
, 
 (L16)
Complete Linearized Model Formulation:
Minimize
i
i
i
i k j
ijk
jk
ijk
i k l
ikl
ik Y
f
X
d
c
W
lh 

 
 (L0)
Subject To
K
k
J
j
X
i
ijk 




 1 (L1)
k
j
i
W
X
l
ikl
ijk ,
,
, 
  (L2)
k
i
Y
W i
l
ikl ,


 (L3)
 

j
ijk
jk
ik
ik k
i
X
d
t ,
,
 (L4)
41
This document has been created in the framework of a student design project and the Georgia Institute of
Technology does not officially sanction its content.
k
d
d
j
jk
k 
  , (L5)
k
i
Rik ,
,
0
0 
 (L6)
n
k
i
R
M
a ikn
ik
kn ,
,
),
1
(
1 


  (L7)
n
k
i
R
M
a ikn
ik
kn ,
,
),
(
2 

  (L8)
n
k
i
R
R
Q n
ik
ikn
ikn ,
,
,
1
, 

  (L9)
n
l
k
i
Q
M
V ikn
ik ,
,
,
,
3
ln 
 (L10)
n
l
k
i
W
M
V ikl
ik ,
,
,
,
3
ln 
 (L11)
n
l
k
i
Vik ,
,
,
,
0
ln 
 (L12)
 

j
k
k
ijk
jk
jk
ik n
l
k
i
d
b
X
d
V ,
,
,
),
/(
)
( ln
ln  (L13)
 





j
ikl
ikn
k
k
ijk
jk
jk
ik n
l
k
i
W
M
Q
M
d
b
X
d
V ,
,
,
),
1
(
)
1
(
))
/(
)
[(( 3
3
ln
ln  (L14)
k
V k
i l n
ik 

 ,
ln  (L15)
n
l
k
i
or
R
Q
W
Y ikn
ikn
ikl
i ,
,
,
,
1
0
,
,
, 
 (L16)

More Related Content

Similar to Sandvik Mining And Construction Final Report

Best Practices of Inventory & Warehouse Management at CAIRN INDIA LTD
Best Practices of Inventory & Warehouse Management at CAIRN INDIA LTDBest Practices of Inventory & Warehouse Management at CAIRN INDIA LTD
Best Practices of Inventory & Warehouse Management at CAIRN INDIA LTDHari Shankar
 
Patrick Lillard Resume
Patrick Lillard Resume Patrick Lillard Resume
Patrick Lillard Resume patalillard
 
Patrick lillard resume
Patrick lillard resume Patrick lillard resume
Patrick lillard resume patalillard
 
159913388 krishna-kumar-pandey-jaunpur
159913388 krishna-kumar-pandey-jaunpur159913388 krishna-kumar-pandey-jaunpur
159913388 krishna-kumar-pandey-jaunpurhomeworkping7
 
Supply Chain Management ● The supply chain is the sequence.docx
Supply Chain Management ● The supply chain is the sequence.docxSupply Chain Management ● The supply chain is the sequence.docx
Supply Chain Management ● The supply chain is the sequence.docxcalvins9
 
Da Tp 1 Desarrollo Y AdquisicióN De Software
Da Tp 1   Desarrollo Y AdquisicióN De SoftwareDa Tp 1   Desarrollo Y AdquisicióN De Software
Da Tp 1 Desarrollo Y AdquisicióN De Softwareguestdc453b
 
HIM360 Assignment RubricsAssignment 1 Project Scope and
HIM360 Assignment RubricsAssignment 1 Project Scope and HIM360 Assignment RubricsAssignment 1 Project Scope and
HIM360 Assignment RubricsAssignment 1 Project Scope and SusanaFurman449
 
Presentation with Jim Prescott of Sonoco Products on S&OP at CSCMP in San Ant...
Presentation with Jim Prescott of Sonoco Products on S&OP at CSCMP in San Ant...Presentation with Jim Prescott of Sonoco Products on S&OP at CSCMP in San Ant...
Presentation with Jim Prescott of Sonoco Products on S&OP at CSCMP in San Ant...Lora Cecere
 
Report on Business Plan on UNISTORE, a Retail Superstore [Elegant (VII)]
Report on Business Plan on UNISTORE, a Retail Superstore [Elegant (VII)]Report on Business Plan on UNISTORE, a Retail Superstore [Elegant (VII)]
Report on Business Plan on UNISTORE, a Retail Superstore [Elegant (VII)]Md. Abdur Rakib
 
Supply Chain Analytics with Simulation
Supply Chain Analytics with SimulationSupply Chain Analytics with Simulation
Supply Chain Analytics with SimulationProModel Corporation
 
Supply Chain Analytics with Simulation
Supply Chain Analytics with SimulationSupply Chain Analytics with Simulation
Supply Chain Analytics with SimulationSteve Haekler
 
To prepare for this Assignment· Review this week’s Learning Res.docx
To prepare for this Assignment· Review this week’s Learning Res.docxTo prepare for this Assignment· Review this week’s Learning Res.docx
To prepare for this Assignment· Review this week’s Learning Res.docxjuliennehar
 
Cold Chain, Temperature Controlled Supply Chain
Cold Chain, Temperature Controlled Supply ChainCold Chain, Temperature Controlled Supply Chain
Cold Chain, Temperature Controlled Supply ChainAjjay Kumar Gupta
 
Scottish Textile & Leather Association Sharing Operational Excellence present...
Scottish Textile & Leather Association Sharing Operational Excellence present...Scottish Textile & Leather Association Sharing Operational Excellence present...
Scottish Textile & Leather Association Sharing Operational Excellence present...jakistla
 
Patrick lillard resume1
Patrick lillard resume1 Patrick lillard resume1
Patrick lillard resume1 patalillard
 

Similar to Sandvik Mining And Construction Final Report (20)

Best Practices of Inventory & Warehouse Management at CAIRN INDIA LTD
Best Practices of Inventory & Warehouse Management at CAIRN INDIA LTDBest Practices of Inventory & Warehouse Management at CAIRN INDIA LTD
Best Practices of Inventory & Warehouse Management at CAIRN INDIA LTD
 
CLW Pitch-VLinkedIn-20160328
CLW Pitch-VLinkedIn-20160328CLW Pitch-VLinkedIn-20160328
CLW Pitch-VLinkedIn-20160328
 
Patrick Lillard Resume
Patrick Lillard Resume Patrick Lillard Resume
Patrick Lillard Resume
 
Patrick lillard resume
Patrick lillard resume Patrick lillard resume
Patrick lillard resume
 
Cascades mar13pres
Cascades mar13presCascades mar13pres
Cascades mar13pres
 
159913388 krishna-kumar-pandey-jaunpur
159913388 krishna-kumar-pandey-jaunpur159913388 krishna-kumar-pandey-jaunpur
159913388 krishna-kumar-pandey-jaunpur
 
Supply Chain Management ● The supply chain is the sequence.docx
Supply Chain Management ● The supply chain is the sequence.docxSupply Chain Management ● The supply chain is the sequence.docx
Supply Chain Management ● The supply chain is the sequence.docx
 
Da Tp 1 Desarrollo Y AdquisicióN De Software
Da Tp 1   Desarrollo Y AdquisicióN De SoftwareDa Tp 1   Desarrollo Y AdquisicióN De Software
Da Tp 1 Desarrollo Y AdquisicióN De Software
 
HIM360 Assignment RubricsAssignment 1 Project Scope and
HIM360 Assignment RubricsAssignment 1 Project Scope and HIM360 Assignment RubricsAssignment 1 Project Scope and
HIM360 Assignment RubricsAssignment 1 Project Scope and
 
Case study
Case studyCase study
Case study
 
Presentation with Jim Prescott of Sonoco Products on S&OP at CSCMP in San Ant...
Presentation with Jim Prescott of Sonoco Products on S&OP at CSCMP in San Ant...Presentation with Jim Prescott of Sonoco Products on S&OP at CSCMP in San Ant...
Presentation with Jim Prescott of Sonoco Products on S&OP at CSCMP in San Ant...
 
Report on Business Plan on UNISTORE, a Retail Superstore [Elegant (VII)]
Report on Business Plan on UNISTORE, a Retail Superstore [Elegant (VII)]Report on Business Plan on UNISTORE, a Retail Superstore [Elegant (VII)]
Report on Business Plan on UNISTORE, a Retail Superstore [Elegant (VII)]
 
Class Discussion (ERP Vendors)
Class Discussion (ERP Vendors)Class Discussion (ERP Vendors)
Class Discussion (ERP Vendors)
 
Supply Chain Analytics with Simulation
Supply Chain Analytics with SimulationSupply Chain Analytics with Simulation
Supply Chain Analytics with Simulation
 
Supply Chain Analytics with Simulation
Supply Chain Analytics with SimulationSupply Chain Analytics with Simulation
Supply Chain Analytics with Simulation
 
To prepare for this Assignment· Review this week’s Learning Res.docx
To prepare for this Assignment· Review this week’s Learning Res.docxTo prepare for this Assignment· Review this week’s Learning Res.docx
To prepare for this Assignment· Review this week’s Learning Res.docx
 
Cold Chain, Temperature Controlled Supply Chain
Cold Chain, Temperature Controlled Supply ChainCold Chain, Temperature Controlled Supply Chain
Cold Chain, Temperature Controlled Supply Chain
 
Scottish Textile & Leather Association Sharing Operational Excellence present...
Scottish Textile & Leather Association Sharing Operational Excellence present...Scottish Textile & Leather Association Sharing Operational Excellence present...
Scottish Textile & Leather Association Sharing Operational Excellence present...
 
Patrick lillard resume1
Patrick lillard resume1 Patrick lillard resume1
Patrick lillard resume1
 
Supply chain management
Supply chain managementSupply chain management
Supply chain management
 

Sandvik Mining And Construction Final Report

  • 1. This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. Warehouse Network Design Recommendation Report Senior Design Group Members: Saila Balasubramanian Ryan Bechtel Linh Nguyen Rigan Patel Brad Sims Brian Turner Faculty Advisor: Dr. Marc Goetschalckx Sponsor Contact: Stan Boddy Aftermarket Processes Manager - USA and Canada stan.boddy@sandvik.com (404) 589-3861 December 5, 2008
  • 2. 1 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. Table of Contents Executive Summary………………………………………………………………………………………….….…………2 Client Description…..….………………………………………………………………………………….…….…………3 Problem Description..………………..……………………………………………………………….……….…………3 Design Strategy …………….….……………………………………………………………………….…………………..5 Data……………………….………..………………………………………………………………….…..………….………..6 Data Collection….……….……………………………………………………………....…………………..….….……..6 Data Analysis…….……………………………………………………………………..….………………..………….……6 Data Aggregation……………………………………………………….……………….………………………………….7 ItemAggregation..……………..…………………………………………………..…….…………….…………………7 CustomerAggregation………………………………………………..…………..…………….…….………………..9 TransportationCost.………………………………………………………………..….…….………..……….………10 DemandCalculation………………………………………………………………………………….………………….11 Model Formulation…………………………………………………………………………….……..…….….……….12 Adjustments While Running the Model……………………………………….…………………….…………19 Results………………………………………………………………………………..……………….………………………20 InventoryManagementFiles…………………………………………………….…………………..……………25 Value……………………………………………………………………………………………………………………………25 Sources of Error……..…………………………………………………………………………………………………….26 Works Cited…………………………………………………………………………………….……………………………28 Appendix A…….………………………………………………….……………………..………………….………………29 Appendix B…….………………………………………………….……………………..………………….………………33 LinearizedModel Formulation…………………………………………………….…………………..……………36
  • 3. 2 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. I. Executive Summary Sandvik Mining and Construction (SMC), a division of the Sandvik Group, supplies quality equipment and parts to mining and construction companies. SMC was created in 1997 through a series of company acquisitions. As a result, it did not decide the locations of its warehouses or the allocation of items in those warehouses. At the time, inventory was not allocated optimally, and this has not been rectified. In addition, SMC does not employ an inventory analyst, who could make recommendations for improvements. Hence inventory allocations and customer- warehouse assignments are not centralized decisions made by the company. These shortcomings have resulted in lower customer service levels and excess inventory. We have determined that Sandvik will benefit from a supply-chain network redesign. After examining the inventory levels at Sandvik’s warehouses in US and Canada, we discovered that the company has approximately $31 million worth of slow-moving inventory. These items have been ordered 25 or fewer times in the last 5 years. This $31 million worth of inventory represents approximately 28% of Sandvik’s total inventory quantity, but 50% of the total inventory value. Selling this inventory to customers in a different country or discarding it can generate salvage value. In addition, doing so will free up storage space in the warehouses and reduce holding costs. Sandvik has a customer base of roughly 2,650 active customer locations, 48,000 item types, and a distribution network of 25 warehouses. In order to tackle a problem of this magnitude, we needed to organize, filter, and aggregate customer, inventory and warehouse data. We discussed this with the client and were able to reduce the warehouse list to the 17 major warehouses. Performing the aggregation resulted in 187 customer groups and 74 item groups. These aggregated groups reduced our data to a size that a mathematical programming model could handle. Our model’s objective was to minimize holding and transportation costs. Sandvik wanted all customer demand to be met and the service level to be 95% for each customer, and these were constraints in the model. We assumed that all warehouses will remain open and in use. Since we were not dealing with Sandvik’s entire inventory, we could not determine if an entire warehouse should be closed. Now that we have run the model and found an optimal solution, we are providing Sandvik with a recommendation report of our findings. This includes optimal inventory levels for each item group in each warehouse, shipping and holding costs under the new network, and total value added. Sandvik uses a binary method to determine service level. A specific order receives a 1 if all items in the order are delivered on time; otherwise the order receives a 0. Sandvik then determines the overall network service level by calculating the average service level over all orders. Sandvik has found their current service level to be 62%. In addition, the report includes a sensitivity analysis of the tradeoffs between logistics cost and service level. This is in case the company’s business objectives change in the future; they can choose to reduce costs by compromising service level or increase the service level by incurring additional costs. At their current service level, Sandvik can save $250,000 by implementing our recommendations.
  • 4. 3 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. II. Client Description The Sandvik Group was founded nearly 150 years ago in Sweden. It began as a small ironworks company that was known for producing high quality steel using the Bessemer method. Today, the company has expanded into 130 countries, with over 47,000 employees and approximately $12 billion in annual sales. Its three main areas are Sandvik Tooling, Sandvik Material Technology, and Sandvik Mining & Construction. The company first established a subsidiary in the US in 1919. Sandvik Mining & Construction deals with a variety of products including drilling tools, mining, construction, and demolition equipment. Products range from drill bits and crushers, to cutting and conveying systems. It was created in 1997 through the acquisitions of Kanthal, a resistance materials manufacturer, and Tamrock, a mining equipment manufacturer. The division we are dealing with is SMC, and more specifically, their U.S.-Canada region. This business area focuses on supplying products for the mining and construction industries, and SMC is a world leader in its field. In 2007, SMC made over $4 billion in sales, or over 35% of Sandvik’s total sales. The company now has 25 warehouse locations in the U.S.-Canada region. These warehouses serve 1,200 active customers and 2,650 active locations. The facilities were obtained through company acquisitions, along with all the items in them. Sandvik’s business objectives include reducing this on-hand inventory and overall costs, while preserving customer service levels. III. ProblemDescription Sandvik Mining & Construction’s inventory in the U.S.-Canada region is valued at $60 million and consists of 1.2 million individual items. The division has been built mainly through the acquisition of 11 separate companies. All of the warehouses in the U.S.-Canada region, and the mining equipment they contain, were acquired through these acquisitions. This has led to misallocated products and a lack of planning in warehouse-customer assignments. Our team’s goal was to improve Sandvik’s warehouse network by eliminating excess inventory, optimizing transportation costs, and reducing holding costs. A large amount of the inventory value is from items Sandvik knows to be slow-moving, which the company refers to as strategic stock. These items are the focus of our optimization effort. Sandvik labels these items as “Z” and “0” items, based on sales over the past 12 months. “Z” items have only been sold once or twice in the last 12-month period, while “0” items have not been sold at all. After analyzing the available data, we decided to modify Sandvik’s labels, and came up with our own inventory list that included all items that sold 25 or fewer times in the past 5 years. This list consists of 18,500 item types, including 340,000 individual parts (28% of total inventory) and make up 50% of total inventory value ($30 million). Historical data shows that only 72,000 individual pieces have been sold in the past five years. This gave us a better idea of which items are slow-moving in long run. Sandvik keeps these items in stock because the customers need these parts to be stored on hand in order to get them quickly, even though
  • 5. 4 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. they do not order these items frequently. When these items are ordered, they are needed within 3 days. However, the customers want Sandvik to carry the items and pay holding costs. These holding costs are estimated to be 7% of the total inventory value, about $2.2 million a year. Sandvik did not have a strategy on where to store specific items for each customer, or how many of each item to store. As a result, Sandvik believes that 50% of the stock stored in the U.S.-Canada region was excess inventory. Because Sandvik is a worldwide seller, the company can sell items currently in the North American region to customers around the world. Any inventory in the region that is found to be obsolete could be salvaged or sold in other countries. Inventory can only be sold worldwide if it is held at the central warehouse in Chicago, IL, so items would have to be moved there to allow for international sales. Though these items are rarely ordered, it is very important for Sandvik to deliver such items within the quoted lead time in order to preserve customer goodwill. Therefore, finding the optimal quantity and location for the strategic stock is an important task. Warehouses were not carrying the optimal inventory levels of items demanded by the customers located nearby. This resulted in Sandvik’s inability to meet its customer service level goal of 95%. Sandvik calculates its service level using a binary system. If all the items ordered are shipped and reach the customer within the quoted lead time (generally 3 days), the order receives a “1”. Otherwise, if any item is missing or late, the order receives a “0”. The overall service level is then calculated by averaging the values assigned to the orders. As a result, if an item is not located within a distance that allows it to be delivered on time, the customer service level for that order will be compromised, even if every other item in that order was promptly delivered. All items in our model are delivered by trucks and therefore speed of delivery does not differ. Because strategic stock items are important to customers, their service level needs to be as close as possible to Sandvik’s goal; Sandvik’s current overall customer service level is 62%. The actual amount of improvement will depend on Sandvik’s business goals; they will need to decide whether improved customer service level or lowered costs are more important to them, and this decision may change as the business progresses. Determining which items to have at each location and the optimal quantities of all inventory items will allow Sandvik to raise their customer service level while simultaneously minimizing logistics costs. Due to the low frequency of demand for strategic stock, we expected to find that they were in excess in the U.S.-Canada region, just as Sandvik believed. By optimizing inventory levels, our goal was to be able to meet the demand and service level requirements while minimizing holding costs. Sandvik’s low customer service level indicates that the system is not currently running at its optimal level and this inefficiency is due to a lack of inventory management. Issues include not setting optimal inventory levels for each item and having multiple warehouses hold the same items for a single customer. For example, if a customer in California places an order, the current system allows the order to be filled by any warehouse in the system. The order could be shipped from the warehouse in Pennsylvania, but the California warehouse would forecast based on demand in the region, and order items to fulfill future
  • 6. 5 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. orders from that customer. At the same time, the Pennsylvania warehouse replenishes its stock for the same repeat orders. As a result, both warehouses would be holding the same items for one customer, leading to excess inventory. This situation also results in shipping costs that would not be incurred if the items were stored closer to the customer. In the optimized model, warehouses will work together to completely fulfill a customer’s demand in order to reduce excess inventory. Optimal inventory levels of strategic items will reduce the current holding costs while avoiding unnecessary shipping costs. IV. DesignStrategy Our design strategy focused on building a computer-based mathematical network model. A network model can be used as a powerful tool to solve various problems in a distribution network. Today’s computer-based technologies allow us to design complex models that can imitate many details of multifaceted networks. Companies can use these programs to better understand the system so they can make informed decisions to improve the overall network’s efficiency and profitability. Mathematical models can be used to solve various practical issues in industry, such as determining optimal inventory levels that should be maintained at each warehouse in a network. Mathematical models can also be implemented in order to help companies determine exactly when and how much inventory should be ordered. This allows companies to reduce logistics costs while meeting customer demand. However, such important problems are also extremely complex. They contain so many variables and interrelationships that, without building a computer-based network model, it is almost impossible to completely resolve these problems (Kutanoglu, 2007). The model that we created encompasses all of the components of Sandvik’s distribution network. The model contains products, customers, and each warehouse’s location. The model performs functions such as factoring in the different distances between customers and warehouses in order to calculate shipping costs; this will help determine which warehouse will ship to which customer. However, there are limitations to the capabilities of a computer-based mathematical model. The extremely large quantity of different types of products Sandvik sells, approximately 49,000, and the large number of customers Sandvik caters to, about 1,200, makes the problem difficult and time-consuming for computer software to solve. In situations such as these, the common practice is to aggregate data into groups so the software is able to manage the data. This means that within the model we are grouping items by similar characteristics, such as demand, price, and weight. Customers can be aggregated into groups by geographical region. Through aggregation, we make the model smaller and therefore able to provide us with important decision-making information. Also, aggregation will not hinder our ability to make general rules about decision-making policies, such as what inventory levels to maintain and where to allocate inventory. The actual formulation of a mathematical network model contains two main components: an objective function and its constraints. In our model, our objective was to minimize yearly
  • 7. 6 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. holding cost and our constraints were customer demand (we had to meet 100% of the demand) and customer service levels (the service level had to be greater than or equal to the current 62%). However, we did not address the fixed warehouse costs. Since we only focused on a portion of Sandvik’s inventory, we were not able to determine if warehouses should remain open or be closed. Even if a particular warehouse should optimally have an inventory level of 0 for all slow-moving items, it may still be needed to store fast-moving items. While reducing fixed costs would help the client reduce their total cost, this was beyond the scope of our project. In addition, since we are not dealing with the entire inventory, warehouse space is not a constraint that we will have to address. Holding costs are directly dependent on the quantity of products at each warehouse, meaning that they will be calculated per unit of inventory. Holding costs consist of capital costs, the costs required to obtain the average inventory levels, and inventory service costs, such as taxes on inventory and insurance (Simchi-Levi, 2002). Sandvik currently estimates holding cost to be 7% of total inventory value. This 7% is made up of a 5% capital cost that is paid to Sandvik Sweden and an additional 2% cost for storage operations. The transportation costs are the costs incurred by shipping products from a warehouse to any of Sandvik’s customers. V. Data Data Collection In order to solve the problem described above, we collected data on items, customers, warehouses, transportation, and sales history for the entire U.S.-Canada region. Fortunately, Sandvik was able to provide us with a database containing data for the last 5 years. Even so, much of the data was incomplete or inaccurate; we were able to fix some problems with help from Sandvik, but the data still had to be cleaned up and formatted. Data Analysis In order to use the data obtained from Sandvik, we needed to know certain attributes; for items, we needed weight, price, and demand, and for customers, we needed zip code and demand history. Any other fields in the tables were ignored in order to simplify data manipulation. Logistics costs for items are dependent on weight, which determines shipping cost, and price, which is used to calculate holding costs. Past demand was necessary in order to determine whether or not to focus on an item (we only dealt with items that have sold on average less than 5 times per year). Likewise we needed zip codes to determine customer-warehouse distances. Finally, we were not concerned with customers who have not ordered any items in the past 5 years. Though Sandvik had sufficient data for most customers and items, we were still left with incomplete, erroneous, or redundant records. The erroneous records were beyond our or even Sandvik’s abilities to correct and were removed from the data. We also filtered the records by
  • 8. 7 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. customer number and zip code to ensure that a single facility was not included more than once. We could not filter just by customer number since a company could have multiple locations under a single customer number. As for the incomplete records, we attempted to fill in as much unavailable data as possible. Unfortunately, checking and correcting 49,000 items and 1,200 customers was impossible given the time-frame of our project. As a result, we consulted with Sandvik, who instructed us to disregard any test data, inaccurate records, or records missing any of the necessary fields. Likewise, we were able to remove records where Sandvik was its own customer; these records dealt with internal transfers of products and capital, and were not relevant to our calculations. We were aware that even this reduced amount of data would make calculations difficult and time-consuming. Sandvik provided us with the addresses of 25 different warehouses, but directed us to focus on 17 warehouses that they deemed the most important; some “warehouses” that Sandvik ships to are no more than someone’s garage, and such facilities are not within the scope of our project. Data Aggregation We realized that we would have to aggregate items and customers to a manageable size that would not compromise our accuracy. In order to get these aggregated groups, we had to determine what attributes to aggregate by, and the target number of categories. We aimed for 20-50 aggregated item groups and 150-250 aggregated customer groups. We also had to be able to justify our decisions based on the nature of Sandvik’s warehouse network and the objectives of our project. Item Aggregation Our item data initially included 48,703 item types with a total value of about $60 million. Over half of the value, $30.9 million, was made up of items that sold on average less than 5 times per year; this also includes items that have not sold at all in the last 5 years. After the initial step of cutting down the inventory in question to just items that have sold less than 5 times a year, we decided there needed to be three facets by which we aggregated our items: price, weight, and demand. Price was necessary to calculate the holding cost. Weight was needed for the transportation calculation. Demand was required for the model’s customer-warehouse assignment. No other attributes were deemed appropriate for our model. For example, we did try aggregation by criticality, a field Sandvik had for each item describing how quickly to ship an item, but after careful deliberation we came to the conclusion that it was not a useful attribute because the service parts all have the same urgency. For each of these attributes, we determined the ranges of values for the groups based on a log scale.
  • 9. 8 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. Price Aggregation For price we analyzed the following distribution chart: Figure 1. Price Distribution The chart above was created once we realized that the items ranging from $0.01 to $10, 3,579 items, only amounted to about $512,000, 1.7% of the value. This amount was determined to be negligible, and the items were eliminated from our data. This reduced our item list to 9,560 item types with a total value of approximately $15.1 million. We wanted to break down the price groups on a log scale because this method groups items with approximately the same values together. The reasoning behind this is that an item valuing $10 and an item valuing $100 would incur more similar holding costs than a $10 item compared to a $1,000 item. The ranges are $10-$100, $100-$500, $500-$1,000, $1,000-$5,000, $5,000- $10,000, and $10,000+ and are coded 1, 2, 3, 4, 5, and 6 respectively. Weight Aggregation The second aspect of aggregation we looked at was weight class. Originally the data did not come with a weight attribute associated with each item, so we had to append the weights using Microsoft Access’s join abilities. After the join we ran into another problem. Even after Sandvik provided us with additional information, about 500 item types still did not have weights
  • 10. 9 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. associated with them. We decided to extrapolate weights for these items by looking at items with prices within 10% of their own, and taking the average of those weights. We then assigned the average values within those price groups to the items missing weights. We then decided to group the items by weight classes on a log scale, just like we did with prices. An item weighing 0.01 Kg and an item weighing 1 Kg are more similar in shipping costs than an item weighing 0.01 Kg and an item weighing 100 Kg. We ended up with 4 classes of weights: 0- 1, 1-10, 10-100 and 100 + kilograms coded as 1, 2, 3 and 4 respectively. Demand Aggregation Originally we did not aggregate the items by demand, but after running the model with items only aggregated by price and weight we found an anomaly that could only be solved by adding another facet of item aggregation. The model was treating items that had only sold once in the past 5 years the same as an item that sold 25 times in the past year. To fix this problem, we aggregated the items by demand. We made the groups’ ranges such that the model will treat items with similar demand the same. The groups we decided on are 1-3, 4-8, 9-15, and 16-25, with the numbers indicating how many times the item had been ordered in the last 5 years. For example the model will treat items demanded once in the past 5 years the same as an item demanded 3 times in the past 5 years. The reason for the ranges getting larger as the demand increases is that the percentage increase becomes less and less. For example, the difference from 1 to 2 is the same as the difference from 20 to 21, but the change in percentage is vastly different; 1 to 2 is a 100% increase, whereas 20 to 21 is a 5% increase. The resulting demand groups are coded as 1, 2, 3, and 4 respectively. Concatenating these three aggregate group numbers (price, weight, and demand) gives us our final aggregated number for each item group. Theoretically, we expected to have 96 aggregated items (111, 112, 113,…, 644), but in reality we ended up with just 76. This was due to the fact that certain classes like “141” (items between the values of $10-$100, weights of 100+ kilograms, and items demanded 1-3 times in the past 5 years) did not exist in the data; no items matched the attributes for that group. Customer Aggregation When aggregating customers, our primary focus was grouping by customer location, which is indicated by the zip code. However, grouping by entire zip code resulted in thousands of aggregated groups. The zip code format differs between the U.S. and Canada. In the U.S., the zip code is made up of 5 digits, and in Canada, the zip code is made up 6 alphanumeric characters. We decided to use broader aggregation criteria and tried to group customers by zip- 3, the first three characters of the zip code. This still gave us almost a thousand aggregated groups in the US alone. In the end, we chose to focus on the first two characters of the zip code, or zip-2. For instance, a customer located in 30332 would count as one customer in the zip zone 30. We ran a query
  • 11. 10 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. grouping customers by zip-2 and we found a total of 187 two-digit aggregated groups in the U.S.-Canada region. There are an average of 10 customer locations per group, and a total of 2,650 active locations in the entire region. We used the zip-2 zones and cross-referenced them with sales to determine the demand of slow-moving items for each region. Transportation Cost While we had address information for all warehouses and customers, Sandvik did not have the specific distances for each customer-warehouse combination. However, we were able to find a formula that would take in longitudes and latitudes of two zip codes as input and return the distance between the two. 2 2 1 ) 2 sin( * ) cos( * ) cos( ) 2 sin( sin ) 69 ( 2 b a b a b a ab lon lon lat lat lat lat D      A representative zip code was chosen from each 2-digit zip zone region in order to use this formula; latitude and longitude information is only available for 5-digit (U.S.) or 6-character (Canada) zip codes. For instance, the zip zone of 99 is represented by 99501. We then set up a table with the customer zip codes on one axis and the warehouse zip codes on the other. We obtained longitudes and latitudes for each zip code and plugged them into the formula to calculate straight-line distances from the warehouses to the customers. The value 69 is approximately the number of miles per degree for the latitude of the continental U.S. It takes long distance calculations into account and corrects for the earth’s curvature. This formula was suggested by United States Geological Survey. Although the equation results in a fairly accurate straight-line distance calculation, it underestimates the actual road distance. To correct this, we multiply Dab by a circuitry factor, p=1.14 (Simchi-Levi, 2002). For example, a manufacturer may need to ship a single fully loaded truck from Chicago, IL to Boston, MA. To calculate transportation cost for this shipment, we need geographical data. The longitude and latitude of Chicago are -87.65 and 41.85 respectively. For Boston, they are -71.06 and 42.36 respectively. Applying the above equation leads to a straight-line distance from Chicago to Boston of 855 miles. 855 ) 2 ) 06 . 71 ( ) 65 . 87 ( sin( * ) 36 . 42 cos( * ) 85 . 41 cos( ) 2 36 . 42 85 . 41 sin( sin ) 69 ( 2 2 2 1        Multiplying this number by the circuitry factor, 1.14, leads to an estimate of the actual road distance equal to 975 miles. Using Google Maps, we compared our calculated distance to the actual one of 984, which indicates a percent error of about 1%. Sandvik has contracts with Manitoulin for delivery in Canada and Con-Way in the U.S. In order to determine transportation costs, we focused on the total cost per mile and total cost per ton for both the U.S. and Canada. Generally speaking, U.S. transportation costs tend to be higher
  • 12. 11 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. than those in Canada. The differences in pricing policy towards clients also tend to differ from company to company. A client with a long-term contract may enjoy a lower per-mile price than a client with a short-term contract with either company. Differences in the business models of shipping companies also have a significant impact on the prices they charge. However, the transportation quotes used in the model do not take into account any discounts. In addition, we needed an acceptable estimate for transportation rates that could be used in both the U.S. and Canada. Unfortunately, we were unable to get reliable quotes from Sandvik’s dedicated shippers. As a result, we used the recorded averages for freight costs from 1990 and 1998 to extrapolate a rate of $0.28 per ton-mile to estimate current shipping costs (Ergun, 2008). Demand Calculation After aggregating our customers and items, the model still needed demand for every item group for every customer zone. We used the sales history to calculate the average number of each item group that was sold to each customer zone. This gave us the demand for each item group over the 5 year period. For example, in the last 5 years, customer zone 02 has placed 2 orders for items in item group 113. One order was for 2 items and the other was for 6. This gives us an average of 4 items over 5 years. However, we wanted to run the model on a per year basis, so we had to divide each demand by 5 to get demand per year. So in our example the demand per year is 4/5 or 0.8. As a final product we have a single average demand per aggregated item group per customer zone. Figure 2. Demand Density Map
  • 13. 12 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. Figure 2 shows the average demand per zip-2 region. The highest concentrations of demand are located on the east and west coasts. It is also important to note that while the demands in the west are higher per region, the regions are also much larger than those on the east coast, so they naturally will have more demand per region. However, we can deduce that regions in the east have higher demand densities because they have relatively high demands in smaller geographic areas. This will be an important point to remember in order to understand the results of our model. VI. Model Formulation The formulation below is exclusively based on the research paper “Integrated inventory and transportation mode selection: A service parts logistics system” by Mehmet and Kutanoglu (2007), as referenced in the “Works Cited”. The original formulations are shown in the appendix. Many adjustments have been made to suit our specific problem. In order to formulate our model we have made several assumptions. Several of these assumptions are based on the nature of the demand. The assumptions are as follows:  The facilities use a continuous review policy with a one-to-one replenishment policy, (S-1, S).  Demand follows a Poisson distribution, which is typical for low-demand systems.  A part’s demand can be met by more than one warehouse.  Target service levels are determined before solving the model.  Warehouse delivery capabilities are known.  The model assumes that unfulfilled demand is lost sales In general, our formulation is a mixed-integer mathematical program that minimizes the total net costs of Sandvik’s warehouse network. The function also adheres to certain constraints. In order to show how the model is developed, we first look at the non-linear formulation of the model. Then we show how we linearize the model, followed by the final complete model we used. To see the final model that we used, skip to the “Final Formulation” (p. 18). Before the details of the model are explained, we must first identify the formal sets and indices which will be used throughout the rest of the formulation. Sets and indices: I Set of warehouses, indexed by i = 1, 2, 3….I J Set of customers, indexed by j = 1, 2…J K Set of products, indexed by k = 1, 2…K L Set of stock levels, indexed by l =1, 2…L Now that sets and indices are defined, we will identify the parameters for this model.
  • 14. 13 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. Demand and Service Parameters: ik  Mean lead time demand rate that warehouse i receives for product k jk d Mean demand rate of customer j for product k k d Total demand rate for product k; the sum of all customer demand for product k k  Target service level percentage for customer, percentage of demand that can be met by warehouse k given a lead time of three days ik t Replenishment lead time for product k at warehouse i kl b Fill rate of product k given stock level l; the percentage of demand that can be filled from on-hand inventory ij  Takes on a value of 1 if facility i can deliver to customer j within the determined service time window, 0 otherwise Cost Parameters: h Equals 0.07. Used to calculate the holding cost, which is 7% of inventory value k NumItems Number of items in aggregated product group k k Value Average value of the items in aggregated product group k j NumCust Number of customers in aggregated customer group j ijk c Transportation cost for item k from warehouse i to customer j l stock level, l = {0,1,2,3,4,5} Decision Variables: ijk X Long-run fraction of item k’s demand at demand customer point j that is allocated to warehouse i ikl W 1 if stock level l is selected for product k at warehouse i, 0 otherwise Now that our parameters and variables have been formally defined, we can effectively explain the formulation. The goal of our mathematical program is to reduce costs; therefore, the objective function includes the following costs: Minimize    i k j ijk jk ijk j k i k l ikl k k X d c NumCust NumItems W Value NumItems l h ) )( ( ) )( )( )( ( (A0) The objective function accounts for the many effects of aggregation. Since our model deals with aggregated items we cannot treat items in the model as if they are individual items. The model calculates the total cost for storing an entire aggregated item at a certain stock level.
  • 15. 14 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. When we multiply the stock level l for an item group by k NumItems and k Value , we calculate the total cost for holding each individual item within that item group. This calculation will then give us the total holding cost for keeping an aggregated item group at a certain stock level. The final variable of the holding cost calculation is ikl W . The objective function will calculate the holding cost for a product at every possible stock level. ikl W will “select” which stock level is actually used. If the model does not select a stock level, then ikl W = 0; therefore, the cost is zero. If the stock is selected by the model, then ikl W = 1. The cost for maintaining that stock level is then added to the objective function. For example, let’s say an item group has 25 items in it, 25  k NumItems , with an average value of $100, k Value = 100. If the model returns that this group should have a stock level of 2 (so 1 2  ik W ), then the objective function will calculate the holding cost as follows. The stock level of 2 will be multiplied by the number of items in the group; this gives us the total quantity stored, which is 50 items. This value is then multiplied by the average value of the items in this group, which gives us $5000. To calculate the total holding cost for these items, we simply multiply the total value of the inventory ($5000) by 7%. This value equals $350. Since this stock level has been selected by the model, the total is then multiplied by one. 350 $ ) 1 )( 100 )($ 25 )( 2 %)( 7 (  Items Stock If this stock level had not been selected ( 0 2  ik W ), the total would have been multiplied by 0. 0 $ ) 0 )( 100 )($ 25 )( 2 %)( 7 (  Items Stock Likewise, in the transportation section of the object function, we added two new variables: the variable already introduced, k NumItems , and j NumCust . We multiply both of these values into the transportation cost calculation in order to account for the cost of shipping every item in an item group to every customer in a customer group. Again, since our customers and products are aggregated, we must add in these variables to show the total cost. Let’s look at an example. Say that a product group has 20 items, 20  k NumItems , and that the items in this group are being shipped to a customer group with 40 customers, j NumCust = 40. Also, let us assume that the transportation cost for this example, factoring in distance and weight, is $250. Finally let us also assume that the warehouse shipping these items is responsible for 50% of this customer’s demand for this particular product group, 5 .  ijk X . The total yearly cost to ship these items would equal the number of items shipped times the number of customers these items are shipped to. This calculation gives us a total number of 800 shipments. We then multiply this by the actual percentage of orders the warehouse fills, which gives us 400 shipments. To find the total cost, we multiply the number of shipments by the cost to ship an item, giving us a final yearly transportation cost of $100,000.
  • 16. 15 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. 000 , 100 $ ) 250 )($ 5 . 0 )( 40 )( 20 (  Customers Items Subject To (A1) Ensures that demand at each customer point is met for each item. When we sum together all the long run fraction-of-demand variables, ijk X , the result is 1. This means that all of the demand has been fulfilled by some warehouse. K k J j X i ijk       1 (A1) (A2) Ensures that if demand for product k from customer j is allocated to warehouse i then warehouse i will have a stock level greater than zero for that product k. k j i W X l ikl ijk , , ,    (A2) (A3) This constraint forces a warehouse to pick only one stock level. k i W l ikl , 1   (A3) (A4) This constraint calculates the mean lead time demand based on a given lead time, ik t , the demand rate for a product at a customer, and the allocation variable.    j ijk jk k ik k i X d t , ,  (A4) (A5) The total demand for product k is equal to the sum of the demands from each customer j for product k. k d d j jk k    , (A5) The method we used calculated the fill rate, kl b , using a table lookup process. We calculated fill rates for a product given its lead time demand, ik  , and the stock level l using the Poisson cumulative distribution. The Poisson distribution is used to determine the number of events that will happen within a certain period of time. In this problem we want to determine the probability of a product k being ordered within product k’s lead time. We use this probability to determine which stock level can meet demand and fulfill the service level requirements. The formulation of this calculation is shown below. k i r b ik L r r ik kl , , ! / )) (exp( 1 0        
  • 17. 16 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. We then created a table containing many of the possible values that the fill rate could equal given a lead time demand and stock level. A portion of this table is shown below. Stock Level Lead Time Demand 1 2 3 4 5 0.3 0.740818 0.963064 0.996401 0.999734 0.999984 0.33 0.718924 0.956169 0.995314 0.99962 0.999975 0.36 0.697676 0.94884 0.994049 0.999474 0.999963 0.39 0.677057 0.941109 0.992599 0.999293 0.999946 0.42 0.657047 0.933006 0.990958 0.999071 0.999923 0.45 0.637628 0.924561 0.989121 0.998805 0.999894 0.48 0.618783 0.915799 0.987083 0.998489 0.999857 0.51 0.600496 0.906748 0.984843 0.998119 0.999812 0.54 0.582748 0.897432 0.982397 0.997691 0.999755 0.57 0.565525 0.887875 0.979745 0.9972 0.999687 0.6 0.548812 0.878099 0.976885 0.996642 0.999606 Table 1. Fill Rates by Stock Level and Lead Time Demand The search function we created is provided with a lead time demand for a product at a warehouse. The search function then scans through the lead time demand column until it finds two values that the value provided is between. It then returns the fill rates, kl b , for the lead time demand lower than the actual lead time demand for all the possible stock levels. For example, a product has a lead time demand of ik  = 0.5. The search function searches through the lead time demand column and sees that 0.5 is between 0.48 and 0.51. The function then returns the fill rates associated with .48, which are {.618, .915, .987, .998, .999). Based on the set of fill rates, the model will select the appropriate stock level needed in order to ensure that the network is operating at the determined service level. It is important to note that while we calculated the possible fill rates outside of the model, the model will actually read in a lead time demand, ik  , and look up the fill rate, kl b , associated with that ik  . The calculation of kl b is not independent of the model. Notice in the table that, as the stock level increases for each lead time demand, ik  , the fill rate increases as well. Also notice that as the demand increases for each stock level, the fill rate decreases. Both of these trends are expected. First if we increase the inventory of a product, then we also increase the probability of being able to fill demand for that product. Likewise, if we keep the stock level constant as the demand increases, we should then expect a decrease in Poisson distribution fill rates
  • 18. 17 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. the probability that we can fill this demand. The graph below shows this relationship for each stock level. Figure 3. Fill Rate vs. Lead Time Demand The following constraints are associated with calculating and restricting the service level: (A6) Only allows ikl V to be greater than or equal to zero if product i is stocked at facility k. In essence, a product cannot have a service level if it is not even in stock at the facility. l k i W M V ikl ikl , , , 3   (A6) (A7) ikl V must be greater than or equal to 0. l k i Vikl , , , 0   (A7) (A8)(A9) The following constraints calculate the service level for the entire network. The right- hand side of (A8) and (A9) is the actual calculation of the service level for a product k at warehouse i with stock level l. k jk d d / is the percentage of the total demand for a product that customer j has for product k. This percentage is then multiplied by ijk X , which gives the percentage of product k’s demand met by warehouse i. Now that we have the actual amount of demand that a warehouse is meeting for a product, we multiply this value by the fill rate, ik b , which is the probability that a warehouse will be able to meet the demand of a product at a certain stock level. By multiplying all these values together we obtain a long term service level which calculates the percentage of demand that a warehouse is able to meet on a yearly basis.
  • 19. 18 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content.    j ik ijk k jk ji ikl l k i b X d d V , , , * * ) / ( ( (A8)      j ikl ik ijk k jk ji ikl l k i W M b X d d V , , ), 1 ( * * ) / ( ( 3  (A9) (A10) States that the service level, ln ik V , must be greater than the assigned service level for product k. k  is the predetermined service level for each product group. k V k i l ikl    ,  (A10) (A11) Used to calculate the cost of shipping item k to customer j from warehouse i. The cost is a function of a product group’s weight and the distance between the warehouse and the customer. The constant, .2845, is the average estimated rate in dollars to ship a product. The unit is a ton*mile. The cost calculated here is then used in the objective function to calculate the transportation cost. k j i Weights Dist c k ij ijk , , ), )( ( 2845 .   (A11) (A12) ikl W is a binary variable. l k i or Wikl , , , 1 0   (A12) Final Formulation    i k j ijk jk ijk j k i k l ikl k k X d c NumCust NumItems W Value NumItems lh ) )( ( ) )( ( (A0) K k J j X i ijk       1 (A1) k j i W X l ikl ijk , , ,    (A2) k i W l ikl , 1   (A3)    j ijk jk k ik k i X d t , ,  (A4) k d d j jk k    , (A5) l k i W M V ikl ikl , , , 3   (A6) l k i Vikl , , , 0   (A7)    j ik ijk k jk ji ikl l k i b X d d V , , , * * ) / ( ( (A8)
  • 20. 19 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content.      j ikl ik ijk k jk ji ikl l k i W M b X d d V , , ), 1 ( * * ) / ( ( 3  (A9) k V k i l ikl    ,  (A10) k j i Weights Dist C k ij ijk , , ), )( ( 2845 .   (A11) l k i or Wikl , , , 1 0   (A12) VII. Adjustments While Running the Model During the actual running and testing of the model we were forced to make several changes due to the nature of our problem. As shown before, ikl W is a binary variable that can only take on a value of 0 or 1. This causes the model to be a mixed-integer linear program. Running the model with the binary constraint resulted in a very long run time of several days. Our model had 268,678 constraints and 247,484 variables, with over 6,000 binary variables. For what we wanted to do, this time constraint was unacceptable. So for all our runs, we decided to relax the binary constraint and allowed the model to run with ikl W able to take on values between 0 and 1, inclusively. After this adjustment the runtime of the model was about 4-5 minutes. The typical output for ikl W under these conditions is shown below. Product Warehouse Stock Level Wikl 2 55 1 0.654344 2 55 2 0.088767 2 55 3 0.133225 2 55 4 0.123664 2 55 5 0 Table 2. Sample ikl W Output The table above shows us the values calculated for ikl W for a particular product and warehouse. Notice that each stock level has a ikl W value associated with it. In order to actually calculate the specific stock level for this item at this warehouse, we calculated the expected value of the ikl W by multiplying the stock level by its ikl W value. We then rounded to the nearest integer to finally determine the stock level for a particular product at a warehouse. The calculation is shown below. 1*(.65) + 2*.08 + 3*.13+4*.12+5*0 =1.72 ≈ 2 The stock level for this particular product-warehouse combination is equal to 2. We applied this method to all product-warehouse combinations. Using the stock levels determined from this process, we recalculated the holding cost of the entire warehouse network. The recalculated holding cost was only an average of 1.8% different from the cost calculated by the relaxed
  • 21. 20 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. linear model. This verifies our method as a reasonable technique to determine the actual stock levels of an item group at a warehouse. The separate results for the holding costs at multiple service levels are shown below. Service Level 0.40 0.45 0.50 0.55 0.60 Original $ 1,458,470 $ 1,549,490 $ 1,648,380 $ 1,751,700 $ 1,865,960 Recalculation $ 1,358,960 $ 1,516,720 $ 1,648,380 $ 1,709,620 $ 1,877,820 Service Level 0.65 0.70 0.75 0.80 0.85 Original $ 1,983,680 $ 2,106,980 $ 2,232,610 $ 2,370,210 $ 2,503,660 Recalculation $ 2,078,580 $ 2,109,450 $ 2,230,600 $ 2,329,260 $ 2,463,520 Service Level 0.90 0.95 1.00 Original $ 2,626,640 $ 2,751,220 $ 2,884,300 Recalculation $ 2,620,850 $ 2,831,340 $ 2,884,610 Table 3. Holding Costs For additional information about the formulation of the model, please reference the Xpress formulation of our model in the appendix. VIII. Results We have run the model for service levels between 40% and 100% in 5% increments. We obtained the total network holding cost and transportation cost for each service level. In addition, we obtained the inventory levels for each aggregated item group at each warehouse. The chart on the following page shows the total costs for all service levels.
  • 22. 21 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. Network Costs Service Level 40% 45% 50% 55% 60% Holding Cost $1,358,960 $1,516,720 $1,648,380 $1,709,620 $1,877,820 Transport Cost $192,204 $221,176 $248,398 $278,631 $301,497 Total Cost $1,551,164 $1,737,896 $1,896,778 $1,988,251 $2,179,317 Service Level 65% 70% 75% 80% 85% Holding Cost $2,078,580 $2,109,450 $2,230,600 $2,329,260 $2,463,520 Transport Cost $325,575 $348,811 $374,107 $390,538 $414,013 Total Cost $2,404,155 $2,458,261 $2,604,707 $2,719,798 $2,877,533 Service Level 90% 95% 100% Holding Cost $2,620,850 $2,831,340 $2,884,610 Transport Cost $453,730 $497,373 $537,627 Total Cost $3,074,580 $3,328,713 $3,422,237 Table 4. Logistics Costs by Service Level The costs in the table above clearly show that the holding cost and the transportation cost both increase as the service level increases. This relationship is intuitive since Sandvik must ensure that it can meet more customer demand in the allotted time, in order to reach a higher service level. The only way for Sandvik to do this is to increase its inventory levels at warehouses, which leads to increased holding costs. Backordering the items will get them delivered to the customer, but not in the desired time frame. The model assumes that these items are counted as lost sales. The chart below (Figure 4) highlights the relationship between costs and service level. In addition, the transportation cost will increase as the service level increases. As the service level increases, Sandvik is meeting more customer demand, and therefore is shipping more items, which results in increased transportation costs.
  • 23. 22 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. Figure 4. Sensitivity Analysis In order to visualize the output, we created maps that show the inventory distribution throughout the U.S.-Canada region. Below in Figure 5 we show the distribution of inventory for the 60% service level. Each circle on the chart below represents a warehouse location. The size of the circle is directly correlated to the total inventory value at the corresponding warehouse. Figure 5. Inventory Values for Service Level = 60%
  • 24. 23 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. While customers are distributed all throughout the U.S.-Canada region, the map clearly shows that the inventory is more highly concentrated in the northeast U.S. and in southeast Canada. One would think that since the customers are distributed fairly evenly throughout the U.S.- Canada region, the inventory should also be spread evenly. However the items that we are focusing on have extremely low demand rates. Therefore, if every warehouse held the same products, then the inventory would greatly exceed the demand, and holding costs would be much higher. The model determined that it is actually more cost effective to have inventory centralized; it optimized the network and reduced costs by concentrating the inventory in fewer locations. The reason the inventory is located in the northeast is that there is a higher demand in the east than in the west for both the U.S. and Canada. Since part of our goal is to minimize shipping costs, the inventory should be concentrated in the regions that have the highest demand. The model determined that inventory should be located in the east. By storing inventory for multiple customers at one warehouse location, the network can save on holding costs as well. Figure 6. Inventory Values for Service Level = 95% Figure 6 shows the effect of an increased service level on inventory levels and holding costs. It is easy to see that many of the circles have increased in size, representing the increased amounts of inventory being held at those warehouses. As previously discussed, this result makes sense. As the service level for the network increases, the inventory held at each location should also increase so that Sandvik can meet more of the customer demand. We are providing Sandvik with the inventory level of an item group at a warehouse location, which is output from our model. This information is presented in Excel tables that show both the warehouses and the inventory level for all aggregated item groups at each warehouse
  • 25. 24 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. location. For example, in Table 5 below, item group 111 has an inventory level of two at the Brier Hill, PA warehouse. 111 112 113 114 121 Brier Hill, PA 2 Olyphant, PA 1 1 1 Narvon, PA 1 Chateauguay, QC Val d'Or, QC 2 Lively (Sudbury), ON Timmins, ON Yellowknife, NT Creighton, SK Laval, QC 1 1 1 2 Table 5. Stock Levels for Service Level = 70% Table 6 below is a sample of the inventory levels when the service level is at 95%. We can see that the inventory levels for certain item groups at some of the warehouses increased as a result of the higher service level. For example, the inventory level for item group 111 at Brier Hill, PA is now three. 111 112 113 114 121 Brier Hill, PA 3 1 1 1 Olyphant, PA 1 Narvon, PA 2 Chateauguay, QC Val d'Or, QC 3 Lively (Sudbury), ON Timmins, ON Yellowknife, NT Creighton, SK Laval, QC 1 2 2 2 Table 6. Stock Levels for Service Level = 95%
  • 26. 25 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. Inventory Management Files Included in this report is a disc that contains the following files: 1. The first document is the “Item Inventory” Excel file. This file includes all the items we focused on, broken down into the aggregated groups that we imported into the model. This means all items that have sold less than or equal to 25 times in the past 5 years. The file consists of 75 sheets. The first sheet is a legend which tells how to read the aggregated item code. Then followed by 74 sheets, each of which lists an aggregated item group, the group’s attributes (weight, price, and demand), and all the individual items in that group. 2. The second document is another Excel file titled “Model Results.” This file includes every warehouse’s stock level for each aggregated item group for each service level from 40% to 100% (in intervals of 5%). The left side of each sheet will correspond to the warehouses, and the top row will be the aggregated item group. The stock levels will have a value from 1 to 5 if the item must be stored in a particular warehouse. The stock level indicates many of each item group should be kept at a particular warehouse. If the value in a cell is 3, then 3 of each item in the corresponding item group should be kept at the corresponding warehouse. Tables 5 and 6 are examples of the output table. 3. The final file is the “Sandvik - Georgia Tech Senior Design Files.” This file is an Access file that includes a full list of the inventory we broke down into aggregated groups, as well as a complete list of unsold items in the past 5 years. This can be used to determine which items are actually salvageable. IX. Value Sandvik’s annual shipping costs are about $1.5 million and their holding costs are estimated to be 7% of the total inventory value, roughly $4.2 million. Sandvik’s overall logistics costs, which include fixed costs, are approximately $7 million. The slow-moving items, about $31 million worth of inventory, incur $2.16 million in holding costs annually. $15.8 million dollars of this inventory have not been sold in the past five years, rendering it obsolete. If Sandvik were to remove these items from their inventory, they would save $1.1 million dollars per year in holding costs, in addition to profiting from the items’ salvage value. When we ran our model on the remaining $15.1 million of inventory at Sandvik’s current service level of 62%, the inventory level calculated by the model was greater than Sandvik’s current inventory level. The holding cost was calculated to be $1.91 million, which is higher than the estimated holding cost of $1.06 million that Sandvik currently incurs annually. However, with the removal of the obsolete items, Sandvik would still realize an overall savings of $250,000 per year by implementing our recommendations.
  • 27. 26 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. Sandvik will profit from reduced warehouse costs by eliminating stock. While safety stock is necessary to avoid stock-outs, the company agreed that items that have not sold in the last 5 years can be considered obsolete and unsellable. In other words, the company does not need to keep any of these items on hand. Freeing up the currently underutilized capital tied up in obsolete items would improve Sandvik’s bottom line and profits. This inventory also takes up warehouse space that could be used for more profitable items. Additional value can be realized from the items being placed in warehouses closer to the customers demanding them. The new network design and its shorter shipping distances will result in reduced shipping costs and reduced shipping times, thereby improving Sandvik’s service level. Finally, the items that are considered unsellable still have salvage value. We found that $15.8 million worth of inventory did not sell at all in the last 5 years. We recommend that Sandvik eliminate these excess items and salvage them. Unfortunately, incomplete data and inconsistent policies prevented us from calculating the exact salvage value of the unsold items. The primary material is steel, but this information is useless without the weights and compositions of these items. We did not have weight data for many of the items and did not have composition data for any of them. We found rates for steel that were price per ton, but were unable to convert these values into raw dollars because of incomplete data. Although we were able to determine that mixed salvage steel has a non-negative salvage value (Burgoyne, 2003). In addition, Sandvik informed us that warehouses salvage extra items individually and that there are no overarching policies regarding salvage. As a result, different warehouses employ different companies at different costs or rates of return. Despite the difficulties with coming up with the exact monetary value of doing so, we can conclude that Sandvik will profit from salvaging their excess inventory. X. Sources of Error There are some possible errors with our results that must be discussed thoroughly. The main concern with our results is our calculated cost values. The model that we formulated to address Sandvik’s inventory problem consistently returned higher costs for the network than we expected. We hypothesize that some of this increase in costs is due to the nature of our data aggregation. With aggregation, we grouped similar items and customers. As we explained earlier, we grouped items with similar demand, weight, and price. Because our items are grouped, when the model states that an item group should be at a certain stock level, this means that every item in that group must be stored at that stock level regardless of the actual demand of that product. Also, when we ship an item group to a customer group, every item in that group is calculated as being shipped to every customer. For example, with inventory, if the model says that we should keep a stock level of 2 for product group 111 at the Brier-Hill warehouse, then we will be keeping a stock level quantity of
  • 28. 27 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. 2 for each individual product in the group at that warehouse. The number of items in our defined item groups ranges from 1 to as many as 917. 2*(917) = 1,834 items at Brier Hill Likewise, for transportation, if the model decides to ship product group 111 to customer group 01, the model calculates the cost for shipping each individual product in the group 111 to each individual customer in the group 01. (Number of Items in Group 111)*(Number of Customers in Group 01) (917 Items)(7 Customers) = 6,419 Shipments The model accurately calculates costs based on the results, but due to aggregation using every single item and customer in its calculations at the same time, the costs may be overstated. The only way that we could correct this error would be to actually treat every item and customer individually; however, this is impractical because the model would become extremely cumbersome and unsolvable. An additional source of error arises from the fact that Sandvik’s service level is calculated for total inventory and not specifically for the group of items we are dealing with. This makes an accurate comparison nearly impossible. For example, Sandvik’s current service level is calculated as being 62% overall, but this includes both fast and slow-moving inventory. When we ran our model at a 62% service level, this service level was only for slow-moving items. Since we are not comparing the same type of item, we cannot necessarily compare Sandvik’s service level to our model’s service level.
  • 29. 28 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. Works Cited 1. Kutanoglu, Erhan and Divi Lohiya. “Integrated inventory and transportation mode selection: A service parts logistics system.” ScienceDirect. 21 February 2007: 665-683. 2. Candas, Mehmet F. and Erhan Kutanoglu. “Benefits of considering inventory in service parts logistics network design problems with time-based service constraints.” IIE Transactions. 01 February 2007: 159-176. 3. Robeson, James F. and WilliamC. Copacino. “The Logistics Handbook.” New York, NY: The Free Press, 1994. 4. Simchi-Levi, David et al. “Designing and Managing the Supply Chain.” McGraw-Hill Higher Education, 2002. 5. Burgoyne, Dan. “Construction & Demolition (C&D) Waste Diversion in California.” State of California, Department of General Services. <<http://www.ciwmb.ca.gov/ConDemo/CaseStudies/DGSDiversion.pdf>>. 6. Ergun, Ozlem. "Transportation Costs and Rates." Online PowerPoint. 11 Oct 2008. <<t-square.gatech.edu>>.
  • 30. 29 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. Appendix A Xpress Code: model Sandvik optionsnoimplicit uses"mmxprs","mmive","mmodbc" parameters ALPHA = .60 !customerservice level end-parameters ! declarationssection declarations NUMCUSTOMERS = 187 NUMWAREHOUSES = 17 NUMPRODUCTS = 74 NUMSTOCKLEVELS = 5 I = 1..NUMWAREHOUSES J = 1..NUMCUSTOMERS K = 1..NUMPRODUCTS L = 1..NUMSTOCKLEVELS dummy1 = 76 ! Numberof rowsin fillratetable dummy2 = 6 ! Numberof columnsusedinfillratetable dum1 = 1..dummy1 dum2 = 1..dummy2 X : array(I,J,K) of mpvar !DV* 0<X<1, demandallocationdecisionvariable W : array(I,K,L) of mpvar !DV* 1 or 0 if a productas a stocklevel of L at a warehouse. V : array(I,K,L) of mpvar !DV?* Service Level C : array(I,J,K) of real !Costfor a product k to travel froma warehouse i toa customerj SIGMA : array(J,I) of integer ! 1 if warehouse i canmeetdemandof customerj B : array(K,L) of real !fill rate Dk : array(K) of real !Total demandforproduct i byall customers LAMBDA : array(I,K) of linctr !Leadtime demandof product k at warehouse i Objective :linctr M3 : linctr HoldingCost:linctr TransportCost:linctr
  • 31. 30 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. x : array(I,J) of mpvar LeadTimeTable :array(K) of real !Table of leadtimesforeachproductk ValuesTable :array(K) of real !Table of average valuesforeachproduct k WeightsTable :array(K) of real !Table of average weightsforeachproductk D : array(J,K) of real !Table of demandforproduct i from customerj Distances: array(J,I) of real !Table of distancesfromwarehouse i tocustomerj FillRateTable:array(dum1,dum2) of real !Table of fill ratesgivenastock level andleadtime demand NumberItems:array(K) of real !Table of the numberof itemsinaggregateditemgroup k NumCustomers:array(J) of integer !Numberof customerisaggregatedcustomergroupk end-declarations !The followingimportsall the excel tablesintoxpress initializationsfrom"mmodbc.odbc:four.xls" ValuesTable as'Value74' WeightsTable as'Tons2' LeadTimeTable as'Years' FillRateTableas'fillrate2' D as 'Udemand2' Distancesas 'Distances' SIGMA as 'Sigma' NumberItemsas'NumOfItems2' NumCustomersas'numcust4' end-initializations forall (i inI, k inK, l in L) W(i,k,l) is_binary !W must be between0and1 forall(i inI,kinK,l inL) W(i,k,l) <=1 forall(i inI,kinK,l inL) W(i,k,l) >=0 forall(i inI,kin K) sum(l inL) W(i,k,l)<=1 !Calculatescostas costper ton-mile forall (i inI, j in J,k in K) C(i,j,k):=.2845*Distances(j,i)*WeightsTable(k)
  • 32. 31 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. !Solvesfortotal demandof a product forall (kinK) Dk(k):=sum(j inJ) D(j,k) !DemandAllocationvariable mustbe lessthan1and greaterthan 0 forall(i inI,j inJ,kinK) X(i,j,k) <=1 forall(i inI,j inJ,kinK) X(i,j,k) >=0 !Demandallocationforeachwarehouse i customerj andproduct kmust sumto 1 forall(j inJ,kin K) sum(i inI) X(i,j,k) =1 !If demandisallocatedtoa warehouse fora certainproduct,thenthe stock level musthave avalue forall(i inI,j in J,k in K) X(i,j,k) <=sum(l inL) W(i,k,l) ! Each service level mustbe greaterthan0 forall (i inI, k inK, l in L) V(i,k,l) >=0 !Calculatesthe leadtime demand:The demandexpectedtooccur fora productduringitsleadtime from suppliers forall (i inI, k inK) LAMBDA(i,k):=LeadTimeTable(k)*sum(j inJ) (D(j,k)*X(i,j,k)) !Extracts fillratesforstocklevelsgivenalambda forall(aindum1,i inI, k1 inK, l inL) if FillRateTable(a,1).sol <=LAMBDA(i,k1).solthen if FillRateTable(a+1,1).sol >=LAMBDA(i,k1).sol then B(a+1,l):=FillRateTable(a+1,l+1) if FillRateTable(a+2,1).sol >=LAMBDA(i,k1).solthen B(a+2,l):=FillRateTable(a+2,l+1) if FillRateTable(a+3,1).sol >=LAMBDA(i,k1).solthen B(a+3,l):=FillRateTable(a+3,l+1) . . . . . . . . . . . . if FillRateTable(a+74,1).sol>=LAMBDA(i,k1).sol then B(k1,l):=FillRateTable(a+74,l+1) end-if end-if
  • 33. 32 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. end-if . . . . . . end-if forall(i inI,k inK, l in L) M3 := sum(j inJ) SIGMA(j,i)*D(j,k)*B(k,l)/Dk(k) forall (i inI, k inK, l in L) V(i,k,l) <=M3.sol*W(i,k,l) !Calculatesthe service level forall product,warehousesandcustomers forall (i inI, k inK, l in L) V(i,k,l) <=sum(j inJ) ((SIGMA(j,i)*B(k,l)*D(j,k)*X(i,j,k))/Dk(k)) forall (i inI, k inK, l in L) V(i,k,l)>=sum(j inJ) ((SIGMA(j,i)*D(j,k)*X(i,j,k)*B(k,l))/Dk(k)) - M3.sol*(1-W(i,k,l)) ! For all productsthe service level mustsumtoat leastalphaforeach warehouse andstocklevel forall (kinK) sum(i inI, l in L) V(i,k,l) >=ALPHA !Calculatesthe total holdingcost HoldingCost:=(sum(i inI,kinK,l inL) (l*.07*NumberItems(k)*ValuesTable(k)*W(i,k,l))) !Calculatesthe total transportationcost TransportCost:=sum(i in I,j inJ,kinK) (NumberItems(k)*C(i,j,k)*D(j,k)*NumCustomers(j)*X(i,j,k)) !Objective functionintermsof holdingandtransportationcost Objective :=(HoldingCost)+(TransportCost) !Invoke the Optimizertosolve problemwithobjectivefunctionObjective minimize(Objective) writeln("Beginrunningmodel") writeln(" Total Cost: $",Objective.sol) writeln(" HoldingCost:$", HoldingCost.sol) writeln(" TransportCost:$", TransportCost.sol) writeln("Endrunningmodel") end-model
  • 34. 33 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. Appendix B The formulations below are the original models that our final model was based on. They are exclusively based on the research paper “Integrated inventory and transportation mode selection: A service parts logistics system” by Mehmet and Kutanoglu (2007), as referenced in the “Works Cited”. In order to formulate our model we have made several assumptions. Several of these assumptions are based on the nature of the demand. The assumptions are as follows:  The facilities use a continuous review policy with a one-to-one replenishment policy, (S-1, S).  Demand follows a Poisson distribution, which is typical for low demand systems.  A part’s demand can be met by more than one warehouse.  Target service levels are determined before solving the model.  Warehouse delivery capabilities are known. In general, our formulation is a mixed-integer mathematical program that minimizes the total net costs of Sandvik’s warehouse network. The function also adheres to certain constraints. In order to show how the model is developed, we will first look at the non-linear formulation of the model. Then we show how we linearize the model, followed by the final complete model we used. To see the final model that we used, skip to the “Complete Linearized Model Formulation” (p. 41). Before the details of the model are explained, we must first identify the formal sets and indices which will be used throughout the rest of the formulation. Sets and indices: I Set of warehouses, indexed by i = 1, 2, 3….I J Set of customers, indexed by j = 1, 2…J K Set of products, indexed by k = 1, 2…K L Set of stock levels, indexed by l =1, 2…L Now that sets and indices are defined, we will identify the parameters for this model. One of the main parameters needed for this type of problem is the demand rate. Since we are dealing with rarely demanded service parts, we can assume, based on previous studies, that the demand follows a Poisson distribution. Because of this assumption, we call the mean demand rate  . Depending on the indices attached to a  , we allow for creative representation of the mean demand. Next, we create a service level parameter,  , which can take on percentage values between 0 and 100%.
  • 35. 34 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. Demand and Service Parameters: ik  Mean lead time demand rate that warehouse i receives for product k jk d Mean demand rate of customer j for product k k d Total demand rate for product k; the sum of all customer demand for product k j  Target service level percentage for customer j ik t Replenishment lead time for product k at warehouse i ij  Takes on a value of 1 if facility i can deliver to customer j within determined service time window, 0 otherwise Cost Parameters: h Standard holding cost percentage applied to the value of inventory k v Dollar value of item k ijk c Transportation cost for item k from warehouse i to customer j i f Fixed cost associated with operating a warehouse Decision Variables: ik S Inventory level of base stock for item k at facility i ijk X Long-run fraction of part k’s demand at demand customer point j allocated to warehouse i ik  Long-run fill rate of facility i for product k i Y Takes on a value of 1 if warehouse is open, 0 if otherwise Now that our parameters and variables have been formally defined, we can effectively explain the formulation. The goal of our mathematical program is to reduce costs; therefore, the objective function includes the following costs: Minimize i i i i k j ijk jk ijk i k ik k Y f X d c S hv      ) ( (N0) Holding cost, the first part of the objective, is the cost of storing items at each warehouse. In our model, it is simply calculated as the holding cost times the stock level times the dollar value of the item. The second part expresses transportation costs as a function of the cost of shipping items from the warehouse to the customer times the demand rate, jk d , and the allocation variable, ijk X . The last expression represents the fixed cost associated with using a warehouse. In addition, the objective function will be limited by the following primary constraints:
  • 36. 35 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. (N1) The following constraint defines the fill rate variable. It assumes a Poisson distribution with demand ik  and is calculated from the cumulative distribution function of the Poisson. The fill rate is the probability that the demand can be met from stock on hand. The probability can be modeled by the Poisson distribution because the demand is relatively infrequent.  ) , ( ik ik ik S   k i r ik S r ik ik , , ! / )) (exp( 1 0        (N1) (N2) This constraint ensures that the appropriate service level for each customer is met. This constraint depends not only on j  , but also on the fill rate variable ik  . The fill rate is the percentage of demand that a warehouse is able to meet.    i j j k ik ijk jk ij k d X d , ) /( ) (    (N2) (N3) When we sum together all the long run fraction-of-demand variables, ijk X , it makes sense that the total should be equal to 1. This indicates that all of the demand has been fulfilled by some warehouse. k j X I i ijk , 1    (N3) (N4) When a warehouse is not open, meaning i Y takes on a value of zero, no demand should be allocated to that particular warehouse. Otherwise, ijk X may take on any values up to 1. k i Y X i ijk , ,   (N4) (N5) For some stock level L, where L is the maximum capacity at the largest warehouse, the base stock level cannot exceed that maximum capacity. k i LY S i ik , ,   (N5) (N6) This constraint calculates the mean lead time demand based on a given lead time, ik t , the demand rate for a product at a customer, and the allocation variable.    j ijk jk ik ik k i X d t , ,  (N6) (N7) We define the allocation variable, ijk X , as a number between 0 and 1. K k J j I i Xijk         , , , 1 0 (N7) (N8) We define i Y , the warehouse open/close variable as binary. 1 if open, 0 otherwise. i or Yi   , 1 0 (N8) (N9) The stock level, ik S , is defined as an integer value with the maximum level being L.
  • 37. 36 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. k i L Sik , }, ,..., 2 , 1 , 0 {   (N9) Below is the complete formulation: Minimize k i i i k j ijk jk ijk i k ik k Y f X d c S hv      ) ( (N0) Subject To  ) , ( ik ik ik S d  k i r ik S r ik ik , , ! / )) (exp( 1 0        (N1)    i j j i ik ijk jk ij k d X d , ) /( ) (    (N2) k j X I i ijk , 1    (N3) k i Y X i ijk , ,   (N4) k i LY S i ik , ,   (N5)    j ijk jk ik ik k i X d t d , , (N6) K k J j I i Xijk         , , , 1 0 (N7) i or Yi   , 1 0 (N8) k i L Sik , }, ,..., 2 , 1 , 0 {   (N9) The above model represents a non-linear, mixed integer mathematical program. Non-linear mathematical programs are more difficult and time consuming to solve than their linear counterparts. Therefore, we need to linearize the constraint expressions. In constraint (N2) above, decision variables ijk X and ik  are multiplied together. This represents a non-linear relationship. Also ik  is determined by the cumulative Poisson distribution. This is not a linear formulation. The next section shows the linearized formulation of this programming model. LinearizedModel Formulation Minimize i i i i k j ijk jk ijk i k l ikl ik Y f X d c W lh      (L0) (L0) The only change to the objective function from the original formulation is in the calculation of the holding costs. The model will now select a level l from a set of possible stock levels, ik S . The stock level l will only be chosen at facility i for product k if 1  ikl W . Below we show how we determine the value of ikl W .
  • 38. 37 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. The mathematical program will now iterate though a set of stock levels. The constraints below will determine when 1  ikl W , which will choose the appropriate stock level l. The stock level l is then multiplied by the holding cost for item k. Subject To (L1) Ensures that demand at each customer point is met for each item. When we sum together all the long run fraction-of-demand variables, ijk X , the result is 1. This means that all of the demand has been fulfilled by some warehouse. K k J j X i ijk       1 (L1) (L2) Ensures that if demand for product k from customer j is allocated to warehouse i then warehouse i will have a stock level greater than zero for that product k. k j i W X l ikl ijk , , ,    (L2) (L3) If warehouse i is open, then 1  i Y , 0  i Y otherwise. This constraint states that if 0  i Y then ikl W must take on a value of 0 for the stock level l of item k at warehouse i. If 1  i Y then the stock level i can equal a single value from the set L. k i Y W i l ikl ,    (L3) (L4) This formulation is discussed in the non-linear formulation. It determines the lead time demand rate.    j ijk jk ik ik k i X d t , , ) (  (L4) (L5) The total demand for product i is equal to the sum of demand from each customer j for product i. k d d j jk k    , (L5) (L6)(L7)(L8)(L9) These constraints deal with approximating the fill rate. In the original formulation the fill rate is determined by the Poisson cumulative distribution with the parameter equal to the mean demand.  ) , ( ik ik ik S d  k i r ik S r ik ik , , ! / )) (exp( 1 0        (N1) In order to linearize the model we must approximate the Poisson distribution. To do this we created a step function that will break the Poisson distribution into separate intervals. Once we
  • 39. 38 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. have separated the Poisson distribution into intervals we created equations that scan these intervals in order to calculate the fill rate. So, given a specific lead time demand, ik  , that ik  will lie in a particular interval. Once the correct interval is found, the model used the midpoint of the interval in order to calculate the fill rate according to the Poisson distribution. Let’s look at a specific example using Figure 7 below. Given that 40 .  ik  , the model scanned the intervals until it has found the interval that contains the value of 40 .  ik  . Once that interval is found, the model will use the midpoint of that interval in order to approximate the fill rate as shown in the graph below. So instead of using 40 .  ik  to calculate ln k b , the model will use 43 .  ik  to solve for ln k b . Figure 7. Fill Rate Approximation Below are the equations that actually perform the interval search. We begin by introducing the variables and parameters that are used. ikn R indicates if function is currently in interval n for facility i for product k takes valueof 0 or 1 kn a upper boundary of interval n for product k ikn Q indicates that ik  in interval n for facility i and product k, takes value of 0 or 1
  • 40. 39 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. 1 M largest possible value of mean lead time demand for part k at facility i 2 M represents upper bound of interval n (L6) Initializes the variable 0 ik R k i Rik , , 0 0   (L6) (L7)(L8) The following functions perform the search operation and determine if ik  is in a certain interval n. The equations either force ikn R equal to 0 or 1. If ikn R = 0, then ik  is not in the interval. If ik kn a   is positive, then equations (L8) will force 1  ikn R , which we use to determine interval containing ik  . If ik kn a   is negative, equation (L7) forces 0  ikn R , indicating that ik  is not in the current interval ) , ( 1 kn kn a a  . n k i R M a ikn ik kn , , ), 1 ( 1      where k ik d t M  1 (L7) n k i R M a ikn ik kn , , ), ( 2     where kn a M  2 (L8) (L9) Indicates if ik  is within a certain interval ) , ( 1 kn kn a a  . If 1 1 ,    n ik ikn R R , then ik  is within the interval ) , ( 1 kn kn a a  . ikn Q will equal 0 otherwise. n k i R R Q n ik ikn ikn , , , 1 ,     (L9) Using the interval scanning process above, We can now calculate the service level. First we introduce new variables and parameters. ln ik V service level satisfied at facility i for part k ln k b approximated fill rate for part k stock level l 3 M highest possible service level (L10) Only allows ln ik V to be a value greater than zero if 1  ikn Q . This ensures that the service level will be calculated with the current fill rate, as explained above. n l k i Q M V ikn ik , , , , 3 ln   (L10) (L11) Only allows ln ik V to be greater than zero if product i is stocked at facility k. Essentially a product cannot have a service level if it is not even stored at the facility. n l k i W M V ikl ik , , , , 3 ln   where ln 3 ) / ( k k jk ij J j b d d M     (L11)
  • 41. 40 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. (L12) ln ik V must be greater than 0. n l k i Vik , , , , 0 ln   (L12) (L13)(L14) The following equations maximize the value of ln ik V . If ikn Q = ikl W =1, then the two functions force the value of ln ik V to converge to the same value. ln ik V is calculated by multiplying the maximum possible service level( 3 M ) with ijk X which is the variable that determines the long run fraction of demand for product k from customer j met by warehouse i. So given a stock level l we calculate the maximum service level for each product k stored at warehouse I.    j k k ijk jk jk ik n l k i d b X d V , , , ), /( ) ( ln ln  (L13)        j ikl ikn k k ijk jk jk ik n l k i W M Q M d b X d V , , , ), 1 ( ) 1 ( )) /( ) (( 3 3 ln ln  (L14) (L15) States that the service level, ln ik V , must be greater than the assigned service level for all product k. k  is the predetermined service level for each product group. k V k i l n ik    , ln  (L15) (L16) , , , ikn ikl i Q W Y and ikn R are binary variables. n l k i or R Q W Y ikn ikn ikl i , , , , 1 0 , , ,   (L16) Complete Linearized Model Formulation: Minimize i i i i k j ijk jk ijk i k l ikl ik Y f X d c W lh      (L0) Subject To K k J j X i ijk       1 (L1) k j i W X l ikl ijk , , ,    (L2) k i Y W i l ikl ,    (L3)    j ijk jk ik ik k i X d t , ,  (L4)
  • 42. 41 This document has been created in the framework of a student design project and the Georgia Institute of Technology does not officially sanction its content. k d d j jk k    , (L5) k i Rik , , 0 0   (L6) n k i R M a ikn ik kn , , ), 1 ( 1      (L7) n k i R M a ikn ik kn , , ), ( 2     (L8) n k i R R Q n ik ikn ikn , , , 1 ,     (L9) n l k i Q M V ikn ik , , , , 3 ln   (L10) n l k i W M V ikl ik , , , , 3 ln   (L11) n l k i Vik , , , , 0 ln   (L12)    j k k ijk jk jk ik n l k i d b X d V , , , ), /( ) ( ln ln  (L13)        j ikl ikn k k ijk jk jk ik n l k i W M Q M d b X d V , , , ), 1 ( ) 1 ( )) /( ) [(( 3 3 ln ln  (L14) k V k i l n ik    , ln  (L15) n l k i or R Q W Y ikn ikn ikl i , , , , 1 0 , , ,   (L16)