Formulating a feed with WinFeed
WinFeed is a program specifically designed for nutritionists who work as consultants for a number of clients, for ingredient suppliers wishing to price their ingredients, for farmers who wish to compose and formulate their own feeds, and for researchers wishing to formulate feeds, not necessarily at least cost. WinFeed has been designed to make this easy by allowing the user to:
- define an unlimited number of clients.
- define the ingredients available to each client, and to edit and maintain the ingredient costs for each client.
- define the animals for which the feeds are to be formulated.
- define the nutrient names and concentrations that are relevant when formulating feeds for a particular animal.
- define one or more digestibility groups.
- define general feed templates that can then be customised for a particular client.
There are no restrictions on the number of animals, clients, nutrients, ingredients or feeds. All the information is saved in a SQL Server database.
WinFeed is shipped with a default database that is used throughout this manual for explanatory purposes. It can serve as a useful starting point for developing your own database.
We do not guarantee that the nutrient concentrations in the database are correct. You should check and modify the nutrient concentrations in the database where necessary before formulating any real feeds.
To formulate a feed, publish a feed template for the relevant animal to a client, set the nutrient to be used as the objective (normally cost), and choose whether the objective nutrient (i.e. the nutrient that is used in the objective function) is to be maximised or minimised. Finally, set the various nutrient and ingredient bounds before formulating the feed.
The following example illustrates the power and ease of use of WinFeed once the database has been correctly set up.
Suppose you have a client, John Smith, who needs to update his broiler starter feed because he can no longer obtain fishmeal, an ingredient used in his previous formulation, and has a limited amount of sunflower oilcake meal that he wishes to dispose of.
You would go through the following steps
- Select John Smith as the current client (this loads the ingredients available to John Smith as well as the prices of these ingredients when last edited). You would need to update his ingredient prices, delete fishmeal, and add any ingredients to which he now has access.
- Select broiler as the current animal (this restricts the nutrients to those relevant for broilers).
- Publish the broiler starter feed template to John Smith (if this has not been done previously).
- Place a minimum constraint of 5% on sunflower oilcake meal.
- Set the cost of the feed to be the objective and specify that it is to be minimised.
- Press the formulate button and the solution will be calculated and displayed.
Description of the database components in WinFeed
The following is a more detailed description of all the database components in WinFeed. It is important to understand what these different components represent.
If you consult to various clients, each would need to be defined as a client. If you only use the program to mix feeds for yourself you would not need more than one client to be defined.
For each client the following information is stored:
- Some of the client’s personal and contact information.
- The set of ingredients to which that particular client has access, and the price of each.
- An audit (record) of the prices that have been paid by the client for each ingredient over time.
As a client is essentially a set of ingredient prices there is no reason why clients cannot be used to represent different ingredient groupings or price scenarios e.g. the client facility could be used to store different ingredient groupings such as dairy feeds, pig feeds or horse feeds.
The current client is the client that is currently selected in the client drop-down listbox. Selecting a current client determines the set of ingredients that are currently being used and the prices of these ingredients.
Ingredients in the database represent real world ingredients that are used to mix feeds. Examples of ingredients are maize, salt and fishmeal. There is no restriction on the number of ingredients that can be added to the database, or when these can be added. It is possible also to delete ingredients at a later stage, if necessary.
The nutrient concentrations for each ingredient should reflect the composition of each ingredient: where the same ingredient is available to the client at different protein contents, for example, these should be given names that are sufficiently descriptive, and the nutrient contents should reflect these differences. The nutrient concentrations in the database supplied with WinFeed are not guaranteed to be correct, nor are they to accurately reflect the specific ingredients used by each client.
Bag weights may be specified for each ingredient if desired. These bag weights are used in rounding solutions, making it easier to weigh out ingredients to be used in a feed. Default bounds may also be specified, to be used for each ingredient in a new feed. See Rounding and Animal Feed Calculations.
Each animal has a requirement for a unique set of nutrients i.e. when formulating feeds for dairy cows there would be no need to specify amino acid requirements. To simplify the management of nutrients, WinFeed allows the user to create a database record for different animals and then to specify the nutrients that are specific to that animal, i.e. it uses a sub-set of the entire database.
Just as there is a current client, there is a current animal. This is selected from the current animal drop-down listbox. The current animal determines the set of nutrients that will be used.
There is no restriction on the number of nutrients that can be entered into the database. It is possible also to specify whether or not the nutrient has an associated digestibility, allowing the user to work with either total or digestible nutrient concentrations. It is possible to set up more than one digestibility group, allowing a different digestibility value to be entered for each animal. Default bounds and some information about a nutrient is also stored. WinFeed also allows the user to create nutrients defined as ratios of other nutrients, and nutrients that are defined as linear expressions of other nutrients.
The large array of ingredients and their associated nutrient concentrations is referred to as the ingredient matrix. The matrix values can be edited either by accessing the table or by selecting individual ingredients or nutrients.
When formulating feeds for a particular animal (e.g. a weaner feed for pigs) the same set of nutrient and ingredient constraints would probably be used each time. Instead of always having to re-enter the bounds, this set of constraints can be saved as a feed template which is given a name.
A feed template is animal-specific because the set of nutrients being used when formulating a feed is determined by the animal that has been specified.
The following information is saved when a feed template is saved:
- ingredient and nutrient upper and lower bounds.
- the nutrient chosen as the objective.
- whether the objective is maximised or minimised.
- additional defined ingredient constraints.
- nutrients calculated as either total or digestible values.
- the weight of the feed that is being formulated.
WinFeed considers a feed to be the result of a formulation, which is therefore client specific (i.e. the same feed template may be used for different clients, but the answer would be saved as a feed for the particular client). WinFeed saves the ingredient and nutrient composition of the feed at the time when it is formulated, as well as the bounds that were specified when the feed was formulated. This feed can be retrieved and reformulated at a later stage, thereby allowing the user to determine whether there are any changes in the solution brought about by availability of new ingredients, price changes etc.