I've been exercising with Solver to solve some optimization problems, when noticing something. One of the first problems to which the novice is introduced to is the Blending problem, solving it with LP engine. But if you modify a little bit the blending problem, a non-linearity is introduced to the problem, which I would like to avoid somehow.
Here is the example, based on example of margarine production from vegetable oils:
Five raw materials are available in known quantities. Every raw material has some custom property - Hardness, expressed in units, which differs. The goal is to blend the raw materials in product, so that maximum qty of product is achieved, while keeping the Hardness in some limits, below 5 in our case. Hardness is assumed to blend linearly, i.e. if you blend 70% of raw with 8 units Hardness with 30% of raw with 6 units Hardness, you will get Hardness(product) = 0,7*8+0,3*6 = 7,4 units.
Therefore we need to calculate the fraction of each raw in product, in order to calculate the Hardness. This is the key point, because the fraction of raw is calculated as the qty of raw is divided to qty of product, which is variable.
Solver returns error message, in my opinion because we have variable in denominator, and this introduces non-linearity.
Some values are put in the variable cells (blue highlight), just to show how the formulas work.
The examples in the books assume, that final product qty is known, and divide to constant number. Or raw is limitless, and we have some limitations, for example refining capacity, and then it is easy to "predict", that in order to get MAX product, you need to get the MAX from each refining capacity.
But in general, there will be times, when final blended qty is unknown, and this leads me to the problem is it possible to avoid introducing non-linearity to the model in such cases.
I've attached xlsx file
Bookmarks