Method for predicting stochastic output performance or scaling stochastic inputs
10902089 ยท 2021-01-26
Assignee
- United States Of America As Represented By The Secretary Of The Air Force (Wright-Patterson AFB, OH)
Inventors
Cpc classification
G06N7/01
PHYSICS
G06F17/145
PHYSICS
G06F17/18
PHYSICS
International classification
G06F17/18
PHYSICS
G06F17/14
PHYSICS
G06N7/00
PHYSICS
Abstract
The invention provides a method for generating and analyzing random sample values. The method includes generating a random population array with a distribution and generating an array of random number coefficients by decomposing the random population array distribution using mean and variance. The array of random number coefficients is normalized and the normalized samples and antithetic samples may be mapped to the distribution of the random population array. The mapped, normalized samples and mapped normalized antithetic samples are arranged into a Walsh pattern.
Claims
1. A method for generating and analyzing random sample values, the method comprising: generating a random population array with a distribution; generating an array of random number coefficients by decomposing the random population array distribution using mean and variance; normalizing the array of random number coefficients; mapping normalized samples and antithetic samples to the distribution of the random population array; arranging the mapped, normalized samples and mapped normalized antithetic samples into a Walsh pattern; determining a scaling of a function with known stochastic quantities of mean and variance; utilizing a two-point distribution for each variate, selecting a set of two numbers; forming a plurality of population arrays, forming each population array of the plurality of population arrays for each variate and each combination of multiplication of variates; forming a matrix from the plurality of population arrays; and multiplying the matrix by a vector of coefficients forming a single population array representing an output variable, wherein each point of the two point distribution is located at one standard deviation away from a mean of the distribution.
2. The method of claim 1, wherein the distribution of the random population array is a uniform distribution.
3. The method of claim 2, wherein the uniform distribution of the random population array is generated such that the uniform distribution of the random population array is between 0 and 1.
4. The method of claim 1, wherein the distribution is a Gaussian distribution.
5. The method of claim 1, wherein the generation of the random population array comprises: establishing a set of random numbers from Latin Hypercube Sampling.
6. The method of claim 1, wherein the generating an array of random number coefficients by decomposing the random population array distribution using mean and variance, further comprises: producing data to be used to determine an accuracy of the random population array.
7. The method of claim 6, wherein a sum of elements in an array of random number coefficients equals zero.
8. The method of claim 1, wherein the mapping is a symmetric distribution.
9. The method of claim 1, wherein the arranging into a Walsh pattern enforces orthogonality.
10. An apparatus, comprising: a memory; a processor; and a program code resident in the memory and configured to be executed by the processor for generating and analyzing random sample values, the program code configured to generate a random population array with a distribution, generate an array of random number coefficients by decomposing the random population array distribution using mean and variance, normalize the array of random number coefficients, map normalized samples and antithetic samples to the distribution of the random population array, arrange the mapped, normalized samples and mapped normalized antithetic samples into a Walsh pattern, determine a scaling of a function with known stochastic quantities of mean and variance, utilize a two-point distribution for each variate, selecting a set of two numbers, form a plurality of population arrays, forming each population array of the plurality of population arrays for each variate and each combination of multiplication of variates, form a matrix from the plurality of population arrays, and multiply the matrix by a vector of coefficients forming a single population array representing an output variable, wherein each point of the two point distribution is located at one standard deviation away from a mean of the distribution.
11. The apparatus of claim 10, wherein the distribution of the random population array is a uniform distribution.
12. The apparatus of claim 11, wherein the uniform distribution of the random population array is generated such that the uniform distribution of the random population array is between 0 and 1.
13. The apparatus of claim 10, wherein the distribution is a Gaussian distribution.
14. The apparatus of claim 10, wherein the program code is configured to generate the random population array, the program code further configured to: establish a set of random numbers from Latin Hypercube Sampling.
15. The apparatus of claim 10, wherein the program code is configured to generate an array of random number coefficients by decomposing the random population array distribution using mean and variance, the program code further configured to: produce data to be used to determine an accuracy of the random population array.
16. The apparatus of claim 15, wherein a sum of elements in an array of random number coefficients equals zero.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments of the invention and, together with a general description of the invention given above, and the detailed description given below, serve to explain the invention.
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12) It should be understood that the appended drawings are not necessarily to scale, presenting a somewhat simplified representation of various features illustrative of the basic principles of the invention. The specific design features of the sequence of operations as disclosed herein, including, for example, specific dimensions, orientations, locations, and shapes of various illustrated components, will be determined in part by the particular intended application and use environment. Certain features of the illustrated embodiments have been enlarged or distorted relative to others to facilitate visualization and clear understanding. In particular, thin features may be thickened, for example, for clarity or illustration.
DETAILED DESCRIPTION OF THE INVENTION
(13) Any process, including equations that describe physics-based performance can be modeled stochastically, where the inputs and outputs are characterized by a distribution. The first two statistical moments, mean and variance, provide essential information for quality control. However, developing this information can be time consuming and costly. For empirical processes and equations, experiments must be conducted on a large enough sample size to effectively characterize mean and variance behavior of a single performance function, and multiple types of experiments are required to characterize different types performance behaviors. For analytic processes and equations, computational characterization of mean and variance through Monte Carlo method of simulation may require hundreds of thousands (or even millions) of input samples, which are then used in the process or equation to produce an output distribution that can then be characterized stochastically. Alternatively, surrogate methods are used to characterize a complex process of many variables to minimize error in a statistical sense, but the final output stochastic parameters must still be determined for the purpose of quality control.
(14) The methodology described in conjunction with the embodiments of the invention may be used to accurately characterize the observed output statistical parameters (mean and variance) of any addition/subtraction/multiplication relationship of linearly independent distributed input variables. This methodology can be used to decrease the number of samples necessary for Monte Carlo simulation, and provide a more accurate evaluation by eliminating errors in sample mean, variance, and covariance. This methodology can be used to solve the inverse problem of determining the statistical distributions of the independent input variables necessary to achieve the output result, either by scaling or selection. This methodology can be modified to allow for correlated distributions within certain limits. This methodology may additionally be modified for nonlinear inputs if the statistical characteristics of the nonlinear variables and the covariance are within that variable (i.e. cov(x, x.sup.2)).
(15) A set of N input variables may be given by:
X.sub.1,X.sub.2,X.sub.3, . . . X.sub.N(1)
Where each input variable, X.sub.i, is considered a distributed variable, as shown in
(16) A function, , which is a linear relationship of independent input variables has all possible combinations of linear terms, resulting in a total of 2.sup.N terms where the first term is a constant. For example, three independent input variables results in a total of 8 (2.sup.3=8) terms possible in the linear relationship. This example relationship is given by the scalar equation:
=.sub.1+.sub.2x.sub.1+.sub.3x.sub.2+.sub.4x.sub.1x.sub.2+.sub.5x.sub.3+.sub.6x.sub.1x.sub.3+.sub.7x.sub.2x.sub.3+.sub.8x.sub.1x.sub.2x.sub.3(2)
The mean of the function can be determined analytically by expanding all the terms of expectation of the function:
.sub.=E[]=E[.sub.1+.sub.2x.sub.1+.sub.3x.sub.2+.sub.4x.sub.1x.sub.2+.sub.5x.sub.3+.sub.6x.sub.1x.sub.3+.sub.7x.sub.2x.sub.3+.sub.8x.sub.1x.sub.2x.sub.3]=.sub.1+.sub.2.sub.x.sub.
(17) Since the variables are represented by independent distributions, all of the covariance terms, cov(x.sub.i, x.sub.j) are zero and thus not included in the formulation. The variance of the function can be determined by expanding all the terms of the square of the function and subtracting the square of the mean:
(18)
(19) As stated prior, since the variables are represented by independent distributions, all of the covariance terms, cov(x.sub.i, x.sub.j) are zero and thus not included in the formulation. Although the mean formulation had only 2.sup.N terms, the variance has 2.sup.N! terms prior to cancellation/contraction. The analytic method to compute the full mean and variance of all terms within a linear relationship is prohibitive.
(20) The use of Monte Carlo simulation relieves the need to expand or contract so many terms in the mathematical expectation formulation, but relies on arrays composed on the order of 110.sup.6 random elements for each of the independent terms. The number of random samples is to effectively reduce the errors in the estimation of the mean and variance of a given input variable, and reduce the error in the estimation of the covariance between independent variables. The function must be evaluated a number of times equal to the number of samples (NSamples) in the random variable arrays. Then, the resulting function array will provide the distributed random points for the calculation of the mean and variance of the function:
(21)
In both of the methodologies described above, a large number of expansions and contractions, or a large number of function evaluations, must be performed.
(22) The following method describes the manner that the mean and variance of the function, .sub. and .sub. respectively, can be computed efficiently and accurately from only the mean and standard deviation of each linear input variable, .sub.x.sub.
(23) Walsh-Hadamard transformation consists of the multiplication of a vector by the Walsh-Hadamard matrix. The Walsh-Hadamard matrix is composed for N independent variables by the recursive formula:
(24)
The first order Walsh-Hadamard matrix is therefore:
(25)
The second order Walsh-Hadamard matrix is determined by substituting the first order matrix into the recursive formula:
(26)
For the example of three independent distributed variables, the 3.sup.rd order Walsh-Hadamard matrix is given by:
(27)
(28) Three vectors, {{tilde over (X)}.sub.1}, {{tilde over (X)}.sub.2}, and {{tilde over (X)}.sub.3} are formulated using only the mean and standard deviation for the respective variable. In each vector, the mean, .sub.X.sub.
(29)
Each of these vectors is multiplied by the Walsh-Hadamard matrix, [W], to produce a vector of 2.sup.N (2.sup.3=8 for this example) sample points:
(30)
Computing the statistical mean and variance of each array matches the inputs exactly:
(31)
(32) Computing the statistical mean and variance of the multiplication of any two variable arrays produces the same results as the product distribution, given the covariance of each combination of vectors (cov(X.sub.1, X.sub.2), cov(X.sub.2, X.sub.3), and cov(X.sub.1, X.sub.3)) is zero.
(33)
Computing the statistical mean and variance of the multiplication of three variable arrays produces the correct triple product (given cov(X.sub.1, X.sub.2X.sub.3), cov(X.sub.2, X.sub.1X.sub.3), and cov(X.sub.3, X.sub.1X.sub.2) are zero):
(34)
Incorporating all the linear combinations of the Walsh-Hadamard transformed vectors into a single function will result in an array for which the correct statistical mean and variance may be computed.
(35) The arrays for the Walsh-Hadamard transformed distributed input variables comprise the output function, {F}:
(36)
(37) Alternatively, each individual element of the output function vector can be determined by inputting the corresponding elements of the input vectors, just as a Monte Carlo simulation, but with only 2.sup.N (2.sup.3=8 for this example) samples:
{F.sub.i}=.sub.1+.sub.2{X.sub.1.sub.
The statistical mean and variance of the function array resulting from Walsh-Hadamard transformation is calculated in the standard fashion of Monte Carlo simulation, and exact matches the analytic result:
(38)
The Walsh-Hadamard transformation of the output vector is written:
{F}=[W(2.sup.N)]{{tilde over (F)}}(27)
where the length of the vector F must be length 2.sup.N.
(39) The example relationship is therefore a set of 2.sup.N linearly independent equations, with the function, {F.sub.WH}, and each input variable, {X.sub.i}, as vectors of length 2.sup.N. For the same example of 3 independent input variables, this results in a total of 8 (2.sup.3) equations for the linear relationship. The i.sup.th equation is represented by Eq. (24) above. Because the coefficients can be positive or negative, the relationship illustrates any combination of addition, subtraction, or multiplication. The resulting mean and variance of the function is exact, and is calculated much more efficiently than either expanding the equations for the first and second statistical moments, or performing a Monte Carlo simulation. Further, since the relationship between the resulting Function array and the individual input variables is unique, the process can be reversed to determine the scaling of each distributed input variable. The inverse of the Walsh matrix is simply the Walsh matrix divided by the scalar 2.sup.N. The third order inverse Walsh-Hadamard Matrix is given:
(40)
The inverse Walsh function multiplied by the output function vector produces a set of sample points that map uniquely to the coefficients for a given set of input variable distribution parameters:
(41)
(42) The vector of coefficients, {.sub.i}, results in a unique output function array, for known mean and standard deviation of each independent distributed variable. Therefore, the error between an observed output and a function array composed of input means and variances can be calculated and minimized by scaling the coefficients. Alternatively, for a given set of input means and variances with prescribed coefficients, the composition of the original relationship can be determined in a stochastic sense, in terms of the necessary coefficients that will result in the minimum error between the model and the observed output function.
(43) Using this methodology, the number of samples in each array is 2.sup.N. This means that for 10 independent distributed variables, 2.sup.10=1024 elements are formulated for each array. Compared to a Monte Carlo simulation, this would still provide an improvement in the number of function evaluations. However, for 20 independent distributed variables, 2.sup.20=1,048,576, the number of function evaluations is equivalent to Monte Carlo simulation, with the only benefit being the guaranteed accuracy of the methodology.
(44) The methodology can be nested, such as where individual distributed variables are composed of multiple independent distributed variables. In the problem with three variables above, if the three independent variables were each composed in some manner by three different independent distributed variables, the overall problem would require solving 32.sup.3=24 evaluations, then combining those results into one set of 2.sup.3=8 evaluations for a total of 32 evaluations, rather than 2.sup.9=512 evaluations necessary for the problem to be done simultaneously. Therefore, as long as the problem is scalable in such a way that it can be broken down into sub-problems, very few evaluations will be necessary to determine the mean and variance of the final output, and the curse of dimensionality exhibited for large number of variables in 2.sup.N evaluations can be avoided. In some embodiments, the methodology may utilize Fast Walsh-Hadamard Transformation and Inverse Fast Walsh-Hadamard Transformation to reduce the number of computations.
(45) Due to the fact that the first two statistical moments, mean and standard deviation, are defined, any kind of distributed independent input variables can be combined through addition, subtraction, and multiplication using this method and retrieve an accurate result. If the mean and standard deviation of individual inputs have errors, these errors will propagate in a predictable manner such that the error of the final output can be estimated as well.
(46) Embodiments employing the methodology may also be utilized to modify the Monte Carlo method, accounting for a larger sample size that more accurately captures the mean and variance of a ratio (e.g., u=p/k) while minimizing the individual errors of mean and variance of each independent distributed input, and constraining the covariance between independent distributed inputs to be zero.
(47) In other embodiments, the methodology can be modified to allow for correlated variables (cov(X.sub.i, X.sub.j)0). For this methodology, a matrix of correlations is defined:
(48)
where
cov(X.sub.i,X.sub.j)=.sub.X.sub.
and
.sub.X.sub.
For the example of three correlated distributed input variables, the correlation matrix is:
(49)
(50) Additional embodiments utilizing the methodology may also be modified to allow addition, subtraction, and multiplication of non-linear variables (i.e., x, x.sup.2, x.sup.3, etc.). This requires user inputs for means and variances of higher order variables, and their covariance (i.e., cov(x, x.sup.2), cov(x, x.sup.3)).
(51) The methodology may additionally be modified to approximate the mean and variance of trigonometric and logarithmic output function (i.e. sin(x), e.sup.x) if that output function can be approximated as an expansion of non-linear variables (i.e. e.sup.x1+x+x.sup.2+x.sup.3). This methodology will retain errors due to the approximation.
(52) In some embodiments of the invention, an expectation operator, E[], can be used for stochastic quantification of a distributed variable or a function of distributed variables. Analytically, this becomes laborious and cumbersome. As set out above, Monte Carlo (MC) methods are more efficient for stochastic quantification by developing arrays of pseudo-random or quasi-random populations, or populations through Latin Hypercube Design, and performing a large number of simulations, with accuracy of MC methods being dependent on population size.
(53) Consider the distributed variables, x and y, and a population representing that distributed variable, {circumflex over (x)} and . For a variable, the difference error between analytic stochastic quantities of mean and variance, .sub.x and .sub.x.sup.2 respectively, and the stochastic quantities of the populations, m.sub.{circumflex over (x)} and s.sub.{circumflex over (x)}.sup.2, can be written:
(54)
The difference error in the analytic covariance, cov(x, y), and the covariance of the population array, cov({circumflex over (x)}, ), can be written:
.sub.cov({circumflex over (x)},)=cov({circumflex over (x)},)cov(x,y)(35)
The correlation between independent distributed variables is defined as zero, thus simplifies to:
.sub.cov({circumflex over (x)},)=cov({circumflex over (x)},)(36)
For simple addition/subtraction, the difference error becomes:
(55)
From equation (37), it should be apparent that if the difference errors between analytic and population stochastic quantities of mean, variance, and covariance for the individual variables can be reduced to zero, the difference error in the addition/subtraction for mean and variance shall also be zero.
(56) For multiplication, the difference error becomes:
(57)
From equation (38), it should be apparent that if the difference errors between analytic and population stochastic quantities of mean, variance, and covariance for the individual variables can be reduced to zero, the difference error in the multiplication mean shall also be zero, and the difference error in the multiplication variance shall be:
(58)
(59) The process utilizes three basic steps to manipulate a limited number of random variables: mirror, stretch/shrink, and then repeat in a pattern from the Walsh Function, as depicted by
(60) A few examples utilizing three independent distributed variables have been run to illustrate how the process can increase the accuracy of the stochastic prediction, or for a desired accuracy require much fewer calculations. The total number of random variables required in the process is 2.sup.N of an equivalent number of calculations utilizing pseudo-random, quasi-random, or Latin Hypercube Sampling (LHS). So in this example, the number of random variables required to be generated is of the number generated to fill the population for MC utilizing traditional methods.
(61) In
(62) In
(63) In
F=x.sub.1.sup.2+x.sub.2.sup.2+x.sub.3.sup.2+x.sub.1x.sub.2+x.sub.2x.sub.3+x.sub.1x.sub.3(40)
As seen previously, errors are smaller in the case of the application of the invention methodology, although Randomized Sobol without the invention does perform rather well overall.
(64) As discussed above, one limitation with the embodiments of the invention is related to the number of design variables that can be handled simultaneously, as it creates a population array of length n.Math.2.sup.N, where n is the number of random samples and N is the number of independent stochastic variables. Therefore, for a function of N=3 variables, with a population of n=1000 random samples, the MC simulation would require 1000.Math.2.sup.3=8,000 simulations to produce the output array. The stochastic quantification of the output array would then produce results with errors several magnitudes smaller than compared to pseudo-random, quasi-random, and Latin Hypercube design populations of equivalent size. If the desire is to determine stochastic quantification of the output array within a specified accuracy level, the methodology in the embodiments of the invention may be employed to achieve that level of error with significantly fewer (2 to 4 orders of magnitude) calculations.
(65) Errors may be further reduced, in some embodiments, by using optimization to better select the limited number of samples to better simulate the higher order central moments and enforce zero correlation between all orders of variables. This would also assist in reducing the number of random samples necessary.
(66) As set forth above, embodiments of the invention may be utilized to produce a population array, composed of random numbers, to represent any distribution for the purpose of evaluating a function or simulation, such as through Monte Carlo method as shown in the flow chart 20 in
(67) The embodiments of the invention approve upon the art in
(68) Turning to the flowchart 40 in
(69) The first component in block 44, may, in some embodiments, generate the array of random number coefficients by decomposing the uniform distribution population array with known analytic mean and variance, to produce data that is used to determine the accuracy of the population representing the uniform distribution. The sum of the elements in the array of random number coefficients, r.sub.i, should equal zero for the population mean to accurately represent the input mean. The sum of the square of the elements in the array of random number coefficients, r.sub.i.sup.2, should equal one for the population variance to accurately represent the input variance. In both cases, these can be considered biased mean and variance due to utilizing all of the elements of the population.
(70) In the second component in block 46, the array of random number coefficients is normalized by multiplication by the inverse of the square root of the second non-central moment of the array. This enforces the condition that the sum of the square of the elements of the array of random number coefficients is equal to one. Each of the normalized samples,
(71) In the third component in block 48, mapping the normalized sample and normalized antithetic samples to the desired distribution, the resulting population shall accurately capture the analytic mean and variance of the distributed variable. An example of the mapping for a specified Gaussian distribution is shown in
(72) In the fourth component in block 50, the normalized distributed variable and the normalized antithetic distributed variable are arranged in a pattern according to Walsh, as shown in
(73) The Walsh arrangement can also be used to enforce correlation of variates by applying the pattern to subsets of the arrays. The key is selecting a set of elements in the array to represent shared elements between variates, and patterning shared and unshared subsets according to the Walsh pattern. In this way, shared subsets will produce the higher order contributions to statistical moment generation while the unshared subsets will enforce orthogonality. One benefit of this procedure is that multiple population arrays representing correlated variates can be assembled requiring production of minimal number of base population arrays.
(74) In the fifth component in block 50, the scaling of a function with known stochastic quantities of mean and variance for inputs and outputs, are determined. For this component of the invention, the form of a function for which Monte Carlo simulation is performed is defined. Utilizing the two-point distribution for each variate, a set of two numbers are selected where each point is located at one standard deviation away from the mean of the distribution , a population array is formed for each variate and each combination of multiplication of variates, as well as any higher order power of a variate. These population arrays are formed into a matrix that multiplies a vector of coefficients. Initial values, usually 1's, are selected for each of the coefficients. After multiplying the matrix of population arrays by the vector of coefficients, a single population array representing the output variable is formed. The population stochastic quantities of mean and variance are determined from the output population array. The error between the population mean and variance of the output and the desired or known mean and variance of the output is minimized by changes in the elements of the output population. The corresponding vector of coefficients is then determined by multiplying the output population array by the left pseudo inverse (or inverse in the case of full rank) of the matrix composed of population arrays. This method determines the scaling of coefficients for a known function with known stochastic quantities for mean and variance of the inputs and outputs.
(75)
(76) Computer 60 typically includes at least one processor 62 coupled to a memory 64. Processor 62 may represent one or more processors (e.g. microprocessors), and memory 64 may represent the random access memory (RAM) devices comprising the main storage of computer 60, as well as any supplemental levels of memory, e.g., cache memories, non-volatile or backup memories (e.g. programmable or flash memories), read-only memories, etc. In addition, memory 64 may be considered to include memory storage physically located elsewhere in computer 60, e.g., any cache memory in a processor 62, as well as any storage capacity used as a virtual memory, e.g., as stored on a mass storage device 66 or another computer 68 coupled to computer 60 via a network 70.
(77) Computer 60 also typically receives a number of inputs and outputs for communicating information externally. For interface with a user or operator, computer 60 typically includes one or more user input devices 72 (e.g., a keyboard, a mouse, a trackball, a joystick, a touchpad, a keypad, a stylus, and/or a microphone, among others). Computer 60 may also include a display 74 (e.g., a CRT monitor, an LCD display panel, and/or a speaker, among others). The interface to computer 60 may also be through an external terminal connected directly or remotely to computer 60, or through another computer 68 communicating with computer 60 via a network 70, modem, or other type of communications device.
(78) Computer 60 operates under the control of an operating system 76, and executes or otherwise relies upon various computer software applications, components, programs, objects, modules, data structures, etc. (e.g. application 78). The application 78, for example, may generate random sample values for a Monte Carlo simulation. Computer 60 communicates on the network 70 through a network interface 80.
(79) In general, the routines executed to implement the embodiments of the invention, whether implemented as part of an operating system or a specific application, component, program, object, module or sequence of instructions will be referred to herein as computer program code, or simply program code. The computer program code typically comprises one or more instructions that are resident at various times in various memory and storage devices in a computer, and that, when read and executed by one or more processors in a computer, causes that computer to perform the steps necessary to execute steps or elements embodying the various aspects of the invention. Moreover, while the invention has been described in the context of fully functioning computers and computer systems, those skilled in the art will appreciate that the various embodiments of the invention are capable of being distributed as a program product in a variety of forms, and that the invention applies equally regardless of the particular type of computer readable media used to actually carry out the distribution. Examples of computer readable media include but are not limited to non-transitory physical, recordable type media such as volatile and non-volatile memory devices, floppy and other removable disks, hard disk drives, optical disks (e.g., CD-ROM's, DVD's, etc.), among others; and transmission type media such as digital and analog communication links.
(80) In addition, various program code described may be identified based upon the application or software component within which it is implemented in specific embodiments of the invention. However, it should be appreciated that any particular program nomenclature is merely for convenience, and thus the invention should not be limited to use solely in any specific application identified and/or implied by such nomenclature. Furthermore, given the typically endless number of manners in which computer programs may be organized into apps, routines, procedures, methods, modules, objects, and the like, as well as the various manners in which program functionality may be allocated among various software layers that are resident within a typical computer (e.g., operating systems, libraries, APIs, applications, applets, etc.), it should be appreciated that the invention is not limited to the specific organization and allocation of program functionality described herein.
(81) Those skilled in the art will recognize that the exemplary environment illustrated in
(82) While the present invention has been illustrated by a description of one or more embodiments thereof and while these embodiments have been described in considerable detail, they are not intended to restrict or in any way limit the scope of the appended claims to such detail. Additional advantages and modifications will readily appear to those skilled in the art. The invention in its broader aspects is therefore not limited to the specific details, representative apparatus and method, and illustrative examples shown and described. Accordingly, departures may be made from such details without departing from the scope of the general inventive concept.