Randomized Dinner Planning


5/20/16

I use a sampling technique called probability proportional to size at work, and at home, for a variety of things. For example, at work, it is used to sample companies based on a measure of size like payroll. At home I use the technique for creating workouts, where I sample from a list of exercises based on various criteria. My wife and I thought it could be used to plan our family's dinners.

We started by making a list of some recipes that we've done before. For the "measure of size" to sample by, we have Duration it takes to make the meal with preparation time included. Actually, we sample by 1/Duration, since we are more likely to make dinners that don't take as long to make. We also have a general "Base Weight" that we can use to further control the frequency of recipe selection.

Here is what the spreadsheet looks like

Note that the spreadsheet continues on for a few rows.

We select recipes for two weeks out. Note that we don't necessarily follow this list in order, nor are we bound to do anything on this list. This is more for generating ideas, variety, and helping to make shopping easier. However, just because selections are made, that doesn't mean they satisfy all of our criteria. For example, one may want to eat out at restaurants X number of times, not want a recipe more than Y number of times or a recipe less than Z number of times, and so on. Therefore I included some checks that were important to us. If any of these checks fail, we simply press F9 which regenerates the random numbers and selections.

Here is an example of a "good" list

And here is an example of a "bad" list that would need to be refreshed until a good list is selected

I was also curious how often we'd have to refresh the list based on our specifications. I created a macro that simulates selections for X number of iterations, and keeps track of the percent that refreshing needs to be done. In these screenshots, I show the results from simulating 500 iterations of random selections. Of these 500 iterations, we needed to refresh 56% of the time. Obviously, the more restrictions you have the more you need to refresh to get a good list.

Anyway, we've been using this spreadsheet for a week. So far, it is working quite well. We are finding that it certainly speeds up the store trips and adds some variety. Here is a link to download the spreadsheet. Thanks for reading!


If you enjoyed any of my content, please consider supporting it in a variety of ways: