Previous Page Table of Contents Next Page


Chapter 16. Linear Programming in Fish Diet Formulation 1/


1. INTRODUCTION
2. LINEAR PROGRAMMING BASICS
3. PREPARATION OF DATA INPUT FOR LP
4. SOLUTION OF INITIAL MODEL (CATFISH DIET)
5. MODIFYING THE DATA DECK BY THE REVISE PROGRAMME
6. PARAMETRIC LINEAR PROGRAMMING


1/ Lecture was presented by G.L. Rumsey

K. W. Chow
Food and Agriculture Organization

G. L. Rumsey
Tunison Laboratory of Fish Nutrition
Cortland, New York

P.W. Waldroup
University of Arkansas
Fayetteville, Arkansas

1. INTRODUCTION

Linear programming (LP) is a mathematical procedure by which limited resources are allocated, selected, scheduled, or evaluated to achieve an optimal solution to a particular objective. These resources may be capital, raw material, manpower, or production facilities and the objectives may be minimum cost or maximum profit. Linear programming, therefore, has wide application in industrial operations such as blending, mixing, and machine tooling; and in business activities such as purchasing, planning, bidding, transportation, and distribution.

Linear programming was first introduced to the animal compound feed industry in the mid fifties. Since then, its application in least cost formulation of feed for livestock and poultry has gained widespread acceptance in most countries with well-developed compound feed industries.

Least cost feed formulation for fish on the other hand is a recent innovation. There are still many gaps in our knowledge regarding fish nutrition and digestibility of common feedstuffs by cultured species of fish. Among the few species where such knowledge is more complete, LP techniques for diet formulation have been attempted.

It is not the intent of this chapter to discuss fish feed formulation in the context of specific nutrient requirements. Rather, an attempt is made to describe the mechanisms of linear programming using a highly popular and readily available standard software package (IBM MPSX) and the increasingly common computer hardware, the IBM 370. As illustrations, diets for carp and catfish are formulated using a limited selection of raw materials. To provide some perspective of price and raw material availability, the example given is for the Kingdom of Thailand where aquacultural development is proceeding at a rapid pace and where the availability of a fairly wide selection of feed ingredients permits the latitude for realistic demonstrations of parametric linear programming. This latter technique represents a prodigious innovation of mathematical optimization which has contributed significantly to rapid expansion of the feed industry in the last two decades.

2. LINEAR PROGRAMMING BASICS


2.1 The Linear Equation
2.2 The LP Matrix


2.1 The Linear Equation

Linear programming involves the simultaneous solution of a number of linear equations which consist of a left-hand side (LHS) and a right-hand side (RHS), as follows:

C + C2 + C3.....+Cn = R (1)

Where R is the row variable and C represents a column variable.

Formulation rules of the linear programming system, with respect to a linear equation, require that:

(a) only one variable may appear on the RHS. While row variables, if there are more than one, may appear on the LHS along with column variables, column variables may not appear on the RHS of any problem;

(b) the same variable may not appear on the RHS of more than one equation;

(c) the coefficient of the variable on the RHS of an equation must be 1.0.

In formulating feeds by LP, the nutritionist first lays down a set of constraints. He then lists all available raw materials which he wishes to be considered for selection by the computer to achieve his objective. This objective is a least-cost ration that will satisfy all the constraints.

2.2 The LP Matrix

To illustrate the use of the programme, consider first a single hypothetical feed mix problem: to formulate a catfish diet using limited available feeds tuffs while satisfying nutrient and feed ingredient constraints, as shown in Table 1.

Table 1. Feed Ingredient Analysis

Ingredient

Cost, Bahts/kg

Protein, %

Digestible energy (DE), Meal/kg

Calcium, %

Maize

2.15

9

1.10

0.02

Fishmeal

8.0

65

3.90

3.7

Soymeal

6.0

44

2.57

0.3

Ricebran

2.0

12

1.99

0.1

Limestone

0.4

0

0

38.0

Constraints:

(1) Total weight of mix = 100 kg
(2) Total protein, at least 30 kg
(3) Total digestible energy, at least 250 Meal
(4) Total calcium, at least 0.5 kg
(5) Total calcium, not more than 1.5 kg
(6) Amount of fishmeal, at least 8 kg
(7) Amount of ricebran, not more than 20 kg
(8) The total cost of the blend to be minimal.

Expressing these restrictions in a series of linear equations:

1.0 (MAIZE) + 1.0 (FISHMEAL) + 1.0 (SOYMEAL) + 1.0 (RICEBRAN) + 1.0 (LIMESTONE) = 100

0.09 (MAIZE) + 0.65 (FISHMEAL) + 0.44 (SOYMEAL) + 0.12 (RICEBRAN) + 0 (LIMESTONE) ³ 30

1.10 (MAIZE) + 3.90 (FISHMEAL) + 2.57 (SOYMEAL) + 1.99 (RICEBRAN) + 0 (LIMESTONE) ³ 250

0.000 (MAIZE) + 0.037 (FISHMEAL) + 0.003 (SOYMEAL) + 0.001 (RICEBRAN)+ 0.38 (LIMESTONE) ³ 0.5

0.000 (MAIZE) + 0.037 (FISHMEAL) + 0.003 (SOYMEAL) + 0.001 (RICEBRAN) + 0.38 (LIMESTONE) £ 1.5

1.0 (FISHMEAL) ³ 8
1.0 (RICEBRAN) ³ 20

[ 2.15 (MAIZE) - 8.0 (FISHMEAL) - 6.0 (SOYMEAL) - 2.0 (RICEBRAN) - 0.4 (LIMESTONE) ]

= MAX, where the names in parenthesis represent the amounts of maize, fishmeal, soymeal, ricebran and limestone, respectively, needed to make the feed.

Putting this into matrix form:

MAIZE

FISHMEAL

SOYMEAL

RICEBRAN

LIMESTONE

ROW TYPE

RHS VALUE

ROW NAME

-2.15

-8.0

-6.0

-2.0

-0.4



COST

1.0

1.0

1.0

1.0

1.0

=

100

WEIGHT

0.09

0.65

0.44

0.12

0

³

30

PROTEIN

1.10

3.90

2.57

1.99

0

³

250

DE

0.000

0.037

0.003

0.001

0.38

³

0.5

CALCIUM

0.000

0.037

0.003

0.001

0.38

£

1.5

CALCIUM


1.0




³

8

FISHMEAL




1.0


£

20

RICEBRAN

It can be seen from the above tabulation that the rules described in subsection 2.1, governing the use of the linear programming systems for feed formulation, are fully met.

MAIZE, FISHMEAL, SOYMEAL, RICEBRAN and LIMESTONE are COLUMN NAMEs and the values tabulated under each represent the COLUMN coefficients which describe ROW NAME values for, each ingredient. COST, WEIGHT, PROTEIN, DE, CALCIUM, FISHMEAL and RICEBRAN appearing on the last column are ROW NAMEs and the RHS VALUES constitute ROW variables. ROW TYPEs together with the RHS VALUES define the bounds of the respective ROW variables.

Successful solution of the eight simultaneous linear equations leads to an OPTIMAL SOLUTION of the problem. In this process COLUMN variables of ACTIVITIES for each ingredient are determined. In ordinary language, these represent quantities of each ingredient making up the least cost diet (see Section 4).

Sometimes the formulator is informed by the computer that a SOLUTION is INFEASIBLE. This occurs when erroneous ingredient data are used or when unreasonable restrictions are placed on nutrient requirements or ingredient usage, but it rarely happens when input data and constraints are prepared by an experienced nutritionist. To avoid errors in data input it may be wise to lay the information out in a matrix form shown in the preceding matrix for easier checking and evaluation.

Data concerning the chemical composition of each feed ingredient must reflect as closely as possible the actual values obtained by laboratory analyses. In developing countries where it may not be feasible or possible to carry out sophisticated chemical determinations, such as amino acid analysis, the nutritionist has to rely on less specific information; e.g., crude protein values obtained by the more common Weende proximate analysis (see Chapter 26) and then referring to published sources for corresponding amino acid levels. There are attending risks in using this approach. Fortunately, protein quality among specific feedstuffs from different sources which have similar Weende analysis results generally do not differ much. The common practice of providing safety margins for critical nutrients further minimizes such risks.

3. PREPARATION OF DATA INPUT FOR LP


3.1 Card Punch Detail
3.2 The Job Deck


Before the computer will accept DATA for processing the data must be presented in a form that the computer can read. Data and formulation instructions presented for LP, using the MPSX software package, must first be punched on 80-column Hollerith cards (Figure 1) in a given fashion and order before they can be processed by the computer. Although the MPSX programme contains all the necessary instructions for carrying out LP computations, its multi-purpose use requires a specific CONTROL PROGRAMME for each JOB to be performed. Jobs presented to the computer are not restricted to the solution of just one problem at a time but may consist of a series of problems or modules which will be handled by the computer in the sequence they appear on the CONTROL PROGRAMME. The JOB control cards, which precede the CONTROL PROGRAMME, tell the computer which of the catalogued programmes is to be used (in this case, MPSX). Following the CONTROL PROGRAMME are the data cards (also known as the DATA DECK) which contain all the information represented in the LP matrix. The DATA DECK is then followed by one or more control cards which signal the end of the operation.

Whereas each JOB requires a separate CONTROL PROGRAMME, the DATA DECK is not changed unless new information on raw materials and/or new constraints (RHS values) make such changes necessary. As will be seen in Section 4, such changes may not be necessary if a REVISE control programme is presented, in which case the new information is added to the original data deck. In discussing LP techniques using the MPSX software package, a modular approach will be used beginning with an example involving the formulation of a least-cost feed based on a short list of available feed ingredients (to meet certain nutrient requirements and; observing limits in the use of certain ingredients). A discussion will be provided on each of the four PARAMETRIC methods offered by the MPSX system. Finally, the technique of combining different modules into one LP job will be demonstrated.

3.1 Card Punch Detail

Information for each LP job has to be encoded on 80-column punch cards (Figure 1). The MPSX system calls for such input to be presented in a distinct form and sequence, and strict adherence to these requirements is necessary.

Fig. 1 The 80-column punch card.

To avoid loss of costly computing time due to errors, data input should be filled out by the formulator in a Card Punch Detail Form (Figure 2). After the cards are punched, they need to be verified for accuracy. This latter operation is usually carried out by another person on a verifying machine. If the services of a second operator are not available, the one who performed the key-punching may verify his or her own work after a lapse of one day to minimize the possibility of overlooking original errors in the card deck. Occasionally, the formulator performs this dual task himself, especially if he is working on diet development for research purposes.

3.2 The Job Deck

The Job Deck for linear programming of feeds consists of three main components. These are:

(i) Job Control Cards

calls upon the computer to execute the job using the appropriate programme package (in this case the MPSX);

(ii) Control Programme

sets up the model for execution by the programme package;

(iii) Data Deck

provides information for the LP matrix.

Fig. 2 Card punch detail form

Fig. 2 (contd.) Card punch detail form

Fig. 2 (contd.) Card punch detail form

3.2.1 The Job Control Cards

The exampled first Job Deck is for the formulation of a catfish diet. The card punch detail is as shown in Figure 2. The first three cards, or STATEMENTS, in the Job Deck are Job Control Cards.

The first statement is usually provided by the computer operator and identifies the job for accounting purposes. A time limit is routinely set for computer jobs; for linear programming of feeds, one minute of computing time is usually adequate.

The second statement instructs the computer to execute the job using the MPSX programme package.

The third statement is a Data Definition card which signals the start of control programme compilation.

3.2.2 The Control Programme

The nineteen cards that follow constitute the Control Programme. The statements are explained as follows:

PROGRAMME

defines the beginning of the MPSX control programme.

TITLE

provides a heading for the solution output. Although optional, it is wise to include this statement.

The conditions governing its usage are as follows:

(a) can be written in both alphabetical or numerical characters,
(b) the first character must be alphabetical, but not the letter X, and
(c) may take up all eighty columns of the punch card.

INITIALZ

initializes demands and tolerances.

MØVE (XDATA, 'BETAGRØ')
MØVE (XPBNAME, 'RITA')
MØVE (XØBJ, 'CØST')
MØVE (XRHS, 'RHS1')

the MØVE statement sets or alters problem and system parameters. It reads data control cards that specify parameter changes for the current computation. Hence, the first MØVE statement would retrieve the problem file BETAGRØ for use in the optimization and for parametric processes; the second statement defines the problem name, in this case RITA; the third statement reads CØST as the problem objective; and; the last statement reads RHS1 values that specify the right-hand side of the problem file. Note: BETAGRØ and RITA are arbitrary names used to identify the data file and problem, respectively. Other names may also be used.

CØNVERT ('SUMMARY')

the CØNVERT statement reads the input file and converts the data to binary form. The SUMMARY statement (optional) causes the printout of non-zero elements by row and column order, respectively, for checking against the same elements appearing on the matrix work sheet mentioned earlier.

SETUP ('RANGE', 'NUTRIENT', 'BØUND', 'PRØDUCT')

this statement 'sets up' the system to solve the problem using the data provided by the preceding statement. It also specifies whether the objective function is to be maximized (i.e., SETUP('MAX')), or minimized (i.e., SETUP('MIN')). If neither is specified, the computer assumes that the objective is to minimize.

The optional components of the statement listed here alert the computer to additional constraints laid down. The presence of these components in the SETUP statement requires their inclusion in the Data Deck. Failure to observe this requirement will result in premature termination of the programme.

BCDØUT, PICTURE, TRANCØL

are all optional statements to cause printout for data input checking.

BCDØUT

lists the input data.

PICTURE

creates a pictorial representation of the problem matrix. Non-zero values are alphabetically coded according to magnitude (see Figure 3).

TRANCØL and TRANRØW

transform column and row data into matrix form and print them out.

PRIMAL

optimizes the problem by using the primal procedure and produces an optimal solution if one exists.

SØLUTION

causes the solution to be printed in an output report.

RANGE

causes the printout of information concerning price sensitivity of current ingredients. This information has great value in commercial milling operations because it provides guidance in raw material purchase as well as indicates when new formulations are necessary.

EXIT

returns control to the MPSX.

PEND

defines the end of the control programme.

Fig. 3 Pictorial representation of matrix set-up for initial model; boxed RHS values apply to parametric modes.

The above control programme sets up only one model by which a problem is solved. It will be seen that by adding additional sets of instructions (statements), multiple solutions to the problem may be possible. Each set of statements will create a separate model from which unique solutions are found.

3.2.3 The Data Deck

The Data Deck contains all the information necessary for the set-up of the LP matrix and ultimately an optimal solution to the problem, if one is possible. The card punch detail for the Data Deck is shown following the Control Programme in Figure 2.

//MPSEXEC.SYSIN DD*

picks up the Data Deck.

NAME BETAGRØ

is the first card in the Data Deck and gives the user a specified name. It must be the same name as indicated in the Control Programme (Card 7).

RØWS

is an indicator card which specifies the cards that follow are the RØW names as described on the first matrix. Each RØW name is qualified by the RØW type appearing in code:

N - no restriction
E - equal to
G - greater than
L - less than

In our example these cards are specified as follows:

N CØST

since the objective here is to minimize cost, no restrictions or constraints are permitted.

E WEIGHT

it is desirable to formulate exactly a certain quantity (weight) of diet.

G PRØTEIN

the protein content of the diet must be at least, or greater than, a specified amount of the diet.

G DE

the digestible energy of the diet must equal, or exceed, a specified level.

N GE

no restriction is placed on the gross energy content of the diet.

C CALCIUM

the calcium content in the diet must equal, or exceed, a specified level.

G PHOS

the phosphorus content in the diet must equal, or exceed, a specified level.

G METH-CYS

the methionine plus cystine content in the diet must equal, or exceed, a specified level.

G LYSINE

the lysine content in the diet must equal, or exceed, a specified level.

N LIPID

no limit is set for lipid content.

N FIBRE

no restriction is placed on fibre levels.

COLUMNS

is an indicator card which specifies the cards that follow are the COLUMN names as described on the first matrix shown earlier. Since eight spaces are the maximum allowed for column names, some ingredient names have to be abbreviated; e.g., CØTTSEED and DICALPHS represent cottonseed meal and dicalcium phosphate, respectively. Values are given in kg per kg weight unless specified otherwise:

CØST - in Thai Baht (U.S.$ 1 = Baht 20, approximately)

WEIGHT - 1 kg

PRØTEIN - crude protein

DE - digestible energy in megacalories

GE - gross energy in megacalories

CALCIUM - calcium

PHØS - total phosphorus

METH-CYS - methionine + cystine

LYSINE - lysine

LIPID - crude fat

FIBRE - crude fibre

RHS - is an indicator card which specifies the cards that follow list the right-hand-side values described on the matrix given earlier. These cards are headed as RHS1 to distinguish them from other RHS cards added to this section in connexion with certain parametric techniques which will be discussed later. RHS values have the same units as those of the column names described earlier.

RANGES - is an indicator card which specifies the cards that follow represent the range over which the NUTRIENTS vary from the lower limit (LO) for PRØDUCTs which are BØUNDed. Each of these cards, therefore, are headed NUTRIENT and the nutrients specified (in the example, calcium and phosphorus). Values are in the same units as those of the column names described earlier.

BØUNDS - is an indicator card which specifies the cards that follow describe the constraints or restrictions on ingredient usage. Values are given in kg.

As stated earlier, it is not the intent of this chapter to establish the nutrient requirements of species for which least cost formulations are sought. Rather, it is to demonstrate both the opportunities as well as the limits attending the use of linear programming techniques with proper consideration for established knowledge in fish nutrition and feed technology.

The sample catfish diet to be formulated is to contain the following:

Protein

³ 30%

Methionine + Cystine

³ 0.9%

Lysine

³ 1.6%

Digestible energy

³ 2500 kcal/kg

Calcium

³ 0.5%, £ 1.5%

Total phosphorus

³ 0.7%, £ 1.2%

Digestible energy (DE) is frequently used in feed formulation for fish. DE on a wide range of feedstuffs for catfish are available and in the sample diet these values are used. Gross energy (GE) levels are usually unnecessary. Its inclusion in the printout is to provide an indication of the overall digestibility of the diet.

LIPID and FIBRE levels are among dietary components required by law to be specified for poultry and pig feeds in most countries. Their stated levels are usually quite arbitrary and do not by themselves reflect digestibility of a feed. Their prominence in a feed, however, has some influence on the feed's texture and pelletability. Low fibre diets containing more than 6 percent total fat will not give good quality pellets.

In the example, total phosphorus is given instead of available phosphorus because the mandatory inclusion of 8 percent fish meal (which is a rich source of available, or mineral, phosphate) obviates the setting of a lower limit for available phosphorus. The adoption of a wide but reasonable range for total phosphorus is meant to promote the cost optimization process.

In setting the BØUNDS (constraints) on PRØDUCTS (ingredients), the feed formulator takes the following into consideration:

(a) Distinct requirement for inclusion of certain feedstuffs in the diet.

Despite efforts to find suitable substitutes in artificial fish diets, fish meal continues to play a central role in meeting protein requirements of most fish species under intensive culture. Also, the rapid growth rates expected under such cultivation methods call for supplemental nutrients, such as vitamins and trace minerals, in the diet.

(b) Availability of the ingredients despite cost.

In commercial operations, the objective is to produce a product consistent in quality at the lowest cost. Product consistency is desirable because organoleptic properties influence the acceptability of a feed by the animal consuming it. Frequent changes in smell or texture may also lead to doubts in the mind of the purchaser over the quality of the feed, even though nutrient composition is preserved,

In the initial model the stated high cost of soybean meal would have caused the exclusion of the ingredient from the diet had it not been for specific instruction for its usage at the 10 percent minimum level in the total diet. This decision may be precipitated by a desire to maintain consistency in the feed which contained the ingredient when it was lower priced, or, because of the necessity to use up an unusually large inventory of the ingredient.

(c) Presence of anti-growth and toxic factors.

Anti-growth and toxic factors are present in some feedstuffs, which when consumed in large amounts would lead to poor performance and occasionally increased mortality among the affected animals.

In the example the bounding of ingredients is rationalized as follows:

BOUNDS (Limit)

PRODUCT (Ingredient)

AMOUNT (per 100 kg)

Reason for BOUND (Hypothetical)

LO (Lower)

Soymeal

10.0

Inventory

UP (Upper)

Soymeal

20.0

Digestibility

LO

Fish meal

8.0

Nutritional

UP

Cottonseed

10.0

Toxicity

UP

Feather meal

10.0

Inventory

UP

Rice bran

20.0

Nutritional, processing

UP

Leaf meal

5.0

Nutritional, processing

FX (Fixed)

Premix

0.5

Nutritional

UP

Wheat bran

15.0

Nutritional, processing

UP

Blood meal

10.0

Inventory

UP

Distillers grain

10.0

Inventory

ENDATA - indicates the end of the data deck
*/- signals the end of the data input step
//- signals the end of the Job Deck

A proof-list of the Data Deck provided by the computer for the Initial Model appears in Figure 4.

4. SOLUTION OF INITIAL MODEL (CATFISH DIET)


4.1 RØWS Analysis
4.2 CØLUMNS Analysis
4.3 Interpreting the RANGE Option


Once the complete data deck is presented to the computer, it goes through a series of iterations and alternate solutions until a feasible or workable solution is realized. It then continues until an optimum solution is reached. One can trace the series of steps involved and the changes made by studying the iteration log printed out in the primal operation. These are not usually of much interest unless one is making a parametric analysis, which will be discussed later.

The output of the MPSX programme is printed out in several parts. Although primary interest is in the formula or diet composition which will be used to mix the feed, the serious reader will also be able to obtain a great deal of additional information from studying the data output.

Fig. 4 Proof list of data deck; boxed RHS values applicable to parametric modes

.MPSX - PTF17
EXAMPLE OF A CATFISH FEED

NAME

BETAGRO




ROWS

N

COST

E

HEIGHT

G

PROTEIN

G

DE

N

GE

G

CALCIUM

G

PHOS

G

METH-CYS

G

LYSINE

N

LIPID

N

FIBRE

COLUMNS


MAIZE

COST

2.15000

WEIGHT

1.00000


MAIZE

PROTEIN

.09000

DE

1.10400


MAIZE

GE

4.22800

CALCIUM

.00020


MAIZE

PHOS

.00290

METH-CYS

.00350


MAIZE

LYSINE

.00250

LIPID

.03900


MAIZE

FIBRE

.02100




SOYMEAL

COST

6.00000

WEIGHT

1.00000


SOYMEAL

PROTEIN

.44000

DE

2.57600


SOYMEAL

GE

4.56800

CALCIUM

.00280


SOYMEAL

PHOS

.00630

METH-CYS

.01260


SOYMEAL

LYSINE

.02620

LIPID

.01200


SOYMEAL

FIBRE

.05800




FISHMEAL

COST

8.00000

WEIGHT

1.00000


FISHMEAL

PROTEIN

.65700

DE

3.90600


FISHMEAL

GE

4.62200

CALCIUM

.03760


FISHMEAL

PHOS

.02480

METH-CYS

.02590


FISHMEAL

LYSINE

.05020

LIPID

.05000


FISHMEAL

FIBRE

.01000




COTTSEED

COST

4.00000

WEIGHT

1.00000


COTTSEED

PROTEIN

.40800

DE

2.55700


COTTSEED

GE

4.54900

CALCIUM

.00200


COTTSEED

PHOS

.01010

METH-CYS

.01260


COTTSEED

LYSINE

.01560

LIPID

.02300


COTTSEED

FIBRE

.12400




FEATHER

COST

9.00000

WEIGHT

1.00000


FEATHER

PROTEIN

.85400

DE

3.41400


FEATHER

GE

5.12500

CALCIUM

.00280


FEATHER

PHOS

.00670

METH-CYS

.04320


FEATHER

LYSINE

.01630

LIPID

.03000


FEATHER

FIBRE

.01200




RICEBRAN

COST

2.00000

WEIGHT

1.00000


RICEBRAN

PROTEIN

.12700

DE

1.99200


RICEBRAN

GE

4.2300

CALCIUM

.00080


RICEBRAN

PHOS

.01480

METH-CYS

.00420


RICEBRAN

LYSINE

.00570

LIPID

.13900


RICEBRAN

FIBRE

.11600




LEAFMEAL

COST

2.50000

WEIGHT

1.00000


LEAFMEAL

PROTEIN

.15780

DE

.50000


LEAFMEAL

GE

3.50000

CALCIUM

.01500


LEAFMEAL

PHOS

.00640

METH-CYS

.03700


LEAFMEAL

LYSINE

.00600

LIPID

.02300


LEAFMEAL

FIBRE

.25900




LIMESTON

COST

.40000

HEIGHT

1.00000


LIMESTON

CALCIUM

.38000




DICALPHS

COST

3.00000

WEIGHT

1.00000


DICALPHS

CALCIUM

.26000

PHOS

.18500


PREMIX

COST

10.00000

WEIGHT

1.00000


COPRA

COST

3.00000

WEIGHT

1.00000


COPRA

PROTEIN

.21200

DE

1.49100


COPRA

GE

4.26800

CALCIUM

.00220


COPRA

PHOS

.00620

METH-CYS

.00510


COPRA

LYSINE

.00540

LIPID

.00500


COPRA

FIBRE

.11500




WHEATBRN

COST

2.50000

WEIGHT

1.00000


WHEATBRN

PROTEIN

.15100

DE

2.46400


WHEATBRN

GE

4.42000

CALCIUM

.00110


WHEATBRN

PHOS

.01270

METH-CYS

.00560


WHEATBRN

LYSINE

.00600

LIPID

.03900


WHEATBRN

FIBRE

.10300




BLOODML

COST

5.00000

WEIGHT

1.00000


BLOODML

PROTEIN

.75300

DE

2.73300


BLOODML

GE

5.22500

CALCIUM

.00270


BLOODML

PHOS

.00260

METH-CYS

.02220


BLOODML

LYSINE

.05990

LIPID

.01600


BLOODML

FIBRE

.01000




DISTGRNS

COST

4.00000

WEIGHT

1.00000


DISTGRNS

PROTEIN

.27000

DE

2.52200


DISTGRNS

GE

4.54200

CALCIUM

.00140


DISTGRNS

PHOS

.00720

METH-CYS

.00770


DISTGRNS

LYSINE

.00730

LIPID

.09900


DISTGRNS

FIBRE

.09400




BONEMEAL

COST

3.00000

WEIGHT

1.00000


BONEMEAL

PROTEIN

.11200

CALCIUM

.39390


BONEMEAL

PHOS

.12910



RHS


RHS1

WEIGHT

100.00000

PROTEIN

30.00000


RHS1

CE

25.000000

CALCIUM

.50000


RHS1

PHOS

.70000

METH-CYS

.90000


RHS1

LYSINE

1.60000




RHS2

DE

5.00000




RHS3

COST

.02100




RHS4

DE

.28500



RANGES


NUTRIENT CALCIUM

CALCIUM

1.00000

PHOS

.50000

BOUNDS


LO PRODUCT

SOYMEAL

10.00000




UP PRODUCT

SOYMEAL

20.00000




LO PRODUCT

FISHMEAL

8.00000




UP PRODUCT

COTTSEED

10.00000




UP PRODUCT

FEATHER

10.00000




UP PRODUCT

RICEBRAN

20.00000




UP PRODUCT

LEAFMEAL

5.00000




FX PRODUCT

PREMIX

.50000




UP PRODUCT

WHEATBRN

15.00000




UP PRODUCT

BLOODML

10.00000




UP PRODUCT

DISTGRNS

10.00000



ENDATA

4.1 RØWS Analysis

The solution is printed out in two sections. The first is the ROWS analysis, shown in Figure 5. The first column in this table lists the attributes which were wanted for consideration in the diet. The second column, headed by the symbol AT, indicates the status of the attribute in the diet; LL means at the Lower Limit, UL means that the row is at the Upper Limit, and EQ means the row is set at Equality. The symbol BS means "in the basis", meaning it is somewhere between its lower and upper limits and currently is not influencing the outcome of the diet. For example, calcium is currently at BS, meaning that the upper limit of 1.5 percent calcium has no effect at all on the solution. The column headed ACTIVITY provides the amount supplied by the solution. The column headed SLACK states the difference between the activity and the lower or upper limits (real or implied). The next two columns print out the lower and upper limits specified for the solution by the user.

The final column, headed DUAL ACTIVITY, provides valuable information regarding the cost of maintaining current restrictions. The amount given in this column indicates the cost associated with furnishing a unit of the row. It is assumed that these are independent and not related, although this is not completely true. From this portion of the printout, the range over which these variables are valid is not known, but this will be explored later.

As an example, a dual activity value of 2.08779 is associated with digestible energy (DE). This means that if one could reduce the lower limit of total DE by one unit (from 250.0 to 249.0 Meal), one would reduce the cost of the diet by this amount. Reducing the energy value from 250 to 245 Meal would result in a saving of 5 × 2.08779; a Baht 10.439 reduction in the cost of 100 kg diet.

Of course, one might not be able to reduce any of these restrictions, since it was indicated that these should represent the nutritionist's best estimates of the nutritional needs of the fish. It does, however, point out areas where research should be conducted. It will be seen that processing maize will affect the solution to this initial model when parametric methods are discussed.

As indicated earlier, these figures are based on the theory that the values are independent of one another. In actuality, this is not completely true, particularly for the costs associated with WEIGHT. Many of the ingredients are competing for space in the diet, and much of their cost is related to this. For example, much of the cost associated with meeting the calcium requirement is not related to the cost of the calcium supplement but to the fact that it competes for space in the diet.

4.2 CØLUMNS Analysis

The percentage of the ingredients used in the diet is also given in Figure 5. Again, there is a column which lists the ingredients to be considered, and a second column which gives their status in the diet (LL, UL, EQ, or BS). The column headed ACTIVITY indicates the amount used in the final solution while INPUT cost gives the prices assigned to the ingredient. The LOWER LIMIT and UPPER LIMIT columns indicate the limits imposed by the formulator.

The last column, REDUCED COST, provides information similar to that given by the Dual Activity in the RØWS section. For ingredients not presently used in the diet, such as feather meal or copra cakes, it tells how much the cost of the diet would change if one forced the use of one unit of these ingredients. The reduced cost represents. The difference between input cost and the actual feeding value of the nutrient. For example, there may be some feather meal on current inventory that should be used up. If it is decided to include 2 percent of this ingredient in the diet, the cost would be increased by 2 × 2.02719, or Baht 4.05 38 per, 100 kg of diet.

For soybean meal which is present at the imposed lower limit, the reduced cost also indicates that this ingredient is priced higher than its nutritional value and that savings could be implemented if the lower limits could be reduced. One would then have to balance the savings with the possible advantages of having these levels of ingredients present, such as for preserving product consistency or to reduce inventory on particular ingredients, as explained earlier.

Fig. 5 Solution of initial model

SECTION 1 - ROWS

NUMBER

...ROW..

AT

...ACTIVITY...

SLACK ACTIVITY

..LOWER LIMIT.

..UPPER LIMIT.

.DUAL ACTIVITY

1

COST

BS

412.80391

412.80391-

NONE

NONE

1.00000

2

WEIGHT

EQ

100.00000

.

100.00000

100.00000

.15493

3

PROTEIN

BS

34.21326

4.21326-

30.00000

NONE

.

4

DE

LL

250.00000

.

250.00000

NONE

2.08779-

5

GE

BS

449.26784

449.26784-

NONE

NONE

.

6

CALCIUM

BS

-68663

.16663-

.50000

1.50000

.

7

PHOS

BS

1.14760

.44760-

.70000

1.20000

.

8

METH-CYS

BS

1.14029

.24029-

.90000

NONE

.

9

LYSINE

BS

2.06S76

.46976-

1.60000

NONE

.

10

LIPID

BS

5.98527

5.98527-

NONE

NONE

.

11

FIBRE

BS

7.07473

7.07473-

NONE

NONE

.


.MPSX - PTF17. EXAMPLE OF A CATFISH FEED

SECTION 2 - COLUMNS

NUMBER

.COLUMN.

AT

...ACTIVITY...

..INPUT COST..

..LOWER LIMIT.

..UPPER LIMIT.

.REDUCED COST.

12

MAIZE

BS

9.52070

2.15000


NONE


13

SOYMEAL

LL

10.00000

6.00000

10.00000

20.00000

.77677

14

FISHMEAL

BS

14.97930

8.00000

8.00000

NONE

.

15

COTTSEED

UL

10.00000

4.00000

.

10.00000

1.18357-

16

FEATHER

LL

.

9.00000

.

10.00000

2.02719

17

RICEBRAN

UL

20.00000

2.00000

.

20.00000

2.00396-

18

LEAFMEAL

LL

.

2.50000

.

5.00000

1.61103

19

LIMESTON

LL

.

.40000

.

NONE

.55493

20

DICALPHS

LL

.

3.00000

.

NONE

3.15493

21

PREMIX

EQ

.50000

10.00000

.50000

.50000

10.15493

22

COPRA

LL.

.

3.00000


NONE

.04202

23

WHEATBRN

UL

15.00000

2.50000

.

15.00000

2.53116-

24

BLOODML

UL

10.00000

5.00000

.

10.00000

.55102-

25

DISTGRNS

UL

10.00000

4.00000

.

10.00000

1.11049-

26

BONEMEAL

LL


3.00000

.

NONE

3.15493

For ingredients present at the upper limits, the reduced cost value represents savings that could be attained if additional amounts could be utilized, such as are realized for cottonseed meal or distillers grains. The negative costs mean that the actual nutritive value for these ingredients is greater than their current input cost. For example, the cost of the diet could be reduced if the upper limits of these two ingredients could be raised. These decisions would, of course, have to be balanced against the reasons for applying the upper limits in the first place, such as possible limitations in supply (distillers grains) or variability in nutrient content (cottonseed meal).

Reduced cost values are given for the premix since for this item no RHS specifications were included but merely its level of usage was fixed. So far as the computer knows, premix is contributing nothing and is only taking up valuable space. Should it contain nutrients such as methionine or lysine incorporated as supplements, the appropriate row values for these nutrients should be assigned to the premix for proper least costing of the diet.

The limitations of the DUAL ACTIVITY and REDUCED COST information are that it is not known over what range the values will remain valid. For example, does the cost of a calorie change remain at Baht 2.08779 all the way from 245 to 250 megacalories? This information can be extended by use of the RANGE programme, discussed in the next section.

4.3 Interpreting the RANGE Option

The RANGE option provides additional information to the user of the MPSX programme. Basically, it indicates the range over which the DUAL ACTIVITY and REDUCED COST figures are valid. It also provides information as to the price sensitivity of current ingredients so that one will be able to determine when new formulas need to be run.

To call for this option one only has to insert a single card into the Control Programme, with RANGE punched starting in column 10. It is inserted after the SØLUTION card.

The data obtained from the RANGE programme appear, in Figures 6 and 7. Figure 7 shows the analysis of RØWS at limit level. It is seen here that the unit cost of WEIGHT of Baht 0.l5493 is valid from a range of 93.17 to 112.84 kg. The DE unit cost of Baht, 2.08779 is valid from 236.02 to 256.70 Meal. In this model, WEIGHT and DE represent the only RØW attributes at limit level.

The last columns, LIMITING PRØCESS and AT give some information as to what would happen to the diet if the RØW§§were changed to its lower or upper activity values. For example, it is seen that if the lower limit on DE were reduced to 236.02 Meal, calcium would move to the lower limit.

The analysis of CØLUMNS at limit level is also shown in Figure 6. Here examples are seen of negative or meaningless values. For example, feather meal at Baht 9.0 per kg is not currently used. The LØWER CØST for its use would be 6.97281 and its upper activity or use level at this new cost would be 6.61 percent. If used at this level, calcium would go to the lower limit. The negative value of -3.67624 in lower activity indicates that if the cost of feather meal went to infinity, the computer would subtract 3.67 percent which it obviously cannot do in this situation. Therefore, infinite or negative values should be ignored.

It was indicated earlier that soybean meal was apparently priced too high and the computer used it only because it was forced to do so. The actual value of this ingredient is Baht 5.22324, At this price, the computer would voluntarily use 20.95 percent with calcium at the lower limit. At a price of Baht 2.95798, copra will be used at 11.05 percent, removing maize entirely from the diet.

The RANGE analysis of RØWS at intermediate level (those "in the basis") shown in Figure 7 is of very little use and the data will not be discussed, but the output of CØLUMNS at the intermediate level in the same figure provides some valuable information. Basically, one is informed of (1) the cost range over which the diets will remain constant, and (2) the amount of the ingredient which would be used if the price were to be changed. Again, examples are shown of negative or unrealistic values which must be ignored. For example, maize at the current cost of Baht 2.15 is used at 9.52 percent. If the cost increases to Baht) 2.19876 the amount used will decrease to -34.03 percent, which is quite meaningless. However, cost decrease to Baht 0.83376 will result in increase usage of up to 11.20 percent, partially replacing blood meal.

Fig. 6 Analysis at limit level

Fig. 7 Analysis at intermediate level

.MPSX-PTF17. EXAMPLE OF A CAT
SECTION 3 - ROWS AT INTERMEDIATE LEVEL

NUMBER

ROW

AT

ACTIVITY

SLACK ACTIVITY

..LOWER LIMIT.

LOWER ACTIVITY

...UNIT COST...

...UPPER COST

LIMITING PROCESS.

AT

..UPPER LIMIT.

UPPER ACTIVITY

...UNIT COST...

...LOWER COST..

AT

3

PROTEIN

BS

34.21326

4.21326-

29.9999

29.9999

1.65290


BLOODML

UL





NONE

NONE

.96189


COPRA

LL

6

CALCIUM

BS

.68663

.18663-

.50000

.50000

13.27538


COPRA

LL





1.50000

1.50000

1.40653


LIMESTON

LL

7

PHOS

BS

1.14760

.44760-

.70000

.70000

95.83883


SOYMEAL

LL





1.20000

1.20000

16.54143


DICALPHS

LL

8

METH-CYS

BS

1.14025

.24029-

.90000

.90000

32.48095


COPRA

LL





NONE

NONE

42.03202


LEAFMEAL

LL

9

LYSINE

BS

2.06976

.46976-

1.60000

1.60000

11.39430


COPRA

LL





NONE

NONE

34.05701


LIMESTON

LL

SECTION 4 - COLUMNS AT INTERMEDIATE

NUMBER

COLUMN

AT

ACTIVITY

INPUT COST

LOWER LIMIT

LOWER ACTIVITY

UNIT COST

UPPER COST

LIMITING PROCESS

AT

UPPER LIMIT

UPPER ACTIVITY

UNIT COST

LOWER COST

AT

12

MAIZE

BS

9.52065

2.15000


34.03229-

.04876

2.19876

COPRA

LL





NONE

11.20405

1.31624

.83376

BLOODML

UL

14

FISHMEAL

BS

14.97925

8.00000

8.00000

13.45362

.30426

8.30427

COPRA

LL





NONE

17.31705

.94779

7.05221

BLOODML

UL

Fish meal prices can vary between Baht 7.05221 and Baht 8.30427 before changes in the diet would be necessary. At the lower price, usage will be at 17.32 percent, partially replacing blood meal; at the higher price, usage will be reduced to 13.45 percent, with copra taking up the difference.

These price changes are based on independent changes, assuming that only one ingredient at a time will change in cost. This is not a realistic assumption but it does provide a reasonable estimate of the frequency of times one must reformulate feeds.

The RANGE option can thus provide a great deal of information beyond that furnished by the original solution. This can be accomplished with the addition of only a single card into the control deck, and requires only a small amount of extra computer time.

5. MODIFYING THE DATA DECK BY THE REVISE PROGRAMME


5.1 Organization of the REVISE Data Deck
5.2 Results of the REVISE Programme


Occasionally, the formulator may want to run a series of diets in which certain elements of the data input are changed or modified. This is often done in formulating different types of research diets or when diets for several different types of age groups of animals are run consecutively. These modifications can be made by using the REVISE programme.

Essentially, the REVISE data deck is quite similar to the original data deck. It comprises the same five sections of data: RØWS, CØLUMNS, RHS, RANGES, and BØUNDS. Only those sections that need to be modified or changed are actually included.

Within each of the sections, four types of revisions are possible. These are MØDIFY, DELETE, BEFØRE, and AFTER. These revisions are stated on data cards similar to those used in the original data deck. The section to be revised is first identified by a section indicator card (RØWS, CØLUMNS, etc.). The kinds of changes to be made are then specified by REVISE control cards (MØDIFY, DELETE, BEFØRE, and AFTER) and by the actual data cards indicating the changes. For each section to be revised, the sequence is repeated. The functions of each of the REVISE operations will be discussed briefly.

(i) MØDIFY this revision modifies any previously defined information by) simply re-entering the new information in the same format as that in which the original information was given. The control card for this type of change is set up as follows:

Card columns

3-8

MØDIFY

MØDIFY data cards, which follow the MØDIFY control card, may be any of the five types of data cards. RØW cards may modify the type of constraint that was specified in the original deck, such as changing a G value to an N. CØLUMN modification cards may change the matrix elements in any column group, such as changing the energy content of a fat. RHS cards may be used to increase or decrease the specifications for any of the nutrients. RANGE cards may be used to modify the allowable range for any nutrient and BØUND cards may be used to modify any product control. In short, the user can change any information previously entered by the MØDIFY programme. Card formats for the new information remain the same as for the original data.

(ii) DELETE

this revision completely removes any defined information from the original data. The control card for this type of change is set up as follows:

Card columns

3-8

DELETE

The DELETE data cards may also be of any of the five types of original data cards (RØWS, CØLUMNS, etc.). However, all that need be done is to indicate the name of the information to be deleted. This entire vector will then be deleted from the data deck. If it is desired to delete only segments of the information, this can be specified.

(iii) BEFØRE and AFTER

these revisions are used to add new information to the original deck. The only difference between the two is the location where the new information will be added. In using these cards, the new information is added to the data deck BEFØRE and AFTER some specified location currently existing in the DATA Deck. The control card for these modifications thus will contain some information which will indicate the location where the new information is to be inserted. The control cards for the BEFØRE and AFTER modifications are shown below.

Card columns

3-8

15-22

BEFØRE

Name of old vector

Card columns

3-8

15-22

AFTER

Name of old vector

Card columns 15-22 contain the name of some previous information presently in the data deck. New information is then added before or after this. The name of the old vector can be omitted and the new information will be added as the first information in the revised section (BEFØRE) or the last information in the revised section (AFTER).

5.1 Organization of the REVISE Data Deck

The REVISE Data Deck is set up in an order similar to that of the original Data Deck. It begins with a NAME card and ends with an ENDATA card. It is inserted into the original deck immediately after the ENDATA card for the original deck and before the final DD cards. The REVISE deck is split into five sections: RØWS, CØLUMNS, RHS, RANGES, and BØUNDS, each headed by an appropriate indicator card. The sections must appear in the above order, but if a section contains no revisions it does not have to be included.

There are certain rules which must be followed when using the REVISE programme. They will be outlined and examples given of how these apply to the revision of the original data deck.

Rules for REVISE section.

(1) Within each section (RØWS, CØLUMNS, etc.) there are revision control cards (MØDIFY, DELETE, BEFØRE, or AFTER) followed by appropriate revision data cards. Any one or all four of these types of§§revisions may take place. However, once a revision to a particular vector is made in a section, all revisions to that vector must be given before any other vector is mentioned. Revisions to different vectors are not grouped By the type of revision.

(2) Subject to the rule above, modifications may be made in any order.

(3) If a currently existing non-zero value is to be changed to zero, it must be defined with the value of zero in the REVISE Data Deck. This is an exception to the earlier statement about the addition of zero values.

(4) Any new vector (new ingredient, attribute, etc.) to be added must be given a different name from that given to an old vector, even if the old vector is deleted.

(5) If E, L, or G-type RØWS are modified into an N-type row, the RANGE elements of this row are automatically removed.

(6) A modified row or bound element must be entirely re-defined. That is, a modified row must have its type of constraint specified and a bound element must have both its upper and lower limits specified, even if only one is modified.

(7) If a new row is added by using BEFØRE or AFTER in the RØWS section, then values for this row in existing columns are added by using MØDIFY for the appropriate columns.

As an example of how this type of information may be used, the data for the original solution will be revised as shown in Figure 8. A brief statement about the different modifications or revisions will be made as most are self-explanatory.

In the RØWS section, the constraint on PRØTEIN will be changed from a G to an N value by MØDIFY. A new row, MEATPRØT (meat protein) is added after the existing GE row. This new row will have a value, with the value to be given in the RHS section. The FIBRE row has been completely deleted.

In the CØLUMNS section some current data are modified. The cost of maize is added and MEATPRØT values are added to the animal protein sources. According to rule 7, MØDIFY will be used to§§add information on new rows to existing columns. Distillers grains are deleted from consideration.

Two new ingredients are added. DLMETH98 (dl-methionine, 98%) is added along with its, ingredient values after the currently existing bone meal. DEFLPHØS (defluorinated rock phosphate) is added along with its ingredient values before the currently existing DICALPHS.

In the RHS section values are also added for a newly-inserted row, MEATPRØT, following rule 7.

No modifications are given in the RANGES section, but in the BØUNDS section the lower limit of the soybean meal was changed from 10.0 to 0. Here, rule 3 is followed to change a non-zero value to zero, and rule 6, to completely re-define bound elements. Thus, although the old upper limit of 20.0 percent is retained, this again must be specified in the REVISE programme. The product has been reset in fish meal from its lower limit of 8 to a new limit of zero. This is necessary because of the addition of meat protein and the setting of an RHS value for this new row element.

In addition to the new information in the Data Deck, new§§information must be added to the CØNTRØL PRØGRAMME. Following the SØLUTIØN statement of the original programme, the following new cards must be inserted, again starting in card column 10:

MØVE (XDATA, 'BETAGRØ2')

a name for the new data deck, subject to the same rules outlined previously, must be specified.

MØVE (XØLDNAME, 'RITA')

this gives the XPBNAME of the old data deck to be revised, which in the sampled problem was 'RITA'.

MØVE (XPBNAME, 'GINA')

establishes the name to be assigned to this problem on the problem file, and subject to the same rules as outlined previously.

REVISE ('SUMMARY')

indicates that a revised programme is to be run.

SET-UP

as outlined previously.

PRIMAL

as outlined previously.

SØLUTIØN

as outlined previously.

CØNTINUE

this statement returns control to a statement that was interrupted to service the revise programme.

These cards are then followed by the original EXIT and PEND statement cards. An example of a computer control programme for a REVISE run may be seen in Figure 9.

Fig. 8 Card punch detail for REVISE programme.

Fig. 8 (contd.) Card punch detail for REVISE programme

Several different REVISE runs may be made in succession. However, it is suggested that if extensive modifications are to be made, some other approach to the problem should be used. If several consecutive REVISE programmes are run, it should be kept in mind that REVISE vectors refer back to the original data and successive REVISE programmes must be completely and independently re-defined.

5.2 Results of the REVISE Programme

Revising the initial model results in solutions as summarized in Figure 10. Compared to the original solution in Figure 5, energy remains the limiting factor influencing cost. Despite a reduction in the cost of maize and replacement of the bound on fish meal usage by the more flexible meat-protein bound diet, cost is actually increased. This probably results from the removal of distillers grains from the ingredient list. We also see a further increase in the protein content which, in the original model, already exceeds the 30 percent minimum set. This represents a waste and points to opportunities for research in the area of energy utilization in catfish. Some of these ramifications will be explored in the discussion of parametric methods in the next section.

Numerous types of changes in the basic format of the original data deck can be made by proper use of the REVISE programme. One would not normally make as many changes as have been made in this example, but these are given to illustrate the different types of changes available. It is pointed out, again, that if extensive modifications are to be made, the user might be advised to make changes in the original data deck rather than using the REVISE programme.

6. PARAMETRIC LINEAR PROGRAMMING


6.1 Parametric Restriction Ranging - PARARHS
6.2 Parametric Column Ranging - PARACØL
6.3 Parametric Row Ranging - PARARØW
6.4 Parametric Cost Ranging - PARAØBJ
6.5 Multimode Linear Programming


The use of parametric linear programming (PLP) adds a new dimension to least-cost linear programming. This technique is extremely versatile and in the hands of a creative and imaginative nutritionist can be valuable in many aspects of feed formulation. Some of the areas in which PLP can be used to advantage are:

(a) planning and formulating diets for experimental purposes,
(b) evaluating the potential sales value and usage level of new or improved feeds tuffs,
(c) determining the economic benefit of improved feed processing techniques, and
(d) determining costs and benefits of modifications in nutrient requirements.

Parametric programming is a technique for investigating the effects of a sequence of proportionate or incremental changes in the elements of a row, column, or right-hand-side. A selected factor is parametrized; i.e., examined at increasing or decreasing increments, and the effect on the least-cost solution is examined.

Several different parametric procedures can be used in feed formulation. First, the value of the objective function of the solution (in this example the cost) may be varied. This is often called parametric cost ranging and utilizes the PARAØBJ programme. The nutrient specifications set forth in the right-hand-side section may be varied by use of the PARARHS programme. This is also§§known as parametric restriction ranging. The effects of altering the amounts of one or more attributes of a specified feedstuff by the PARACØL programme may be studied (also known as parametric nutrient ranging). The effects of changing values of a specified attribute, such as the available phosphate content, in one or more feedstuffs simultaneously can be studied by the PARARØW programme. Thus PARAØBJ parametrizes the objective function, PARARHS parametrizes the right-hand-side values, PARACØL parametrizes one or more elements in a specified column, and PARARØW parametrizes one or more elements in a given row.

These different methods will be discussed as to their application to feed formulation, and some examples will be given which will guide the reader to consider how PLP may be used to advantage under his own conditions.

Fig. 9 Control programme for a REVISE run

PROGRAM
TITLE ('EXAMPLE OF A CATFISH FEED')
INITIALZ
MOVE (XDATA, 'BETAGRO')
MOVE (XPBNAME, 'RITA')
MOVE (XOBJ, 'COST')
MOVE (XRHS, 'RHS1')
CONVERT ('SUMMARY')
SETUP ('RANGE' , 'NUTRIENT', 'BOUND', 'PRODUCT')
PRIMAL
SOLUTION
TITLE ('REVISED CATFISH FEED')
MOVE (XDATA, 'BETAGRO2')
MOVE (XOLDNAME, 'RITA')
MOVE (XPBNAME, 'GINA')
REVISE ('SUMMARY')
SETUP ('RANGE', 'NUTRIENT', 'BOUND', 'PRODUCT')
PRIMAL
SOLUTION
CONTINUE
EXIT
PEND

Fig. 10 Solution of revised model

.MPSX-PTF17. REVISED CATFISH FEED
SECTION 1-ROWS

NUMBER

...ROW...

AT

...ACTIVITY...

SLACK ACTIVITY

..LOWER LIMIT.

..UPPER LIMIT.

.DUAL ACTIVITY

1

COST

BS

410.32142

410.32142-

NONE

NONE

1.00000

2

WEIGHT

EQ

100.00000

.

100.00000

100.00000

.79043

3

PROTEIN

BS

34.11874

4.11874-

NONE

NONE

.

4

MEATPROT

BS

29.78871

19.78871-

10.00000

NONE

.

5

DE

LL

245.00000

.

245.00000

NONE

2.087759-

6

GE

BS

447.03048

447.03048-

NONE

NONE

.

7

CALCIUM

BS

.84691

.34691-

.50000

1.50000

.

8

PHOS

UL

1.20000

.50000-

.70000

1.20000

98.76706

9

METH-CYS

BS

1.17946

.27946-

.90000

NONE

.

10

LYSINE

BS

2.18200

.58200-

1.60000

NONE

.

SECTION 2 - COLUMNS

NUMBER

COLUMN

AT

ACTIVITY

INPUT COST

LOWER LIMIT

UPPER LIMIT

REDUCED COST

11

MAIZE

BS

17.62974

2.10000

.

NONE

.

12

SORGHUM

LL

.

2.07000

.

NONE

.13527

13

SOYMEAL

BS

7.08155

6.00000

.

20.00000

.

14

FISHMEAL

BS

19.78871

8.00000

.

NONE

.

15

COTTSEED

UL

10.00000

4.00000

.

10.00000

1.57001-

16

FEATHER

LL

.

9.00000

.

10.00000

.62809

17

RICEBRAN

UL

20.00000

2.00000

.

20.00000

1.47997

18

LEAFMEAL

LL

.

2.500000

.

5.00000

2.48375

19

LIMESTON

LL

.

.40000

.

NONE

1.19043

20

DEFLPHOS

LL

.

3.00000

.

NONE

21.56850

21

DICALPHS

LL

.

3.00000

.

NONE

22.06234

22

PREMIX

EQ

.50000

10.00000

.50000

.50000

10.79043

23

COPRA

LL

.

3.00000

.

NONE

.11231

24

WHEATBRN

UL

15.00000

2.50000

.

15.00000

2.60315-

25

BLOODML

UL

10.00000

5.00000

.

10.00000

1.81722-

26

BONEMEAL

LL

.

3.00000

.

NONE

16.54126

27

DLMETH98

LL

.

50.00000

.

NONE

37.84129

6.1 Parametric Restriction Ranging - PARARHS

This option can be one of the most valuable and powerful formulation tools a nutritionist may have at his disposal. By proper use of this programme one can quickly establish a series of linear changes in his nutritional specifications and examine their effects on the diet composition and costs. The changes may be either positive or negative; i.e., the specified level of the nutrient may be increased or decreased. Changes in the level of more than one nutrient at a time may be examined simultaneously with the specified change in each nutrient independent of changes in other nutrients, either in direction or magnitude. For example, one could increase calcium while at the same time decrease phosphorus requirements. One may increase lysine requirements by a factor of two while increasing methionine requirements by a factor of four, as another example.

In the given initial model of a catfish feed, it was noted that DE was the only limiting nutrient in the optimal solution. Therefore, one will study the effects of reducing the DE requirement of the initial diet. This diet was formulated with an initial request for a minimum of 2 450 kcal/kg. The use of levels of down to 2 200 kcal/kg will be considered below.

To repeat, additional information must be included in both the data deck and the control programme. First, add a new card to the RHS section of the data deck. This card, designated as RHS2, specifies the nutrient to be changed and the amount by which it is to be changed. It is to be punched as are other RHS cards in the original data deck. Thus, the digestible energy requirement will be decreased by 50 kcal/kg (or 5 Meal for the total diet) for each time specified. A negative sign immediately preceding the value denotes such a reduction. This card must" be placed in the deck after the end of all the RHS1 cards. It must not be placed before any of the original RHS cards.

Some additional cards must be added to the control programme to initiate the PARARHS programme. These are outlined in Figure 11. Since this is a post-optimal operation, the computer first solves the original solution and then proceeds to parametrize the right-hand-side factor indicated. The TITLE statement is optional and purely descriptive. The MØVE statement reads the specified parameter changes for the new model. The XPARAM=0.0 card represents the initial value of the parametric multiplier, and the XPARMAX=5.0 specifies that the increment (negative) given in RHS2 will be added to the original RHS up to a total of five times. This value can be changed by the user to fit his problem but must always be a positive number and contain a decimal point. The XPARDELT=1.0 specifies the parametric intervals at which the new solutions are to be printed; it must also be positive and contain a decimal. It is indicated here that the solution desired is to be printed out at each 50 kcal/kg decrease of digestible energy. The name of the RHS value to be parametrized is indicated by the MØVE (XCHCØL, 'RHS2') statement. This is followed by PARARHS, which calls forth the particular programme, SØLUTIØN, CØNTINUE, EXIT, and PEND.

Fig. 11 Control programme for PARARHS Restriction Ranging

PROGRAM
TITLE ('EXAMPLE OF A CATFISH FEED')
INITIALZ
MOVE (XDATA. 'BETAGRO')
MOVE (XPBNAME, 'RITA')
MOVE (XOBJ, 'COST')
MOVE (XRHS, 'RHS1')
CONVERT ('SUMMARY')
SETUP('RANGE', 'NUTRIENT', 'BOUND', 'PRODUCT')
BODOUT
PICTURE
TRANCOL
TRANROW
PRIMAL
SOLUTION
TITLE ('PARARHS-CHANGING ENERGY REQUIREMENT OF FEED')
MOVE (XCHCOL, 'RHS2')
XPARAM=0.
XPARMAX=5.
XPARDELT=1.
PARARHS
SOLUTION
CONTINUE
EXIT
PEND

The effects of the changes in diet formulation are shown in Table 2. The first column represents the solution of the initial model. As the minimum DE requirement is decreased by the PARARHS programme, a decrease in the cost of the diet is seen, as well as a progressive decrease in the protein level until a minimum for the nutrient (30 percent) is reached.

The savings per unit decrease of DE requirement is constant up to the point where protein level becomes limiting; at this time the savings fall off sharply, reflecting the new cost of maintaining minimum protein level. The dual role of fish meal is also seen as a supplier of both protein and energy when energy cost is high. From the table, it can also be seen that as a protein source, copra meal is less expensive than distillers grains, whereas the latter ingredient is more cost effective in an energy-limiting diet.

Table 2 - Parametric RHS Ranging (PARARHS) - Results of Decreasing Dietary DE Requirement - Model Catfish Diet

Item

DE, Mcal/100 kg Feed

245

240

235

230

225

220

Rows

CØST, Baht/100 kg

402.36494

391.92596

381.50610

371.23392

365.39187

361.88912

PRØTEIN, kg

33.20149

32.18971

31.18253

30.14601

30.0

30.0

GE, Meal

448.56478

447.86171

447.01837

445.54113

433.90940

432.51182

CALCIUM, kg

0.61989

0.55315

0.50

0.50

1.50

1.50

PHØS, kg

1.10852

1.06944

1.03056

0.99422

0.98808

0.99146

METH-CYS, kg

1.10031

1.06034

1.02056

0.98066

0.96981

0.96072

LYSINE, kg

1.98464

1.89953

1.81497

1.72837

1.72832

1.72524

Diet Composition (%)

Columns

MAIZE

11.30514

13.08958

14.82601

16.44237

12.39850

9.62692

SØYMEAL

10.0

10.0

10.0

10.0

10.0

10.0

FISHMEAL

13.19486

11.41042

9.63955

8.0

8.0

8.0

CØTTSEED

10.0

10.0

10.0

10.0

10.0

10.0

FEATHER

-

-

-

-

-

-

RICEBRAN

20.00

20.00

20.00

20.00

20.00

20.00

LEAFMEAL

-

-

-

-

-

-

LIMESTON

-

-

0.03444

0.19681

2.81630

2.78908

DICALPHS







PREMIX

0.50

0.50

0.50

0.50

0.50

0.50

COPRA

-

-

-

-

4.03221

12.76040

WHEATBRN

15.0

15.0

15.0.

15.0

15.0

15.0

BLOODML

10.0

10.0

10.0

9.86082

10.0

10.0

DISTGRNS

10.0

10.0

10.0

10.0

7.25298

1.32360

BONEMEAL

-

-

-

-

-

-

6.2 Parametric Column Ranging - PARACØL

This option is used to direct the parametric ranging of elements within a specified column. A certain ingredient is selected (only one ingredient at a time can be considered). One, several, or all of the row values within this column may be increased or decreased.

It is often possible to change the nutritive value of an ingredient by some processing method, enzyme addition, etc., with some control on the degree of change. For example, it has been established that fully gelatinized maize has almost twice the DE value as uncooked maize for catfish. This can be partially realized by the pelleting process and completely realized by extruding maize under pressurized heat. Either process, however, involves some additional processing cost. Should it be desirable to know the cost effectiveness of the gelatinization process on maize, then PARACØL programming should be employed.

Again, additional information should be added to the data deck and the control programme. First, RHS values must be added into the data deck to indicate the magnitude of the change in DE value of the maize and the additional cost associated with each increment of gelatinization. These values will be designated as RHS3. The RHS3 values represent the new values added to the respective old values. Assume that 0.285 represents additional DE (Mcal/kg) available with each processing phase (5 in all). Assume, further, for simplicity, that each such step will produce 20 percent gelatinization, and that by the end of the fifth step, the gelatinization process is complete. Suppose each processing step results in a constant cost increment of Baht 0.021 per kg. The RHS3 cards are added after the RHS1 cards. Keep in mind that any or all of the attributes in the selected ingredient could be changed with the direction on magnitude of change for each attribute independent of the others. For example, it might also be found that for each increase in the DE value due to the processing, there would be a decrease in lysine content. The user would then add another RHS card indicating this change. However, proceed on the assumption that the energy and cost values represent the only changes. A control programme for the PARACØL option is shown in Figure 12. The initial least-cost solution is obtained and the PARACØL is done post-optimally. Note that some familiar statements as well as some new ones are added. First specify which column is to be changed in MØVE (XCOLUMN, 'MAIZE'). A stipulation is that this ingredient must not be bounded in any way (FX, LO§§or UP). Then, indicate the change column, MØVE(XCHCØL, 'RHS3'). Again, the initial value is established by XPARAM=0.0, and the maximum value in this case will be XPARMAX=5.0, which means that an increase in the digestible§§energy level in 5 steps will be examined. The printing out of values at each interval change by XPARDELT=1 is then ordered. PARACOL calls for the specific programme, followed by SØLUTIØN, CØNTINUE, EXIT, and PEND - as§§before.

The change in the diets as a result of increases in the DE value of the maize is shown in Table 3. As demonstrated in the preceding sections, DE constitutes not only the limiting nutrient in the initial diet but meeting its minimal requirement is at some cost to unwanted protein as well. The increasing DE values of maize, made available through gelatinization, more than off-set the added cost involved. Again, sharp drops in cost of the diet occur just before the lower limit for protein is reached. The largest drop occurs with the greatest increase in usage of processed maize when it has a DE value of 1 959 kcal/kg. If diet cost is plotted against percent gelatinization, a sigmoid curve is obtained (Figure 13) which shows the sharpest reduction in diet cost occurring at around 58 percent gelatinization coinciding with the highest level of maize usage. Incidentally, this is also the level at which the total cost of the diet is least sensitive to increase in cost of gelatinization.

The PARACØL programme, therefore, can be very valuable in determining the economic feasibility of ingredient processing and suggests possible areas of research on factors known to influence the nutritive value of an ingredient.

Fig. 12 Control programme for PARACØL Nutrient Ranging

PROGRAM
TITLE (EXAMPLE OF A CATFISH FEED)
INITIALZ
MOVE (XDATA, 'BETAGRO')
MOVE (XPBNAME. 'RITA')
MOVE (XOBJ, 'COST')
MOVE (XRHS ,'RHS1')
CONVERT ('SUMMARY')
SETUP ('RANGE', 'NUTRIENT', 'BOUND', PRODUCT')
BODOUT
PICTURE
TRANCOL
TRANROW
PRIMAL
SOLUTION
RANGE
TITLE('PARACOL-CHANGING ENERGY VALUES OF MAIZE')
MOVE(XCOLUMN, 'MAIZE')
MOVE(XCHCOL, 'RHS3')
XPARAM=0.
XPARMAX=5.
XPARDELT=1.
PRIMAL
PARACOL
SOLUTION
CONTINUE
EXIT
PEND

Table 3 - Results from increasing the DE and COST Values of Maize by 207, Increments in Gelatinization by the PARACØL Programme

% Gelatinization

0

20

40

60

80

100

Cost Baht/kg

2150

2171

2192

2213

2234

2215

DE, Meal/kg

1104

1389

1674

1959

2244

2529

Rows

CØST, Baht/100 kg

402.36

395.14

385.86

372.95

367.48

365.77

WEIGHT, kg

100.00

100.00

100.00

100.00

100.00

100.00

PRØTEIN, kg

33.20

32.48

30.00

30.00

30.00

30.00

DE, Meal

245.00

245.00

245.00

245.00

245.00

245 00

GE, Meal

448.56

448.06

444.21

444.17

437.67

433.17

CALCIUM, kg

0.62

0.57

0.57

0.53

1.11

1.50

PHØS, kg

1.11

1.08

1.09

1.02

0.95

0.96

METH-CYS, kg

1.10

1.07

1.00

1.00

1.02

1.01

LYSINE, kg

1.98

1.92

1.71

1.81

1.71

1.71

LIPID, kg

5.97

5.95

6.04

5.35

5.21

5.26

FIBRE, kg

7.09

7.11

7.15

6.39

6.36

6.66

Diet Composition (%)

Columns

MAIZE

11.30

12.58

16.28

23.69

22.44

18.50

SOYMEAL

10.00

10.00

10.00

10.00

10.00

10.00

FISHMEAL

13.19

11.91

12.19

11.33

8.00

8.00

CØTTSEED

10.00

10.00

10.00

10.00

10.00

10.00

FEATHER

-

-

-

-

2.24

1.82

RICEBRAN

20.00

20.00

20.00

20.00

20.00

20.00

LEAFMEAL

-

-

-

-

-

-

LIMESTØN

-

-

-

-

1.82

2.83

DICALPHS

-

-

-

-

-

-

PREMIX

0.50

0.50

0.50

0.50

0.50

0.50

CØPRA

-

-

-

-

-

3.35

WHEATBRN

15.00

15.00

15.00

15.00

15.00

15.00

BLØØDML

10.00

10.00

6.03

9.48

10.00

10.00

DISTGRNS

10.00

10.00

10.00

-

-

-

BØNEMEAL

-

-

-

-

-

-

6.3 Parametric Row Ranging - PARARØW

The PARARØW option is similar in set-up and operation to the other parametric operations. In this programme, a specific row is selected and the value of this row, in one or more feed-stuffs, is altered by a specified amount.

Assume, in this example, that the digestible energy content of feed grains, normally low for catfish, can be increased by processing. Assume, further, that stepwise processing of the grains will result in corresponding increases in digestible energy. Thus, five such additions would result in maximum DE values which are further assumed to be 2529 and 2450 kcal/kg for maize and sorghum, respectively. Sorghum is a new column which is added for the demonstration of this parametric technique (it was absent in the initial model). Since there is a restriction to select only one row for ranging, it is not possible to consider increased cost with each increase in DE content as was rationalized in the earlier example of parametric column ranging. This is one limitation of the method.

Fig. 13 Effects of maize gelatinization on diet cost

The control programme for the PARARØW example is shown in Figure 14. Indicate the row to be changed as MØVE(XRØW, 'DE'). This must be a restraint row and can be ranged. Each ingredient for which the specified row is to be changed is then given a CHRØW2 value in the CØLUMNS section of the data deck. The values which will be given represent increments of the DE content in each of the five steps. This change row is designated in the control programme as MØVE(XCHRØW, 'CHRØW2') and is assigned an N value in the RØWS section of the data deck. The XPARAM, XPARMAX, and XPARDELT values follow the rules set forth previously. It is noted that a total of 5 additions of the change row value are called for to the original DE value of the specified feedstuffs, with the solution to be printed out at each increment. Thus, at each increment, the original value will be replaced with the original value plus a multiple of the change row value.

The PARARØW results are summarized in Table 4. Once again, the high cost of meeting the minimum requirement of digestible energy in the sample diet is demonstrated. As in the PARACØL example, the increasing use of maize as this ingredient's digestible energy increases as a result of the gelatinization process is attended by reductions in the overall cost of the diet. At 40 percent grain starch gelatinization, the total DE needs can be met without sacrifice of unwanted excess of protein,. As further gelatinization of grain starch takes place, the cost of energy becomes subordinate to the cost of protein, and the choice of maize as the energy source gives way to sorghum - the latter having a higher protein content. As a result of the higher cost of protein too, the greater utilization of feather meal at the expense of fishmeal is seen.

Table 4 - Parametric Row Ranging - PARARØW - Results of Increasing Feed. Grain DE Values through Starch Gelatinization

% Gelatinization

0

20

40

60

80

100

MAIZE, Meal DE/kg

1104

1389

1674

1959

2244

2529

SORGHUM, Meal DE/kg

1050

1330

1610

1890

2170

2450

CØST, Baht/100 kg

402.36

394.87

385.18

371.46

360.40

358.19

PRØTEIN, kg

33.20

32.47

30.00

30.00

30.00

30.00

DE, Meal

245.00

245.00

245.00

245.00

245.00

245.00

CALCIUM, kg

0.61

0.57

0.57

0.53

0.65

1.50

PHØS, kg

1.10

1.08

1.08

1.024

0.95

0.81

METH-CYS, kg

1.10

1.07

1.00

1.00

0.99

0.99

LYSINE, kg

1.98

1.92

1.70

1.81

1.70

1.66

Diet Composition (%)

MAIZE

11.30

12.59

16.28

23.69



SØRGHUM

-

-

-

-

24.44

34.50

SØYMEAL

10.00

10.00

10.00

10.00

10.00

10.00

FISHMEAL

13.20

11.91

12.19

11.33

8.00

8.00

CØTTSEED

10.00

10.00

10.00

10.00

10.00

10.00

FEATHER

-

-

-

-

1.45

2.27

RICEBRAN

20.00

20.00

20.00

20.00

20.00

20.00

LEAFMEAL

-

-

-

-

-

-

LIMESTØN

-

-

-

-

0.61

2.86

DICALPHS

-

-

-

-

-

-

PREMIX

0.50

0.50

0.50

0.50

0.50

0.50

CØPRA

-

-

-

-

-

1.77

WHEATBRN

15.00

15.00

15.00

15.00

15.00

-

BLØØDML

10.00

10.00

6.03

9.48

10.00

10.00

DISTGRNS

10.00

10.00

10.00

-

-

-

BØNEMEAL

-

-

-

-

-

-

Fig. 14 Control programme for PARARØW

PROGRAM
TITLE ('EXAMPLE OF A CATFISH FEED')
INITIALZ
MOVE (XDATA, 'BETAGRO')
MOVE (XPBNAME, 'RITA')
MOVE (XOBJ, 'COST')
MOVE (XRHS, 'RHS1')
CONVERT ('SUMMARY')
SETUP ('RANGE', 'NUTRIENT', 'BOUND', 'PRODUCT')
PRIMAL
SOLUTION
RANGE
TITLE ('PARAROW - IMPROVING ENERGY VALUES OF FEED GRAINS')
MOVE (XROW, 'DE')
MOVE (XCHROW, 'CHROW2')
XPARAM=0
XPARMAX=5.
XPARDELT=1.
PRIMAL
PARAROW
SOLUTION
CONTINUE
EXIT
PEND

6.4 Parametric Cost Ranging - PARAØBJ

Parametric cost ranging involves changing the value of the objective row (CØST in the model) for a specified ingredient, while the price of other ingredients remains constant. While it is technically possible to range the price of several ingredients simultaneously, it would be difficult to interpret the output. The data output or solutions of the PARAØBJ programme will trace the usage level of the selected ingredient at different cost levels. The usage level will generally be a step-like function rather than a straight line with the width and height of the steps varying in relation to the competition from other feedstuffs.

Several uses can be made of the PARAØBJ programme. The most common use is to estimate the economic or nutritive worth of an ingredient in relation to other ingredients and given an estimate of the market demand (use level) at different price ranges. One should be aware that the economic value of a particular feedstuff depends not only upon its nutrient content and biological availability, but also upon the type of diet in which it is fed, the limitation or bounds imposed upon the feedstuffs, and the nutrient composition and cost of other feed-stuffs. Therefore, the PARAØBJ programme is particularly useful when evaluating a new or improved feed product, evaluating a feedstuff in different types of diets or for different species, evaluating an ingredient on the basis of cost relationships at; different market locations, and for examining competitive relationship among ingredients.

As an example, a parametric cost ranging study of soybean meal, an ingredient that was not selected for use by the computer in the second least-cost model, will be made. The usage level of this material at different cost levels in the BETAGRØ carp diet will be examined.

The control programme which directs the PARAØBJ operation is shown in Figure 15. This programme first solves the basic least-cost solution as described earlier, and then post-optimally considers the cost ranging of the chosen feedstuff. During the solving of the basic least-cost solution, the test ingredient is usually assigned a high artificial price so as to prevent its use in the(diet.

Certain additional information needs to be added to the data deck. The new data deck information for the PARAØBJ is given in Figure 16. The name of the objective function is changed from CØST to CØST2. A CØST2 value of zero is assigned to the test ingredient (it need not be punched), while the same values used for CØST in the original solution are assigned to the remaining ingredients as CØST2 in the CØLUMNS section. A MØVE (XØBJ, 'CØST2') statement in the control programme, an N value for CØST2 in RØWS, and CØST2 values for all ingredients in CØLUMNS must be added. Keep in mind that CØST and CØST2 are arbitrary terms selected by the user to describe his objective function. Other objective functions may also be chosen.

A series of related problems is then created by replacing the original objective row CØST with the new objective row plus a multiple of a "change" row. This multiple, XPARAM, is the parameter and its value must be stated in the control programme. It is the initial value of the ingredient to be parametrized and it must be a zero and must contain a decimal (XPARAM=0.).

The ingredient to be parametrized is designated as the range row by placing the term CHRØW1 in the CØLUMNS section with the rest of the nutrient values for feathermeal with a CHRØW1 value of 1. This instructs the computer to increase the cost of the test ingredient by 1 each time it goes through the cycle. In the control programme, the name of this specific change row must be indicated as MØVE(XCHRØW, 'CHRØW1'). There must be an N value assigned to CHRØW1 in the RØWS section of the data deck.

The maximum value which the ingredient will attain is set by the XPARMAX statement in the control programme. It must be a positive number and contain a decimal point (XPARMAX=10.). The intervals at which the solution is to be printed out may be specified in two ways. The first of these is an XPARDELT statement which indicates specific increments at which the solution is to be printed out. For example, if XPARDELT is equal to 1.0, the output would be printed out at soybean meal values of 0, 0.6, 1.2, and so forth to Baht 6.0. This type of interval specification is best adapted to the other types of parametric operations but can be used in PARAØBJ if desired. The most effective means of interval specifications for PARAØBJ is by use of the XFREQ1=1 statement shown in the control programme. Note that this statement does not contain a decimal. This directs the computer to print out a new solution only when a price level is reached resulting in a new solution. In other words, the output is printed§§out at basic changes. When we use the XFREQ1=1 statement we must also include the move address statement, MVADR (XDOFREQ1, SØL) shown in the control programme. The move address statement moves the address of a control programme statement into a specified storage area, SØL. The statement SØL then calls for the statement to be executed when a demand occurs.

Fig. 15 Control programme for PARAØBJ Cost Ranging of soybean meal in sample carp feed

PROGRAM
TITLE ('EXAMPLE OF A CARP FEED')
INITIALZ
MOVE (XDATA, 'BETAGRO')
MOVE (XPBNAME, 'RINA')
MOVE (XOBJ, 'COST')
MOVE (XRHS, 'RHS1')
CONVERT ('SUMMARY')
SETUP ('RANGE', 'NUTRIENT', 'BOUND', 'PRODUCT')
BCDOUT
PICTURE
TRANCOL
TRANROW
PRIMAL
SOLUTION
RANGE
TITLE ('PARAMETRIC COST RANGING OF SOYMEAL')
MOVE (XOBJ, 'COST2')
MOVE (XCHROW, 'CHROW1')
XPARAM=0
XPARMAX=10
XFREQ1=1
MVADR (XDOFRQ1,SOL)
PARAOBJ
SOL SOLUTION
CONTINUE
EXIT
PEND

Fig. 16 Proof list of job deck for PARAØBJ Cost Ranging of soyabean meal in sample carp feed

NAME

BETAGRO




ROWS

N

COST

N

COST2

N

CHROW1

E

WEIGHT

G

PROTEIN

G

DE

N

GE

G

CALCIUM

G

PHOS

G

METH-CYS

G

LYSINE

COLUMNS


MAIZE

COST

2.25000

COST2

2.25000


MAIZE

WEIGHT

1.00000

PROTEIN

.09000


MAIZE

DE

3.42500

GE

4.22800


MAIZE

CALCIUM

.00020

PHOS

.00250


MAIZE

METH-CYS

.0350

LYSINE

.00250


SOYMEAL

CHROW1

1.00000

COST

6.00000


SOYMEAL

WEIGHT

1.00000

PROTEIN

.44000


SOYMEAL

DE

2.62300

GE

4.56800


SOYMEAL

CALCIUM

.00280

PHOS

.00630


SOYMEAL

METH-CYS

.01260

LYSINE

.02620


FISHMEAL

COST

8.00000

COST2

8.00000


FISHMEAL

WEIGHT

1.00000

PROTEIN

.65700


FISHMEAL

DE

3.46500

GE

4.62200


FISHMEAL

CALCIUM

.03760

PHOS

.02480


FISHMEAL

METH-CYS

.02590

LYSINE

.05020


COTTSEED

COST

4.00000

COST2

4.00000


COTTSEED

WEIGHT

1.00000

PROTEIN

.40600


COTTSEED

DE

2.62300

GE

4.54500


COTTSEED

CALCIUM

.00200

PHOS

.01010


COTTSEED

METH-CYS

.01260

LYSINE

.01560


FEATHER

COST

9.00000

COST2

9.00000


FEATHER

WEIGHT

1.00000

PROTEIN

.85400


FEATHER

DE

2.87100

GE

5.12500


FEATHER

CALCIUM

.00280

PHOS

.00670


FEATHER

METH-CYS

.04320

LYSINE

.01630


RICE-BRAN

COST

2.00000

COST2

2.00000


RICE-BRAN

WEIGHT

1.00000

PROTEIN

.12700


RICE-BRAN

DE

2.41500

GE

4.23200


RICE-BRAN

CALCIUM

.00080

PHOS

.01460


RICE-BRAN

METH-CYS

.00420

LYSINE

.00570


LEAFMEAL

COST

2.50000

COST2

2.50000


LEAFMEAL

WEIGHT

1.00000

PROTEIN

.15760


LEAFMEAL

DE

1.16200

GE

3.50000


LEAFMEAL

CALCIUM

.01500

PHOS

.00640


LEAFMEAL

METH-CYS

.03700

LYSINE

.00600


LIMESTON

COST

.40000

COST2

.40000


LIMESTON

WEIGHT

1.00000

CALCIUM

.38000


DICALPHS

COST

3.00000

COST2

3.00000


DICALPHS

WEIGHT

1.00000

CALCIUM

.26000


DICALPHS

PHOS

.18500




PREMIX

COST

10.00000

COST2

10.00000


PREMIX

WEIGHT

1.00000




COPRA

COST

3.00000

COST2

3.00000


COPRA

WEIGHT

1.00000

PROTEIN

.21200


COPRA

DE

1.0300

GE

4.26800


COPRA

CALCIUM

.00220

PHOS

.00620


COPRA

METH-CYS

.00530

LYSINE

.00540


WHEATBRN

COST

2.50000

COST2

2.50000


WHEATBRN

WEIGHT

1.00000

PROTEIN

.15100


WHEATBRN

DE

5.00000

GE

4.42000


WHEATBRN

CALCIUM

.00110

PHOS

.01270


WHEATBRN

METH-CYS

.00560

LYSINE

.00600


BLOODML

COST

5.00000

COST2

5.00000


BLOODML

WEIGHT

1.00000

PROTEIN

.15300


BLOODML

DE

3.06900

GE

5.22500


BLOODML

CALCIUM

.00270

PHOS

.00260


BLOODML

METH-CYS

.02220

LYSINE

.05990


DISTRGRNS

COST

4.00000

COST2

4.00000


DISTRGRNS

WEIGHT

1.00000

PROTEIN

.27000


DISTRGRNS

DE

2.52200

GE

4.54200


DISTRGRNS

CALCIUM

.00140

PHOS

.00720


DISTRGRNS

METH-CYS

.00770

LYSINE

.00730


BONEMEAL

COST

3.00000

COST2

3.00000


BONEMEAL

WEIGHT

1.00000

PROTEIN

.11200


BONEMEAL

CALCIUM

.39390

PHOS

.12910

RHS


RHS1

WEIGHT

100.00000

PROTEIN

.50000


RHS1

DE

300.00000

CALCIUM

25.00000


RHS1

PHOS

.10000

METH-CYS

.75000


RHS1

LYSINE

1.30000



RANGES


NUTRIENT

CALCIUM

1.00000

PHOS

.50000

BOUNDS


LO PRODUCT

FISHMEAL

8.00000




UP PRODUCT

COTTSEED

10.00000




UP PRODUCT

FEATHER

10.00000




UP PRODUCT

RICEBRAN

20.00000




UP PRODUCT

LEAFMEAL

5.00000




FX PRODUCT

PREMIX

.50000




UP PRODUCT

WHEATBRN

15.00000




UP PRODUCT

BLOODML

10.00000




UP PRODUCT

DISTGRNS

10.00000



ENDATA

The PARAØBJ statement then indicates that this programme is to be called for and the SØL SØLUTION statement calls it out of storage. The SØL statement is punched in columns 6-8, an exception to the column 10 rule used for beginning, the other statements in the control programme. The SØLUTION portion, however, is punched starting in(column 10. We follow this with CØNTINUE, EXIT and PEND.

The computer will first solve the least cost solution without using the test ingredient. It will then initiate the PARAØBJ programme. Since it prints out at each iteration using the XFREQ1=1 demand, one will first get a series of non-optimal solutions, so labeled by the computer. These are to be ignored by the user. An optimal solution will then be reached which provides RØW and CØLUMN values of the solution beginning at a zero cost for the test ingredient. It then selects the upper cost level at which a new solution will be needed and inserts this new cost for the test ingredient, resulting in a new solution. This continues until the maximum value for the test ingredient, specified in XPARMAX, is reached. The user can examine the iteration log, printed with each new output, and gain some information as to why specific changes were made.

It will not be necessary for this example to print out the different diets which result from the PARAØBJ solution for soybean meal. Instead, these will be condensed and the use levels of the ingredient will be examined at different cost values, as shown in Table 5.

Thus, at a cost level of zero, one could theoretically use 49.68 percent soybean meal in the diet and still retain feasibility. This quantity would be used until the price of the ingredient reached a cost of Baht=1.8741/kg, at which the use level would decrease to 38.26 percent. This operation would continue until a price level of Baht=5.1766/kg was reached, at which point the ingredient would completely leave the solution.

These solutions can then be examined with respect to the particular objective of the study. If it were established, for example, that a sufficient quantity of soybean meal was available to provide for a 12 percent use level in the diet, one would require a cost of Baht=3.5428/kg to allow for this use level. A cost of Baht=1.87413/kg or lower will make soybean meal the least expensive energy source as evidenced by the higher than minimum protein levels in the total diet. Other studies may be designed with different goals in mind, and differences in interpretation may be made as adapted to the needs of the researcher.

Table 5 Cost Ranging of Soybean Meal for Carp Feed (PARAØBJ)

Cost, Baht/kg

0.0000

1.8741

1.9685

2.5532

3.4462

3.5428

4.2060

5.1766

Rows

CØST, Baht/100 kg

163.37

184.78

194.68

197.70

263.76

265.50

303.9

320.73

PRØTEIN, kg

30.84

26.60

25.00

25.00

25.00

25.00

25.00

25.00

DE, Meal

300.00

300.00

300.00

300.00

300.00

300.00

300.00

300.00

GE, Meal

439.16

423.97

422.39

429.47

426.00

428.94

429-89

428,02

CALCIUM, kg

0.54

1.50

1.50

0.88

1.48

1.21

1.12

1.31

PHØS, kg

0.70

0.70

0.70

0.70

0.70

0.73

0.77

0.76

METH-CYS, kg

0.97

0.86

0.82

0.82

0.83

0.83

0.84

0.87

LYSINE, kg

1.80

1.52

1.42

1.42

1.55

1.55

1.47

1.41

Diet Composition (%)

Columns

MAIZE

41.45

50.20

51.17

47.20

48.60

46.95

46.29

47.48

SØYMEAL

49.68

38.26

33.23

32.04

12.87

12.38

3.25

-

FISHMEAL

8.00

8.00

8.00

8.00

8.00

8.00

9.00

8.00

CØTTSEED

-

-

-

-

-

-

10.00

10.00

FEATHER

-

-

-

-

-

-

-

1.55

RICE BRAN

-

-

4.08

11.00

17.13

20.00

20.00

20.00

LEAFMEAL

-

-

-

-

-

-

-

-

LIMESTØN

-

2.42

2.57

1.26

2.90

2.17

1.96

2.47

DICALPHS

0.37

0.62

0.45

-

-

-

-

-

PREMIX

0.50

0.50

0.50

0.50

0.50

0.50

0.50

0.50

CØPRA

-

-

-

-

-

-

-

-

WHEATBRN

-

-

-

-

-

-

-

-

BLØØDML

-

-

-

-

10.00

10.00

10.00

10.00

DISTGRNS

-

-

-

-

-

-

-

-

BØNEMEAL

-

-

-

-

-

-

-

-

6.5 Multimode Linear Programming

To save time, two or more parametric problems can be handled by setting up a multimode control programme. The problem models may all be of the same parametric type, or they may be any combination of the four different PLP types described earlier. The only requirements for successfully carrying out a multimode operation are that additional data be furnished in the data deck and that such data be compatible and identifiable with statements describing them in the control programme.

A REVISE mode may be included in any multimode operation. In the event a REVISE mode precedes some other mode, or modes, the new data introduced by the REVISE mode-will automatically replace the corresponding pre-existing data. Any reference statements in subsequent modes to the data deck must be identifiable with the newly revised data.

An example of a multimode control programme appears in Figure 17.

Fig. 17 Example of a multimode control programme

PRØGRAMME
TITLE ('EXAMPLE 0F A CATFISH FEED')
INITIALZ
MØVE (XDATA, 'BETAGRØ')
MØVE (XPBNAME, 'RITA')
MØVE (XØBJ, 'CØST')
MØVE (XRHS, 'RHS1')
CØNVERT ('SUMMARY')
SETUP ('RANGE', 'NUTRIENT', 'BØUND', 'PRØDUCT')
PRIMAL
SØLUTIØN
RANGE
TITLE ('PARARHS' - CHANGING ENERGY REQUIREMENT ØF FEED')
MØVE (XCHCØL, 'RHS2')
XPARAM=0.
XPARMAX=5.
XPARDELT=1.
PARARHS
SØLUTIØN
TITLE ('PARACØL - CHANGING ENERGY VALUES OF MAIZE')
MØVE (XCØLUMN, 'MAIZE')
MØVE (XCHCØL, 'RHS3')
XPARAM=0.
XPARMAX=5.
XPARDELT=1.
PRIMAL
PARACØL
SØLUTIØN
TITLE('REVISED CATFISH FEED')
MØVE(XDATA, 'BETAGRØ2')
MØVE(XØLDNAME, 'RITA')
MØVE(XPBNAME, 'GINA')
REVISE('SUMMARY')
SETUP(RANGE', 'NUTRIENT', 'BØUND', 'PRØDUCT')
PRIMAL
SØLUTIØN
TITLE ('PARAMETRIC CØST RANGING 0F SØYMEAL')
MØVE (XØBJ, 'CØST2')
MØVE (XCHRØW, 'CHRØW2')
XPARAM=0.
XPARMAX=10.
XFREQ1=1
MVADR (XDØFREQ1, SØL)
PARAØBJ
SØLUTIØN
CØNTINUE
EXIT
PEND


Previous Page Top of Page Next Page