24 March 2021 A recent project involved fixing a Solver model. The model was intended to be a straightforward Linear Program to find the optimal mix of three chemicals, subject to the proportions of the chemicals being within specific bounds.

That is, the model had constraints like: ${a \over a+b+c} \le p_a$

where $a$, $b$, and $c$ are variables for the quantity of each chemical, and $p_a$ is a constant representing the upper bound on the proportion for chemical $a$.

The problem was that this constraint is non-linear because a variable is divided by other variables. It may also cause a division by zero error. Solver's non-linear and evolutionary methods didn't always work well with this model.

Fortunately, we can rearrange the constraint to be in an equivalent linear form. That is: ${a \times (1 - p_a) \le p_a \times (b + c)}$

With this reformulation, the model becomes linear while still achieving the desired intent. Consequently, the model now solves to optimality quickly and reliably using the Simplex method.