**Classification tags**: business operations management, DES, next-event time progression

The Lemonade Stand game allows active learning of the following topics:

## Price Elasticity of Demand

The

*Price Elasticity of Demand (PED)*is a measure used to show the responsiveness, or elasticity, of the quantity demanded of a good or service to a change in its price. More precisely, it gives the percentage change in quantity demanded in response to a one percent change in price (ceteris paribus, i.e. holding constant all the other determinants of demand, such as income). In general, the demand for a good is said to be inelastic when the PED is less than one (in absolute value): that is, changes in price have a relatively small effect on the quantity of the good demanded. The demand for a good is said to be elastic when its PED is greater than one (in absolute value): that is, changes in price have a relatively large effect on the demand quantity of a good.## Sales Price Planning

Normally, price planning is based on full costs per product unit, which are computed as fixed costs (mainly labor, and, e.g., depreciation on assets and marketing costs) plus variable costs (mainly input materials). In

*cost-plus pricing*, the product price*p*is planned by adding a proportional profit to the costs*c*:*p*=*c*+*rc*where*r*is the planned profit rate.During favorable market conditions, full costs could be used for cost-plus pricing, while during periods of poor sales (e.g., due to increased competition), marginal costs may be used. The profit rate could be adapted when the PED of the product is changing. For instance, the lemonade stand could increase its planned profit rate when the weather conditions are sunny and warm, because under such conditions the otherwise very price-elastic demand for lemonade gets more inelastic, thus allowing for price increases without affecting the demand.

## Demand Forecasting

The demand of a new day can be forecasted on the basis of the previously recorded daily demand data, which forms a

*time series*. The two most common forecasting methods for time series are the*Simple Moving Average*and the*Exponentially Weighted Moving Average*methods. See https://people.duke.edu/~rnau/411avg.htm. In the LemonadeStand-1 model, the Simple Moving Average method is used.## Bill of Materials

A

*Bill of Materials (BoM)*defines the composition of a product in the form of a list of component items, each with a quantity, as required for assembling a production unit. In general, a component item may also have a BoM, i.e. be composed of other items, such that a nested composition tree is obatined.In the case of a lemonade stand with lemonade as a product, the production unit imay be a 3.5 ltr pitcher of lemonade, so we may have the following BoM:

{"Lemon": 3, "Water": 2.5, "IceCubes": 50, "Sugar": 0.3, "PaperCup": 1}

## Production Planning

The production quantity (in number of batches) is planned according to the demand forecast, but under the constraints of using the available input items from the inventory.

## Inventory Management

Extracted from the Key Concepts Document of the MITx MicroMasters in Supply Chain Management course offered by the MIT Center for Transportation & Logistics.There are many reasons for holding inventory including buffering against uncertainties in demand, supply, delivery and manufacturing. Having inventory allows for a smoother operation. There is, however, a problem with having too much inventory. Excess inventory can lead to spoilage and obsolescence. Also, spending too much on inventory limits the resources available for other activities and investments. Inventory analysis is essentially the determination of the right amount of inventory of the right product in the right location. On an operational level, a firm has to decide when to issue a replenishment order and how much to order. This requires a tactical decision about the replenishment policies for its inventories.

The two most important replenishment policies are:

**Periodic Review**with the parameters*reorder period*and*target inventory*.- According to this policy, replenishment orders for filling the inventory up to the
*target inventory*are issued periodically. The target inventory is obtained as the sum of the expected demand over the lead-time and reorder period plus the standard deviation of demand over lead-time and reorder period multiplied by a safety factor. **Continuous Review**with the parameters*reorder point*and*order quantity*.- According to this policy, a replenishment order is issued when the inventory level falls below the reorder point. The reorder point is obtained as the sum of the expected demand over the lead-time plus a safety stock, which is the standard deviation of demand over lead time multiplied by a safety factor.

Both policies make a trade-off between cost and

level of service

, which is a vague concept that can be operationalized in different ways. A common metric for the service level is the*Cycle Service Level (CSL)*, which is the probability that there will not be a stock out within a replenishment cycle. An inventory policy can be designed to minimize the costs while achieving an expected CSL of, say, 95%, which is one minus the probability of a stock out occurring. The total cost is the sum of purchase cost (per unit), order cost (per order), holding cost (per time unit) and shortage (or stock-out) cost (per event), which are the costs of not having an item in stock when it is ordered.

The *LemonadeStand-2* model modifies and extends the *LemonadeStand-1* model by

Adding

**inventory**management:- Adding the inventory management attributes
*targetInventory*,*reorderPeriod*and*reorderPoint*to the*InputItemType*class. - Replacing the aggregate delivery event type
*DailyDelivery*with*Delivery*such that a*Delivery*event represents a delivery of a previously ordered quantity of a specific item. This implies the need to add a*DailyProduction*event type, since daily production can no longer be performed in the context of a DailyDelivery event.

- Adding the inventory management attributes
Adding management of

**perishable items**:- Adding an attribute
*expirationTimeSpan*to*ItemType*. - Adding an attribute
*deliveryDate*to the*InputInventoryItem*class, such that the input inventory now consists of several batches per item type, each with a delivery date, allowing to check for the expiration of items. - Taking care that a
*Delivery*event creates a batch in the form of an*InputInventoryItem*instance.

- Adding an attribute
Adding a

**generic market**model:- Adding an object type
*DailyDemandMarket*as an abstract class that defines a`getDailyDemandQuantity()`

function representing a random variable. - Adding an object type
*ProductCategory*associated with*DailyDemandMarket*, such that companies are indirectly associated with a daily demand market by their product type being associated with a product category, which is associated with a daily demand market - Setting the
*DailyDemand*event's`quantity`

attribute by invoking the*LemonadeMarket's*`getDailyDemandQuantity()`

function.

- Adding an object type
- Adding a
**specific market**model by adding an object type*LemonadeMarket*as a concrete subclass of the abstract*DailyDemandMarket*class, such that its`getDailyDemandQuantity()`

function computes a daily demand quantity on the basis of a weather model.

These changes lead to the following information design model:

Notice how functions representing random variables, like `serviceDuration()`

and `recurrence()`

,
are marked with the keyword (or UML stereotype) «rv» standing for "random variable".

ON (event type) | DO (event routine) |

CustomerArrival( sd) @ t |
INCREMENT sd.queueLength IF sd.queueLength = 1 THEN SCHEDULE CustomerDeparture( sd) @ (t + sd.serviceDuration()) |

Conceptual rule models | Rule design models |
---|---|

- ServiceDesk-2: A service queue model
(one service and one queue) with one statistic: the Mean Response Time, which is the average length of time
a customer spends in the system from arrival to departure. For recording their arrival time, individual
customers are represented explicitly in a
*waitingCustomers*queue.

- Queueing_Simulation_Discrete_Event: This NetLogo simulation uses NetLogo's tick-advance primitive to advance simulation time by non-integral amounts. However, NetLogo's standard ticks display is unable to display non-integral values, so a custom ticks display has to be programmed. Copyright 2010, Nick Bennett.