So assume we have a MILP (e.g. inventory or capacity planning) and the objective is to minimize total costs (inventory costs, set-up costs, backorder costs, production costs etc.). The production of a product $x_{tp}$ must meet demand $D_{tp}$. Most models and papers I reviewed in this area only consider the variable costs of a product (e.g. material) in the objective function, but do not incorporate the fixed costs per unit (as they assume that they are fixed).

So normally, unit costs of a product $UC_p$ would consist of a variable term ($VC$) and a fixed term, with the fixed portion being proportionalized based on the whole output Level $\sum\limits_{p \in P}x_{tp}$ (simplified).

$$UC_p =\frac{FC}{\sum\limits_{p \in P}x_{tp}} + VC$$

The problem now is that, if i want to calculate the total costs, this term leads to non-linearity of my MILP, as i would need to multiply it with the production quantity $x_{tp}$.

The reason I am looking for such a formulation is that I want to incorporate the idea of economies of scale into the model, e.g. the more I produce of a specific product the lower are my unit costs. It is basically an alternative formulation to an utilization constraint that sets a lower bound on the output quantity. Still, i wanted to try if there is a way to formulate it completely from a cost perspective.

  • 2
    $\begingroup$ Hi @Paroth, welcome to OR.SE. Would it be feasible to have a binary variable that decides wether production takes place in a time period $t$ and you could then use this variable with the fixed costs in the objective function? Individual costs could be computed afterwards. It might be beneficial to give some more details on your problem to get a better understanding what you are trying to achieve. $\endgroup$
    – JakobS
    Aug 14 '19 at 12:48
  • $\begingroup$ Yes, it would be feasible. Actually everything is possible to keep it linear. So I am currently building a small capacity planning problem and besides the mentioned inventory costs, set-up costs etc. i want to also minimize production/unit costs while satisfying the demand. I already have a binary variable $u_{tp}$ to indicate whether a product is produced in period $t$, so maybe i could use this variable to model the fixed costs. Eventually I want to incorporate a cost-based perspective where the company can set it's capacity and production plans based on the marginal costs of production. $\endgroup$
    – Paroth
    Aug 14 '19 at 13:00
  • $\begingroup$ Then probably the easiest solution would be to use that binary variable with the fixed costs in the objective function. What I'm not 100% sure of is whether you have fixed costs per product or per all products? Maybe you could elaborate this a bit more. $\endgroup$
    – JakobS
    Aug 14 '19 at 13:10
  • $\begingroup$ I take a very simplified approach and thus just assume that I have total fixed costs and I do not differentiate between products. $\endgroup$
    – Paroth
    Aug 14 '19 at 13:15
  • $\begingroup$ Then you probably have a binary variable for each timebucket, say $s_t$ that needs to be 1 if at least one product is produced in the timebucket. This variable can then be used in the objective function with coefficient $FC$. $\endgroup$
    – JakobS
    Aug 14 '19 at 13:19

I believe that, in practice, economies of scale usually manifest as reductions in the unit variable cost as quantities increase. A common approach is to model the economies of scale using piecewise linear functions (which will be accurate in some situations and an approximation in others). You then break up the production quantity for a particular product into a sum of variables, each representing the amount of production in one of the segments of the PWL cost function. Assuming that you have an economy of scale (not a diseconomy), and that you are minimizing rather than maximizing cost (i.e., you are not the federal government), you will also need binary variables to signal whether an interval has been fully used and constraints to ensure that you do not use one of the cheaper intervals until you have filled out the more expensive intervals.

The preceding assumes incremental discounts (where the cumulative cost function is continuous). "All-units" discounts result in the cumulative cost function having jump discontinuities. You still use binary variables to signal qualification for an interval (sufficient overall quantity), and then write the total cost for that product as the sum of cost variables for each interval, constrained via those binary variables so that only the one correct quantity makes it into the objective function.

Note that some solvers support piecewise linear functions directly, which can help.

  • 2
    $\begingroup$ You deserve bonus points for this: "rather than maximizing cost (i.e., you are not the federal government)" $\endgroup$ Aug 14 '19 at 20:14
  • Introduce new binary variable $s_t$ for each timebucket $t$ to the problem. Set objective coefficient of $s_t$ to $FC$ (your fixed costs). This variable indicates whether some product is produced in timebucket $t$.
  • Link overall production variable $s_t$ to the production variables $u_{tp}$ which indicate that some amount of product $p$ is produced in timebucket $t$. To do this you'll need two constraints

$$ \forall t\in T: \sum_{p\in P} u_{tp} \leq |P|s_{t} \\ \forall t\in T, \forall p\in P: u_{tp} \leq s_{t} $$

  • Your objective function will probably look something like this: $$\sum_{t\in T} FC\cdot s_{t} + \sum_{t\in T}\sum_{p\in P} VC\cdot x_{tp}$$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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