From: Bil Kleb Date: 2007-05-07T20:15:05+09:00 Subject: Re: Beyond YAML? (scaling) Jeremy Hinegardner wrote: > So the DSL generates a 'large' number of cases listing the input > parameters and their associated values. The list of input parameters > static across all cases, or a set of cases? The input parameter names are static across all cases, but for each case, the parameter value will vary randomly according to the tolerance DSL, e.g., 1.05+/-0.2. Currently, I have all these as a hash of arrays, e.g., { 'F_x' => [ 1.23, 1.12, 0.92, 1.01, ... ], 'q_r' => [ 1.34e+9, 3.89e+8, 8.98e+8, 5.23e+9, ... ], ... } where 1.23 is the sample for input parameter 'F_x' for the first case, 1.12 is the sample for the second case, etc., and 1.34e+9 is the sample for input parameter 'q_r' for the first case, and so forth. > That is, for a given "experiment" you have the same set of parameters, > just with a "large" numver of different values to put in those > parameters. Yes, if I understand you correctly. >> 2) Run all the cases. >> 3) Collect all the samples of all the outputs of interest. > > I'm also assuming that the output(s) for a given "experiment" would be > consistent in their parameters? Yes, the output parameter hash has the same structure as the input hash, although it typically has fewer parameters. The number and sequence of values (realizations) for each output parameter, however, corresponds exactly to the array of samples for each input parameter. For example, the outputs hash may look like, { 'heating' => [ 75.23, 76.54, ... ], 'stag_pr' => [ 102.13, 108.02, ... ], ... } Here, the 2nd realization of the output, 'stag_pr', 108.02 corresponds to the 2nd case and is associated with the 2nd entries in the 'F_x' and 'q_r' arrays, 1.12 and 3.89e+8, respectively. > So right now you are doing say for a given experiment f: > > inputs : i1,i2,i3,...,in > outputs : o1,o2,o3,...,0m > > run f(i1,i2,i3,...,in) -> [o1,...,on] where the values for i1,...,in are > "jiggled" And you have around 3,000 diferent sets of inputs. Yes, where 'inputs' and 'outputs' are vectors m and k long, respectively; so you have a matrix of values, e.g., input1 : i1_1, i1_2, i1_3, ..., i1_n input2 : i2_1, i2_2, i2_3, ..., i2_n . . . . . . . [ m x n matrix ] . . . . . . . inputj : im_1, im_2, im_3, ..., im_n output1 : o1_1, o1_2, o1_3, ..., o1_n output1 : o2_1, o2_2, o2_3, ..., o2_n . . . . . . . [ k x n matrix ] . . . . . . . output1 : ok_1, ok_2, ok_3, ..., ok_n > Would you be willing to share these? /I/ am willing, but unfortunately I'm also mired in red tape. > I'm not sure if what I'm assuming > about your problem is correct or not, but it intrigues me and I'd like > to fiddle with the general problem :-). The more I explain it, the more I learn about it; so thanks for the interest. Regards, -- Bil Kleb http://fun3d.larc.nasa.gov