Dakota
Version 6.20
Explore and Predict with Confidence
|
Base class for the interface class hierarchy. More...
Public Member Functions | |
Interface () | |
default constructor More... | |
Interface (ProblemDescDB &problem_db) | |
standard constructor for envelope More... | |
Interface (const Interface &interface_in) | |
copy constructor More... | |
virtual | ~Interface () |
destructor | |
Interface | operator= (const Interface &interface_in) |
assignment operator | |
virtual void | map (const Variables &vars, const ActiveSet &set, Response &response, bool asynch_flag=false) |
the function evaluator: provides a "mapping" from the variables to the responses. | |
virtual const IntResponseMap & | synchronize () |
recovers data from a series of asynchronous evaluations (blocking) | |
virtual const IntResponseMap & | synchronize_nowait () |
recovers data from a series of asynchronous evaluations (nonblocking) | |
virtual void | serve_evaluations () |
evaluation server function for multiprocessor executions | |
virtual void | stop_evaluation_servers () |
send messages from iterator rank 0 to terminate evaluation servers | |
virtual void | init_communicators (const IntArray &message_lengths, int max_eval_concurrency) |
allocate communicator partitions for concurrent evaluations within an iterator and concurrent multiprocessor analyses within an evaluation. | |
virtual void | set_communicators (const IntArray &message_lengths, int max_eval_concurrency) |
set the local parallel partition data for an interface (the partitions are already allocated in ParallelLibrary). | |
virtual void | init_serial () |
reset certain defaults for serial interface objects. | |
virtual int | asynch_local_evaluation_concurrency () const |
return the user-specified concurrency for asynch local evaluations | |
virtual short | interface_synchronization () const |
return the user-specified interface synchronization | |
virtual int | minimum_points (bool constraint_flag) const |
returns the minimum number of points required to build a particular ApproximationInterface (used by DataFitSurrModels). | |
virtual int | recommended_points (bool constraint_flag) const |
returns the recommended number of points required to build a particular ApproximationInterface (used by DataFitSurrModels). | |
virtual void | active_model_key (const Pecos::ActiveKey &key) |
activate an approximation state based on its key | |
virtual void | clear_model_keys () |
reset initial state by removing all model keys for an approximation | |
virtual void | approximation_function_indices (const SizetSet &approx_fn_indices) |
set the (currently active) approximation function index set | |
virtual void | update_approximation (const Variables &vars, const IntResponsePair &response_pr) |
updates the anchor point for an approximation | |
virtual void | update_approximation (const RealMatrix &samples, const IntResponseMap &resp_map) |
updates the current data points for an approximation | |
virtual void | update_approximation (const VariablesArray &vars_array, const IntResponseMap &resp_map) |
updates the current data points for an approximation | |
virtual void | append_approximation (const Variables &vars, const IntResponsePair &response_pr) |
appends a single point to an existing approximation | |
virtual void | append_approximation (const RealMatrix &samples, const IntResponseMap &resp_map) |
appends multiple points to an existing approximation | |
virtual void | append_approximation (const VariablesArray &vars_array, const IntResponseMap &resp_map) |
appends multiple points to an existing approximation | |
virtual void | append_approximation (const IntVariablesMap &vars_map, const IntResponseMap &resp_map) |
appends multiple points to an existing approximation | |
virtual void | replace_approximation (const IntResponsePair &response_pr) |
replace the response for a single point within an existing approximation | |
virtual void | replace_approximation (const IntResponseMap &resp_map) |
replace responses for multiple points within an existing approximation | |
virtual void | track_evaluation_ids (bool track) |
assigns trackEvalIds to activate tracking of evaluation ids within surrogate data, enabling id-based lookups for data replacement | |
virtual void | build_approximation (const RealVector &c_l_bnds, const RealVector &c_u_bnds, const IntVector &di_l_bnds, const IntVector &di_u_bnds, const RealVector &dr_l_bnds, const RealVector &dr_u_bnds) |
builds the approximation | |
virtual void | export_approximation () |
export the approximation to disk | |
virtual void | rebuild_approximation (const BitArray &rebuild_fns) |
rebuilds the approximation after a data update | |
virtual void | pop_approximation (bool save_data) |
removes data from last append from the approximation | |
virtual void | push_approximation () |
retrieves approximation data from a previous state (negates pop) | |
virtual bool | push_available () |
queries the approximation for the ability to retrieve a previous increment | |
virtual void | finalize_approximation () |
finalizes the approximation by applying all trial increments | |
virtual void | combine_approximation () |
combine the current approximation with previously stored data sets | |
virtual void | combined_to_active (bool clear_combined=true) |
promote the combined approximation to the currently active one | |
virtual void | clear_inactive () |
clear inactive approximation data | |
virtual bool | advancement_available () |
query for available advancements in approximation resolution controls | |
virtual bool | formulation_updated () const |
query for change in approximation formulation | |
virtual void | formulation_updated (bool update) |
assign an updated status for approximation formulation to force rebuild | |
virtual Real2DArray | cv_diagnostics (const StringArray &metric_types, unsigned num_folds) |
approximation cross-validation quality metrics per response function | |
virtual RealArray | challenge_diagnostics (const String &metric_type, const RealMatrix &challenge_pts) |
approximation challenge data metrics per response function | |
virtual void | clear_current_active_data () |
clears current data from an approximation interface | |
virtual void | clear_active_data () |
clears all data from an approximation interface | |
virtual SharedApproxData & | shared_approximation () |
retrieve the SharedApproxData within an ApproximationInterface | |
virtual std::vector< Approximation > & | approximations () |
retrieve the Approximations within an ApproximationInterface | |
virtual const Pecos::SurrogateData & | approximation_data (size_t fn_index) |
retrieve the approximation data from a particular Approximation within an ApproximationInterface | |
virtual const RealVectorArray & | approximation_coefficients (bool normalized=false) |
retrieve the approximation coefficients from each Approximation within an ApproximationInterface | |
virtual void | approximation_coefficients (const RealVectorArray &approx_coeffs, bool normalized=false) |
set the approximation coefficients within each Approximation within an ApproximationInterface | |
virtual const RealVector & | approximation_variances (const Variables &vars) |
retrieve the approximation variances from each Approximation within an ApproximationInterface | |
virtual const StringArray & | analysis_drivers () const |
retrieve the analysis drivers specification for application interfaces | |
virtual const String2DArray & | analysis_components () const |
retrieve the analysis components, if available | |
virtual void | discrepancy_emulation_mode (short mode) |
set discrepancy emulation mode used for approximating response differences | |
virtual bool | evaluation_cache () const |
return flag indicating usage of the global evaluation cache | |
virtual bool | restart_file () const |
return flag indicating usage of the restart file | |
virtual void | file_cleanup () const |
clean up any interface parameter/response files when aborting | |
IntResponseMap & | response_map () |
return rawResponseMap | |
void | cache_unmatched_response (int raw_id) |
migrate an unmatched response record from rawResponseMap to cachedResponseMap | |
void | cache_unmatched_responses () |
migrate all remaining response records from rawResponseMap to cachedResponseMap | |
void | assign_rep (std::shared_ptr< Interface > interface_rep) |
assign letter or replace existing letter with a new one More... | |
void | assign_rep (Interface *interface_rep, bool ref_count_incr=false) |
assign letter or replace existing letter with a new one DEPRECATED, but left for library mode clients to migrate: transfers memory ownership to the contained shared_ptr; ref_count_incr is ignored More... | |
unsigned short | interface_type () const |
returns the interface type | |
const String & | interface_id () const |
returns the interface identifier | |
int | evaluation_id () const |
returns the value of the (total) evaluation id counter for the interface | |
void | fine_grained_evaluation_counters (size_t num_fns) |
set fineGrainEvalCounters to true and initialize counters if needed | |
void | init_evaluation_counters (size_t num_fns) |
initialize fine grained evaluation counters, sizing if needed | |
void | set_evaluation_reference () |
set evaluation count reference points for the interface | |
void | print_evaluation_summary (std::ostream &s, bool minimal_header, bool relative_count) const |
print an evaluation summary for the interface | |
bool | multi_proc_eval () const |
returns a flag signaling the use of multiprocessor evaluation partitions | |
bool | iterator_eval_dedicated_master () const |
returns a flag signaling the use of a dedicated master processor at the iterator-evaluation scheduling level | |
bool | is_null () const |
function to check interfaceRep (does this envelope contain a letter?) | |
std::shared_ptr< Interface > | interface_rep () |
function to return the letter | |
void | eval_tag_prefix (const String &eval_id_str, bool append_iface_id=true) |
set the evaluation tag prefix (does not recurse) More... | |
Protected Member Functions | |
Interface (BaseConstructor, const ProblemDescDB &problem_db) | |
constructor initializes the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the derived class constructors - Coplien, p. 139) More... | |
Interface (NoDBBaseConstructor, size_t num_fns, short output_level) | |
constructor initializes the base class part of letter classes (NoDBBaseConstructor used for on the fly instantiations without a DB) | |
void | init_algebraic_mappings (const Variables &vars, const Response &response) |
Define algebraicACVIndices, algebraicACVIds, and algebraicFnIndices. | |
void | asv_mapping (const ActiveSet &total_set, ActiveSet &algebraic_set, ActiveSet &core_set) |
define the evaluation requirements for algebraic_mappings() (algebraic_set) and the core Application/Approximation mapping (core_set) from the total Interface evaluation requirements (total_set) | |
void | asv_mapping (const ActiveSet &algebraic_set, ActiveSet &total_set) |
map an algebraic ASV back to original total ordering for asynch recovery | |
void | algebraic_mappings (const Variables &vars, const ActiveSet &algebraic_set, Response &algebraic_response) |
evaluate the algebraic_response using the AMPL solver library and the data extracted from the algebraic_mappings file | |
void | response_mapping (const Response &algebraic_response, const Response &core_response, Response &total_response) |
combine the response from algebraic_mappings() with the response from derived_map() to create the total response More... | |
virtual String | final_eval_id_tag (int fn_eval_id) |
form and return the final evaluation ID tag, appending iface ID if needed | |
Protected Attributes | |
unsigned short | interfaceType |
the interface type: enum for system, fork, direct, grid, or approximation | |
String | interfaceId |
the interface specification identifier string from the DAKOTA input file | |
bool | algebraicMappings |
flag for the presence of algebraic_mappings that define the subset of an Interface's parameter to response mapping that is explicit and algebraic. | |
bool | coreMappings |
flag for the presence of non-algebraic mappings that define the core of an Interface's parameter to response mapping (using analysis_drivers for ApplicationInterface or functionSurfaces for ApproximationInterface). | |
short | outputLevel |
output verbosity level: {SILENT,QUIET,NORMAL,VERBOSE,DEBUG}_OUTPUT | |
int | currEvalId |
identifier for the current evaluation, which may differ from the evaluation counters in the case of evaluation scheduling; used on iterator master as well as server processors. Currently, this is set prior to all invocations of derived_map() for all processors. | |
bool | fineGrainEvalCounters |
controls use of fn val/grad/hess counters for detailed evaluation report | |
int | evalIdCntr |
total interface evaluation counter | |
int | newEvalIdCntr |
new (non-duplicate) interface evaluation counter | |
int | evalIdRefPt |
iteration reference point for evalIdCntr | |
int | newEvalIdRefPt |
iteration reference point for newEvalIdCntr | |
IntArray | fnValCounter |
number of value evaluations by resp fn | |
IntArray | fnGradCounter |
number of gradient evaluations by resp fn | |
IntArray | fnHessCounter |
number of Hessian evaluations by resp fn | |
IntArray | newFnValCounter |
number of new value evaluations by resp fn | |
IntArray | newFnGradCounter |
number of new gradient evaluations by resp fn | |
IntArray | newFnHessCounter |
number of new Hessian evaluations by resp fn | |
IntArray | fnValRefPt |
iteration reference point for fnValCounter | |
IntArray | fnGradRefPt |
iteration reference point for fnGradCounter | |
IntArray | fnHessRefPt |
iteration reference point for fnHessCounter | |
IntArray | newFnValRefPt |
iteration reference point for newFnValCounter | |
IntArray | newFnGradRefPt |
iteration reference point for newFnGradCounter | |
IntArray | newFnHessRefPt |
iteration reference point for newFnHessCounter | |
IntResponseMap | rawResponseMap |
Set of responses returned by either a blocking or nonblocking schedule. More... | |
IntResponseMap | cachedResponseMap |
Set of available asynchronous responses completed within a blocking or nonblocking scheduler that cannot be processed in a higher level context and need to be stored for later. | |
StringArray | fnLabels |
response function descriptors (used in print_evaluation_summary() and derived direct interface classes); initialized in map() functions due to potential updates after construction | |
bool | multiProcEvalFlag |
flag for multiprocessor evaluation partitions (evalComm) | |
bool | ieDedMasterFlag |
flag for dedicated master partitioning at the iterator level | |
String | evalTagPrefix |
set of period-delimited evaluation ID tags to use in evaluation tagging | |
bool | appendIfaceId |
whether to append the interface ID to the prefix during map (default true) | |
String2DArray | analysisComponents |
Analysis components for interface types that support them. | |
Private Member Functions | |
std::shared_ptr< Interface > | get_interface (ProblemDescDB &problem_db) |
Used by the envelope to instantiate the correct letter class. More... | |
int | algebraic_function_type (String) |
Used by algebraic mappings to determine the correct AMPL function evaluation call to make. | |
Static Private Member Functions | |
static String | user_auto_id () |
return the next available interface ID for no-ID user methods More... | |
static String | no_spec_id () |
return the next available interface ID for on-the-fly methods More... | |
Private Attributes | |
StringArray | algebraicVarTags |
set of variable tags from AMPL stub.col | |
SizetArray | algebraicACVIndices |
set of indices mapping AMPL algebraic variables to DAKOTA all continuous variables | |
SizetArray | algebraicACVIds |
set of ids mapping AMPL algebraic variables to DAKOTA all continuous variables | |
StringArray | algebraicFnTags |
set of function tags from AMPL stub.row | |
IntArray | algebraicFnTypes |
function type: > 0 = objective, < 0 = constraint |value|-1 is the objective (constraint) index when making AMPL objval (conival) calls | |
SizetArray | algebraicFnIndices |
set of indices mapping AMPL algebraic objective functions to DAKOTA response functions | |
RealArray | algebraicConstraintWeights |
set of weights for computing Hessian matrices for algebraic constraints; | |
int | numAlgebraicResponses |
number of algebraic responses (objectives+constraints) | |
std::shared_ptr< Interface > | interfaceRep |
pointer to the letter (initialized only for the envelope) | |
ASL * | asl |
pointer to an AMPL solver library (ASL) object | |
Static Private Attributes | |
static size_t | noSpecIdNum = 0 |
the last used interface ID number for on-the-fly instantiations (increment before each use) | |
Base class for the interface class hierarchy.
The Interface class hierarchy provides the part of a Model that is responsible for mapping a set of Variables into a set of Responses. The mapping is performed using either a simulation-based application interface or a surrogate-based approximation interface. For memory efficiency and enhanced polymorphism, the interface hierarchy employs the "letter/envelope idiom" (see Coplien "Advanced C++", p. 133), for which the base class (Interface) serves as the envelope and one of the derived classes (selected in Interface::get_interface()) serves as the letter.
Interface | ( | ProblemDescDB & | problem_db | ) |
standard constructor for envelope
Used in Model instantiation to build the envelope. This constructor only needs to extract enough data to properly execute get_interface, since Interface::Interface(BaseConstructor, problem_db) builds the actual base class data inherited by the derived interfaces.
References Dakota::abort_handler(), and Interface::interfaceRep.
copy constructor
Copy constructor manages sharing of interfaceRep
|
protected |
constructor initializes the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the derived class constructors - Coplien, p. 139)
This constructor is the one which must build the base class data for all inherited interfaces. get_interface() instantiates a derived class letter and the derived constructor selects this base class constructor in its initialization list (to avoid the recursion of the base class constructor calling get_interface() again). Since this is the letter and the letter IS the representation, interfaceRep is set to NULL.
References Dakota::abort_handler(), Interface::algebraic_function_type(), Interface::algebraicConstraintWeights, Interface::algebraicFnTags, Interface::algebraicFnTypes, Interface::algebraicMappings, Interface::algebraicVarTags, Interface::asl, ProblemDescDB::get_string(), Interface::interfaceId, Interface::outputLevel, Dakota::strends(), and Interface::user_auto_id().
void assign_rep | ( | std::shared_ptr< Interface > | interface_rep | ) |
assign letter or replace existing letter with a new one
The assign_rep() function 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).
Use case assumes the incoming letter is instantiated on the fly and has no envelope. This case is modeled after get_interface(): a letter is dynamically allocated and passed into assign_rep (its memory management is passed over to the envelope).
If the letter happens to be managed by another envelope, it will persist as long as the last envelope referencing it.
References Interface::interface_rep(), and Interface::interfaceRep.
Referenced by DataFitSurrModel::DataFitSurrModel(), parallel_interface_plugin(), LibraryEnvironment::plugin_interface(), and run_dakota().
void assign_rep | ( | Interface * | interface_rep, |
bool | ref_count_incr = false |
||
) |
assign letter or replace existing letter with a new one DEPRECATED, but left for library mode clients to migrate: transfers memory ownership to the contained shared_ptr; ref_count_incr is ignored
DEPRECATED but temporarily left for library mode clients needing to MIGRATE TO shared_ptr API
Similar to the assignment operator, the assign_rep() function decrements referenceCount for the old interfaceRep and assigns the new interfaceRep. 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 historically supported two models as governed by ref_count_incr:
References Interface::interface_rep(), and Interface::interfaceRep.
void eval_tag_prefix | ( | const String & | eval_id_str, |
bool | append_iface_id = true |
||
) |
set the evaluation tag prefix (does not recurse)
default implementation just sets the list of eval ID tags; derived classes containing additional models or interfaces should override (currently no use cases)
References Interface::appendIfaceId, Interface::evalTagPrefix, and Interface::interfaceRep.
Referenced by NestedModel::derived_evaluate(), and SimulationModel::eval_tag_prefix().
|
protected |
combine the response from algebraic_mappings() with the response from derived_map() to create the total response
This function will get invoked even when only algebraic mappings are active (no core mappings from derived_map), since the AMPL algebraic_response may be ordered differently from the total_response. In this case, the core_response object is unused.
References Dakota::abort_handler(), Response::active_set_derivative_vector(), Response::active_set_request_vector(), Interface::algebraicACVIds, Interface::algebraicFnIndices, Interface::coreMappings, Dakota::find_index(), Response::function_gradient(), Response::function_gradient_view(), Response::function_gradients(), Response::function_hessian(), Response::function_hessian_view(), Response::function_hessians(), Response::function_value(), Response::function_values(), Response::function_values_view(), Interface::outputLevel, Response::reset(), and Response::reset_inactive().
Referenced by ApplicationInterface::map(), ApproximationInterface::map(), ApplicationInterface::synchronize(), and ApplicationInterface::synchronize_nowait().
|
private |
Used by the envelope to instantiate the correct letter class.
used only by the envelope constructor to initialize interfaceRep to the appropriate derived type.
References ProblemDescDB::get_string(), ProblemDescDB::get_ushort(), and Interface::interface_type().
|
staticprivate |
return the next available interface ID for no-ID user methods
Rationale: The parser allows multiple user-specified interfaces with empty (unspecified) ID. However, only a single Interface with empty ID can be constructed (if it's the only one present, or the "last one parsed"). Therefore decided to prefer NO_ID over NO_ID_<num> for consistency with interface NO_ID convention. Additionally, NO_ID is preferred over NO_INTERFACE_ID (contrast with Iterator and Model) to preserve backward compatibility
Referenced by Interface::Interface().
|
staticprivate |
return the next available interface ID for on-the-fly methods
Rationale: For now NOSPEC_ID_ is chosen due to historical id="NO_SPECIFICATION" used for internally-constructed Iterators. Longer-term, consider auto-generating an ID that includes the context from which the method is constructed, e.g., the parent method or model's ID, together with its name.
References Interface::noSpecIdNum.
|
protected |
Set of responses returned by either a blocking or nonblocking schedule.
The map is a full/partial set of completions which are identified through their evalIdCntr key. The raw set is postprocessed (i.e., finite diff grads merged) in Model::synchronize() where it becomes responseMap.
Referenced by ApplicationInterface::asynchronous_local_evaluations(), Interface::cache_unmatched_response(), Interface::cache_unmatched_responses(), ApplicationInterface::process_asynch_local(), ApplicationInterface::process_synch_local(), ApplicationInterface::receive_evaluation(), Interface::response_map(), ApplicationInterface::synchronize(), ApproximationInterface::synchronize(), ApplicationInterface::synchronize_nowait(), ApproximationInterface::synchronize_nowait(), ApplicationInterface::test_local_backfill(), and ApplicationInterface::test_receives_backfill().