Parameter to Response Mapping Examples

In this section, interface mapping examples are presented through the discussion of several parameters files and their corresponding results files. A typical input file for 2 variables (\(n=2\)) and 3 functions (\(m=3\)) using the standard parameters file format is as follows:

                    2 variables
1.500000000000000e+00 cdv_1
1.500000000000000e+00 cdv_2
                    3 functions
                    1 ASV_1
                    1 ASV_2
                    1 ASV_3
                    2 derivative_variables
                    1 DVV_1
                    2 DVV_2
                    0 analysis_components

where numerical values are associated with their tags within value-tag constructs (i.e. the value on the left, the tag on the right, separated by a space). The number of design variables (\(n\)) and the string “variables” are followed by the values of the design variables and their tags, the number of functions (\(m\)) and the string “functions”, the active set vector (ASV) and its tags, the number of derivative variables and the string “derivative_variables”, the derivative variables vector (DVV) and its tags, the number of analysis components and the string “analysis_components”, and the analysis components array and its tags. The descriptive tags for the variables are always present and they are either the descriptors in the user’s variables specification, if given there, or are default descriptors. The length of the active set vector is equal to the number of functions (\(m\)). In the case of an optimization data set with an objective function and two nonlinear constraints (three response functions total), the first ASV value is associated with the objective function and the remaining two are associated with the constraints (in whatever consistent constraint order has been defined by the user). The DVV defines a subset of the variables used for computing derivatives. Its identifiers are 1-based and correspond to the full set of variables listed in the first array. Finally, the analysis components pass additional strings from the user’s analysis_components specification in a Dakota input file through to the simulator. They allow the development of simulation drivers that are more flexible, by allowing them to be passed additional specifics at run time, e.g., the names of model files such as a particular mesh to use.

For the APREPRO format option, the same set of data appears as follows:

{ DAKOTA_VARS     =                      2 }
{ cdv_1           =  1.500000000000000e+00 }
{ cdv_2           =  1.500000000000000e+00 }
{ DAKOTA_FNS      =                      3 }
{ ASV_1           =                      1 }
{ ASV_2           =                      1 }
{ ASV_3           =                      1 }
{ DAKOTA_DER_VARS =                      2 }
{ DVV_1           =                      1 }
{ DVV_2           =                      2 }
{ DAKOTA_AN_COMPS =                      0 }

where the numerical values are associated with their tags within “{ tag = value }” constructs.

The user-supplied simulation interface, comprised of a simulator program or driver and (optionally) filter programs, is responsible for reading the parameters file and creating a results file that contains the response data requested in the ASV. Since the ASV contains all ones in this case, the response file corresponding to the above input file would contain values for the three functions:

1.250000000000000e-01 f
1.500000000000000e+00 c1
1.500000000000000e+00 c2

Since function tags are optional, the following would be equally acceptable:

1.250000000000000e-01
1.500000000000000e+00
1.500000000000000e+00

For the same parameters with different ASV components,

                    2 variables
1.500000000000000e+00 cdv_1
1.500000000000000e+00 cdv_2
                    3 functions
                    3 ASV_1
                    3 ASV_2
                    3 ASV_3
                    2 derivative_variables
                    1 DVV_1
                    2 DVV_2
                    0 analysis_components

the following response data is required:

1.250000000000000e-01 f
1.500000000000000e+00 c1
1.500000000000000e+00 c2
[ 5.000000000000000e-01 5.000000000000000e-01 ]
[ 3.000000000000000e+00 -5.000000000000000e-01 ]
[ -5.000000000000000e-01 3.000000000000000e+00 ]

Here, we need not only the function values, but also each of their gradients. The derivatives are computed with respect to cdv_1 and cdv_2 as indicated by the DVV values. Another modification to the ASV components yields the following parameters file:

                    2 variables
1.500000000000000e+00 cdv_1
1.500000000000000e+00 cdv_2
                    3 functions
                    2 ASV_1
                    0 ASV_2
                    2 ASV_3
                    2 derivative_variables
                    1 DVV_1
                    2 DVV_2
                    0 analysis_components

for which the following results file is needed:

[ 5.000000000000000e-01 5.000000000000000e-01 ]
[ -5.000000000000000e-01 3.000000000000000e+00 ]

Here, we need gradients for functions f and c2, but not for c1, presumably since this constraint is inactive.

A full Newton optimizer might make the following request:

                    2 variables
1.500000000000000e+00 cdv_1
1.500000000000000e+00 cdv_2
                    1 functions
                    7 ASV_1
                    2 derivative_variables
                    1 DVV_1
                    2 DVV_2
                    0 analysis_components

for which the following results file,

1.250000000000000e-01 f
[ 5.000000000000000e-01 5.000000000000000e-01 ]
[[ 3.000000000000000e+00 0.000000000000000e+00
   0.000000000000000e+00 3.000000000000000e+00 ]]

containing the objective function, its gradient vector, and its Hessian matrix, is needed. Again, the derivatives (gradient vector and Hessian matrix) are computed with respect to cdv_1 and cdv_2 as indicated by the DVV values.

Lastly, a more advanced example could have multiple types of variables present; in this example, 2 continuous design and 3 discrete design range, 2 normal uncertain, and 3 continuous state and 2 discrete state range variables. When a mixture of variable types is present, the content of the DVV (and therefore the required length of gradient vectors and Hessian matrices) depends upon the type of study being performed. For a reliability analysis problem, the uncertain variables are the active continuous variables and the following parameters file would be typical:

                   12 variables
1.500000000000000e+00 cdv_1
1.500000000000000e+00 cdv_2
                    2 ddriv_1
                    2 ddriv_2
                    2 ddriv_3
5.000000000000000e+00 nuv_1
5.000000000000000e+00 nuv_2
3.500000000000000e+00 csv_1
3.500000000000000e+00 csv_2
3.500000000000000e+00 csv_3
                    4 dsriv_1
                    4 dsriv_2
                    3 functions
                    3 ASV_1
                    3 ASV_2
                    3 ASV_3
                    2 derivative_variables
                    6 DVV_1
                    7 DVV_2
                    2 analysis_components
            mesh1.exo AC_1
              db1.xml AC_2

Gradients are requested with respect to variable entries 6 and 7, which correspond to normal uncertain variables nuv_1 and nuv_2. The following response data would be appropriate:

7.943125000000000e+02 f
1.500000000000000e+00 c1
1.500000000000000e+00 c2
[ 2.560000000000000e+02 2.560000000000000e+02 ]
[ 0.000000000000000e+00 0.000000000000000e+00 ]
[ 0.000000000000000e+00 0.000000000000000e+00 ]

In a parameter study, however, no distinction is drawn between different types of continuous variables, and derivatives would be needed with respect to all continuous variables (\(n_{dvv}=7\) for the continuous design variables cdv_1 and cdv_2, the normal uncertain variables nuv_1 and nuv_2, and the continuous state variables csv_1, csv_2 and csv_3). The parameters file would appear as

                   12 variables
1.500000000000000e+00 cdv_1
1.500000000000000e+00 cdv_2
                    2 ddriv_1
                    2 ddriv_2
                    2 ddriv_3
5.000000000000000e+00 nuv_1
5.000000000000000e+00 nuv_2
3.500000000000000e+00 csv_1
3.500000000000000e+00 csv_2
3.500000000000000e+00 csv_3
                    4 dsriv_1
                    4 dsriv_2
                    3 functions
                    3 ASV_1
                    3 ASV_2
                    3 ASV_3
                    7 derivative_variables
                    1 DVV_1
                    2 DVV_2
                    6 DVV_3
                    7 DVV_4
                    8 DVV_5
                    9 DVV_6
                   10 DVV_7
                    2 analysis_components
            mesh1.exo AC_1
              db1.xml AC_2

and the corresponding results would appear as

7.943125000000000e+02 f
1.500000000000000e+00 c1
1.500000000000000e+00 c2
[  5.000000000000000e-01  5.000000000000000e-01  2.560000000000000e+02
   2.560000000000000e+02  6.250000000000000e+01  6.250000000000000e+01
   6.250000000000000e+01 ]
[  3.000000000000000e+00 -5.000000000000000e-01  0.000000000000000e+00
   0.000000000000000e+00  0.000000000000000e+00  0.000000000000000e+00
   0.000000000000000e+00 ]
[ -5.000000000000000e-01  3.000000000000000e+00  0.000000000000000e+00
   0.000000000000000e+00  0.000000000000000e+00  0.000000000000000e+00
   0.000000000000000e+00 ]