Course Materials

Instructors:  Be sure to contact us ( to get a copy of the Instructors Manual and Slides.  And, please connect with me on LinkedIn where I’ll post updates ( We have a lot of material to help you with your class.  We have a 33-page instructors manual, we have 310 slides that cover the 15 chapters, we have 15 answer keys with answers and additional discussion points for class, this site has 16 models (with their own slides), and 11 different pre-built spreadsheets. (Note that in late 2017, we converted some material to a new format, and that will be a work-in-progress for awhile.)

Screenshot from OPC for Chpt4 Problem

We are creating the models using a Jupyter notebook so they can run in Python with an open source solver and open source simple mapping.  We are making the notebooks as simple as possible so that your students should be able to easily run the exercises.  We think that students will appreciate using Python– even those who have never done it before.  It is a good skill to at least know about.

We are using the Python package of PuLP for the modeling language and plotly to draw the solutions.  The output goes to csv files that can be opened in Excel.  With this iteration, we wanted to get away from commercial solutions so that everyone would have access to the models.

The book works well if supply chain design is just part of your class.  In this case, you can start with the model Chapter 3.  This is an easy one to start with.  You can then jump to Chapter 9.  This is a detailed case that represents a realistic design problem.

We have two versions of the Python models.  One is in Google Colab and the other allows you to download the Jupyter Notebooks directly. (Note that the Colab version is still a Jupyter Notebook.)

With Google Colab, you don’t have to install Python or any other applications.  You can run directly from your browser.  This makes it easier to work with.  You will need a google account and it is best to copy the models to your own account so you can make and keep changes.

With Jupyter models, you can run from your computer and don’t need a Google account.  Here are directions for installing the software that you need.

To run the Jupyter notebooks on your computer, follow the directions here.  Then, here are some tips:

  1. To open Jupyter in Windows, go to the search bar at the bottom left and type in Juypter… and you should see the Juptyer note books
  2. Download the notebook files that you see below in the chapters.  (Chapters 3 and 9 are the best ones to use heavily).  Put these notebooks in your preferred directory.
  3. Juptyer Notebooks will open in your browser.  Just navigate to the folder where you put these files and open them.
  4. The top of the notebook has directions and shows you what to do.  You should only need to manipulate data in the top block of code.
  5. Take your time reading the directions.
  6. Don’t be intimidated by the code– it is easy to follow and get running.
  7. To run, go up to the menu item Cell | Run All.  (Don’t hit the run icon, it just runs a block of code).
  8. You will see maps that it creates and it dumps some data into the folder where you put the notebook.
  9. Rename the scenario every time to avoid overwriting your files.  Make sure you close files if you are going to overwrite them.
  10. Enjoy!  I think the PuLP models are laid out in a nice way if you want to learn more about how Python and modeling works.

We continue to develop the material.  If you develop or improve the material, we would love to hear about it, share with the group, and give you credit.

Chapter 1 Material

Here are some good cases and links to more material on the cases.  We would be happy to post additional cases to help with your class.

  1. Mars and Wrigley merger
  2. Whirlpool and Maytag merger
  3. MillerCoors merger
  4. The Home Depot supply chain transformation
  5. Pepsi and Multi-site Production Planning
  6. Johnson Controls closed loop battery supply chain
  7. Südzucker uses network design to adjust to changing regulations
  8. Toshiba uses network design to evaluate options

Chapter 2 Material

The Logistica Spreadsheet shows you the calculations from the book.  It is also a good starting point if you want to test other ideas.

The side bar in Chapter 2 provides an example of locating the best point between Eugene, OR and Portland, OR.  This spreadsheet shows you this calculation.

Chapter 3 Material

No matter what you do with the other models, you should start with this Chapter for the Python Exercises.

The Excel Exercise, MIP for 9-City Example, is a good companion to use when going over the Mixed Integer Programming (MIP) formulation.  The MIP formulation is important for building intuition and if you cover it slowly and with the help of Excel, students should get a lot out of the section.

Here is the Colab version or Jupyter notebook for Al’s Athletics model.  You should practice with this one.  Practice changing the number of warehouses that the model picks.  Practice looking at the output and renaming the scenarios.  And, practice changing which warehouses it is forced to use– you’ll see a list of warehouses with two Zero or Ones after it.  Make sure you understand these.  It may look hard at first, but you’ll get it quickly.

Chapter 4 Material

In Chapter 4, you can extend the MIP 9-City Example from Chapter 3 with service level constraints.

For Chen’s Model, I find it helpful to use this one to teach the two step process for cleaning models– that is run one model that is your main objective.  Then, run a 2nd model to clean it up.  Here is the Colab version or Jupyter notebook.  Note there are three models here. The first one shows both models.  The 2nd step model shows just the 1st model active.  the 3rd step has just the 2nd model active.  Here are the slides (PPT version and PDF version) I use when I teach this.

This model is a bit advanced because you activate and deactivate different things in the code and adjusting the code.  And, for more advanced python programmers, this is one they could extend and automate.

Chapter 5 Material

In this chapter we add capacity constraints to our models.  Capacity seems relatively straight-forward to add to a model.  However, as the chapter points it, it can be hard to measure, it can cause strange results, and it can increase the complexity of the models.  We have two cases that help explain capacity:  The LP Transportation Problem (Colab version or Jupyter Notebook version) and the Brazil Capacity case (Colab version or  Juptyer Notebook version).  Both cases help explain capacity and both allow you to explore more advanced optimization ideas.

Chapter 6 Material

In the text we mention a UPS model and there is an exercise using this model (but with a different demand and package weight).  Here is the Colab version and the Jupyter version. This includes the data and guides on how to use it.  Note that this case is built for 5lb UPS rates only.  You can easily extend this model to create other case studies.

To practice using regression for determining transportation rates, we have a file of 296 actual shipments with their distance and cost.  This was taken from a project that used regression to build the rate matrix.  The file is called, Raw Truckload Rates for Regression.  Use this to build a regression to determine the cost based on the distance.

In the book, we have a section on determining factors for multi-stop routes.  Click here for a copy of this spreadsheet so you can see the examples.  We have also included other examples.  There are a lot of different assumptions you can make here.  If you have new ideas you would like to share, let us know.

Question # 2 (in Chapter 6)’s TL and LTL Model for Construction (Colab version or  Jupyter version) gives you a working model that has a model with TL and LTL rates.  This model can easily be expanded and modified.  Note that when we tested the 5 warehouse solution with an open source solver, we found a bug– a good warning about the robustness of open source solvers.

Here is the raw data for the price of oil vs the price of diesel fuel.  This the mini-case at the end of chapter.  For a more detailed discussion of the impact of the price of oil on the supply chain see this post.

Here is the Raw Transportation Rate file from the end of chapter questions.  This shows 300 shipments from Atlanta to Chicago with different modes.

Chapter 7 Material

In the text of the chapter, we mention modifying the UPS model with variable costs.  You can do this exercise with the UPS model from Chapter 6.

Question #3 references the file Warehouse Costs by Throughput.  This is another example of regression analysis.  This time it is applied to the fixed and variable costs of the warehouse.

Question #5 references a file called Investment Decisions (Colab version or  Juptyer Notebook version).   This is a full model for a fast-growing beverage company in the UK.  This is interesting because it adds multiple time periods to the model.

Question #7 references a file called Accounting Allocations.  This file is an exercise in allocating the accounting costs to fixed and variable costs.

Chapter 8 Material

The book references the  Illinois Quality Parts model.  Unfortunately, we think this model has been lost in the transition from commercial software to Python.

Question #2 references the MIP for 9 City Excel found in the materials for Chapter 3.

Chapter 9 Material

The JADE case is a great exercise. I use it for all my classes as the case study that the students should do.  There are lots of ways the students can think about the model.  And, this is pretty representative of a full scale project.

Here is the Colab version or the Jupyter notebook version.  Note that there is another table to manipulate– a table that sets the production limits for different products at different plants.  

Chapter 10 Material

The text walks through the Value Grocers example.  Question #3 also references the file Value Grocers Expanded Product Line Exercise.  For this one, we only have the data available.  So, you can’t re-do the original homework question.  But, you have the data and the other models on this page.  You can now use this to create another model to enhance your learning.

Question #4 references the file Australia Gold Mining Product Sourcing Study (Colab version or  Jupyter Notebook version).

Chapter 11 Material

This is a great model to learn and think about multi-objective optimization.  Here is the Colab version or the Jupyter Notebook version of the Germany Stores model.  This one takes some time to run, but builds out a graph.  We can later update this so that it generates more points, but this should give you a good idea of how this works.  Some of the commercial solvers have some nice ways to build this curve based on some of the great work of Pete Cacioppi.

Chapter 12 Material

The end of chapter questions references Debugging I (Colab version or  Jupyter Notebook version), Debugging Example II (Colab version or Jupyter Notebook version), and Debugging Example III. (which no longer works with Python)  The two remaining debugging examples are worth a try.  We would encourage you to create other ones as well.

Chapter 13 Material

Question #2 references a file called Aggregating Customers.  This gives you practice grouping customers.

Question #3 references a file called Aggregating Products.  This gives you practice aggregating products.

Chapter 15 Material

The JPMS model has been lost over the years.  It was always meant as an illustration anyway.

Leave a Reply

Your email address will not be published. Required fields are marked *