3.5 - Problem # 17

Walther has a roadside produce stand where he sells oats, peas, beans, and barley. He buys these products at per-point wholesale prices of respectively, $1.05, $3.17, $1.99, and $0.95.; he sells them at per-pound retail prices of, respectively, $1.29, $3.76, $2.23, and $1.65. Each day the amount demanded (in pounds) could be as little as zero for each product, and as much as 10, 8, 14, and 11 for oats, peas, beans, and barley, respectively; he sells only whole-pound amounts, no partial pounds. Assume a discrete uniform distribution for daily demand for each product over its range; assume as well that Walther always has enough inventory to satisfy all demand. The summer selling season is 90 days, and demand each day is independent of demand on other days. Create a spreadsheet simulation that will, for each day as well for the whole season, simulate Walther’s total cost, total revenue, and total profit.

library(tidyverse)
items <- c("oats", "peas", "beans", "barley")
cost <- c(1.05, 3.17, 1.99, .95)
revenue <- c(1.29, 3.76, 2.23, 1.65)
max_demand <- c(10, 8, 14, 11)
df <- as_tibble(cbind(items, cost, revenue, max_demand))
kable(df)
items cost revenue max_demand
oats 1.05 1.29 10
peas 3.17 3.76 8
beans 1.99 2.23 14
barley 0.95 1.65 11

Simulation Total

library(data.table)
library(scales)

days <- 90
sim <- NULL
for (i in items){
  lbs_sold <- sample(0:df$max_demand[df$items == i], days, replace = TRUE)
  sim[[i]] <- list(day       =  seq(1:days),
                   lbs_sold  =  lbs_sold, 
                   cost      =  lbs_sold * as.numeric(df$cost[df$items == i]),
                   revenue   =  lbs_sold * as.numeric(df$revenue[df$items == i]))
}

dollars <- dollar_format(negative_parens = TRUE)

kable(rbindlist(sim, idcol = TRUE) %>% 
      rename(type = .id) %>%
      group_by(type) %>%
      summarise(cost    = -sum(cost),
                revenue =  sum(revenue)) %>%
      mutate(profit = revenue + cost) %>%
      rbind(data.frame(type = "*TOTAL*", 
                       cost    = sum(.$cost),
                       revenue = sum(.$revenue),
                       profit  = sum(.$profit))) %>%
      mutate_at(vars(-type), funs(. %>% dollars())))
type cost revenue profit
barley ($494.95) $859.65 $364.70
beans ($1,174.10) $1,315.70 $141.60
oats ($458.85) $563.73 $104.88
peas ($1,201.43) $1,425.04 $223.61
TOTAL ($3,329.33) $4,164.12 $834.79

Type sold by each day

library(knitr)
kable(rbindlist(sim, idcol = TRUE) %>%  rename(type = .id)) 
type day lbs_sold cost revenue
oats 1 9 9.45 11.61
oats 2 2 2.10 2.58
oats 3 7 7.35 9.03
oats 4 8 8.40 10.32
oats 5 2 2.10 2.58
oats 6 7 7.35 9.03
oats 7 0 0.00 0.00
oats 8 5 5.25 6.45
oats 9 8 8.40 10.32
oats 10 8 8.40 10.32
oats 11 7 7.35 9.03
oats 12 5 5.25 6.45
oats 13 8 8.40 10.32
oats 14 4 4.20 5.16
oats 15 1 1.05 1.29
oats 16 5 5.25 6.45
oats 17 1 1.05 1.29
oats 18 1 1.05 1.29
oats 19 9 9.45 11.61
oats 20 0 0.00 0.00
oats 21 10 10.50 12.90
oats 22 6 6.30 7.74
oats 23 9 9.45 11.61
oats 24 3 3.15 3.87
oats 25 8 8.40 10.32
oats 26 9 9.45 11.61
oats 27 7 7.35 9.03
oats 28 0 0.00 0.00
oats 29 7 7.35 9.03
oats 30 6 6.30 7.74
oats 31 4 4.20 5.16
oats 32 0 0.00 0.00
oats 33 5 5.25 6.45
oats 34 0 0.00 0.00
oats 35 9 9.45 11.61
oats 36 3 3.15 3.87
oats 37 2 2.10 2.58
oats 38 7 7.35 9.03
oats 39 9 9.45 11.61
oats 40 0 0.00 0.00
oats 41 6 6.30 7.74
oats 42 10 10.50 12.90
oats 43 6 6.30 7.74
oats 44 9 9.45 11.61
oats 45 3 3.15 3.87
oats 46 4 4.20 5.16
oats 47 10 10.50 12.90
oats 48 4 4.20 5.16
oats 49 5 5.25 6.45
oats 50 1 1.05 1.29
oats 51 3 3.15 3.87
oats 52 4 4.20 5.16
oats 53 0 0.00 0.00
oats 54 8 8.40 10.32
oats 55 0 0.00 0.00
oats 56 0 0.00 0.00
oats 57 2 2.10 2.58
oats 58 0 0.00 0.00
oats 59 9 9.45 11.61
oats 60 3 3.15 3.87
oats 61 0 0.00 0.00
oats 62 3 3.15 3.87
oats 63 9 9.45 11.61
oats 64 4 4.20 5.16
oats 65 4 4.20 5.16
oats 66 1 1.05 1.29
oats 67 9 9.45 11.61
oats 68 6 6.30 7.74
oats 69 2 2.10 2.58
oats 70 4 4.20 5.16
oats 71 7 7.35 9.03
oats 72 2 2.10 2.58
oats 73 6 6.30 7.74
oats 74 2 2.10 2.58
oats 75 4 4.20 5.16
oats 76 8 8.40 10.32
oats 77 10 10.50 12.90
oats 78 2 2.10 2.58
oats 79 3 3.15 3.87
oats 80 6 6.30 7.74
oats 81 4 4.20 5.16
oats 82 4 4.20 5.16
oats 83 6 6.30 7.74
oats 84 7 7.35 9.03
oats 85 7 7.35 9.03
oats 86 8 8.40 10.32
oats 87 1 1.05 1.29
oats 88 2 2.10 2.58
oats 89 8 8.40 10.32
oats 90 10 10.50 12.90
peas 1 7 22.19 26.32
peas 2 7 22.19 26.32
peas 3 7 22.19 26.32
peas 4 3 9.51 11.28
peas 5 4 12.68 15.04
peas 6 3 9.51 11.28
peas 7 6 19.02 22.56
peas 8 4 12.68 15.04
peas 9 1 3.17 3.76
peas 10 7 22.19 26.32
peas 11 6 19.02 22.56
peas 12 4 12.68 15.04
peas 13 3 9.51 11.28
peas 14 0 0.00 0.00
peas 15 4 12.68 15.04
peas 16 2 6.34 7.52
peas 17 6 19.02 22.56
peas 18 7 22.19 26.32
peas 19 8 25.36 30.08
peas 20 3 9.51 11.28
peas 21 7 22.19 26.32
peas 22 3 9.51 11.28
peas 23 1 3.17 3.76
peas 24 2 6.34 7.52
peas 25 2 6.34 7.52
peas 26 3 9.51 11.28
peas 27 0 0.00 0.00
peas 28 6 19.02 22.56
peas 29 2 6.34 7.52
peas 30 1 3.17 3.76
peas 31 2 6.34 7.52
peas 32 8 25.36 30.08
peas 33 1 3.17 3.76
peas 34 8 25.36 30.08
peas 35 5 15.85 18.80
peas 36 8 25.36 30.08
peas 37 2 6.34 7.52
peas 38 1 3.17 3.76
peas 39 3 9.51 11.28
peas 40 0 0.00 0.00
peas 41 8 25.36 30.08
peas 42 5 15.85 18.80
peas 43 7 22.19 26.32
peas 44 4 12.68 15.04
peas 45 6 19.02 22.56
peas 46 8 25.36 30.08
peas 47 2 6.34 7.52
peas 48 4 12.68 15.04
peas 49 5 15.85 18.80
peas 50 7 22.19 26.32
peas 51 5 15.85 18.80
peas 52 3 9.51 11.28
peas 53 4 12.68 15.04
peas 54 0 0.00 0.00
peas 55 3 9.51 11.28
peas 56 4 12.68 15.04
peas 57 7 22.19 26.32
peas 58 0 0.00 0.00
peas 59 4 12.68 15.04
peas 60 8 25.36 30.08
peas 61 1 3.17 3.76
peas 62 3 9.51 11.28
peas 63 6 19.02 22.56
peas 64 4 12.68 15.04
peas 65 4 12.68 15.04
peas 66 5 15.85 18.80
peas 67 2 6.34 7.52
peas 68 0 0.00 0.00
peas 69 7 22.19 26.32
peas 70 3 9.51 11.28
peas 71 7 22.19 26.32
peas 72 3 9.51 11.28
peas 73 3 9.51 11.28
peas 74 8 25.36 30.08
peas 75 3 9.51 11.28
peas 76 8 25.36 30.08
peas 77 2 6.34 7.52
peas 78 1 3.17 3.76
peas 79 7 22.19 26.32
peas 80 2 6.34 7.52
peas 81 5 15.85 18.80
peas 82 1 3.17 3.76
peas 83 4 12.68 15.04
peas 84 6 19.02 22.56
peas 85 2 6.34 7.52
peas 86 7 22.19 26.32
peas 87 2 6.34 7.52
peas 88 7 22.19 26.32
peas 89 8 25.36 30.08
peas 90 7 22.19 26.32
beans 1 0 0.00 0.00
beans 2 14 27.86 31.22
beans 3 13 25.87 28.99
beans 4 9 17.91 20.07
beans 5 12 23.88 26.76
beans 6 4 7.96 8.92
beans 7 14 27.86 31.22
beans 8 7 13.93 15.61
beans 9 5 9.95 11.15
beans 10 1 1.99 2.23
beans 11 5 9.95 11.15
beans 12 0 0.00 0.00
beans 13 8 15.92 17.84
beans 14 3 5.97 6.69
beans 15 8 15.92 17.84
beans 16 1 1.99 2.23
beans 17 14 27.86 31.22
beans 18 10 19.90 22.30
beans 19 2 3.98 4.46
beans 20 11 21.89 24.53
beans 21 14 27.86 31.22
beans 22 4 7.96 8.92
beans 23 2 3.98 4.46
beans 24 14 27.86 31.22
beans 25 10 19.90 22.30
beans 26 12 23.88 26.76
beans 27 6 11.94 13.38
beans 28 2 3.98 4.46
beans 29 4 7.96 8.92
beans 30 0 0.00 0.00
beans 31 2 3.98 4.46
beans 32 13 25.87 28.99
beans 33 3 5.97 6.69
beans 34 11 21.89 24.53
beans 35 12 23.88 26.76
beans 36 7 13.93 15.61
beans 37 12 23.88 26.76
beans 38 0 0.00 0.00
beans 39 9 17.91 20.07
beans 40 9 17.91 20.07
beans 41 6 11.94 13.38
beans 42 6 11.94 13.38
beans 43 13 25.87 28.99
beans 44 4 7.96 8.92
beans 45 1 1.99 2.23
beans 46 7 13.93 15.61
beans 47 5 9.95 11.15
beans 48 7 13.93 15.61
beans 49 6 11.94 13.38
beans 50 12 23.88 26.76
beans 51 12 23.88 26.76
beans 52 5 9.95 11.15
beans 53 6 11.94 13.38
beans 54 2 3.98 4.46
beans 55 0 0.00 0.00
beans 56 7 13.93 15.61
beans 57 4 7.96 8.92
beans 58 3 5.97 6.69
beans 59 6 11.94 13.38
beans 60 12 23.88 26.76
beans 61 2 3.98 4.46
beans 62 8 15.92 17.84
beans 63 14 27.86 31.22
beans 64 7 13.93 15.61
beans 65 14 27.86 31.22
beans 66 2 3.98 4.46
beans 67 13 25.87 28.99
beans 68 6 11.94 13.38
beans 69 9 17.91 20.07
beans 70 9 17.91 20.07
beans 71 2 3.98 4.46
beans 72 3 5.97 6.69
beans 73 4 7.96 8.92
beans 74 5 9.95 11.15
beans 75 1 1.99 2.23
beans 76 6 11.94 13.38
beans 77 9 17.91 20.07
beans 78 0 0.00 0.00
beans 79 4 7.96 8.92
beans 80 2 3.98 4.46
beans 81 9 17.91 20.07
beans 82 7 13.93 15.61
beans 83 4 7.96 8.92
beans 84 1 1.99 2.23
beans 85 5 9.95 11.15
beans 86 5 9.95 11.15
beans 87 8 15.92 17.84
beans 88 7 13.93 15.61
beans 89 8 15.92 17.84
beans 90 5 9.95 11.15
barley 1 0 0.00 0.00
barley 2 2 1.90 3.30
barley 3 6 5.70 9.90
barley 4 4 3.80 6.60
barley 5 7 6.65 11.55
barley 6 8 7.60 13.20
barley 7 0 0.00 0.00
barley 8 11 10.45 18.15
barley 9 4 3.80 6.60
barley 10 9 8.55 14.85
barley 11 4 3.80 6.60
barley 12 4 3.80 6.60
barley 13 6 5.70 9.90
barley 14 10 9.50 16.50
barley 15 10 9.50 16.50
barley 16 8 7.60 13.20
barley 17 9 8.55 14.85
barley 18 4 3.80 6.60
barley 19 11 10.45 18.15
barley 20 5 4.75 8.25
barley 21 11 10.45 18.15
barley 22 7 6.65 11.55
barley 23 11 10.45 18.15
barley 24 9 8.55 14.85
barley 25 0 0.00 0.00
barley 26 0 0.00 0.00
barley 27 7 6.65 11.55
barley 28 3 2.85 4.95
barley 29 1 0.95 1.65
barley 30 11 10.45 18.15
barley 31 11 10.45 18.15
barley 32 0 0.00 0.00
barley 33 8 7.60 13.20
barley 34 3 2.85 4.95
barley 35 6 5.70 9.90
barley 36 8 7.60 13.20
barley 37 6 5.70 9.90
barley 38 6 5.70 9.90
barley 39 5 4.75 8.25
barley 40 8 7.60 13.20
barley 41 3 2.85 4.95
barley 42 1 0.95 1.65
barley 43 6 5.70 9.90
barley 44 0 0.00 0.00
barley 45 10 9.50 16.50
barley 46 4 3.80 6.60
barley 47 1 0.95 1.65
barley 48 3 2.85 4.95
barley 49 5 4.75 8.25
barley 50 10 9.50 16.50
barley 51 1 0.95 1.65
barley 52 10 9.50 16.50
barley 53 5 4.75 8.25
barley 54 6 5.70 9.90
barley 55 2 1.90 3.30
barley 56 8 7.60 13.20
barley 57 10 9.50 16.50
barley 58 10 9.50 16.50
barley 59 10 9.50 16.50
barley 60 6 5.70 9.90
barley 61 8 7.60 13.20
barley 62 11 10.45 18.15
barley 63 6 5.70 9.90
barley 64 6 5.70 9.90
barley 65 3 2.85 4.95
barley 66 0 0.00 0.00
barley 67 2 1.90 3.30
barley 68 3 2.85 4.95
barley 69 9 8.55 14.85
barley 70 9 8.55 14.85
barley 71 5 4.75 8.25
barley 72 4 3.80 6.60
barley 73 9 8.55 14.85
barley 74 8 7.60 13.20
barley 75 8 7.60 13.20
barley 76 1 0.95 1.65
barley 77 3 2.85 4.95
barley 78 3 2.85 4.95
barley 79 4 3.80 6.60
barley 80 5 4.75 8.25
barley 81 5 4.75 8.25
barley 82 5 4.75 8.25
barley 83 7 6.65 11.55
barley 84 7 6.65 11.55
barley 85 7 6.65 11.55
barley 86 9 8.55 14.85
barley 87 7 6.65 11.55
barley 88 7 6.65 11.55
barley 89 5 4.75 8.25
barley 90 1 0.95 1.65