The weight “nutrient” should always have an upper and lower bound of 1 unless you wish to alter the nutrient density of the feed, see Formulating with weight constraint <> 1 .
The tree on the left-hand side lists all the previously defined feeds for the currently selected client and animal. The main animal folder is displayed, as well as any sub-folders that have been added. e.g. if the current animal is broiler, then the tree will show items All Feeds, Broiler feeds, and any other folders and feeds that had been added for this client and animal.
The main animal folder cannot be renamed, deleted or moved. You may however add folders within the main animal folders to better organise your data. Each folder is animal specific, so it is not possible to drag a pig feed into a broiler folder. Any sub-folders are linked to the same animal as the main folder, so e.g. in the above example, the folder Broiler feed contains feed templates for broilers. It would not be possible to drag a pig finisher feed into any of the broiler folders, but it is possible to drag the broiler feeds from one broiler folder to another.
Sub-folders and feeds added under Client Feeds are also client-specific, and will only appear when the relevant client is selected as the current client.
General editing functions are available by right-clicking on the tree and selecting the function from the pop-up menu. See Editing using the tree structure.
Below is the pop-up menu created when right-clicking on the tree on the Client Feeds tab.
The bottom five functions on the pop-up menu can be used to show or hide columns in the tree if it is using up too much space on your screen.
In addition to the normal editing functions is the function Create feed template from this feed, which can be used to export a text file that can be imported into the EFG Broiler model.
Above the Create feed template from this feed menu item, the digestibility group chosen for the currently selected feed is displayed. When this menu item is selected, it displays a list of all previously defined digestibility groups except the one already chosen for the feed. See below.
Selecting another digestibility group from the list will change the digestibility group assigned to the selected feed template.
The Client Feeds button bar
Only buttons and menu-items relevant to the currently selected item are enabled. These perform the following functions:
|Select the current client|
|Select the current animal|
|Select whether to minimise/maximise the objective function|
|Select the objective function|
|Display/select whether to formulate on an As-Is or Dry Matter basis|
|Insert a new folder. This button is only enabled when a folder is currently selected. The new folder will be inserted as a sub-folder of the current folder.|
|Insert a new feed into the selected folder. This button is only enabled when a folder is selected.|
|Delete the selected folder or feed. The main folders cannot be deleted. Only empty folders may be deleted.|
|Formulate the feed, or all feeds in a selected folder (F5 may also be used, as a hotkey, to formulate a feed).|
|Saves changes made to the feed.|
|Calculate feasible ranges for currently selected nutrients or ingredients.|
|Generate a feed report in Excel. If a folder is selected, then all feeds in that folder will appear on the report. If a single feed is selected, then it will appear alone on the report.|
|Customise nutrient table (hide/show columns).|
|Customise ingredient table (hide/show columns).|
|Export the selected table (nutrients or ingredients) as an Excel document.|
|Round off ingredients|
|Export feed as a composition.|
When a single feed is selected, the following will appear on the right-hand side.
There are two tabs, one showing the Nutrients and ingredients for the feed, and the other for Additional ingredient constraints.
There is a bar located between the nutrients and ingredients tables that can be used to resize each section. In the middle of the bar is a hot spot which when clicked will resize the sections automatically to the previous position. If both tables do not fit onto your screen, then it can be useful to drag the bar right until the entire nutrients section is visible. Clicking on the middle of the bar will then move it all the way left to make the ingredients section visible.
Some of these columns could be hidden, and others visible depending on the settings for the table. To change these, click on the Customise nutrient table and Customise ingredient table buttons. See Tables.
The ingredients in the ingredient table are restricted to ingredients available to the current client, and the nutrients in the nutrient table, to nutrients applicable to the current animal. The nutrient upper and lower bounds are displayed in the relevant unit of the nutrient. The ingredient upper and lower bounds are displayed in percentages as well as weights.
The main purpose of the Nutrients and ingredients tab is to:
- Define the upper and lower bounds of the nutrients, which can be entered either as total or digestible values in the feed. If the Dig? column is ticked, then values for that nutrient are digestible values. If a particular nutrient does not have digestibility values, then the Dig? column will be grayed, and can not be checked. Define ingredient bounds in percentages or as as-is weights.
- Show the resulting ingredient and nutrient concentrations of the feed, after a formulation has been executed.
- Allow the user to execute context sensitive commands by selecting the relevant nutrient(s)/ingredient(s). This is done by pressing the right mouse button and selecting a command from a pop-up menu applicable to the selected nutrient(s)/ingredient(s).
- Allow the user to specify whether they want to formulate using “dry matter” see Formulating using dry matter or “as-is”, the quantity of feed needing to be formulated, and whether the objective nutrient should be maximised or minimised.
If the formula is new, then the default bounds of the ingredients and nutrients will be inserted as the bounds. To override these default bounds simply type in the bounds as necessary. If a formula is loaded then the previously saved bounds will be used.
To exclude a nutrient or ingredient from the formulation, uncheck it in the first column. All nutrients or ingredients can be included or excluded in one step by using the incl. all and excl. all buttons available at the top.
Nutrients defined as ratios or nutrient expressions
Calculated nutrients are marked in a light purple colour in the Nutrient column. Any ratio nutrients (e.g. Ca:P) are marked in darker purple. The ratio may be constrained in the normal way.
Once you have defined all the bounds, the feed is formulated by pressing the formulate button (or F5). After a formulation has been executed the resulting values are displayed in the Answers and Solution columns of the nutrient and ingredient tables respectively.
Interpreting the colours of the calculated values
To make it easier to establish which of the bounds is constraining, the calculated values that equal a bound are a different colour. The various colours are:
PURPLE The value equals an upper bound.
GREEN The value equals a lower bound.
BLUE The upper bound and lower bound are equal (i.e. it is forced in at that amount).
An infeasible solution is usually the result of the specified lower or upper bound for one or more of the nutrients being too constrained. As an aid to identifying this (these) constraint(s) the bound in question is shown in red. By relaxing these bounds a feasible solution can usually be found.
Under the Answers group, the following values are shown:
The change in formulated value since the previous formulation.
The sensitivity value for those nutrients at limiting levels. Marginal costs will be displayed for those ingredients whose values are purple or green, and reduced costs will be displayed for ingredients that are not included in the feed.
The actual formulated value.
If the nutrient had been included as a total value, then this value will be shown with a yellow background. Values for nutrients that were not included in the formulation will be shown with a green background.
The digestible nutrient content in the feed. If the nutrient had been included as a digestible value, then this value will be shown with a yellow background.
- Under the Feasible Ranges group are shown the minimum and maximum feasible ranges for the selected nutrients. These can be calculated by selecting some nutrients, and clicking on the button. If the feasible ranges are not required then these columns may be hidden to create more space on the screen. See Tables.
- There are several functions available when right-clicking on the nutrient table. These can be selected from the following pop-up menu that appears.
- Set As Objective
Makes the selected nutrient the new objective. It is replaced in the nutrients table by the nutrient that is currently the objective nutrient. Any nutrient may be used as the objective function, to be minimised or maximised.
- Parametrics on bounds
Opens the parametrics settings window which is used to set the ranges over which parametrics should be done for the bounds of the selected nutrients, see Parametrics.
- Set to Limits
Sets the upper and lower bounds of the selected nutrient to its default values.
- Matrix coefficient and digestibility values
Displays the selected nutrient’s concentration and digestibility percentage for each of the ingredients in the ingredients table, e.g.:
In order to see the concentration matrix in it’s entirety, for all nutrients and ingredients, select the Ingredients tab, ensure that the All Ingredients folder is selected on the left and click on the Concentration Matrix tab to the right of the screen.
- Feasible ranges
Calculates the minimum and maximum bounds for each of the selected nutrients that will result in a feasible solution. This can be very useful if you are struggling to obtain a solution.
- Sensitivity values
Shows the sensitivity values of all selected nutrients.
- Ingredient contributions
Allows the user to see what proportion of each nutrient in the solution is coming from each ingredient, e.g.:
The ingredients section is shown below.
Ingredient bounds can be entered in terms of either percentages or weights. Under the Solution group, the following values are shown:
The ingredient contents in the formulated feed are displayed as a percentage.
The ‘as-is’ weight bounds of the ingredient.
- ‘DM’ Weights
The dry matter content of each ingredient. For this value to be calculated correctly, please ensure that the correct nutrient has been identified as the dry matter nutrient, see Setting the dry matter nutrient.
The change in formulated value since the previous formulation.
- Sensitivity (R/unit change)
Sensitivity values for each ingredient are displayed. Marginal costs will be displayed for those ingredients whose values are purple in colour, and reduced costs will be displayed for ingredients that are not included in the feed.
- Included Price
The ‘Included Price’ is the price that the ingredient would have to have been in order for the solution to have included it in the formulation. Under the Other column, the Current Price is displayed for easy reference.
- The Feasible Ranges group
Shows the minimum and maximum bounds for each of the selected ingredients that will result in a feasible solution. This can be very useful if you are struggling to get a feasible solution. The feasible ranges can be calculated by selecting some ingredients, and clicking on the button. If the feasible ranges are not required then these columns may be hidden to create more space on the screen. See Tables.
- There are several functions available when right-clicking on the ingredient table. These can be selected from the pop-up menu that appears.
- Parametrics on bounds
Defines the lower and upper inclusion bounds over which parametrics should be run for the selected ingredient(s), as well as the number of intervals, or the interval size, to be considered. Parametrics on more than one ingredient may be run simultaneously. Output is either to the screen or to Excel, see Parametrics.
- Parametrics on <objective function>
Defines the range over which parametrics should be run on the objective function (usually cost) for the selected ingredient(s), as well as the number of intervals, or the interval size, to be considered. Parametrics on more than one ingredient may be run simultaneously. Output is either to the screen or to Excel, see Parametrics.
- Matrix coefficient and digestibility values
Displays the concentration and digestibility coefficient of the selected ingredient for each of the nutrients in the nutrient table.
In order to see the concentration matrix in its entirety, select the Ingredients tab, ensure that the All Ingredients folder is selected on the left and click on the Concentration Matrix tab to the right of the screen.
- Feasible ranges
Displays the minimum and maximum bounds for each of the selected ingredients that will result in a feasible solution. This can be very useful if you are struggling to get a feasible solution.
- Sensitivity values
Displays the sensitivity values for each ingredient included in the formulation. See Sensitivity values, marginal costs and included prices.
- Ingredient’s objective values
Displays a report showing the objective value for each ingredient in the ingredient table (i.e. if cost were the objective it would show the cost of each of the ingredients).
- Nutrient contributions
Displays the proportion of each ingredient in the solution that contributes to each nutrient.
Amino Acid Ratios
This button can be found under the Nutrients and ingredients tab:
To optimise amino acid contents in the Broiler Optimiser the process works only with lysine. The contents of the other essential amino acids are controlled by reference to an (user-controlled) ‘ideal’ protein ratio.
The concept of working with a set of ratios instead of actual values as a means of expressing the amino acid content to be included in starter, grower and finisher feeds is well known. The required content for each amino acid is expressed as a ratio to the lysine content required. Many different sets of amino acid ratios are available and EFG Software does not prescribe the use of any one in particular, so we have made this a user-defined option.
The option to select / edit / add an ‘ideal’ protein ratio can be found in the Broiler Optimiser. Go to Options / Edit Ideal protein ratios and follow the options there. A further option available to make amendments or additions to the ‘ideal’ protein ratio is within Client Feeds, by selecting the Amino Acid Ratios button outlined in the screenshot above.
The choice of the ideal protein ratio to be used is made available when optimising the Amino Acid content in the feed (see below). One option is simply to make use of the ratios that were applied in setting the lower bounds for the essential amino acids in the feeds formulated in Client Feeds or using the ‘ideal’ protein ratio specified.
Additional Ingredient Constraints
This tab is used to specify additional ingredient constraints. In WinFeed, constraints may be placed on groups of ingredients. Thus, the total inclusion of animal ingredients or oilseed meals may be constrained or controlled. There is no limit to the number of ingredient constraints that may be defined for a given feed. However, a feasible solution becomes progressively less likely as the number of ingredient constraints is increased.
Examples of the type of nutritional information that may be specified with these additional ingredient constraints are:
- The sum of certain ingredients might need to be within certain bounds, e.g. the sum of bran, pollard and hominy chop may not exceed 30% of the feed.
- An ingredient might need to be incorporated into the feed at a certain ratio of another ingredient e.g. equal amounts of soya and sunflower must be used.
To add a constraint, click on the New constraint button. A new column will be added. If the bounds are to be expressed as percentages, click the –is percent constraint row. Type in the upper and lower bounds. Specify the coefficients of the ingredients used in the constraint by typing them in the relevant ingredient’s row.
If you wish to specify that the sum of sunflower 37 and soybean 46 must be between 9 and 14 percent of the feed, you would tick the ‘– is percent constraint’ row, put in 9 and 14 as the lower and upper bounds and put in coefficients of 1 for sunflower 37 and for soybean 46.
Suppose you want fine bran to be twice the amount of middlings. Let x1 and x2 be the amount of fine bran and middlings respectively:
i.e. you want: 1. x1 = 2. x2 <=>
1. x1 – 2. x2 = 0 <=>
0 <= 1. x1 – 2. x2 <= 0
Therefore to get the desired ratio you would make the upper and lower bounds both 0, and put in coefficients of 1 and -2 for fine bran and middlings respectively.
To remove a constraint, select the constraint to delete by clicking anywhere in its column, and click on the Delete constraint button.
Instead of formulating a single feed, it is also possible to select a folder and formulate all feeds in that folder. A message will display how many of the feeds in that folder formulated successfully.
Establishing the cause of an infeasible solution
If you are struggling to get a solution then the following checklist may be useful.
- Make sure that all the bounds are realistic.
- Ensure that the nutrient concentrations have been entered correctly for the ingredients available to the current client. Having an incomplete or incorrect matrix can often lead to infeasible or unlikely solutions.
- Examine all the ingredients and nutrients that appear in green, blue or purple. These are the bounds at their upper or lower limit. This may not be conclusive proof that these ingredients/nutrients are the culprits, but often they are (sometimes they could have been broken because in trying to solve other constraints the linear programming algorithm had to introduce unrealistic ingredient concentrations causing other nutrient constraints to be broken).
- Highlight the nutrient bounds that you believe are most likely to be the cause of the problem, and click the button. WinFeed will establish in what range the nutrient/ingredient must fall in order to be a solution. If the current range defined by the upper and lower bound does not overlap with the feasible range, change the bounds so that they do overlap. Reformulate and you will get a solution.
- Add more ingredients to the current client’s list of ingredients.