Classes | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
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.

Classes

struct  FDhelp
 auxiliary struct and function returning finite-difference step size, possibly adjusted for bounds More...

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 Modelsubordinate_model ()
 return a single sub-model defined from subModel in nested and recast models and truth_model() in surrogate models; used for a directed dive through model recursions that may bypass some components.
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 ()
 return the interface employed by the derived model class, if present: SingleModel::userDefinedInterface, DataFitSurrModel::approxInterface, or NestedModel::optionalInterface
virtual void primary_response_fn_weights (const RealVector &wts, bool recurse_flag=true)
 set the relative weightings for multiple objective functions or least squares terms
virtual void surrogate_bypass (bool bypass_flag)
 deactivate/reactivate the approximations for any/all surrogate 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)
 build a new SurrogateModel approximation using/enforcing response at vars
virtual void update_approximation (bool rebuild_flag)
 replace the approximation data within an existing surrogate based on data updates propagated elsewhere
virtual void update_approximation (const Variables &vars, const Response &response, bool rebuild_flag)
 replace the anchor point data within an existing surrogate
virtual void update_approximation (const VariablesArray &vars_array, const ResponseArray &resp_array, bool rebuild_flag)
 replace the data points within an existing surrogate
virtual void append_approximation (bool rebuild_flag)
 append to the existing approximation data within a surrogate based on data updates propagated elsewhere
virtual void append_approximation (const Variables &vars, const Response &response, bool rebuild_flag)
 append a single point to an existing surrogate's data
virtual void append_approximation (const VariablesArray &vars_array, const ResponseArray &resp_array, bool rebuild_flag)
 append multiple points to an existing surrogate's data
virtual void pop_approximation (bool save_sdp_set)
 remove the previous data set addition to a surrogate (e.g., due to a previous append_approximation() call); flag manages saving of SurrogateDataPoint set for use in restore_approximation()
virtual void restore_approximation ()
 restore a previous approximation data state within a surrogate
virtual bool restore_available ()
 query for whether a trial increment is restorable within a surrogate
virtual void finalize_approximation ()
 finalize an approximation by applying all previous trial increments
virtual bool force_rebuild ()
 determine whether a surrogate model rebuild should be forced based on changes in the inactive data
virtual std::vector
< Approximation > & 
approximations ()
 retrieve the set of Approximations within a DataFitSurrModel
virtual const RealVectorArray & approximation_coefficients ()
 retrieve the approximation coefficients from each Approximation within a DataFitSurrModel
virtual void approximation_coefficients (const RealVectorArray &approx_coeffs)
 set the approximation coefficients for each Approximation within a DataFitSurrModel
virtual const RealVector & approximation_variances (const RealVector &c_vars)
 retrieve the approximation variances from each Approximation within a DataFitSurrModel
virtual const SDPList & approximation_data (size_t index)
 retrieve the approximation data from a particular Approximation 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 ()
 return flag indicating use of automatic correction within this 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)
 update component parallel mode for supporting parallelism in a model's interface component, sub-model component, or neither component [componentParallelMode = 0 (none), 1 (INTERFACE/APPROX_INTERFACE/OPTIONAL_INTERFACE/LF_MODEL/SURROGATE_MODEL), 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 ()
 Service job requests received from the master. Completes when a termination message is received from stop_servers().
virtual void stop_servers ()
 Executed by the master to terminate all server operations for a particular model when iteration on the model is complete.
virtual bool derived_master_overload () const
 Return a flag indicating the combination of multiprocessor evaluations and a dedicated master iterator scheduling. Used in synchronous compute_response functions to prevent the error of trying to run a multiprocessor job on the master.
virtual void inactive_view (short view, bool recurse_flag=true)
 update the Model's inactive view based on higher level (nested) context
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 (std::ostream &s, bool minimal_header=false, bool relative_count=true) const
 Print an evaluation summary for the Model.
ModelList & subordinate_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 ()
 Spawn an asynchronous job (or jobs) that computes the value of the Response at currentVariables (default ActiveSet).
void asynch_compute_response (const ActiveSet &set)
 Spawn an asynchronous job (or jobs) that computes the value of the Response at currentVariables (specified ActiveSet).
const IntResponseMap & synchronize ()
 Execute a blocking scheduling algorithm to collect the complete set of results from a group of asynchronous evaluations.
const IntResponseMap & synchronize_nowait ()
 Execute a nonblocking scheduling algorithm to collect all available results from a group of asynchronous evaluations.
void init_communicators (const int &max_iterator_concurrency, bool recurse_flag=true)
 allocate communicator partitions for a model and store configuration in modelPCIterMap
void init_serial ()
 for cases where init_communicators() will not be called, modify some default settings to behave properly in serial.
void set_communicators (const int &max_iterator_concurrency, bool recurse_flag=true)
 set active parallel configuration for the model (set modelPCIter from modelPCIterMap)
void free_communicators (const int &max_iterator_concurrency, bool recurse_flag=true)
 deallocate communicator partitions for a model
void stop_configurations ()
 called from Strategy::init_iterator() for iteratorComm rank 0 to terminate serve_configurations() on other iteratorComm processors
int serve_configurations ()
 called from Strategy::init_iterator() for iteratorComm rank != 0 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
 returns total number of vars
size_t cv () const
 returns number of active continuous variables
size_t div () const
 returns number of active discrete integer vars
size_t drv () const
 returns number of active discrete real vars
size_t icv () const
 returns number of inactive continuous variables
size_t idiv () const
 returns number of inactive discrete integer vars
size_t idrv () const
 returns number of inactive discrete real vars
size_t acv () const
 returns total number of continuous variables
size_t adiv () const
 returns total number of discrete integer vars
size_t adrv () const
 returns total number of discrete real vars
void active_variables (const Variables &vars)
 set the active variables in currentVariables
const RealVector & continuous_variables () const
 return the active continuous variables from currentVariables
void continuous_variables (const RealVector &c_vars)
 set the active continuous variables in currentVariables
void continuous_variable (const Real &c_var, const size_t &i)
 set an active continuous variable in currentVariables
const IntVector & discrete_int_variables () const
 return the active discrete integer variables from currentVariables
void discrete_int_variables (const IntVector &d_vars)
 set the active discrete integer variables in currentVariables
void discrete_int_variable (const int &d_var, const size_t &i)
 set an active discrete integer variable in currentVariables
const RealVector & discrete_real_variables () const
 return the active discrete real variables from currentVariables
void discrete_real_variables (const RealVector &d_vars)
 set the active discrete real variables in currentVariables
void discrete_real_variable (const Real &d_var, const size_t &i)
 set an active discrete real variable in currentVariables
UShortMultiArrayConstView continuous_variable_types () const
 return the active continuous variable types from currentVariables
UShortMultiArrayConstView discrete_int_variable_types () const
 return the active discrete variable types from currentVariables
UShortMultiArrayConstView discrete_real_variable_types () const
 return the active discrete variable types from currentVariables
SizetMultiArrayConstView continuous_variable_ids () const
 return the active continuous variable identifiers from currentVariables
const RealVector & inactive_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 IntVector & inactive_discrete_int_variables () const
 return the inactive discrete variables in currentVariables
void inactive_discrete_int_variables (const IntVector &i_d_vars)
 set the inactive discrete variables in currentVariables
const RealVector & inactive_discrete_real_variables () const
 return the inactive discrete variables in currentVariables
void inactive_discrete_real_variables (const RealVector &i_d_vars)
 set the inactive discrete variables in currentVariables
SizetMultiArrayConstView inactive_continuous_variable_ids () const
 return the inactive continuous variable identifiers from currentVariables
const 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
void all_continuous_variable (const Real &a_c_var, const size_t &i)
 set a variable within the all continuous variables in currentVariables
const IntVector & all_discrete_int_variables () const
 return all discrete variables in currentVariables
void all_discrete_int_variables (const IntVector &a_d_vars)
 set all discrete variables in currentVariables
void all_discrete_int_variable (const int &a_d_var, const size_t &i)
 set a variable within the all discrete variables in currentVariables
const RealVector & all_discrete_real_variables () const
 return all discrete variables in currentVariables
void all_discrete_real_variables (const RealVector &a_d_vars)
 set all discrete variables in currentVariables
void all_discrete_real_variable (const Real &a_d_var, const size_t &i)
 set a variable within the all discrete variables in currentVariables
UShortMultiArrayConstView all_continuous_variable_types () const
 return all continuous variable types from currentVariables
UShortMultiArrayConstView all_discrete_int_variable_types () const
 return all discrete variable types from currentVariables
UShortMultiArrayConstView all_discrete_real_variable_types () const
 return all discrete variable types from currentVariables
SizetMultiArrayConstView all_continuous_variable_ids () const
 return all continuous variable identifiers from currentVariables
const IntSetArray & discrete_design_set_int_values () const
 return the sets of values available for each of the discrete design set integer variables
void discrete_design_set_int_values (const IntSetArray &isa)
 define the sets of values available for each of the discrete design set integer variables
const RealSetArray & discrete_design_set_real_values () const
 return the sets of values available for each of the discrete design set integer variables
void discrete_design_set_real_values (const RealSetArray &rsa)
 define the sets of values available for each of the discrete design set integer variables
Pecos::DistributionParams & distribution_parameters ()
 return distribParams
void distribution_parameters (const Pecos::DistributionParams &dp)
 set distribParams
const IntSetArray & discrete_state_set_int_values () const
 return the sets of values available for each of the discrete state set integer variables
void discrete_state_set_int_values (const IntSetArray &isa)
 define the sets of values available for each of the discrete state set integer variables
const RealSetArray & discrete_state_set_real_values () const
 return the sets of values available for each of the discrete state set integer variables
void discrete_state_set_real_values (const RealSetArray &rsa)
 define the sets of values available for each of the discrete state set integer variables
StringMultiArrayConstView continuous_variable_labels () const
 return the active continuous variable labels from currentVariables
void continuous_variable_labels (StringMultiArrayConstView c_v_labels)
 set the active continuous variable labels in currentVariables
StringMultiArrayConstView discrete_int_variable_labels () const
 return the active discrete variable labels from currentVariables
void discrete_int_variable_labels (StringMultiArrayConstView d_v_labels)
 set the active discrete variable labels in currentVariables
StringMultiArrayConstView discrete_real_variable_labels () const
 return the active discrete variable labels from currentVariables
void discrete_real_variable_labels (StringMultiArrayConstView d_v_labels)
 set the active discrete variable labels in currentVariables
StringMultiArrayConstView inactive_continuous_variable_labels () const
 return the inactive continuous variable labels in currentVariables
void inactive_continuous_variable_labels (StringMultiArrayConstView i_c_v_labels)
 set the inactive continuous variable labels in currentVariables
StringMultiArrayConstView inactive_discrete_int_variable_labels () const
 return the inactive discrete variable labels in currentVariables
void inactive_discrete_int_variable_labels (StringMultiArrayConstView i_d_v_labels)
 set the inactive discrete variable labels in currentVariables
StringMultiArrayConstView inactive_discrete_real_variable_labels () const
 return the inactive discrete variable labels in currentVariables
void inactive_discrete_real_variable_labels (StringMultiArrayConstView i_d_v_labels)
 set the inactive discrete variable labels in currentVariables
StringMultiArrayConstView all_continuous_variable_labels () const
 return all continuous variable labels in currentVariables
void all_continuous_variable_labels (StringMultiArrayConstView a_c_v_labels)
 set all continuous variable labels in currentVariables
void all_continuous_variable_label (const String &a_c_v_label, const size_t &i)
 set a label within the all continuous labels in currentVariables
StringMultiArrayConstView all_discrete_int_variable_labels () const
 return all discrete variable labels in currentVariables
void all_discrete_int_variable_labels (StringMultiArrayConstView a_d_v_labels)
 set all discrete variable labels in currentVariables
void all_discrete_int_variable_label (const String &a_d_v_label, const size_t &i)
 set a label within the all discrete labels in currentVariables
StringMultiArrayConstView all_discrete_real_variable_labels () const
 return all discrete variable labels in currentVariables
void all_discrete_real_variable_labels (StringMultiArrayConstView a_d_v_labels)
 set all discrete variable labels in currentVariables
void all_discrete_real_variable_label (const String &a_d_v_label, const size_t &i)
 set a label within the all discrete labels in currentVariables
const StringArray & response_labels () const
 return the response labels from currentResponse
void response_labels (const StringArray &resp_labels)
 set the response labels in currentResponse
const RealVector & continuous_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 RealVector & continuous_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 IntVector & discrete_int_lower_bounds () const
 return the active discrete lower bounds from userDefinedConstraints
void discrete_int_lower_bounds (const IntVector &d_l_bnds)
 set the active discrete lower bounds in userDefinedConstraints
const IntVector & discrete_int_upper_bounds () const
 return the active discrete upper bounds from userDefinedConstraints
void discrete_int_upper_bounds (const IntVector &d_u_bnds)
 set the active discrete upper bounds in userDefinedConstraints
const RealVector & discrete_real_lower_bounds () const
 return the active discrete lower bounds from userDefinedConstraints
void discrete_real_lower_bounds (const RealVector &d_l_bnds)
 set the active discrete lower bounds in userDefinedConstraints
const RealVector & discrete_real_upper_bounds () const
 return the active discrete upper bounds from userDefinedConstraints
void discrete_real_upper_bounds (const RealVector &d_u_bnds)
 set the active discrete upper bounds in userDefinedConstraints
const RealVector & inactive_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 RealVector & inactive_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 IntVector & inactive_discrete_int_lower_bounds () const
 return the inactive discrete lower bounds in userDefinedConstraints
void inactive_discrete_int_lower_bounds (const IntVector &i_d_l_bnds)
 set the inactive discrete lower bounds in userDefinedConstraints
const IntVector & inactive_discrete_int_upper_bounds () const
 return the inactive discrete upper bounds in userDefinedConstraints
void inactive_discrete_int_upper_bounds (const IntVector &i_d_u_bnds)
 set the inactive discrete upper bounds in userDefinedConstraints
const RealVector & inactive_discrete_real_lower_bounds () const
 return the inactive discrete lower bounds in userDefinedConstraints
void inactive_discrete_real_lower_bounds (const RealVector &i_d_l_bnds)
 set the inactive discrete lower bounds in userDefinedConstraints
const RealVector & inactive_discrete_real_upper_bounds () const
 return the inactive discrete upper bounds in userDefinedConstraints
void inactive_discrete_real_upper_bounds (const RealVector &i_d_u_bnds)
 set the inactive discrete upper bounds in userDefinedConstraints
const 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
void all_continuous_lower_bound (const Real &a_c_l_bnd, const size_t &i)
 set a lower bound within continuous lower bounds in userDefinedConstraints
const 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
void all_continuous_upper_bound (const Real &a_c_u_bnd, const size_t &i)
 set an upper bound within all continuous upper bounds in userDefinedConstraints
const IntVector & all_discrete_int_lower_bounds () const
 return all discrete lower bounds in userDefinedConstraints
void all_discrete_int_lower_bounds (const IntVector &a_d_l_bnds)
 set all discrete lower bounds in userDefinedConstraints
void all_discrete_int_lower_bound (const int &a_d_l_bnd, const size_t &i)
 set a lower bound within all discrete lower bounds in userDefinedConstraints
const IntVector & all_discrete_int_upper_bounds () const
 return all discrete upper bounds in userDefinedConstraints
void all_discrete_int_upper_bounds (const IntVector &a_d_u_bnds)
 set all discrete upper bounds in userDefinedConstraints
void all_discrete_int_upper_bound (const int &a_d_u_bnd, const size_t &i)
 set an upper bound within all discrete upper bounds in userDefinedConstraints
const RealVector & all_discrete_real_lower_bounds () const
 return all discrete lower bounds in userDefinedConstraints
void all_discrete_real_lower_bounds (const RealVector &a_d_l_bnds)
 set all discrete lower bounds in userDefinedConstraints
void all_discrete_real_lower_bound (const Real &a_d_l_bnd, const size_t &i)
 set a lower bound within all discrete lower bounds in userDefinedConstraints
const RealVector & all_discrete_real_upper_bounds () const
 return all discrete upper bounds in userDefinedConstraints
void all_discrete_real_upper_bounds (const RealVector &a_d_u_bnds)
 set all discrete upper bounds in userDefinedConstraints
void all_discrete_real_upper_bound (const Real &a_d_u_bnd, const size_t &i)
 set an upper bound within 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 RealMatrix & linear_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 RealVector & linear_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 RealVector & linear_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 RealMatrix & linear_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 RealVector & linear_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 RealVector & nonlinear_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 RealVector & nonlinear_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 RealVector & nonlinear_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 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)
bool ignore_bounds () const
 option for ignoring bounds when numerically estimating derivatives
bool central_hess () const
 option for using old 2nd-order scheme when computing finite-diff Hessian
const RealVector & fd_gradient_step_size () const
 return the finite difference gradient step size (fdGradSS)
const IntList & gradient_id_analytic () const
 return the mixed gradient analytic IDs (gradIdAnalytic)
const IntList & gradient_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 RealVector & fd_hessian_by_grad_step_size () const
 return gradient-based finite difference Hessian step size (fdHessByGradSS)
const RealVector & fd_hessian_by_fn_step_size () const
 return function-based finite difference Hessian step size (fdHessByFnSS)
const IntList & hessian_id_analytic () const
 return the mixed Hessian analytic IDs (hessIdAnalytic)
const IntList & hessian_id_numerical () const
 return the mixed Hessian analytic IDs (hessIdNumerical)
const IntList & hessian_id_quasi () const
 return the mixed Hessian analytic IDs (hessIdQuasi)
const RealVector & primary_response_fn_weights () const
 get the relative weightings for multiple objective functions or least 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 IntArray & message_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)
 set modelAutoGraphicsFlag to activate posting of graphics data within compute_response/synchronize functions (automatic graphics posting in 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
 returns modelRep for access to derived class member functions that are not mapped to the top Model level
Real FDstep1 (FDhelp *, Real h_mag, size_t i)
 function returning finite-difference step size (affected by bounds)
Real FDstep2 (FDhelp *, Real h, size_t j)
 function returning second central-difference step size (affected by bounds)

Protected Member Functions

 Model (BaseConstructor, ProblemDescDB &problem_db)
 constructor initializing the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the derived class constructors - Coplien, p. 139)
 Model (NoDBBaseConstructor, ParallelLibrary &parallel_lib, const SharedVariablesData &svd, const ActiveSet &set)
 constructor initializing base class for derived model class instances constructed on the fly
 Model (RecastBaseConstructor, ProblemDescDB &problem_db, ParallelLibrary &parallel_lib)
 constructor initializing base class for recast model class instances 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 IntResponseMap & derived_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
 the set of current variables used by the model for performing function evaluations
size_t numDerivVars
 the number of active continuous variables used in computing most response derivatives (i.e., in places such as quasi-Hessians and response corrections where only the active continuous variables are supported)
Response currentResponse
 the set of current responses that holds the results of model function evaluations
size_t numFns
 the number of functions in currentResponse
Constraints userDefinedConstraints
 Explicit constraints on variables are maintained in the Constraints class hierarchy. Currently, this includes linear constraints and bounds, but could be extended in the future to include other explicit constraints which (1) have their form specified by the user, and (2) are not catalogued in Response since their form and coefficients are published to 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
bool ignoreBounds
 option to ignore bounds when computing < finite differences
bool centralHess
 option to use old 2nd-order finite diffs for Hessians
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
 length of packed MPI buffers containing vars, vars/set, response, 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
 the component parallelism mode: 0 (none), 1 (INTERFACE/LF_MODEL), or 2 (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
IntSetArray discreteDesignSetIntValues
 array of IntSet's, each containing the set of allowable integer values corresponding to discrete design integer set variable
RealSetArray discreteDesignSetRealValues
 array of RealSet's, each containing the set of allowable real values corresponding to discrete design real set variable
Pecos::DistributionParams distParams
 container for random variable distribution parameters
IntSetArray discreteStateSetIntValues
 array of IntSet's, each containing the set of allowable integer values corresponding to discrete state integer set variable
RealSetArray discreteStateSetRealValues
 array of RealSet's, each containing the set of allowable real values corresponding to discrete state real set variable
RealVector primaryRespFnWts
 primary response function weightings (either weights for 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)
 evaluate numerical gradients using finite differences. This routine is selected with "method_source dakota" (the default method_source) in the numerical gradient specification.
void synchronize_derivatives (const Variables &vars, const IntResponseMap &fd_responses, Response &new_response, const ShortArray &fd_grad_asv, const ShortArray &fd_hess_asv, const ShortArray &quasi_hess_asv, const ActiveSet &original_set)
 combine results from an array of finite difference response 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 RealSymMatrixArray &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
int modelEvalId
 evaluation counter for top-level compute_response() and asynch_compute_response() calls. Differs from lower level counters in case of numerical derivative estimation (several lower level evaluations are assimilated into a single higher level evaluation)
bool estDerivsFlag
 flags presence of estimated derivatives within a set of calls to asynch_compute_response()
int evaluationCapacity
 capacity for concurrent evaluations supported by the Model
std::map< int, ParConfigLIter > modelPCIterMap
 map<> used for tracking modelPCIter instances using concurrency level as the lookup key
bool initCommsBcastFlag
 flag for determining need to bcast the max concurrency from init_communicators(); set from Strategy::init_iterator()
bool modelAutoGraphicsFlag
 flag for posting of graphics data within compute_response (automatic graphics posting in the model as opposed to graphics posting at the strategy level)
ModelList modelList
 used to collect sub-models for subordinate_models()
VariablesList varsList
 history of vars populated in asynch_compute_response() and used in synchronize().
std::list< ShortArray > asvList
 if estimate_derivatives() is used, transfers ASVs from asynch_compute_response() to synchronize()
std::list< ActiveSetsetList
 if estimate_derivatives() is used, transfers ActiveSets from asynch_compute_response() to synchronize()
BoolList initialMapList
 transfers initial_map flag values from estimate_derivatives() to synchronize_derivatives()
BoolList dbCaptureList
 transfers db_capture flag values from estimate_derivatives() to synchronize_derivatives()
ResponseList dbResponseList
 transfers database captures from estimate_derivatives() to synchronize_derivatives()
RealList deltaList
 transfers deltas from estimate_derivatives() to synchronize_derivatives()
IntIntMap numFDEvalsMap
 tracks the number of evaluations used within estimate_derivatives(). Used in synchronize() as a key for combining finite difference responses into numerical gradients.
IntIntMap rawEvalIdMap
 maps from the raw evaluation ids returned by derived_synchronize() and derived_synchronize_nowait() to the corresponding modelEvalId. Used for rekeying responseMap.
RealVectorArray 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
RealSymMatrixArray quasiHessians
 quasi-Newton Hessian approximations
SizetArray numQuasiUpdates
 number of quasi-Newton Hessian updates applied
IntResponseMap responseMap
 used to return a map of responses for asynchronous evaluations in final concatenated form. The similar map in Interface contains raw responses.
IntResponseMap graphicsRespMap
 used to cache the data returned from derived_synchronize_nowait() 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.

References Dakota::abort_handler(), Model::get_model(), and Model::modelRep.

Model ( const Model model)

copy constructor

Copy constructor manages sharing of modelRep and incrementing of referenceCount.

References Model::modelRep, and Model::referenceCount.

~Model ( ) [virtual]

destructor

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

References Model::modelRep, and Model::referenceCount.

Model ( BaseConstructor  ,
ProblemDescDB problem_db 
) [protected]

constructor initializing the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the 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).

References Model::fdGradSS, Model::fdHessByFnSS, Model::fdHessByGradSS, Model::gradIdNumerical, Model::gradType, Model::hessIdNumerical, and Model::hessType.

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

constructor initializing base class for recast model class instances 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.

References Model::modelRep, and Model::referenceCount.

Iterator & subordinate_iterator ( ) [virtual]
Model & subordinate_model ( ) [virtual]

return a single sub-model defined from subModel in nested and recast models and truth_model() in surrogate models; used for a directed dive through model recursions that may bypass some components.

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 NestedModel, RecastModel, and SurrogateModel.

References Dakota::dummy_model, Model::modelRep, and Model::subordinate_model().

Referenced by NonDGlobalReliability::expected_feasibility(), NonDGlobalReliability::expected_improvement(), SurrogateModel::force_rebuild(), Minimizer::initialize_scaling(), NonDGlobalReliability::optimize_gaussian_process(), LeastSq::post_run(), COLINOptimizer::post_run(), Optimizer::primary_resp_recast(), LeastSq::primary_resp_recast(), Model::subordinate_model(), and DataFitSurrModel::update_global().

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.

References Dakota::dummy_model, Model::modelRep, and Model::surrogate_model().

Referenced by SurrogateModel::apply_multiplicative_correction(), SurrBasedLocalMinimizer::find_center_approx(), SurrBasedLocalMinimizer::minimize_surrogates(), SurrBasedGlobalMinimizer::minimize_surrogates(), SurrBasedLocalMinimizer::SurrBasedLocalMinimizer(), RecastModel::surrogate_model(), and Model::surrogate_model().

Model & truth_model ( ) [virtual]
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.

References Model::modelRep, and Model::update_from_subordinate_model().

Referenced by NonDLocalReliability::initialize_class_data(), NonDExpansion::initialize_expansion(), Optimizer::initialize_run(), LeastSq::initialize_run(), EffGlobalMinimizer::minimize_surrogates_on_model(), NonDGlobalReliability::optimize_gaussian_process(), NonDLocalInterval::quantify_uncertainty(), NonDGlobalInterval::quantify_uncertainty(), RecastModel::update_from_subordinate_model(), DataFitSurrModel::update_from_subordinate_model(), and Model::update_from_subordinate_model().

Interface & interface ( ) [virtual]

return the interface employed by the derived model class, if present: SingleModel::userDefinedInterface, DataFitSurrModel::approxInterface, 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.

References Dakota::dummy_interface, Model::interface(), and Model::modelRep.

Referenced by RecastModel::interface(), Model::interface(), and SurrBasedGlobalMinimizer::minimize_surrogates().

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:

  • NestedModels: a subIterator can support message passing parallelism, but not asynch local.
  • DataFitSurrModels: while asynch evals on approximations will work due to some added bookkeeping, avoiding them is preferable.

Reimplemented in RecastModel, and SingleModel.

References Model::local_eval_synchronization(), and Model::modelRep.

Referenced by Model::init_serial(), RecastModel::local_eval_synchronization(), Model::local_eval_synchronization(), and Model::set_communicators().

int local_eval_concurrency ( ) [virtual]

return derived model asynchronous evaluation concurrency

SingleModels and HierarchSurrModels redefine this virtual function.

Reimplemented in RecastModel, and SingleModel.

References Model::local_eval_concurrency(), and Model::modelRep.

Referenced by RecastModel::local_eval_concurrency(), Model::local_eval_concurrency(), and Model::set_communicators().

const String & interface_id ( ) const [virtual]
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).

References Model::derived_subordinate_models(), Model::modelList, Model::modelRep, and Model::subordinate_models().

Referenced by NLPQLPOptimizer::initialize(), NCSUOptimizer::initialize(), DOTOptimizer::initialize(), CONMINOptimizer::initialize(), NonDLocalInterval::NonDLocalInterval(), NonDLocalReliability::NonDLocalReliability(), SOLBase::SOLBase(), Model::subordinate_models(), and SurrBasedLocalMinimizer::SurrBasedLocalMinimizer().

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

allocate communicator partitions for a model and store 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.

References ParallelLibrary::bcast_i(), Model::derived_init_communicators(), Model::estimate_message_lengths(), ParallelLibrary::increment_parallel_configuration(), Model::init_communicators(), Model::initCommsBcastFlag, Model::messageLengths, Model::modelPCIter, Model::modelPCIterMap, Model::modelRep, ParallelLibrary::parallel_configuration_iterator(), and Model::parallelLib.

Referenced by APPSOptimizer::APPSOptimizer(), COLINOptimizer::COLINOptimizer(), NonDExpansion::construct_expansion_sampler(), RecastModel::derived_init_communicators(), NestedModel::derived_init_communicators(), HierarchSurrModel::derived_init_communicators(), DataFitSurrModel::derived_init_communicators(), EffGlobalMinimizer::EffGlobalMinimizer(), Model::init_communicators(), Strategy::init_iterator(), JEGAOptimizer::JEGAOptimizer(), LeastSq::LeastSq(), NonDLocalReliability::method_recourse(), NonDLocalInterval::method_recourse(), NonDBayesCalibration::NonDBayesCalibration(), NonDGlobalInterval::NonDGlobalInterval(), NonDGlobalReliability::NonDGlobalReliability(), NonDGPMSABayesCalibration::NonDGPMSABayesCalibration(), NonDLHSInterval::NonDLHSInterval(), NonDLocalInterval::NonDLocalInterval(), NonDLocalReliability::NonDLocalReliability(), NonDPolynomialChaos::NonDPolynomialChaos(), NonDStochCollocation::NonDStochCollocation(), Optimizer::Optimizer(), Model::serve_configurations(), SNLLOptimizer::SNLLOptimizer(), SurrBasedGlobalMinimizer::SurrBasedGlobalMinimizer(), and SurrBasedLocalMinimizer::SurrBasedLocalMinimizer().

void init_serial ( )

for cases where init_communicators() will not be called, 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.

References Model::asynchEvalFlag, Model::derived_init_serial(), Model::init_serial(), Model::local_eval_synchronization(), and Model::modelRep.

Referenced by RecastModel::derived_init_serial(), NestedModel::derived_init_serial(), HierarchSurrModel::derived_init_serial(), DataFitSurrModel::derived_init_serial(), and Model::init_serial().

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.

References Response::active_set_derivative_vector(), Response::copy(), Model::currentResponse, Model::currentVariables, Model::estimate_message_lengths(), Model::interface_id(), Model::messageLengths, Model::modelRep, Model::numFns, Model::parallelLib, MPIPackBuffer::reset(), MPIPackBuffer::size(), and ParallelLibrary::world_size().

Referenced by ConcurrentStrategy::ConcurrentStrategy(), Model::estimate_message_lengths(), and Model::init_communicators().

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:

  • ref_count_incr = true (default): the incoming letter belongs to another envelope. In this case, increment the reference count in the normal manner so that deallocation of the letter is handled properly.
  • ref_count_incr = false: the incoming letter is instantiated on the fly and has no envelope. This case is modeled after get_model(): a letter is dynamically allocated using new and passed into assign_rep, the letter's reference count is not incremented, and the letter is not remotely deleted (its memory management is passed over to the envelope).

References Dakota::abort_handler(), Model::model_rep(), Model::modelRep, and Model::referenceCount.

Referenced by NonDExpansion::construct_g_u_model(), EffGlobalMinimizer::EffGlobalMinimizer(), LeastSq::LeastSq(), NonDBayesCalibration::NonDBayesCalibration(), NonDGlobalInterval::NonDGlobalInterval(), NonDGlobalReliability::NonDGlobalReliability(), NonDLocalInterval::NonDLocalInterval(), NonDLocalReliability::NonDLocalReliability(), NonDPolynomialChaos::NonDPolynomialChaos(), NonDStochCollocation::NonDStochCollocation(), Optimizer::Optimizer(), and SurrBasedLocalMinimizer::SurrBasedLocalMinimizer().

int derivative_concurrency ( ) const
Real FDstep1 ( FDhelp fdh,
Real  h_mag,
size_t  j 
)

function returning finite-difference step size (affected by bounds)

Auxiliary function to compute forword or first central-difference step size.

Referenced by Model::estimate_derivatives().

Real FDstep2 ( FDhelp fdh,
Real  h,
size_t  j 
)

function returning second central-difference step size (affected by bounds)

Auxiliary function to second central-difference step size, honoring bounds.

Referenced by Model::estimate_derivatives().

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.

References ProblemDescDB::get_string(), Model::model_type(), and Model::modelType.

Referenced by Model::Model().

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]

evaluate numerical gradients using finite differences. This routine is selected with "method_source dakota" (the default 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.

! new logic

References Model::acv(), Model::all_continuous_lower_bounds(), Model::all_continuous_upper_bounds(), Variables::all_continuous_variable_ids(), Variables::all_continuous_variables(), Model::centralHess, Model::continuous_lower_bounds(), Model::continuous_upper_bounds(), Variables::continuous_variable_ids(), Variables::continuous_variables(), Response::copy(), Dakota::copy_data(), Model::currentResponse, Model::currentVariables, Model::cv(), Dakota::data_pairs, Model::dbCaptureList, Model::dbResponseList, Model::deltaList, ActiveSet::derivative_vector(), Model::derived_asynch_compute_response(), Model::derived_compute_response(), Model::fdGradSS, Model::fdHessByFnSS, Model::fdHessByGradSS, Model::FDstep1(), Model::FDstep2(), Response::function_gradients(), Response::function_values(), Model::icv(), Model::ignoreBounds, Model::inactive_continuous_lower_bounds(), Model::inactive_continuous_upper_bounds(), Variables::inactive_continuous_variable_ids(), Variables::inactive_continuous_variables(), Model::initialMapList, Model::interface_id(), Model::intervalType, Dakota::lookup_by_val(), Model::numFns, Model::outputLevel, ActiveSet::request_vector(), Response::update(), and Model::update_response().

Referenced by Model::asynch_compute_response(), and Model::compute_response().

void synchronize_derivatives ( const Variables vars,
const IntResponseMap &  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]
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 RealSymMatrixArray &  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.

References Response::active_set_request_vector(), Model::auto_correction(), Variables::continuous_variable_ids(), Response::copy(), Model::currentResponse, Model::currentVariables, ActiveSet::derivative_vector(), Response::function_gradients(), Response::function_hessians(), Response::function_values(), Model::hessIdQuasi, Model::hessType, Response::is_null(), Model::numFns, Model::outputLevel, Model::quasiHessians, ActiveSet::request_vector(), Response::reset_inactive(), Model::supportsEstimDerivs, and Model::update_quasi_hessians().

Referenced by Model::estimate_derivatives(), and Model::synchronize_derivatives().

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.

References Dakota::contains(), Variables::continuous_variables(), Dakota::copy_data(), Model::fnGradsPrev, Response::function_gradients(), Model::hessIdQuasi, Model::hessType, Model::modelType, Model::numDerivVars, Model::numFns, Model::numQuasiUpdates, Model::outputLevel, Model::quasiHessians, Model::quasiHessType, ActiveSet::request_vector(), and Model::xPrev.

Referenced by Model::update_response().

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.

References Dakota::abort_handler(), Model::auto_correction(), Dakota::contains(), Model::gradIdAnalytic, Model::gradIdNumerical, Model::gradType, Model::hessIdAnalytic, Model::hessIdNumerical, Model::hessIdQuasi, Model::hessType, Model::intervalType, Model::methodSrc, and Model::supportsEstimDerivs.

Referenced by Model::asynch_compute_response(), and Model::compute_response().


The documentation for this class was generated from the following files: