Category Archives: Teaching materials

a multiobjective decision analysis model to find the best restaurant in Richmond

I taught multiobjective decision analysis (MODA) this semester. It is a lot of fun to teach. I always learn a lot when I teach it. One of the most enjoyable parts of the class (for me at least!) is to run a class project that we chip away at during class over the course of the semester. Our project is to find the best restaurant for us to celebrate at the end of the semester. “Best” here is relative to the people in the class and the .

The project is a great way to teach about the MODA process. The process not only includes the modeling, but also the craft of working with decision makers and iteratively improving the model. It’s useful for students to be exposed to the entire analysis process. I don’t do this in my other classes.

On the first day of class, we came up with our objectives hierarchy. I did this by passing out about five Post It notes to each student. They each wrote one criteria for selecting a restaurant on each Post It note. They stuck their Post It notes to the wall. Together, we regrouped and organized our criteria into an objectives hierarchy.  Some of the objectives because “weed out criteria,” such as making sure that the restaurant could accommodate all of us and comply with dietary restrictions.

Our initial criteria were:

  1. Distance
  2. Quality of food
  3. Variety of food
  4. Service: Fast service
  5. Service: Waiting time for a table
  6. Service: Friendly service
  7. Atmosphere: Noise level
  8. Atmosphere: Cleanliness
  9. Cost

Our final criteria were as follows (from most to least important):

  1. Quality of food
  2. Cost (tie with #3)
  3. Distance
  4. Fast service (tie with #5)
  5. Noise level
  6. Cleanliness

We removed variety of food, waiting time, and friendly service because classroom discussions indicated that they weren’t important compared to the other criteria. Variety, for example, was less important if we were eating delicious food at an ethnic restaurant that had less “variety” (variety in quotes here, because it depends on you you measure it).

In the next few weeks, we worked on identifying how we would actually measure our criteria. Then, we came up with a list of our favorite restaurants. During this process, we removed objectives that no longer made sense.

We collaboratively scored each of the restaurants in each of the six categories by using a google docs spreadsheet.

  1. Quality of food = average score (1-5 scale)
  2. Cost (tie with #3) = cost of an entree, drink, tax, and tip
  3. Distance = distance from the class (in minutes walk/drive)
  4. Fast service (tie with #5) = three point scale based on fast service, OK service, or very slow service
  5. Noise level = four point scale based on ratings
  6. Cleanliness: based on the last inspection. Score = # minor violations + 4*# major violations.

A real challenge was to come up with:

  • the single dimensional value functions that translated each restaurant score for an objective into a value between 0 and 1.
  • the weights that balanced our preferences across objectives using swing weight thinking. FYI, we used an additive model.

I won’t elaborate on these parts of the process further. Ask me about these if you are interested.

When we finished our model, the “best” decision was to forego a restaurant and do a potluck instead. No one was happy with this. We examined why this happened. This was great: ending up with a bad solution was a great opportunity for learning. We concluded that we didn’t account for the hidden costs associated with a potluck. Namely, it would entail either making a trip to the grocery store or cooking, approximately a 30 minute penalty. We decided that this was equivalent to driving to a distant restaurant, a 26 minute drive in our model.  It was also hard to evaluate cleanliness since the state do not inspect classrooms like they do restaurants. But since cleanliness didn’t account for much of our decision, we decided not to make adjustments there.

The final model is in a google docs spreadsheet.

We performed a sensitivity analysis on all of the weights. Regardless of what they were, most of the restaurants were dominated, meaning that they would not be optimal no matter what the weights were. The sensitivity was not in google docs, since we downloaded the document and performed sensitivity on our own. I show the sensitivity wrt to the weight for quality below. The base weight for quality is 0.3617. When the weight is zero and quality is not important, Chipotle would have been our most preferred restaurant. The Local would be preferred only across a tiny range.

We celebrated in Ipanema, a semi-vegetarian restaurant in Richmond. I think our model came up with a great restaurant. We all enjoyed a nice meal together. Interestingly, Mamma Zu scored almost identically to Ipanema (see the figure below).

I cannot claim credit for this fun class project. I shamelessly stole this idea from Dr. Don Buckshaw, who uses it in MODA short courses.  We use the Craig Kirkwood’s Strategic Decision Making as the textbook for the course. I also recommend Ralph Keeney’s Value Focused Thinking and John Hammond’s Smart Choices.

How do you choose a restaurant?

Sensitivity with respect to the weight for quality (0.3617 in the base case).

how to find a football team’s best mix of pass and run plays using game theory

This is my third and final post in my series of football analytics slidecasts. After this one, just enjoy the Superbowl. My first two posts are here and here.

This slidecast illustrates how to find

  • the offensive team’s best mix of run and pass plays, and
  • the defensive team’s best mix of run and pass defenses.
The best mix is, of course, a mixed strategy. We use a game theory to identify the best mix (a Nash equilibrium) for a simultaneous, perfect information, zero-sum game.

What is a football team’s best mix of running and passing plays?

View another webinar from Laura McLay

When is a two point conversion better than an extra point? A dynamic programming approach.

This post continues my series of slidecasts about football. My first slidecast is here.

Today’s topic addresses when a two point conversion is better than an extra point after a touchdown. As you may guess, it is best for a team to go for two when they are down by eight. You can see other scenarios when it is best to go for two, based on the point differential and the remaining number of possessions in the game.

This presentation is on Wayne Winston’s book Mathletics, which is a fantastic introduction to sports analytics.

Related post:

should a football team go for it on fourth down?

With the Superbowl coming up, I created three sports analytics slidecasts for analyzing football strategies. I will post one per day here on the blog.

The first slidecast deals with the decision of whether a football team should go for it on fourth down (or should they punt). The presentation is adapted from the book Scorecasting by Tobias Moskowitz and Jon Werthem. Wayne Winston blogged about this, and his blog post went viral. Here is another look at this issue.

a few more thoughts on operations research and coffee: multiobjective decision analysis

I recently wrote about how I used OR to decide how to get my coffee fix in the morning. Some of you suggested that I perform MODA to consider the tradeoffs between cost, taste, and convenience. I agree!

My previous post contains the cost, taste, and convenience scores for the six coffee options:

  1. Home coffee (made at home, brought to work in a mug)
  2. Department coffee (purchased from the coffee made in the department coffee maker)
  3. Coffee shop (bought from a local coffee shop on the way to work)
  4. Dunkin Donuts (my guilty pleasure, a little out of my way)
  5. Office coffee (made in my spare coffee maker in my office)
  6. Keurig coffee (made in my office)


  • The preferential independence assumption was reasonable here.
  • I used an additive value function, since it was reasonable in this situation.
  • I used an exponential shape to assess the single dimensional value functions.  I was linear in taste.  I had a concave shape factor for cost (1.83) and a convex shape factor for convenience (-6.8).  I really hate waiting.
  • My swing weights are 0.5 for cost, 0.25 for convenience, and 0.25 for taste. My rationale here is that cost adds up over the year, and as a result, it is twice as important as convenience and taste.  Convenience and taste seem about equally important to me.

Based on this, the MODA values for the six options lead to this ordering of my coffee options scaled between zero and one are:

  1. Home coffee (0.77)
  2. Office coffee (0.71)
  3. Department coffee (0.67)
  4. Keurig coffee (0.67)
  5. Coffee shop (0.32)
  6. Dunkin Donuts (0.25)

It looks like I naturally gravitated to my “optimal” decisions of making coffee at home or in my office.  A sensitivity on the weight for cost leads to the following graph.  It shows that buying coffee at a coffee shop or at Dunkin Donuts would be suboptimal across all weights (so would buying the department coffee).  If I care a little less about cost, buying a Keurig coffee maker for my office would become the best option.

Coffee MODA analysis

Coffee MODA analysis. We want to maximize the value, so the line that is highest is my “optimal” choice.

If I change the weights so that taste counts the most (with a weight of 0.5) and cost and convenience have weights of 0.25, then the MODA values for the six options lead to this ordering of my coffee options scaled between zero and one are:

  1. Home coffee (0.73)
  2. Keurig coffee (0.69)
  3. Dunkin Donuts (0.5)
  4. Office coffee (0.49)
  5. Coffee shop (0.49)
  6. Department coffee (0.46)

The sensitivity of the results based on the weight for taste are captured in the following figure.  In both cases, it looks like continuing to make coffee at home is my best bet.

If you’re interested in working this example, check out my spreadsheet for this on my new “Files” page under the teaching materials heading. I’ll try to post some of my teaching materials, code, and data on this blog as I go.