I have a simple blending problem, where each final product is a blend or mixture of several raw materials, and want to calculate the price per unit of weight for each of the products. So for a given product, the price $P$ per unit weight is given by:
$$ P = \frac{p_1 x_1 + p_2 x_2 + \dots + p_n x_n}{x_1 + x_2 + \dots+ x_n} $$
where the $x_i$ are the weights of each of the constituent raw materials (the decision variables), and the $p_i$ are the prices per unit weight of the raw materials (constants in each time period).
There are other constraints on the proportions of each raw material that can be present in the final product, but these are typically quite wide ranges and are not difficult to achieve, so are not directly relevant here.
This is also a multi-time period problem. The raw material availabilities and prices vary from one week to the next, and the amount of each product required each week also varies. The blend of the raw materials in the product is allowed to vary from one week to the next.
An important constraint in the overall problem is that the price per unit weight of the product must not differ by more than a small amount (maybe 5 - 10%) from one week to the next, so if we have the final product unit prices for each week as $P_1, P_2, \dots, P_m$ then we need constraints like:
$$ 0.9 P_{i-1} \le P_i \le 1.1 P_{i-1} $$
so that the unit price of the product cannot change more than 10% from one week to the next.
I am using a MILP solver for this problem, and this is giving me an issue because this expression for the price of the final product involves the division of one expression by another, where both the numerator and denominator contain decision variables. I cannot yet see how I can reformulate this model to linearise it.
So does anyone have a way to restructure or reformulate this problem model so that I can model the final product unit prices and limit the variability of the final product prices from one week to the next in a multi-period problem using MILP?