And… we’re back!
Where was I? Oh yeah, fish feed and it’s formulation. I said in the last post that maybe I would try to explain the calculation process I used.
OK then. We know we are looking at a system of simultaneous equations. In order to calculate a formula to provide a target amount of Crude Protein (CP), Crude Lipids (CL), Crude Fiber (CF) and ash (A), we need a system of four equations in four variables or unknowns. For this to work, we require four input foodstuffs with suitable data regarding their content.
Let’s use Red Worms (RW), Duckweed (DW), Black Soldier Fly Larvae (BSFL) and Azolla (AZ). These are our first four ingredients listed. Since we will be drying our ingredients before mixing them, we want numbers based on dry weight (DM). We took the published data and back calculated content percentages based on total weight (TM) in the event we choose to save the drying effort at some future date.
We therefore need to construct an equation for each of our unknowns. Let’s start by writing an equation for CP. We know we will use some fixed amount of Red Worms in our recipe (even if the amount is zero). We see from the table given above that 68.88% of that quantity will be Crude Protein contributing to our CP target value of 42%. Likewise, the next three ingredients contain 29.2%, 42.1% and 21.17% of DW, BSFL and Azolla respectively.
This gives us the equation for CP as:
0.69 RW + 0.29 DW + 0.42 BSFL + 0.21 AZ = 42%
In the same way, we develop simultaneous equations for CL, CF and A. These coefficients are then converted to a matrix for solution, let’s call it matrix [A]. Let’s further create a matrix of our target values and call it [B].
You may recall that if we matrix multiply the inverse of matrix [A] by matrix [B], the result will be the solution matrix of our unknowns.
But, there is a minor snag to this approach. The matrix math wants to please us so badly that it assumes we can use negative quantities of an ingredient to achieve our goals. While I appreciate such enthusiasm, this is not practical in the the real world for obvious reasons.
Therefore, we are forced to install a work-around that ensures non-negative values for all ingredients used. The price we pay is that there may be no workable solution with a given set of data. We may be forced to find alternative foodstuffs to put into our recipe OR accept a non-optimal approximate solution to our problem.
In any event, we must remember that the answer given represents an amount of substance (by weight) to be used in the final recipe. One further calculation must be made if we desire a recipe which calls for proportions or percentages.
To that end, we simply divide each variable amount by the sum of all the amounts. Thus we find that we require 21.6% Red Worms, 31.2% Duckweed, and 46.4% BSFL in our recipe. As it turns out, Azolla is of no use to us because it cannot be used to improve our targets. However, if we were to substitute Moringa as an input foodstuff, things could change significantly.
There you have it. The most difficult part of the process is deciding on the list if possible ingredients and obtaining the nutritional values they offer. Note that if we want to specify target values for moisture content, and NFE we would need to provide two more equations and that would require two more ingredients. That is certainly a possibility. The Matrix method of solution can certainly manage that if the spreadsheet is modified to solve a larger matrix.
Oh, one last thing, if anyone is interested. This exercise was an example of axiomatic design where our unknown variables represent the values of our DPs (design parameters). I just thought I’d through that out there. I’m thinking you can imagine how we might use a similar process to develop a custom fertilizer.
Maybe we’ll revisit that someday.

