In this video, we’re going to run a linear program and find both feasible and infeasible solutions. In this example, we’re going to fabricate our own milk replacer using protein ingredients like skim milk powder, dried whey protein concentrate, soy protein concentrate and wheat gluten along with a commercial fat filled whey powder along with vitamins, minerals, supplemental lysine and methionine.
I’ve set the prices for the various ingredients based on recent prices here in the United States. Next, I’ll look carefully at the nutrient concentrations from the feed library and adjust those based on the actual values I receive for the ingredients I’m purchasing. For example, I may find that the WPC 34 I’m buying isn’t actually 37.1% crude protein, but is actually 35.6, so I’ll make that change here.
I want to point out two columns that are important in this particular example. These are columns C0 and C1. In this formula, I want to ensure that I have the appropriate amount of lysine and methionine expressed on a percentage of dry matter basis. In LP solve the amino acids are expressed as a percent of total protein, not as a percent of dry matter. Therefore, I need to adjust the values to be expressed on a percentage of dry matter. I use the extra columns C0 and C1 to do that math. In this case, C0 is lysine as a percentage of dry matter and C1 is the methionine as a percentage of dry matter. I’ll right click the header of each column and change the name to the appropriate nutrient.
The specifications I’m targeting in this particular formula of milk replacer are 24% protein and 18% fat as a percentage of dry matter. You’ll notice I’ve set the minimums and maximums very close together. Protein between 24 and 24.2% and fat between 18 and 18.2%. I tried to provide enough room in the formula by having wider ranges for the minerals I’m specifying, as well as setting a minimum for lysine and methionine without a maximum. Because both lysine and methionine are expensive nutrients, I don’t expect that there will be more than the minimum amount included in the formula.
In my formula I want to limit the amount of vegetable proteins to no more than 10%, so I’ve set a maximum of wheat gluten at 5% and soy protein concentrate at 5%. It’s possible the formula will use less than both, however I just want to ensure that the final formula will not contain more than 10% vegetable protein.
Now that both ingredient and nutrient specifications are set, it’s time to run the linear programming engine. I click the blue button at the bottom of the page that says Run. This initiates the linear program. If there is a feasible solution the report, the results will be reported in a new window that’s displayed above the ingredient matrix.
In this case I did achieve a feasible solution. We can see the percentages of the formulation to the right where it says percent. This formula will contain 24.8% dried fat, 38.8% dried, weigh, 22.16% WPC 34. Both wheat and soy protein concentrates are included at 5% of the formula, and you can see the remaining concentrations of ingredients below.
If we look at the actual line. Shown here in green, we see the price of this formulation is $349.98 per ton. We are exactly achieving the specifications for protein and fat. Our specification for calcium is at the minimum and the as is the specification for magnesium, lysine and methionine.
Now let’s see what happens if there is an infeasible solution. In this example, I’m going to change the fat minimum to 17% and the fat maximum to 17.5% and change the maximum allowable ash to 6%.
When I click the run button, I receive a message saying the solution is not feasible. The message provided is Solver failed Code zero. Code 0 indicates that the LP engine was unable to find a feasible solution given the limitations we placed on it. We don’t know exactly what the cause is, but clearly when we made one of the changes from fat and ash, the combination of those resulted in the formula being unable to solve.
I’ll change the fat specification back to 18 and 18.2 and try again. We see the formula is able to achieve a feasible solution. The cost is $413.55. The largest change is due to the change in the specification for ash. The previous specification was 7.61% ash. By reducing this specification to 6%, we’ve increased the cost of the formula by approximately $64. As nutritionists, we now need to determine the biological value of reducing the ash level from 7.6 to 6.0 and determine whether it’s worth the extra $64 per ton.
Formulas may be feasible or unfeasible depending on the limitations we place on the LP engine given the specifications for nutrients and ingredients. When an LP is infeasible, we need to look carefully at both the nutrient and ingredient specifications to see where the formulation was unable to find the solution. Often this requires stepwise removal of individual specifications until such time as we see a feasible solution.
Any change in the specifications may have an impact on the overall cost of the formula and the ingredients that are included. It’s essential to carefully evaluate every linear programming result to ensure that it’s biologically reasonable and will provide the appropriate nutrients to the animal.