Model Class Reference

Base class for the model class hierarchy. More...

Inheritance diagram for Model:

NestedModel RecastModel SingleModel SurrogateModel DataFitSurrModel HierarchSurrModel List of all members.

Public Member Functions

 Model ()
 default constructor
 Model (ProblemDescDB &problem_db)
 standard constructor for envelope
 Model (const Model &model)
 copy constructor
virtual ~Model ()
 destructor
Model operator= (const Model &model)
 assignment operator
virtual Iteratorsubordinate_iterator ()
 return the sub-iterator in nested and surrogate models
virtual Modelsurrogate_model ()
 return the approximation sub-model in surrogate models
virtual Modeltruth_model ()
 return the truth sub-model in surrogate models
virtual void derived_subordinate_models (ModelList &ml, bool recurse_flag)
 portion of subordinate_models()() specific to derived model classes
virtual void update_from_subordinate_model (bool recurse_flag=true)
 propagate vars/labels/bounds/targets from the bottom up
virtual Interfaceinterface ()
 or NestedModel::optionalInterface
virtual void surrogate_bypass (bool bypass_flag)
 models contained within this model
virtual void surrogate_function_indices (const IntSet &surr_fn_indices)
 set the (currently active) surrogate function index set
virtual void build_approximation ()
 build a new SurrogateModel approximation
virtual bool build_approximation (const Variables &vars, const Response &response)
 response at vars
virtual void update_approximation (const Variables &vars, const Response &response, bool rebuild_flag)
 update an existing surrogate model with a new anchor
virtual void update_approximation (const VariablesArray &vars_array, const ResponseArray &resp_array, bool rebuild_flag)
 update an existing surrogate model with new data points
virtual void append_approximation (const Variables &vars, const Response &response, bool rebuild_flag)
 append a single point to an existing surrogate model's data
virtual void append_approximation (const VariablesArray &vars_array, const ResponseArray &resp_array, bool rebuild_flag)
 append multiple points to an existing surrogate model's data
virtual Array< Approximation > & approximations ()
 retrieve the set of Approximations within a DataFitSurrModel
virtual const RealVectorArrayapproximation_coefficients ()
 within a DataFitSurrModel
virtual void approximation_coefficients (const RealVectorArray &approx_coeffs)
 a DataFitSurrModel
virtual void print_coefficients (ostream &s, size_t index) const
 within a DataFitSurrModel
virtual const RealVectorapproximation_variances (const RealVector &c_vars)
 Approximation within a DataFitSurrModel.
virtual const List< SurrogateDataPoint > & approximation_data (size_t index)
 instance within a DataFitSurrModel
virtual void compute_correction (const Response &truth_response, const Response &approx_response, const RealVector &c_vars)
 compute correction factors for use in SurrogateModels
virtual void auto_correction (bool correction_flag)
 manages automatic application of correction factors in SurrogateModels
virtual bool auto_correction ()
 model's responses
virtual void apply_correction (Response &approx_response, const RealVector &c_vars, bool quiet_flag=false)
 apply correction factors to approx_response (for use in SurrogateModels)
virtual void component_parallel_mode (short mode)
 or 2 (SUB_MODEL/ACTUAL_MODEL/HF_MODEL/TRUTH_MODEL)].
virtual String local_eval_synchronization ()
 return derived model synchronization setting
virtual int local_eval_concurrency ()
 return derived model asynchronous evaluation concurrency
virtual void serve ()
 a termination message is received from stop_servers().
virtual void stop_servers ()
 particular model when iteration on the model is complete.
virtual bool derived_master_overload () const
 of trying to run a multiprocessor job on the master.
virtual const Stringinterface_id () const
 return the interface identifier
virtual int evaluation_id () const
 Return the current function evaluation id for the Model.
virtual void set_evaluation_reference ()
 Set the reference points for the evaluation counters within the Model.
virtual void fine_grained_evaluation_counters ()
 Request fine-grained evaluation reporting within the Model.
virtual void print_evaluation_summary (ostream &s, bool minimal_header=false, bool relative_count=true) const
 Print an evaluation summary for the Model.
ModelListsubordinate_models (bool recurse_flag=true)
 return the sub-models in nested and surrogate models
void compute_response ()
 Compute the Response at currentVariables (default ActiveSet).
void compute_response (const ActiveSet &set)
 Compute the Response at currentVariables (specified ActiveSet).
void asynch_compute_response ()
 Response at currentVariables (default ActiveSet).
void asynch_compute_response (const ActiveSet &set)
 Response at currentVariables (specified ActiveSet).
const ResponseArraysynchronize ()
 complete set of results from a group of asynchronous evaluations.
const IntResponseMap & synchronize_nowait ()
 available results from a group of asynchronous evaluations.
void init_communicators (const int &max_iterator_concurrency, bool recurse_flag=true)
 configuration in modelPCIterMap
void init_serial ()
 modify some default settings to behave properly in serial.
void set_communicators (const int &max_iterator_concurrency, bool recurse_flag=true)
 from modelPCIterMap)
void free_communicators (const int &max_iterator_concurrency, bool recurse_flag=true)
 deallocate communicator partitions for a model
void stop_configurations ()
 terminate serve_configurations() on other iteratorComm processors
int serve_configurations ()
 to balance init_communicators() calls on iteratorComm rank 0
void estimate_message_lengths ()
 estimate messageLengths for a model
void assign_rep (Model *model_rep, bool ref_count_incr=true)
 replaces existing letter with a new one
size_t tv () const
 return total number of vars
size_t cv () const
 return number of active continuous variables
size_t dv () const
 return number of active discrete variables
size_t icv () const
 return number of inactive continuous variables
size_t idv () const
 return number of inactive discrete variables
size_t acv () const
 return total number of continuous variables
size_t adv () const
 return total number of discrete variables
void active_variables (const Variables &vars)
 set the active variables in currentVariables
const RealVectorcontinuous_variables () const
 return the active continuous variables from currentVariables
void continuous_variables (const RealVector &c_vars)
 set the active continuous variables in currentVariables
const IntVectordiscrete_variables () const
 return the active discrete variables from currentVariables
void discrete_variables (const IntVector &d_vars)
 set the active discrete variables in currentVariables
const StringArraycontinuous_variable_types () const
 return the active continuous variable types from currentVariables
const StringArraydiscrete_variable_types () const
 return the active discrete variable types from currentVariables
const UIntArraycontinuous_variable_ids () const
 return the active continuous variable identifiers from currentVariables
const RealVectorinactive_continuous_variables () const
 return the inactive continuous variables in currentVariables
void inactive_continuous_variables (const RealVector &i_c_vars)
 set the inactive continuous variables in currentVariables
const IntVectorinactive_discrete_variables () const
 return the inactive discrete variables in currentVariables
void inactive_discrete_variables (const IntVector &i_d_vars)
 set the inactive discrete variables in currentVariables
const UIntArrayinactive_continuous_variable_ids () const
 return the inactive continuous variable identifiers from currentVariables
RealVector all_continuous_variables () const
 return all continuous variables in currentVariables
void all_continuous_variables (const RealVector &a_c_vars)
 set all continuous variables in currentVariables
IntVector all_discrete_variables () const
 return all discrete variables in currentVariables
void all_discrete_variables (const IntVector &a_d_vars)
 set all discrete variables in currentVariables
const StringArrayall_continuous_variable_types () const
 return all continuous variable types from currentVariables
const StringArrayall_discrete_variable_types () const
 return all discrete variable types from currentVariables
const UIntArrayall_continuous_variable_ids () const
 return all continuous variable identifiers from currentVariables
const RealDenseVector & normal_means () const
 return the normal uncertain variable means
void normal_means (const RealDenseVector &n_means)
 set the normal uncertain variable means
const RealDenseVector & normal_std_deviations () const
 return the normal uncertain variable standard deviations
void normal_std_deviations (const RealDenseVector &n_std_devs)
 set the normal uncertain variable standard deviations
const RealDenseVector & normal_lower_bounds () const
 return the normal uncertain variable lower bounds
void normal_lower_bounds (const RealDenseVector &n_lower_bnds)
 set the normal uncertain variable lower bounds
const RealDenseVector & normal_upper_bounds () const
 return the normal uncertain variable upper bounds
void normal_upper_bounds (const RealDenseVector &n_upper_bnds)
 set the normal uncertain variable upper bounds
const RealDenseVector & lognormal_means () const
 return the lognormal uncertain variable means
void lognormal_means (const RealDenseVector &ln_means)
 set the lognormal uncertain variable means
const RealDenseVector & lognormal_std_deviations () const
 return the lognormal uncertain variable standard deviations
void lognormal_std_deviations (const RealDenseVector &ln_std_devs)
 set the lognormal uncertain variable standard deviations
const RealDenseVector & lognormal_error_factors () const
 return the lognormal uncertain variable error factors
void lognormal_error_factors (const RealDenseVector &ln_err_facts)
 set the lognormal uncertain variable error factors
const RealDenseVector & lognormal_lower_bounds () const
 return the lognormal uncertain variable lower bounds
void lognormal_lower_bounds (const RealDenseVector &ln_lower_bnds)
 set the lognormal uncertain variable lower bounds
const RealDenseVector & lognormal_upper_bounds () const
 return the lognormal uncertain variable upper bounds
void lognormal_upper_bounds (const RealDenseVector &ln_upper_bnds)
 set the lognormal uncertain variable upper bounds
const RealDenseVector & uniform_lower_bounds () const
 return the uniform uncertain variable lower bounds
void uniform_lower_bounds (const RealDenseVector &u_lower_bnds)
 set the uniform uncertain variable lower bounds
const RealDenseVector & uniform_upper_bounds () const
 return the uniform uncertain variable upper bounds
void uniform_upper_bounds (const RealDenseVector &u_upper_bnds)
 set the uniform uncertain variable upper bounds
const RealDenseVector & loguniform_lower_bounds () const
 return the loguniform uncertain variable lower bounds
void loguniform_lower_bounds (const RealDenseVector &lu_lower_bnds)
 set the loguniform uncertain variable lower bounds
const RealDenseVector & loguniform_upper_bounds () const
 return the loguniform uncertain variable upper bounds
void loguniform_upper_bounds (const RealDenseVector &lu_upper_bnds)
 set the loguniform uncertain variable upper bounds
const RealDenseVector & triangular_modes () const
 return the triangular uncertain variable modes
void triangular_modes (const RealDenseVector &t_modes)
 set the triangular uncertain variable modes
const RealDenseVector & triangular_lower_bounds () const
 return the triangular uncertain variable lower bounds
void triangular_lower_bounds (const RealDenseVector &t_lower_bnds)
 set the triangular uncertain variable lower bounds
const RealDenseVector & triangular_upper_bounds () const
 return the triangular uncertain variable upper bounds
void triangular_upper_bounds (const RealDenseVector &t_upper_bnds)
 set the triangular uncertain variable upper bounds
const RealDenseVector & exponential_betas () const
 return the exponential uncertain variable beta parameters
void exponential_betas (const RealDenseVector &e_betas)
 set the exponential uncertain variable beta parameters
const RealDenseVector & beta_alphas () const
 return the beta uncertain variable alphas
void beta_alphas (const RealDenseVector &b_alphas)
 set the beta uncertain variable alphas
const RealDenseVector & beta_betas () const
 return the beta uncertain variable betas
void beta_betas (const RealDenseVector &b_betas)
 set the beta uncertain variable betas
const RealDenseVector & beta_lower_bounds () const
 return the beta uncertain variable lower bounds
void beta_lower_bounds (const RealDenseVector &b_lower_bnds)
 set the beta uncertain variable lower bounds
const RealDenseVector & beta_upper_bounds () const
 return the beta uncertain variable upper bounds
void beta_upper_bounds (const RealDenseVector &b_upper_bnds)
 set the beta uncertain variable upper bounds
const RealDenseVector & gamma_alphas () const
 return the gamma uncertain variable alpha parameters
void gamma_alphas (const RealDenseVector &ga_alphas)
 set the gamma uncertain variable alpha parameters
const RealDenseVector & gamma_betas () const
 return the gamma uncertain variable beta parameters
void gamma_betas (const RealDenseVector &ga_betas)
 set the gamma uncertain variable beta parameters
const RealDenseVector & gumbel_alphas () const
 return the gumbel uncertain variable alphas
void gumbel_alphas (const RealDenseVector &gu_alphas)
 set the gumbel uncertain variable alphas
const RealDenseVector & gumbel_betas () const
 return the gumbel uncertain variable betas
void gumbel_betas (const RealDenseVector &gu_betas)
 set the gumbel uncertain variable betas
const RealDenseVector & frechet_alphas () const
 return the frechet uncertain variable alpha parameters
void frechet_alphas (const RealDenseVector &f_alphas)
 set the frechet uncertain variable alpha parameters
const RealDenseVector & frechet_betas () const
 return the frechet uncertain variable beta parameters
void frechet_betas (const RealDenseVector &f_betas)
 set the frechet uncertain variable beta parameters
const RealDenseVector & weibull_alphas () const
 return the weibull uncertain variable alpha parameters
void weibull_alphas (const RealDenseVector &w_alphas)
 set the weibull uncertain variable alpha parameters
const RealDenseVector & weibull_betas () const
 return the weibull uncertain variable beta parameters
void weibull_betas (const RealDenseVector &w_betas)
 set the weibull uncertain variable beta parameters
const RealDenseVectorArrayhistogram_bin_pairs () const
 return the histogram uncertain bin pairs
void histogram_bin_pairs (const RealDenseVectorArray &h_bin_pairs)
 set the histogram uncertain bin pairs
const RealDenseVectorArrayhistogram_point_pairs () const
 return the histogram uncertain point pairs
void histogram_point_pairs (const RealDenseVectorArray &h_pt_pairs)
 set the histogram uncertain point pairs
const RealDenseVectorArrayinterval_probabilities () const
 return the interval basic probability values
void interval_probabilities (const RealDenseVectorArray &int_probs)
 set the interval basic probability values
const RealDenseVectorArrayinterval_bounds () const
 return the interval bounds
void interval_bounds (const RealDenseVectorArray &int_bounds)
 set the interval bounds
const RealSymDenseMatrix & uncertain_correlations () const
 return the uncertain variable correlations
void uncertain_correlations (const RealSymDenseMatrix &uncertain_corr)
 set the uncertain variable correlations
const StringArraycontinuous_variable_labels () const
 return the active continuous variable labels from currentVariables
void continuous_variable_labels (const StringArray &c_v_labels)
 set the active continuous variable labels in currentVariables
const StringArraydiscrete_variable_labels () const
 return the active discrete variable labels from currentVariables
void discrete_variable_labels (const StringArray &d_v_labels)
 set the active discrete variable labels in currentVariables
const StringArrayinactive_continuous_variable_labels () const
 return the inactive continuous variable labels in currentVariables
void inactive_continuous_variable_labels (const StringArray &i_c_v_labels)
 set the inactive continuous variable labels in currentVariables
const StringArrayinactive_discrete_variable_labels () const
 return the inactive discrete variable labels in currentVariables
void inactive_discrete_variable_labels (const StringArray &i_d_v_labels)
 set the inactive discrete variable labels in currentVariables
StringArray all_continuous_variable_labels () const
 return all continuous variable labels in currentVariables
void all_continuous_variable_labels (const StringArray &a_c_v_labels)
 set all continuous variable labels in currentVariables
StringArray all_discrete_variable_labels () const
 return all discrete variable labels in currentVariables
void all_discrete_variable_labels (const StringArray &a_d_v_labels)
 set all discrete variable labels in currentVariables
const StringArrayresponse_labels () const
 return the response labels from currentResponse
void response_labels (const StringArray &resp_labels)
 set the response labels in currentResponse
const RealVectorcontinuous_lower_bounds () const
 return the active continuous lower bounds from userDefinedConstraints
void continuous_lower_bounds (const RealVector &c_l_bnds)
 set the active continuous lower bounds in userDefinedConstraints
const RealVectorcontinuous_upper_bounds () const
 return the active continuous upper bounds from userDefinedConstraints
void continuous_upper_bounds (const RealVector &c_u_bnds)
 set the active continuous upper bounds in userDefinedConstraints
const IntVectordiscrete_lower_bounds () const
 return the active discrete lower bounds from userDefinedConstraints
void discrete_lower_bounds (const IntVector &d_l_bnds)
 set the active discrete lower bounds in userDefinedConstraints
const IntVectordiscrete_upper_bounds () const
 return the active discrete upper bounds from userDefinedConstraints
void discrete_upper_bounds (const IntVector &d_u_bnds)
 set the active discrete upper bounds in userDefinedConstraints
const RealVectorinactive_continuous_lower_bounds () const
 return the inactive continuous lower bounds in userDefinedConstraints
void inactive_continuous_lower_bounds (const RealVector &i_c_l_bnds)
 set the inactive continuous lower bounds in userDefinedConstraints
const RealVectorinactive_continuous_upper_bounds () const
 return the inactive continuous upper bounds in userDefinedConstraints
void inactive_continuous_upper_bounds (const RealVector &i_c_u_bnds)
 set the inactive continuous upper bounds in userDefinedConstraints
const IntVectorinactive_discrete_lower_bounds () const
 return the inactive discrete lower bounds in userDefinedConstraints
void inactive_discrete_lower_bounds (const IntVector &i_d_l_bnds)
 set the inactive discrete lower bounds in userDefinedConstraints
const IntVectorinactive_discrete_upper_bounds () const
 return the inactive discrete upper bounds in userDefinedConstraints
void inactive_discrete_upper_bounds (const IntVector &i_d_u_bnds)
 set the inactive discrete upper bounds in userDefinedConstraints
RealVector all_continuous_lower_bounds () const
 return all continuous lower bounds in userDefinedConstraints
void all_continuous_lower_bounds (const RealVector &a_c_l_bnds)
 set all continuous lower bounds in userDefinedConstraints
RealVector all_continuous_upper_bounds () const
 return all continuous upper bounds in userDefinedConstraints
void all_continuous_upper_bounds (const RealVector &a_c_u_bnds)
 set all continuous upper bounds in userDefinedConstraints
IntVector all_discrete_lower_bounds () const
 return all discrete lower bounds in userDefinedConstraints
void all_discrete_lower_bounds (const IntVector &a_d_l_bnds)
 set all discrete lower bounds in userDefinedConstraints
IntVector all_discrete_upper_bounds () const
 return all discrete upper bounds in userDefinedConstraints
void all_discrete_upper_bounds (const IntVector &a_d_u_bnds)
 set all discrete upper bounds in userDefinedConstraints
size_t num_linear_ineq_constraints () const
 return the number of linear inequality constraints
size_t num_linear_eq_constraints () const
 return the number of linear equality constraints
const RealMatrixlinear_ineq_constraint_coeffs () const
 return the linear inequality constraint coefficients
void linear_ineq_constraint_coeffs (const RealMatrix &lin_ineq_coeffs)
 set the linear inequality constraint coefficients
const RealVectorlinear_ineq_constraint_lower_bounds () const
 return the linear inequality constraint lower bounds
void linear_ineq_constraint_lower_bounds (const RealVector &lin_ineq_l_bnds)
 set the linear inequality constraint lower bounds
const RealVectorlinear_ineq_constraint_upper_bounds () const
 return the linear inequality constraint upper bounds
void linear_ineq_constraint_upper_bounds (const RealVector &lin_ineq_u_bnds)
 set the linear inequality constraint upper bounds
const RealMatrixlinear_eq_constraint_coeffs () const
 return the linear equality constraint coefficients
void linear_eq_constraint_coeffs (const RealMatrix &lin_eq_coeffs)
 set the linear equality constraint coefficients
const RealVectorlinear_eq_constraint_targets () const
 return the linear equality constraint targets
void linear_eq_constraint_targets (const RealVector &lin_eq_targets)
 set the linear equality constraint targets
size_t num_nonlinear_ineq_constraints () const
 return the number of nonlinear inequality constraints
size_t num_nonlinear_eq_constraints () const
 return the number of nonlinear equality constraints
const RealVectornonlinear_ineq_constraint_lower_bounds () const
 return the nonlinear inequality constraint lower bounds
void nonlinear_ineq_constraint_lower_bounds (const RealVector &nln_ineq_l_bnds)
 set the nonlinear inequality constraint lower bounds
const RealVectornonlinear_ineq_constraint_upper_bounds () const
 return the nonlinear inequality constraint upper bounds
void nonlinear_ineq_constraint_upper_bounds (const RealVector &nln_ineq_u_bnds)
 set the nonlinear inequality constraint upper bounds
const RealVectornonlinear_eq_constraint_targets () const
 return the nonlinear equality constraint targets
void nonlinear_eq_constraint_targets (const RealVector &nln_eq_targets)
 set the nonlinear equality constraint targets
const UIntArraymerged_discrete_ids () const
 merged into a continuous array in currentVariables
const Variablescurrent_variables () const
 return the current variables (currentVariables)
const Constraintsuser_defined_constraints () const
 return the user-defined constraints (userDefinedConstraints)
const Responsecurrent_response () const
 return the current response (currentResponse)
ProblemDescDBproblem_description_db () const
 return the problem description database (probDescDB)
ParallelLibraryparallel_library () const
 return the parallel library (parallelLib)
const Stringmodel_type () const
 return the model type (modelType)
const Stringmodel_id () const
 return the model identifier (idModel)
size_t num_functions () const
 return number of functions in currentResponse
const Stringgradient_type () const
 return the gradient evaluation type (gradType)
const Stringmethod_source () const
 return the numerical gradient evaluation method source (methodSrc)
const Stringinterval_type () const
 return the numerical gradient evaluation interval type (intervalType)
const RealVectorfd_gradient_step_size () const
 return the finite difference gradient step size (fdGradSS)
const IntListgradient_id_analytic () const
 return the mixed gradient analytic IDs (gradIdAnalytic)
const IntListgradient_id_numerical () const
 return the mixed gradient numerical IDs (gradIdNumerical)
const Stringhessian_type () const
 return the Hessian evaluation type (hessType)
const Stringquasi_hessian_type () const
 return the Hessian evaluation type (quasiHessType)
const RealVectorfd_hessian_by_grad_step_size () const
 return gradient-based finite difference Hessian step size (fdHessByGradSS)
const RealVectorfd_hessian_by_fn_step_size () const
 return function-based finite difference Hessian step size (fdHessByFnSS)
const IntListhessian_id_analytic () const
 return the mixed Hessian analytic IDs (hessIdAnalytic)
const IntListhessian_id_numerical () const
 return the mixed Hessian analytic IDs (hessIdNumerical)
const IntListhessian_id_quasi () const
 return the mixed Hessian analytic IDs (hessIdQuasi)
const RealVectorprimary_response_fn_weights () const
 squares terms. Used by ConcurrentStrategy for Pareto set optimization.
void primary_response_fn_weights (const RealVector &wts, bool recurse_flag=true)
 squares terms. Used by ConcurrentStrategy for Pareto set optimization.
void supports_estimated_derivatives (bool sed_flag)
 set whether this model should perform or pass on derivative estimation
void init_comms_bcast_flag (bool icb_flag)
 set initCommsBcastFlag
int evaluation_capacity () const
 return the evaluation capacity for use in iterator logic
int derivative_concurrency () const
 return the gradient concurrency for use in parallel configuration logic
bool asynch_flag () const
 return the asynchronous evaluation flag (asynchEvalFlag)
void asynch_flag (const bool flag)
 set the asynchronous evaluation flag (asynchEvalFlag)
short output_level () const
 return the outputLevel
void output_level (const short level)
 set the outputLevel
const IntArraymessage_lengths () const
 return the array of MPI packed message buffer lengths (messageLengths)
void parallel_configuration_iterator (const ParConfigLIter &pc_iter)
 set modelPCIter
const ParConfigLIter & parallel_configuration_iterator () const
 return modelPCIter
void auto_graphics (const bool flag)
 the model as opposed to graphics posting at the strategy level).
bool is_null () const
 function to check modelRep (does this envelope contain a letter)
Modelmodel_rep () const
 that are not mapped to the top Model level

Protected Member Functions

 Model (BaseConstructor, ProblemDescDB &problem_db)
 derived class constructors - Coplien, p. 139)
 Model (NoDBBaseConstructor, ParallelLibrary &parallel_lib, const pair< short, short > &view, const ActiveSet &set)
 constructed on the fly
 Model (RecastBaseConstructor, ProblemDescDB &problem_db, ParallelLibrary &parallel_lib)
 constructed on the fly
virtual void derived_compute_response (const ActiveSet &set)
 portion of compute_response() specific to derived model classes
virtual void derived_asynch_compute_response (const ActiveSet &set)
 portion of asynch_compute_response() specific to derived model classes
virtual const ResponseArrayderived_synchronize ()
 portion of synchronize() specific to derived model classes
virtual const IntResponseMap & derived_synchronize_nowait ()
 portion of synchronize_nowait() specific to derived model classes
virtual void derived_init_communicators (const int &max_iterator_concurrency, bool recurse_flag=true)
 portion of init_communicators() specific to derived model classes
virtual void derived_init_serial ()
 portion of init_serial() specific to derived model classes
virtual void derived_set_communicators (const int &max_iterator_concurrency, bool recurse_flag=true)
 portion of set_communicators() specific to derived model classes
virtual void derived_free_communicators (const int &max_iterator_concurrency, bool recurse_flag=true)
 portion of free_communicators() specific to derived model classes

Protected Attributes

Variables currentVariables
 function evaluations
size_t numDerivVars
 corrections where only the active continuous variables are supported)
Response currentResponse
 function evaluations
size_t numFns
 the number of functions in currentResponse
Constraints userDefinedConstraints
 an iterator at startup.
String modelType
 type of model: single, nested, or surrogate
String surrogateType
 type of surrogate model: local_*, multipoint_*, global_*, or hierarchical
String gradType
 grad type: none,numerical,analytic,mixed
String methodSrc
 method source: dakota,vendor
String intervalType
 interval type: forward,central
RealVector fdGradSS
 relative step sizes for numerical gradients
IntList gradIdAnalytic
 analytic id's for mixed gradients
IntList gradIdNumerical
 numerical id's for mixed gradients
String hessType
 Hess type: none,numerical,quasi,analytic,mixed.
String quasiHessType
 quasi-Hessian type: bfgs, damped_bfgs, sr1
RealVector fdHessByGradSS
 relative step sizes for numerical Hessians estimated with 1st-order grad differences
RealVector fdHessByFnSS
 relative step sizes for numerical Hessians estimated with 2nd-order fn differences
IntList hessIdAnalytic
 analytic id's for mixed Hessians
IntList hessIdNumerical
 numerical id's for mixed Hessians
IntList hessIdQuasi
 quasi id's for mixed Hessians
bool supportsEstimDerivs
 whether model should perform or forward derivative estimation
IntArray messageLengths
 and PRPair
ProblemDescDBprobDescDB
 class member reference to the problem description database
ParallelLibraryparallelLib
 class member reference to the parallel library
ParConfigLIter modelPCIter
 the ParallelConfiguration node used by this model instance
short componentParallelMode
 (SUB_MODEL/HF_MODEL/TRUTH_MODEL)
bool asynchEvalFlag
 flags asynch evaluations (local or distributed)
short outputLevel
 output verbosity level: {SILENT,QUIET,NORMAL,VERBOSE,DEBUG}_OUTPUT
RealDenseVector normalMeans
 normal uncertain variable means
RealDenseVector normalStdDevs
 normal uncertain variable standard deviations
RealDenseVector normalLowerBnds
 normal uncertain variable lower bounds
RealDenseVector normalUpperBnds
 normal uncertain variable upper bounds
RealDenseVector lognormalMeans
 lognormal uncertain variable means
RealDenseVector lognormalStdDevs
 lognormal uncertain variable standard deviations
RealDenseVector lognormalErrFacts
 lognormal uncertain variable error factors
RealDenseVector lognormalLowerBnds
 lognormal uncertain variable lower bounds
RealDenseVector lognormalUpperBnds
 lognormal uncertain variable upper bounds
RealDenseVector uniformLowerBnds
 uniform uncertain variable lower bounds
RealDenseVector uniformUpperBnds
 uniform uncertain variable upper bounds
RealDenseVector loguniformLowerBnds
 loguniform uncertain variable lower bounds
RealDenseVector loguniformUpperBnds
 loguniform uncertain variable upper bounds
RealDenseVector triangularModes
 triangular uncertain variable modes
RealDenseVector triangularLowerBnds
 triangular uncertain variable lower bounds
RealDenseVector triangularUpperBnds
 triangular uncertain variable upper bounds
RealDenseVector exponentialBetas
 exponential uncertain variable betas
RealDenseVector betaAlphas
 beta uncertain variable alphas
RealDenseVector betaBetas
 beta uncertain variable betas
RealDenseVector betaLowerBnds
 beta uncertain variable lower bounds
RealDenseVector betaUpperBnds
 beta uncertain variable upper bounds
RealDenseVector gammaAlphas
 gamma uncertain variable alphas
RealDenseVector gammaBetas
 gamma uncertain variable betas
RealDenseVector gumbelAlphas
 gumbel uncertain variable alphas
RealDenseVector gumbelBetas
 gumbel uncertain variable betas
RealDenseVector frechetAlphas
 frechet uncertain variable alphas
RealDenseVector frechetBetas
 frechet uncertain variable betas
RealDenseVector weibullAlphas
 weibull uncertain variable alphas
RealDenseVector weibullBetas
 weibull uncertain variable betas
RealDenseVectorArray histogramBinPairs
 histogram uncertain (x,y) bin pairs (continuous linear histogram)
RealDenseVectorArray histogramPointPairs
 histogram uncertain (x,y) point pairs (discrete histogram)
RealDenseVectorArray intervalBasicProbs
 basic probability values for interval uncertain variables
RealDenseVectorArray intervalBounds
 interval lower/upper bounds for interval uncertain variables
RealSymDenseMatrix uncertainCorrelations
 and correlation coefficients for reliability)
RealVector primaryRespFnWts
 multiobjective optimization or weighted least squares)

Private Member Functions

Modelget_model (ProblemDescDB &problem_db)
 Used by the envelope to instantiate the correct letter class.
int estimate_derivatives (const ShortArray &map_asv, const ShortArray &fd_grad_asv, const ShortArray &fd_hess_asv, const ShortArray &quasi_hess_asv, const ActiveSet &original_set, const bool asynch_flag)
 method_source) in the numerical gradient specification.
void synchronize_derivatives (const Variables &vars, const ResponseArray &fd_responses, Response &new_response, const ShortArray &fd_grad_asv, const ShortArray &fd_hess_asv, const ShortArray &quasi_hess_asv, const ActiveSet &original_set)
 objects (fd_grad_responses) into a single response (new_response)
void update_response (const Variables &vars, Response &new_response, const ShortArray &fd_grad_asv, const ShortArray &fd_hess_asv, const ShortArray &quasi_hess_asv, const ActiveSet &original_set, Response &initial_map_response, const RealMatrix &new_fn_grads, const RealMatrixArray &new_fn_hessians)
 overlay results to update a response object
void update_quasi_hessians (const Variables &vars, Response &new_response, const ActiveSet &original_set)
 perform quasi-Newton Hessian updates
bool manage_asv (const ShortArray &asv_in, ShortArray &map_asv_out, ShortArray &fd_grad_asv_out, ShortArray &fd_hess_asv_out, ShortArray &quasi_hess_asv_out)
 Coordinates usage of estimate_derivatives() calls based on asv_in.

Private Attributes

String idModel
 model identifier string from the input file
bool estDerivsFlag
 asynch_compute_response()
int evaluationCapacity
 capacity for concurrent evaluations supported by the Model
std::map< int, ParConfigLIter > modelPCIterMap
 level as the lookup key
bool initCommsBcastFlag
 init_communicators(); set from Strategy::init_iterator()
bool modelAutoGraphicsFlag
 graphics posting at the strategy level)
ModelList modelList
 used to collect sub-models for subordinate_models()
VariablesList varsList
 synchronize().
List< ShortArrayasvList
 asynch_compute_response() to synchronize()
List< ActiveSetsetList
 asynch_compute_response() to synchronize()
BoolList initialMapList
 synchronize_derivatives()
BoolList dbCaptureList
 synchronize_derivatives()
ResponseList dbResponseList
 synchronize_derivatives()
RealList deltaList
 transfers deltas from estimate_derivatives() to synchronize_derivatives()
IntList numMapsList
 into numerical gradients.
RealMatrix xPrev
 previous parameter vectors used in computing s for quasi-Newton updates
RealMatrix fnGradsPrev
 previous gradient vectors used in computing y for quasi-Newton updates
RealMatrixArray quasiHessians
 quasi-Newton Hessian approximations
SizetArray numQuasiUpdates
 number of quasi-Newton Hessian updates applied
ResponseArray responseArray
 similar array in Interface contains the raw responses.
IntResponseMap graphicsRespMap
 prior to sequential input into the graphics
ModelmodelRep
 pointer to the letter (initialized only for the envelope)
int referenceCount
 number of objects sharing modelRep

Detailed Description

Base class for the model class hierarchy.

The Model class is the base class for one of the primary class hierarchies in DAKOTA. The model hierarchy contains a set of variables, an interface, and a set of responses, and an iterator operates on the model to map the variables into responses using the interface. For memory efficiency and enhanced polymorphism, the model hierarchy employs the "letter/envelope idiom" (see Coplien "Advanced C++", p. 133), for which the base class (Model) serves as the envelope and one of the derived classes (selected in Model::get_model()) serves as the letter.


Constructor & Destructor Documentation

Model (  ) 

default constructor

The default constructor is used in vector<Model> instantiations and for initialization of Model objects contained in Iterator and derived Strategy classes. modelRep is NULL in this case (a populated problem_db is needed to build a meaningful Model object). This makes it necessary to check for NULL in the copy constructor, assignment operator, and destructor.

Model ( ProblemDescDB problem_db  ) 

standard constructor for envelope

Used in model instantiations within strategy constructors. Envelope constructor only needs to extract enough data to properly execute get_model, since Model(BaseConstructor, problem_db) builds the actual base class data for the derived models.

Model ( const Model model  ) 

copy constructor

Copy constructor manages sharing of modelRep and incrementing of referenceCount.

~Model (  )  [virtual]

destructor

Destructor decrements referenceCount and only deletes modelRep when referenceCount reaches zero.

Model ( BaseConstructor  ,
ProblemDescDB problem_db 
) [protected]

derived class constructors - Coplien, p. 139)

This constructor builds the base class data for all inherited models. get_model() instantiates a derived class and the derived class selects this base class constructor in its initialization list (to avoid the recursion of the base class constructor calling get_model() again). Since the letter IS the representation, its representation pointer is set to NULL (an uninitialized pointer causes problems in ~Model).

Model ( RecastBaseConstructor  ,
ProblemDescDB problem_db,
ParallelLibrary parallel_lib 
) [protected]

constructed on the fly

This constructor also builds the base class data for inherited models. However, it is used for recast models which are instantiated on the fly. Therefore it only initializes a small subset of attributes. Note that parallel_lib is managed separately from problem_db since parallel_lib is needed even in cases where problem_db is an empty envelope (i.e., use of dummy_db in Model(NoDBBaseConstructor) above.


Member Function Documentation

Model operator= ( const Model model  ) 

assignment operator

Assignment operator decrements referenceCount for old modelRep, assigns new modelRep, and increments referenceCount for new modelRep.

Iterator & subordinate_iterator (  )  [virtual]

return the sub-iterator in nested and surrogate models

return by reference requires use of dummy objects, but is important to allow use of assign_rep() since this operation must be performed on the original envelope object.

Reimplemented in DataFitSurrModel, NestedModel, and RecastModel.

Model & surrogate_model (  )  [virtual]

return the approximation sub-model in surrogate models

return by reference requires use of dummy objects, but is important to allow use of assign_rep() since this operation must be performed on the original envelope object.

Reimplemented in DataFitSurrModel, HierarchSurrModel, and RecastModel.

Model & truth_model (  )  [virtual]

return the truth sub-model in surrogate models

return by reference requires use of dummy objects, but is important to allow use of assign_rep() since this operation must be performed on the original envelope object.

Reimplemented in DataFitSurrModel, HierarchSurrModel, and RecastModel.

void update_from_subordinate_model ( bool  recurse_flag = true  )  [virtual]

propagate vars/labels/bounds/targets from the bottom up

used only for instantiate-on-the-fly model recursions (all RecastModel instantiations and alternate DataFitSurrModel instantiations). Single, Hierarchical, and Nested Models do not redefine the function since they do not support instantiate-on-the-fly. This means that the recursion will stop as soon as it encounters a Model that was instantiated normally, which is appropriate since ProblemDescDB-constructed Models use top-down information flow and do not require bottom-up updating.

Reimplemented in DataFitSurrModel, and RecastModel.

Interface & interface (  )  [virtual]

or NestedModel::optionalInterface

return by reference requires use of dummy objects, but is important to allow use of assign_rep() since this operation must be performed on the original envelope object.

Reimplemented in DataFitSurrModel, NestedModel, RecastModel, and SingleModel.

String local_eval_synchronization (  )  [virtual]

return derived model synchronization setting

SingleModels and HierarchSurrModels redefine this virtual function. A default value of "synchronous" prevents asynch local operations for:

Reimplemented in RecastModel, and SingleModel.

int local_eval_concurrency (  )  [virtual]

return derived model asynchronous evaluation concurrency

SingleModels and HierarchSurrModels redefine this virtual function.

Reimplemented in RecastModel, and SingleModel.

const String & interface_id (  )  const [virtual]

return the interface identifier

return by reference requires use of dummy objects, but is important to allow use of assign_rep() since this operation must be performed on the original envelope object.

Reimplemented in DataFitSurrModel, NestedModel, RecastModel, and SingleModel.

ModelList & subordinate_models ( bool  recurse_flag = true  ) 

return the sub-models in nested and surrogate models

since modelList is built with list insertions (using envelope copies), these models may not be used for model.assign_rep() since this operation must be performed on the original envelope object. They may, however, be used for letter-based operations (including assign_rep() on letter contents such as an interface).

void init_communicators ( const int &  max_iterator_concurrency,
bool  recurse_flag = true 
)

configuration in modelPCIterMap

The init_communicators() and derived_init_communicators() functions are stuctured to avoid performing the messageLengths estimation more than once. init_communicators() (not virtual) performs the estimation and then forwards the results to derived_init_communicators (virtual) which uses the data in different contexts.

void init_serial (  ) 

modify some default settings to behave properly in serial.

The init_serial() and derived_init_serial() functions are stuctured to separate base class (common) operations from derived class (specialized) operations.

void estimate_message_lengths (  ) 

estimate messageLengths for a model

This functionality has been pulled out of init_communicators() and defined separately so that it may be used in those cases when messageLengths is needed but model.init_communicators() is not called, e.g., for the master processor in the self-scheduling of a concurrent iterator strategy.

void assign_rep ( Model model_rep,
bool  ref_count_incr = true 
)

replaces existing letter with a new one

Similar to the assignment operator, the assign_rep() function decrements referenceCount for the old modelRep and assigns the new modelRep. It is different in that it is used for publishing derived class letters to existing envelopes, as opposed to sharing representations among multiple envelopes (in particular, assign_rep is passed a letter object and operator= is passed an envelope object). Letter assignment supports two models as governed by ref_count_incr:

int derivative_concurrency (  )  const

return the gradient concurrency for use in parallel configuration logic

This function assumes derivatives with respect to the active continuous variables. Therefore, concurrency with respect to the inactive continuous variables is not captured.

Model * get_model ( ProblemDescDB problem_db  )  [private]

Used by the envelope to instantiate the correct letter class.

Used only by the envelope constructor to initialize modelRep to the appropriate derived type, as given by the modelType attribute.

int estimate_derivatives ( const ShortArray map_asv,
const ShortArray fd_grad_asv,
const ShortArray fd_hess_asv,
const ShortArray quasi_hess_asv,
const ActiveSet original_set,
const bool  asynch_flag 
) [private]

method_source) in the numerical gradient specification.

Estimate derivatives by computing finite difference gradients, finite difference Hessians, and/or quasi-Newton Hessians. The total number of finite difference evaluations is returned for use by synchronize() to track response arrays, and it could be used to improve management of max_function_evaluations within the iterators.

void synchronize_derivatives ( const Variables vars,
const ResponseArray fd_responses,
Response new_response,
const ShortArray fd_grad_asv,
const ShortArray fd_hess_asv,
const ShortArray quasi_hess_asv,
const ActiveSet original_set 
) [private]

objects (fd_grad_responses) into a single response (new_response)

Merge an array of fd_responses into a single new_response. This function is used both by synchronous compute_response() for the case of asynchronous estimate_derivatives() and by synchronize() for the case where one or more asynch_compute_response() calls has employed asynchronous estimate_derivatives().

void update_response ( const Variables vars,
Response new_response,
const ShortArray fd_grad_asv,
const ShortArray fd_hess_asv,
const ShortArray quasi_hess_asv,
const ActiveSet original_set,
Response initial_map_response,
const RealMatrix new_fn_grads,
const RealMatrixArray new_fn_hessians 
) [private]

overlay results to update a response object

Overlay the initial_map_response with numerically estimated new_fn_grads and new_fn_hessians to populate new_response as governed by asv vectors. Quasi-Newton secant Hessian updates are also performed here, since this is where the gradient data needed for the updates is first consolidated. Convenience function used by estimate_derivatives() for the synchronous case and by synchronize_derivatives() for the asynchronous case.

void update_quasi_hessians ( const Variables vars,
Response new_response,
const ActiveSet original_set 
) [private]

perform quasi-Newton Hessian updates

quasi-Newton updates are performed for approximating response function Hessians using BFGS or SR1 formulations. These Hessians are supported only for the active continuous variables, and a check is performed on the DVV prior to invoking the function.

bool manage_asv ( const ShortArray asv_in,
ShortArray map_asv_out,
ShortArray fd_grad_asv_out,
ShortArray fd_hess_asv_out,
ShortArray quasi_hess_asv_out 
) [private]

Coordinates usage of estimate_derivatives() calls based on asv_in.

Splits asv_in total request into map_asv_out, fd_grad_asv_out, fd_hess_asv_out, and quasi_hess_asv_out as governed by the responses specification. If the returned use_est_deriv is true, then these asv outputs are used by estimate_derivatives() for the initial map, finite difference gradient evals, finite difference Hessian evals, and quasi-Hessian updates, respectively. If the returned use_est_deriv is false, then only map_asv_out is used.


The documentation for this class was generated from the following files:
Generated on Wed Nov 5 19:54:06 2008 for DAKOTA by  doxygen 1.5.1