I'm working on an Inventory Optimization (Allocation) problem.

The decision variable is the amount of inventory budget to allocate for each product, from a set of products. My objective is to maximize my profit. My constraint is a total budget which limits how much inventory I can purchase (I can't satisfy demand for all products - otherwise my allocations would simply be my forecasts).

The inputs to the problem are the following:

  • Future sales forecast for each product.
  • Forecast intervals (analogous to standard deviation) for each product: For example, for product 1, the forecast is 190 Units +/- 50 units, while the forecast for product 2 is 200 +/- 20 units.
  • A desired in-stock rate for each product.
  • A profit margin for each product.

If I only use point forecasts (i.e. I discard the second input), then maximizing my total profit across all products becomes pretty straightforward. I would just allocate as much as possible to products that will get me the most profit based on the margin × forecast sales. Basically allocate to products in order of decreasing profitability.

But if I take into account the forecast intervals, then the problem becomes more complex, and a "risk" factor seems to come into play: Product 1 might be the most profitable if I consider the upper bound of the forecast interval, but product 2 might be the most profitable if I consider the median of the forecast interval.

The only way to optimally allocate my budget is if I define a risk factor (similar to portfolio optimization).

How do I go about deciding this risk factor? What the approaches for doing so? Does service level/in stock rate come into play?

To clarify based on LarrySnyder610♦ 's comments.

By risk I do not mean risk of running out of stock. I mean the risk that comes from the variance in the product forecasts. To take the example I mentioned above:

Say we have just two products, where all is equal: margins, cost, etc...and lets say that I am forced to choose between one or the other for space or logistics constraints.

Product 1 one has a mean forecast of 190 units and a forecast interval of 50 units, so my forecast can be thought of as most likely falling between 140 and 240.

Product 2 has a mean forecast of 200 units and a forecast interval of 20 units, so my forecast can be thought of as most likely falling between 180 and 220.

If I disregard my forecast intervals, then obviously should go with product 2, since that means I would sell 200 units instead of 190.

However, if I take into account the forecast intervals, then there is a possibility that I will make more money if I go with product 1 (I'm lucky and I sell 240 units, compared to 220 units for product 2). But there is also a chance that I sell only 140 units, hence making less the lower bound of 180 for product 2.

So there is this idea that there is a "risk" factor involved: If I am willing to take the risk, then my optimal solution is to allocate to product 1. If I want to play it safe, then my optimal solution is to go with product 2.

To reiterate the main question: How do I quantify the risk? And what are the approaches for deciding whether I should take a risk or not? And does this risk factor somehow tie into service levels/in-stock rates (I don't think it does, but I might be wrong) ?

Most of all how do I communicate this to business users and product managers who have no math or stats knowledge?

  • $\begingroup$ Is the "desired in-stock rate" a hard requirement (management insists on at least 90% demand coverage) or a soft goal (gee it would be nice if we had 90% coverage)? Basically, are we talking about hard or soft constraints? $\endgroup$
    – prubin
    Sep 12, 2019 at 17:47
  • $\begingroup$ @prubin more of a soft constraint, since the budget constraint overrides it. $\endgroup$
    – Skander H.
    Sep 12, 2019 at 17:53
  • $\begingroup$ Would you penalize stockouts, backorders (if they are allowed) or what? I think that how you model that "soft" constraint may impact how you utilize the ranges. $\endgroup$
    – prubin
    Sep 12, 2019 at 19:44
  • $\begingroup$ @prubin what if I ignore the in-stock rate. That is I assume a simplistic model where an out of stock event has no other impact besides the actual lost sale it causes. How would I quantify/factor in my "risk"? $\endgroup$
    – Skander H.
    Sep 12, 2019 at 22:24
  • $\begingroup$ That brings up another question: Is this a single period model? Larry's profit function implicitly assumes that unsold inventory is scrapped with no residual value. In a multiperiod model, it would be carryover inventory, available for sale in the next period (with some holding cost). Even in a single period model, you would need to decide whether surplus inventory had any scrap/resale value. $\endgroup$
    – prubin
    Sep 14, 2019 at 15:45

1 Answer 1


Here's an approach that might be close to what you are looking for. Suppose that we have $n$ products, and for each product $i$ we know:

  • $c_i$ = purchase cost per unit (i.e., cost to order inventory from the supplier)
  • $\pi_i$ = profit margin per unit sold
  • $f_i$, $F_i$ = probability distribution (pdf, cdf) of demand per period

If there is only 1 product, then this is just a newsvendor problem. With multiple products, it's just multiple newsvendor problems subject to a budget constraint. The decision variables are:

  • $S_i$ = order quantity for product $i$

(You didn't specify whether this is a single- or multi-period model. I'm assuming single period, but it's not too hard to adapt this to the multi-period case. In that case we assume we follow a base-stock policy for each product, and the $S_i$ variables are interpreted as base-stock levels.)

For each product $i$, the expected profit function is

\begin{align*} \Pi_i(S_i) & = \pi_i\mathbb{E}[\min\{S_i,D_i\}] - c_iS_i \\ & = \pi_i\left[\mathbb{E}[D_i] - n_i(S_i)\right] - c_iS_i, \end{align*} where $n_i(x)$ is the loss function for distribution $f_i$, i.e.,

$$n_i(x) = \int_x^\infty (y-x)f_i(y)dy.$$

(The second $=$ follows from the fact that $\min\{S,D\} = D - (D-S)^+$.) The loss function $n_i(x)$ is convex (its derivative is $F_i(x)-1>0$), so $\Pi_i(S_i)$ is concave.

Then we want to solve the following optimization problem:

\begin{align*} \text{maximize} \quad & \sum_{i=1}^n \Pi_i(S_i) \\ \text{subject to} \quad & \sum_{i=1}^n c_iS_i \le B \\ & S_i \ge 0 \quad \forall i=1,\ldots,n, \end{align*} where $B$ is the budget. This is a convex problem (concave maximization), and should be easy to solve.

  • $\begingroup$ So if I understand your approach correctly, model the demand as distribution, not as a point forecast + interval. I don't see how that addresses the question of risk? There are still multiple optimal solutions based on how much risk we are willing to incur, no? Also what is $D_i$ ? $\endgroup$
    – Skander H.
    Sep 13, 2019 at 4:10
  • $\begingroup$ (1) Yes, model the demand as a distribution, but if you don't know the distribution, you can take your point forecast + interval and represent it as a uniform distribution. $\endgroup$ Sep 13, 2019 at 12:58
  • $\begingroup$ (2) Maybe I interpreted "risk" too loosely, but I was interpreting it as the tradeoff between having too much and too little inventory. Setting $S$ is the same as choosing a point on that tradeoff, and it's also the same as choosing the stockout probability for that product. In fact you can write $\Pi_i$ explicitly in terms of that tradeoff, which gives it more of a portfolio optimization feel. But it's not the same as risk aversion/neutrality -- is that what you were asking for? $\endgroup$ Sep 13, 2019 at 12:58
  • $\begingroup$ (3) I'm not exactly sure what you mean by "multiple optimal solutions depending on how much risk we are willing to incur". My formulation maximizes expected profit, and I doubt there are multiple optima since the objective function is strictly concave. $\endgroup$ Sep 13, 2019 at 13:02
  • $\begingroup$ (4) $D_i$ is the random variable representing the demand of product $i$. $\endgroup$ Sep 13, 2019 at 13:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.