U.S. patent number 3,626,377 [Application Number 05/062,929] was granted by the patent office on 1971-12-07 for matrix generator for use in solving feed formulation problems.
This patent grant is currently assigned to Arizona Feeds. Invention is credited to John B. Markley.
| United States Patent |
3,626,377 |
| Markley |
December 7, 1971 |
MATRIX GENERATOR FOR USE IN SOLVING FEED FORMULATION PROBLEMS
Abstract
A system is disclosed for generating a matrix of data which
relates to the formulation of animal feeds. The matrix is developed
in a matrix register which is a logic array of component storage
locations or registers for holding an organization of data relating
to nutrients and ingredients. The specification of nutrients and
ingredients for a desired feed is registered as two columns in the
matrix register, from which the system operates to complete the
entire matrix with information from an ingredient storage means
which contains nutrient information on various specific
ingredients.
|
Inventors: |
Markley; John B. (Tucson,
AZ) |
|
Assignee: |
Arizona Feeds (N/A)
|
| Family
ID: |
22045783 |
| Appl.
No.: |
05/062,929 |
| Filed: |
August 11, 1970 |
| Current U.S.
Class: |
705/3 |
| Current CPC
Class: |
G16H
20/60 (20180101) |
| Current International
Class: |
G06F
19/00 (20060101); G06f 015/06 (); G06f
015/36 () |
| Field of
Search: |
;340/172.5
;235/150.1,151.13,151.2,151.35,156,193,184,185,92CT,92CA,92GC,92MT,92CP |
References Cited
[Referenced By]
U.S. Patent Documents
Primary Examiner: Shaw; Gareth D.
Assistant Examiner: Chapuran; R. F.
Claims
What is claimed is:
1. A system for providing nutrient and ingredient data in a matrix
format, for a linear-programming computer, to accomplish an
objective feed formula comprising:
a matrix register means including a plurality of component
registers with row and column significance;
means for registering signal-represented formula requirements,
including all specific nutrients and all specific ingredients, in
said matrix register as one column therein;
means for counting said ingredients and said nutrients registered
in said matrix register, to specify the columns and rows of said
matrix;
storage means for registering a plurality of ingredients that may
be specified, along with the component nutrients thereof;
means for selectively registering, as other columns of said matrix,
in said matrix register means, specified nutrients of said
ingredients along with indications of said ingredients; and
means for reading said matrix out of said matrix register means
with column and row significance.
2. A system according to claim 1 wherein said means for counting
includes a first counter for counting each of said specific
ingredients values and said specific nutrients values.
3. A system according to claim 2 further including a second counter
for counting only one of said values.
4. A system according to claim 1 wherein said means for selectively
registering includes means for comparing signal-represented
component nutrients of an ingredient with a specific
signal-represented nutrient to register values thereof upon the
occurrence of a coincidence.
5. A system according to claim 4, wherein said means for
selectively registering further includes means for registering a
signal-represented nutrient during an interval of comparison with
nutrient components of each specific signal-represented ingredient
to register values in said matrix register means.
6. A system according to claim 5 wherein said means for selectively
registering further includes means for designating said individual
component registers in said matrix register means in a
predetermined order along each row in sequence.
7. A system according to claim 1, including a timing control means
and further including means connected to said means for counting to
control said timing control means to sequence the operation of said
means for selectively registering.
8. A system according to claim 7 wherein said means for counting
includes a first counter for counting each of said specific
ingredients values and said specific nutrients values.
9. A system according to claim 8 further including a second counter
for counting only one of said values.
10. A system according to claim 9 wherein said means for
selectively registering includes means for comparing
signal-represented component nutrients of an ingredient with a
specific signal-represented nutrient to register values thereof
upon the occurrence of a coincidence.
Description
BACKGROUND AND SUMMARY OF THE INVENTION
Linear programming affords an important tool for economic and
business planning. The term refers to the methods used in
formulating and solving a specific class of problems whereby it is
desired to attain a maximum or a minimum quantity of some objective
function, as cost, utilization, speed or the like. Generally, in
solving these problems, a set of related linear equations are
developed describing a physical situation and the attendant
limitations that are involved. The equations are then solved, by
various techniques, to provide the desired criteria for the
objective function. In spite of the similarity of terms, linear
programming has little connection with computer programming;
however, linear programming problems may be programmed for solution
on digital computers. For example, the so-called "simplex method"
of solving linear-program problems might be accomplished by a
digital computer.
In general, preliminary to solving a linear-programming problem, it
is necessary to develop an array or matrix of data from which the
linear equations are mechanically formulated. Conventionally, such
matrices have been developed manually, requiring considerable time
and effort and involving possibilities for error. For example, a
matrix for use in the solution of linear-programming problems
related to animal feed might involve an array of ingredients
defining columns, with their component nutrients in orderly
rows.
Conventionally, a nutritionist specifies the particular nutrients
(as by percentage) for a desired animal feed, e.g., beef.
Traditionally a variety of ingredients are also specified (some
with limitations) for possible use in the feed. From such a
specification, a matrix is developed for use in solving the
linear-programming problem to attain the desired feed (specified
nutrients) at the lowest practical cost. In general, the system
hereof provides an effective and economical system for generating
the requisite ingredient-nutrient matrix. The matrix is developed
from one column containing the specifications in a matrix register,
which column controls the operational steps of the entire
system.
In the drawings which constitute a part of this specification, an
exemplary embodiment demonstrating various objectives and features
hereof is set forth, specifically:
FIG. 1 is a diagram illustrating a portion of a matrix as may be
generated by the system hereof;
FIG. 2 is a block diagram illustrative of the general operation of
the system hereof;
FIG. 3 is a diagram of a signal-represented word format utilized in
the system hereof; and
FIG. 4 is a block diagram of a system constructed in accordance
with the present invention.
DESCRIPTION OF THE ILLUSTRATIVE EMBODIMENT
As required, a detailed illustrative embodiment of the invention is
disclosed herein. The embodiment merely exemplifies the invention
which may, of course, be constructed in various other forms, some
of which may be radically different from the disclosed illustrative
embodiment. However, specific structural and functional details
disclosed herein are merely representative and in that regard
provide a basis for the claims herein which define the scope of the
present invention.
In the growth and development of animals for human consumption,
feeds are exceedingly important in relation to economy and proper
development of the animal. The ingredients of a feed may constitute
various feed components, providing the nutritional requirements are
satisfied. That is, the nutritional requirements of a desired feed
can be provided from a wide variety of possible formulations. The
determination of the presently most economical ingredients for the
desired feed may be the objective of a linear-programming problem;
and as an interim matter, the generation of a linear-programming
matrix is ordinarily necessary.
In the course of preparing feed for cattle, for example, it has
been common practice in the past for a nutritionist to specify the
nutritional values of a desired feed, as well as to place
limitations (minimums, maximums or both) on certain component
ingredients that might be used in formulating the feed. As
indicated above, many formulas could satisfy the requirements of
such a specification, using substantially different ingredients.
Thus, a linear-programming problem is presented. That is,
linear-programming techniques can be used to select the combination
of ingredients which will most economically (in accordance with
current prices) fulfill the nutritional specifications; and as a
result, substantial savings will result in formulating the
feed.
It has been previously proposed to solve such linear-programming
problems by the use of digital computers and such techniques are
well known in the prior art. However, in general, preliminarily,
the data must be formed into a matrix that is provided to the
computer. For example, assuming a somewhat simplified situation, a
data matrix may be provided by the system hereof as set forth in
FIG. 1.
Of course, the matrix may take various forms; however, it is
generally an array of defined columns and rows. For example, rows
specify the nutrients 1, 2 and so on for each of a plurality of
potential ingredients A, B, C, D and so on, arranged in columns. In
the simplified matrix shown in FIG. 1, the potential ingredients
for the feed might be: (A) molasses, (B) barley, (C) fat, and (D)
corn. The specified nutrients for the feed as present in each of
the potential ingredients are then set forth in columns, e.g., (1)
protein, (2) calcium, etc. The specification of the feed is set
forth in the right-hand column under the heading "Formula
Requirements." Considering FIG. 1 in further detail, the right-hand
column associated with specific nutrients and ingredients specifies
the formula. Specifically, as indicated the exemplary formulation
is to have a minimum of 12 percent (1) protein, a minimum of 4
percent (2) calcium and so on.
As indicated above, having specified a feed, the next step involves
generating the matrix (as explained) including the nutrient
percentages set forth in the section M as indicated, for each of
the potential ingredients. That operation has conventionally been
performed manually, resulting in considerable effort as well as a
substantial potential danger for error. In general, the system
hereof affords a simplified, expeditious and economical means for
generating the matrix M simply on the basis of the specification of
the formulation's requirements. It is to be noted as a generality,
that in accordance with the system hereof, in stating the feed
requirements (specification) it is necessary to provide a minimum
and/or a maximum requirement for each potential ingredient. That
is, if the solution to the problem is to consider an ingredient,
the ingredient (along with a minimum, a maximum or both therefor)
must be provided in the right-hand column as registered in the
matrix register of the system hereof.
Referring now to FIG. 2, the system hereof is depicted in
conjunction with a total structure. Specifically, the system hereof
is particularly directed to a matrix generator as represented by a
block 10 which functions in conjunction with, and incorporates, an
input 12 (for formula requirements) and a file 14 (for ingredient
characteristics). That is, the matrix generator 10 receives the
formulation requirements in a particular format from the input 12,
then functions in cooperation with the ingredient characteristic
file 14 to provide an output which may be directly supplied to a
linear-program system 16 to solve the linear-program problem and
provide the solution at an output unit 18.
As indicated above, previous linear-programming systems are well
known in the prior art for use as the system 16 along with a
satisfactory output 18. The portion of the system comprising the
matrix generator 10 along with the input 12 and the ingredient
characteristic file 14, are shown in considerable detail in FIG. 4
and will be considered below in relation thereto.
The solution to the problem, which solution is provided at the
output 18 (FIG. 2), is in the form of an actual feed formulation.
That is, the matrix, as illustrated in FIG. 1, would be utilized to
develop the selected economical, practical formula. It is to be
noted that although only a few representative ingredients are
illustrated, the ingredients in a formula may well extend into 10's
of numbers.
The placement of data into the matrix generator 10 requires the
formulation of the data into a particular signal-represented word
format. That word format is illustrated in FIG. 3 and will now be
considered in detail. Of course, it is to be understood that the
format utilized as well as the specific structural details hereof
have a wide range of equivalent alternatives.
The data input word 5 supplied to the system hereof define the
nutrients and ingredients which are registered at the right-hand
side of the matrix and which specify: (1) the nutritional
requirements of the formulation, and (2) the potential ingredients
to be considered for use in the formulation (with limitations). In
addition, the computer involved with solving the linear-programming
problem will receive price information; however, such information
is not a part of the matrix. Rather, the price information is
simply provided to the linear-programming computer to specify the
price for each of the potential ingredients in the formulation.
The input word for the system hereof as depicted in FIG. 3 consists
of 15 binary bits. The first bit identifies the representation of
the word as either a nutrient or an ingredient, i.e., a binary
"one" indicates an ingredient while a binary "zero" indicates a
nutrient.
The next six bits of the word identify a specific nutrient or
ingredient in accordance with a preestablished code. In effect,
these bits not only identify the nutrients and ingredients but
additionally, the bits comprise an address for use in the system of
FIG. 4 to obtain nutrient data for specific ingredients as
described in detail below.
The next bit eight of the word indicates whether the specified
limitation is a "maximum" or a "minimum." Specifically, if the
eighth bit is a "one" the nutrient or ingredient is specified as a
minimum, while on the contrary, a "zero" binary bit indicates a
maximum.
The last seven bits of the binary word specify the threshold value
as a percentage. That is, these bits are coded to represent the
threshold maximum or minimum as the case may be, straight binary
numbers or any variation thereof.
The binary word as considered above with reference to FIG. 3 is
developed in an input register 20 (upper right) as shown in FIG. 4.
The input register 20 may receive the binary word by means of a
keyboard (not shown) or from an external source as indicated by the
input line 22; however, the specific source and formation of the
signal-represented input code word is ancillary to the present
invention.
The input register 20 receives code words as illustrated in FIG. 3,
the last 14 bits of which are registered in the two right-hand
columns 24 and 25 of a matrix register 26. The register 26 is
fragmentarily shown as its size may vary widely depending upon the
capacity of the system. However, in general the register must
accommodate an array or matrix of similar, seven-bit numbers in
rows equal to the total number of specified nutrients and
ingredients, and columns sufficient to accommodate all of the
potential ingredients, plus two (formula specifications). The
storage elements in the matrix register 26 comprise individual
registers which, as indicated, may be of seven binary bits
capacity, all of which serve to register percentages, excepting
those in the two columns 24 and 25 which register the codes for the
nutrients and ingredients, threshhold percentages and the
"maximum-miminmum" bit.
As a preliminary consideration it is to be understood that, upon
registration of the specified nutrients in the upper portion of the
right side of the matrix register 26 and the specified ingredients
below them, (in the lower portion of the matrix register 26) those
registers control the operation of the system to develop percentage
values in all of the other seven-bit component registers of the
matrix register 26, to complete the data matrix as desired. When
the matrix is complete, the left-hand column of the matrix register
26 contains the percentage of nutrients present in the ingredient
14. Specifically, for example, assuming that the ingredient 14 is
"rolled barley," the contents of the registers in the left-hand
column would indicate the presence of the nutrients N1, N2, N3 and
N4 in percentages. Pursuing the example further, if N1 represents
"protein," N2 is "fat," N3 is "fiber," and N4 is "calcium," the
percentages thereof present in rolled barley would appear in the
component registers 28, 29, 30, and 31, for example, as percentage
values 0.11; 0.02; 0.06; and 0.00.
In the assumed example, the lower portion of the matrix register 26
on completion of the matrix carries "zeros" in the rows designated
for I1, I2, and I3 and an indication of 100 percent in the row
designated by the ingredient I4. That is, as I4 represents "rolled
barley" in the assumed example, and as "rolled barley" is 100
percent "rolled barley," the component register 32 carries a value
of 100 percent.
The details of filling the component registers comprising the
matrix register 26 are set forth below; however, the control
operations by the formulation specifications (registered in the
right-hand columns of the matrix register 26) is to be appreciated
as an important aspect hereof. It is also noteworthy at this time,
that the data is developed in the system of FIG. 4, element by
element moving along one row at a time from column to column.
Access to and from the specific component registers (seven bits) in
the matrix register 26 is provided through address units. The
somewhat distinct two columns 24 and 25 of component registers at
the right side (as depicted) of the matrix register 26 invariably
receive the specifications of the desired formulation and are
separately accessed by a row address unit 34. During "unit"
operations the bits 2- 15 of the input words are received in these
component registers. Specifically the bits 9- 15 pass into the
rightmost column 25 while bits two to eight move into the next
column to the left, column 24, as represented in FIG. 4.
The remainder of the component registers in the matrix register 26
are separately and individually accessed by a column address unit
36 and a row address unit 38 functioning in combination.
Specifically, the contents of the column address unit 36 designates
the column into which data signals representative of a "percentage"
are registered, while the row address unit 38 designates the row.
Of course, the physical form of the matrix register 26 as well as
the address units 34, 36, and 38, may vary considerably.
In one form, the matrix register 26 may comprise a logical array of
magnetic core storage while the address units 34, 36, and 38,
comprise address registers therefor. As schematically depicted in
FIG. 4, the row address unit 34 is indicated by a dashed line 40 to
control a contact 42 for addressing the right-hand component
registers (columns 24 and 25). Somewhat similarly, a contact 44 is
indicated to be controlled by the units 36 and 38 by means of a
dashed line 46 to address the other component registers. Although
this form of representation is deemed to be somewhat simpler of
presentation, it is to be understood that the electronic analogy
thereof (as well known in the prior art) would be utilized in
conjunction with a magnetic core storage system.
The operation of the system of FIG. 4 involves several distinct
phases which are manifest by timing signals that are provided from
a timing unit 50. The timing signals provided by the unit 50 are
summarized by the following chart:
Timing Signal Initiated By Function
__________________________________________________________________________
t1: Manually. Load two component registers of right-hand column of
matrix register with formulation specifications. t2: Manually or on
Place a nutrient N in completion of a operative location. phase t4
and a row. t3: Passage of a set place an ingredient I in period of
t2 or an address location to obtain a completion of signal
representations of a phase t4. the components thereof. t4: Passage
of a set Compare particular nutrient period of t3. N with
components of a specified ingredient. t5: Completion of the
matrix.
In addition to the timing signals set forth above, the following
signals are also developed within the system of FIG. 4.
signal Initiated By
__________________________________________________________________________
S1: A binary signal indicating a switch closure. S2: A binary
signal indicating a switch closure. H: A binary signal indicating a
"hit" in comparing nutrient N with component values of an
ingredient or conclusion of a comparative test. NI': A binary
signal indicating that no ingredients remain untested. NN': A
binary signal indicating that no nutrients or ingredients remain
untested.
The timing signals t1 through t5 may be specified logically in view
of the above as follows:
t1=S1
t2=S2+(t4.sup.. H.sup.. NI')
t3=(t2.sup. . time)=(t4.sup.. H.sup.. NI')
t4=t3.sup. . time
t5=t4.sup.. H.sup.. NI'.sup.. NN'
In view of the above preliminary description of the system of FIG.
4, a complete understanding thereof may now best be accomplished by
assuming certain initial conditions and objectives and explaining
the operation of the system to accommodate such objectives while
introducing other structural elements of the system as the
explanation proceeds. Accordingly, assume that the nutrients of a
particular desired formulation have been identified as nutrients N1
through Nn of which nutrients N1 through N4 will be here considered
as exemplary. Additionally, assume that potential ingredients for a
desired formulation have been identified as ingredients I1 through
In (I1 through I4 here). As indicated, the nutrients N1 through N4
and the ingredients I1 through I4 will be considered with reference
to the system of FIG. 4; however, as suggested, the system would
normally accommodate substantially greater numbers.
The initial phase of operation involves loading the nutrients and
ingredients into the component registers at the right side in
columns 24 and 25 of the matrix register 26. This operation is
performed manually (or may be under automatic control) during a
timing interval defined by the high value of binary timing signal
t1 provided from the timing unit 50. The interval of the signal t 1
is initiated by the closure of a switch S1 (lower left) to provide
a high signal to a specific input of the timing unit 50.
Thereafter, the timing unit 50 continues to provide the signal t1
high until a switch S2 is closed (manually) thereby initiating the
timing interval indicated by the signal t2.
During the interval of signal t1, binary code words as illustrated
in FIG. 3 are provided in the input register 20 for transfer in
sequence into the two columns 24 and 25 at the right-hand side of
the matrix register 26. The code words occupy the two right columns
24 and 25 of component registers in the matrix register 26 and are
transferred into such component registers during a plurality of
individual operations.
Assuming a code word in the input register 20 identifying a
nutrient N1 (and a minimum percentage thereof) a switch 52 (upper
left) is closed to provide a qualifying signal to an AND-gate 54 to
enable the contents of the register 20 to pass to the contact 42.
During such an interval, the row address unit 34 receives an
address number "one" through an AND-gate 56 from a
nutrient-ingredient counter 58 which was set to "one" in the prior
operation. That is, as described in detail below, the counter 58
tallies the code words registered in the matrix register 26.
The gate 56 (supplying the current number registered in the counter
58 to the address unit 34) is qualified by the timing signal t1.
Consequently, as the initial word (nutrient N1) is under
consideration, and the counter 58 is set at "one," and the address
unit 34 is controlled to register the signal-represented word N1
(14 bits) received through the contact 42 in the last two columns
24 and 25 of row "one" (uppermost) of the matrix register 26.
The nutrient-ingredient counter 58, as indicated, is cleared by the
operation-complete signal t5 and is stepped with each closure of
the switch 52 through one of the AND-gates 60 or 62 and a
connection gate 64. The gate 60 is qualified each time a "nutrient"
word is entered in the system while the gate 62 is qualified each
time an "ingredient" word is entered in the system. Specifically,
the gate 60 is qualified by the negation of the first bit of the
code word in register 20 while the register 62 is qualified by the
true bit. These gates are additionally qualified by the timing
signal t1 and the signal resulting from the closure of the switch
52. The gate 62 also drives an ingredient counter 68. Thus,
ingredients and nutrients are distinguished. The counters, 58 and
68, may comprise step counters as well known in the prior art.
Thus, as the counter 58 advances and additional code words are
provided, they are registered in the last two columns 24 and 25 in
advancing rows (top to bottom) of the register 26.
Recapitulating, individual code words representative of individual
ingredient specifications are initially registered in the input
register 20 then transferred, in row order, to the component
registers in the last two columns 24 and 25 of the matrix register
26. Concurrently, the individual nutrients are tallied in the step
counters 58 and 68.
Subsequent to entering the nutrient-specification code words, the
ingredient-specification code words are similarly entered. That is,
code words in accordance with FIG. 2, (indicative of potential
ingredients for a formulation) are entered in the input register 20
and transferred in sequence to the rightmost columns 24 and 25 in
the matrix register 26. Specifically, the percentage limitation of
the ingredient's presence is specified in the second-to-right
column, and the identification of the ingredient (along with an
indication of minimum or maximum) is registered in the extreme
right column. It is emphasized that each potential ingredient must
be listed in accordance with the system hereof. Again, the row
address unit 34 is incrementally driven by the nutrient-ingredient
counter 58 to insert the code words in progressively advanced rows
of the matrix register 26, and ingredients are counted in the
counter 68.
Upon the complete registration of all the signal-represented
nutrient and ingredient specifications, the switch S2 is closed
(manually) advancing the timing unit 50 to provide the timing
signal t2 in a high state. During the first interval, while the
signal t2 is high, the first nutrient N1 (six bits) is transferred
into a compare register 72 (lower right). Specifically, the row
address unit 34 (now instructed to "read" by signal t2) receives
signal indications for the numeral "one" (indicating the first row)
through an AND-gate 74 from a step register 76 (upper right). The
step register 76 is cleared by the signal t1 and is stepped by the
signal t2. Consequently, initially, the contents of the register is
"one" which is supplied through the AND-gate 74 and the connection
gate 80 to the row address unit 34.
Previously, the row address unit received the signal t1 to command
"write" operation; however, during the instant interval, the unit
34 receives the signal t2 to command "read" operations.
Accordingly, the first nutrient N1 is provided from the matrix
register 26 through the contact 42 and an AND-gate 71 to the
comparison register 72. This operation requires a specific interval
of time, after which the timing unit 50 automatically halts the
provision of signal t2 high and initiates the high interval of
binary signal t3.
During the interval when the signal t3 is high, the
signal-represented ingredient I4 (six bits) is transferred from the
matrix register 26 through the contact 42 and an AND-gate 84 to the
address register 86 in an ingredient characteristic storage unit
88. Specifically, during the interval t3, the row address unit 34
(in a "read" mode) is driven through a subtractor 85, and AND-gate
90 from the nutrient-ingredient counter 58, which specifies the
lowest (as shown) occupied row in the matrix register 26. The
subtractor 85 also receives the contents of a register 102 which
was cleared to "zero" at t1 of the previous operation.
Accordingly, the signal-represented ingredient I4 passes through
the contact 42 and the AND-gate 84 to be received in the address
register 86. That operation requires a consistent time interval
after which the timing unit 50 provides the signal t3 low and the
signal t4 high.
During the interval defined by the timing signal t4, the components
of the ingredient identified (currently I4) are provided from an
address-specified location in the storage unit 88 to a comparator
92 for comparison with the nutrient N1 which is held in the
register 72. Specifically, for example, if the nutrient under
consideration is "protein," then the code representation for
"protein" is registered in the six-bit register 72. During the
interval of the signal t4 the storage unit 86 is driven by the
signal t4 to provide a series of code words including the
ingredient (with a distinction bit) followed by its nutrient
components; for example, the code-represented data might be as
follows: ##SPC1##
Specifically each word is represented by a seven-bit code (seventh
bit "one") as is the percentage of its presence. That is, the
ingredient and nutrient words include six binary bits plus an
identifier bit in the most significant bit location ("1" =
ingredient, "0" = nutrient) while the percentage codes comprise
seven bits as illustrated above.
Upon the occurrence of the comparator 92 detecting a coincidence
between the six bits of a nutrient code from the unit 88 and the
nutrient code in the register 72, a high signal H appears in the
conductor 94 for an interval of seven clock pulses of the storage
unit 88. During that time the signal-represented percentage value
of the nutrient is supplied from the storage unit 88 through an
AND-gate 96 to be recorded in the first row, first column of the
matrix register 26 as specified by the column address unit 36 and
the row address unit 38.
The characteristic storage unit 88 may comprise any of a variety of
units as well known in the art, including a disk storage unit
substantially as shown and described in U.S. Pat. No. 3,503,060
(Direct Access Magnetic Disk Storage Device). Accordingly, the unit
88 has a specific operating time in accordance with its inherent
cycle. Thus, during the interval as required to accommodate the
signal-represented percentage value (seven bits) the AND-gate 96 is
qualified to transfer such percentage value into the component
register of the matrix register 26 as indicated by the column
address unit 36 and the row address unit 38.
The column address unit 36 is controlled by an ingredient step
register 102 which is cleared to "zero" by the timing signal t1 and
advanced to "one" by the signal H. Accordingly, during the initial
phase of operation, the step register 102 passes a numerical
representation of "one" to the unit 36 to specify the first column
of the matrix register 26.
The row address unit 38 is controlled by the step register 76
(upper right) which is initially cleared (by signal t1) then
advanced to "one" by the signal t2, to specify the first row in the
matrix register 26. Accordingly, the initial entry is in column
one, row one.
If the comparator 92 detects a similarity, the signal H also is
supplied to a delay circuit 104, the output of which is applied to
the timing unit 50 to terminate the interval t4 and reestablish the
interval t3. The delay circuit 104 also receives an input from a
detector 106 as an alternate source of the signal H, which detects
an "end" code provided from the storage unit 88 to indicate that
all the components of a specific ingredient have been supplied from
the unit 88. Thus, either upon the occurrence of a favorable
comparison (hit) or a completion of the file with no comparison,
the signal H is supplied through the delay circuit 104 to terminate
the interval of timing signal t4 and, at the present stage,
reestablish the interval t3.
Recapitulating, during the first interval defined by the timing
signal t4, any percentage component of the nutrient N1 that is
present in the ingredient I4 is entered at the location of column
one and row one in the matrix register 26. If, for example, the
ingredient I4 is "rolled barley," and the nutrient N1 is "protein,"
a percentage of 11 percent will be entered. Alternatively, if the
nutrient N1 were "fat," no value would be entered in the identified
component register 28, because "rolled barley" contains essentially
no "fat" and no coincidence would occur.
During the second interval of the timing signal t3, the next
ingredient I3 in reverse sequence is transferred into the address
register 86. That is, as indicated, after the first operation is
complete, the timing unit terminates the signal t4 to again provide
the signal t3 at a high level. However, during the interval of the
timing signal t4, the step register 102 was advanced to a count of
"one" which number is now supplied to a subtractor 85 along with
the signal-represented contents of the nutrient-ingredient counter
58. As a consequence, the output of the subtractor 116 is the total
list of nutrients and ingredients, less "one" which provides a
number designating the row containing the ingredient I3 in the
matrix register 26. Specifically, during the interval t3, the
output from the subtractor 116 is supplied through the AND-gate 90
to the row address unit 34 which in turn controls the output from
the matrix register 26 to provide a signal-represented ingredient
I3 through the contact 42 and the AND-gate 84 to be received in the
address register 86.
This transfer occurs during the preestablished interval of t3,
after which the time signal t3 is automatically terminated to
initiate the interval of the timing signal t4. During the interval
of t4, another comparison is performed in search of components of
the nutrient N1 in the ingredient I3 as addressed by the
ingredient-representative signal of ingredient I3.
As previously explained, a coincidence results in a registered
value while the failure of a coincidence to occur simply terminates
the interval of the timing signal t4. In the event that a
coincidence is detected, the percentage detected is registered in
the component register located in the first row, second column of
the matrix register 26. That component register is specified
because the ingredient register 102 is advanced by the signal H to
provide the number "two" to the column address unit 36 while the
nutrient step register 76 continues to provide the number "one" to
the row address unit 38.
In this manner, the system proceeds to develop a series of
percentage values representative of the presence of the nutrient N1
in the various ingredients I4 through I1 registering such
percentage values across the top row of component registers in the
matrix register 26. As the operation progresses, it may be seen
that a matrix is developed in the matrix register 26 specifying the
nutrient components of the various ingredients. Specifically, the
format of the developed matrix is illustrated in the following
chart:
I4 I3 I2 I1 30 10 05 04 N1 60 05 00 02 N2 00 09 42 12 N3 01 41 16
01 N4 00 00 00 100 I1 00 00 100 00 I2 00 100 00 00 I3 100 00 00 00
I4
when the first row (or following rows) of the matrix is completed,
the contents of the ingredient register 102 is stepped to equal the
contents of the ingredient counter 68 (e.g., a count of four). Upon
such an occurrence, a signal NI' is formed by the comparator 118
indicating that each of the ingredients I4 through I1 have been
considered and the first row of the matrix is complete. The signal
NI' from the comparator 118 is applied to the timing unit 50 to
terminate the interval of the timing signal t4 and again establish
the timing interval of signal t2. As indicated above, during the
interval of t2, a fresh nutrient is placed in the nutrient
comparison register 72. On the occurrence of the signal t2, the
step register 76 (upper right) is advanced to register the number
"two" which number is placed in the row address unit 34 through the
AND-gate 74 during the interval of the timing signal t2. Therefore,
the row address unit 34 then specifies the nutrient N2 (located in
the second column) in the matrix register 26 to be transferred
through the contact 42 and the AND-gate 71 to the nutrient
comparison register 72.
Concurrently with the above, the ingredient register 102 is reset
by the timing signal t2 to initiate another cyclic scanning through
the ingredients I4 through I1 so as to register the component
nutrients of these ingredients in the second row of the matrix
register 26.
As the operation of the system continues, the matrix is developed
row by row in the matrix register 26 and in time the ingredient I1
is again placed in the compare register 72. Thus, in accordance
herewith, the entire matrix is generated in the component registers
defined in columns and rows, each identify ingredients.
Referring to the above chart and to FIG. 1, it is to be noted that
the component registers in the lower portion of the matrix contain
values of either 100 percent or 0. Specifically, for example, if an
ingredient is "rolled barley," it constitutes 100 percent "rolled
barley." On the contrary, if an ingredient is "cane molasses," it
constitutes absolutely no "rolled barley." The lower portion of the
matrix is developed just as the upper portion of the matrix is
developed, by a sensing of coincidence between the content of the
register 72 and the codes provided from the characteristics storage
unit 88; however, the ingredients are identified as such by a
seventh bit that is provided to the comparator 92 from a comparator
123 which senses that the nutrients N1 through N4 rows have been
completed by reason of the contents of the register 76 coinciding
to that of the counter 58 less that of the counter 68. That is, the
six-bit codes from component registers in column 25 that represent
ingredients, are supplemented by an additional seventh bit from the
comparator 123 to identify the code as an ingredient. Consequently,
when the addressed section of the storage unit 88 provides the
seven-bit code word for that ingredient a hit is detected producing
the signal H high and entering the value of 100 in the appropriate
component register.
When the last row of the matrix register 26 is complete, the
contents of the step register 76 is stepped to exceed the contents
of the nutrient-ingredient counter 58. That condition is detected
by a nutrient comparator 121 which initiates the signal NN' to
provide the signal t5 from the timing unit 50. This signal
indicates the completion of the matrix in the matrix register 26
and qualifies an AND-gate 122 (comprising a parallel gang gate) to
supply the entire contents in positional significance, from the
matrix register 24 for processing by a linear-program computer.
Thus, it may be seen that the system hereof operates effectively to
develop a nutrient-ingredient matrix for use by a
linear-programming computer, essentially entirely under the control
of a feed-formulation specification as provided in the right-hand
column of the matrix register. The system is economical and
relatively simple in operation.
Of course, the system hereof may be variously utilized to formulate
ingredient-nutrient matrices and various alternative structures may
be employed. Accordingly, the scope hereof is to be determined in
accordance with the following claims.
* * * * *