![]() |
Dakota
Version 6.22
Explore and Predict with Confidence
|
Base class for the interface class hierarchy. More...
Public Member Functions | |
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 | |
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_scheduler () const |
returns a flag signaling the use of a dedicated scheduler processor at the iterator-evaluation scheduling level | |
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 (const ProblemDescDB &problem_db) | |
constructor initializes the base class configuration More... | |
Interface (size_t num_fns, short output_level) | |
constructor initializes the base class configuration 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 scheduler 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 | ieDedSchedFlag |
flag for dedicated scheduler 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 | |
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) | |
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.
|
protected |
constructor initializes the base class configuration
Base class constructor to initialize class data for all inherited interfaces. InterfaceUtils::get_interface(...) instantiates derived classs
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 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, and Interface::evalTagPrefix.
|
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().
|
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().