| Dakota Version 6.19 Explore and Predict with Confidence

Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
ConcurrentMetaIterator Class Reference

Meta-iterator for multi-start iteration or pareto set optimization. More...

Inheritance diagram for ConcurrentMetaIterator:

## Public Member Functions
| ConcurrentMetaIterator (ProblemDescDB &problem_db)
| standard constructor
| ConcurrentMetaIterator (ProblemDescDB &problem_db, Model &model)
| alternate constructor
| ~ConcurrentMetaIterator ()
| destructor
Public Member Functions inherited from MetaIterator
bool | resize ()
| reinitializes iterator based on new variable size
Public Member Functions inherited from Iterator
| Iterator (std::shared_ptr< TraitsBase > traits=std::shared_ptr< TraitsBase >(new TraitsBase()))
| default constructor More...
| Iterator (ProblemDescDB &problem_db, std::shared_ptr< TraitsBase > traits=std::shared_ptr< TraitsBase >(new TraitsBase()))
| standard envelope constructor, which constructs its own model(s) More...
| Iterator (ProblemDescDB &problem_db, Model &model, std::shared_ptr< TraitsBase > traits=std::shared_ptr< TraitsBase >(new TraitsBase()))
| alternate envelope constructor which uses the ProblemDescDB but accepts a model from a higher level (meta-iterator) context, instead of constructing its own More...
| Iterator (const String &method_string, Model &model, std::shared_ptr< TraitsBase > traits=std::shared_ptr< TraitsBase >(new TraitsBase()))
| alternate envelope constructor for instantiations by name without the ProblemDescDB More...
| Iterator (const Iterator &iterator)
| copy constructor More...
virtual | ~Iterator ()
| destructor
Iterator | operator= (const Iterator &iterator)
| assignment operator
virtual void | initialize_run ()
| utility function to perform common operations prior to pre_run(); typically memory initialization; setting of instance pointers More...
virtual void | finalize_run ()
| utility function to perform common operations following post_run(); deallocation and resetting of instance pointers More...
virtual void | pre_output ()
| write variables to file, following pre-run
virtual void | post_input ()
| read tabular data for post-run mode
virtual void | reset ()
| restore initial state for repeated sub-iterator executions
virtual void | nested_variable_mappings (const SizetArray &c_index1, const SizetArray &di_index1, const SizetArray &ds_index1, const SizetArray &dr_index1, const ShortArray &c_target2, const ShortArray &di_target2, const ShortArray &ds_target2, const ShortArray &dr_target2)
| set primaryA{CV,DIV,DRV}MapIndices, secondaryA{CV,DIV,DRV}MapTargets within derived Iterators; supports computation of higher-level sensitivities in nested contexts (e.g., derivatives of statistics w.r.t. inserted design variables)
virtual void | nested_response_mappings (const RealMatrix &primary_coeffs, const RealMatrix &secondary_coeffs)
| set primaryResponseCoefficients, secondaryResponseCoefficients within derived Iterators; Necessary for scalarization case in MLMC NonDMultilevelSampling to map scalarization in nested context
virtual void | unpack_parameters_buffer (MPIUnpackBuffer &recv_buffer, int job_index)
| used by IteratorScheduler to unpack starting data for an iterator run
virtual const Variables & | variables_results () const
| return a single final iterator solution (variables)
virtual const Response & | response_results () const
| return a single final iterator solution (response)
virtual const VariablesArray & | variables_array_results ()
| return multiple final iterator solutions (variables). This should only be used if returns_multiple_points() returns true.
virtual const ResponseArray & | response_array_results ()
| return multiple final iterator solutions (response). This should only be used if returns_multiple_points() returns true.
virtual void | response_results_active_set (const ActiveSet &set)
| set the requested data for the final iterator response results
virtual const RealSymMatrix & | response_error_estimates () const
| return error estimates associated with the final iterator solution
virtual bool | accepts_multiple_points () const
| indicates if this iterator accepts multiple initial points. Default return is false. Override to return true if appropriate.
virtual bool | returns_multiple_points () const
| indicates if this iterator returns multiple final points. Default return is false. Override to return true if appropriate.
virtual void | update_from_model (const Model &model)
| set inherited data attributes based on extractions from incoming model
virtual void | initial_point (const Variables &pt)
| sets the initial point for this iterator (user-functions mode for which Model updating is not used)
virtual void | initial_point (const RealVector &pt)
| sets the initial point (active continuous variables) for this iterator (user-functions mode for which Model updating is not used)
virtual void | initial_points (const VariablesArray &pts)
| sets the multiple initial points for this iterator. This should only be used if accepts_multiple_points() returns true.
virtual void | update_callback_data (const RealVector &cv_initial, const RealVector &cv_lower_bnds, const RealVector &cv_upper_bnds, const RealMatrix &lin_ineq_coeffs, const RealVector &lin_ineq_lb, const RealVector &lin_ineq_ub, const RealMatrix &lin_eq_coeffs, const RealVector &lin_eq_tgt, const RealVector &nln_ineq_lb, const RealVector &nln_ineq_ub, const RealVector &nln_eq_tgt)
| assign variable values and bounds and constraint coefficients and bounds for this iterator (user-functions mode for which iteratedModel is null)
virtual const RealMatrix & | callback_linear_ineq_coefficients () const
| return linear constraint coefficients for this iterator (user-functions mode for which iteratedModel is null)
virtual const RealVector & | callback_linear_ineq_lower_bounds () const
| return linear constraint lower bounds for this iterator (user-functions mode for which iteratedModel is null)
virtual const RealVector & | callback_linear_ineq_upper_bounds () const
| return linear constraint upper bounds for this iterator (user-functions mode for which iteratedModel is null)
virtual void | initialize_graphics (int iterator_server_id=1)
| initialize the 2D graphics window and the tabular graphics data More...
virtual void | check_sub_iterator_conflict ()
| detect any conflicts due to recursive use of the same Fortran solver More...
virtual unsigned short | uses_method () const
| return name of any enabling iterator used by this iterator
virtual void | method_recourse (unsigned short method_name)
| perform a method switch, if possible, due to a detected conflict with the simultaneous use of method_name at an higher-level
virtual const VariablesArray & | all_variables ()
| return the complete set of evaluated variables
virtual const RealMatrix & | all_samples ()
| return the complete set of evaluated samples
virtual const IntResponseMap & | all_responses () const
| return the complete set of computed responses
virtual size_t | num_samples () const
| get the current number of samples
virtual void | sampling_reset (size_t min_samples, bool all_data_flag, bool stats_flag)
| reset sampling iterator to use at least min_samples
virtual void | sampling_reference (size_t samples_ref)
| set reference number of samples, which is a lower bound during reset
virtual void | sampling_increment ()
| increment to next in sequence of refinement samples
virtual void | random_seed (int seed)
| set randomSeed, if present
virtual unsigned short | sampling_scheme () const
| return sampling name
virtual bool | compact_mode () const
| returns Analyzer::compactMode
void | init_communicators (ParLevLIter pl_iter)
| initialize the communicators associated with this Iterator instance
void | set_communicators (ParLevLIter pl_iter)
| set the communicators associated with this Iterator instance
void | free_communicators (ParLevLIter pl_iter)
| free the communicators associated with this Iterator instance
void | resize_communicators (ParLevLIter pl_iter, bool reinit_comms)
| Resize the communicators. This is called from the letter's resize()
void | parallel_configuration_iterator (ParConfigLIter pc_iter)
| set methodPCIter
ParConfigLIter | parallel_configuration_iterator () const
| return methodPCIter
void | parallel_configuration_iterator_map (std::map< size_t, ParConfigLIter > pci_map)
| set methodPCIterMap
std::map< size_t, ParConfigLIter > | parallel_configuration_iterator_map () const
| return methodPCIterMap
void | run (ParLevLIter pl_iter)
| invoke set_communicators(pl_iter) prior to run()
void | run ()
| orchestrate initialize/pre/core/post/finalize phases More...
void | assign_rep (std::shared_ptr< Iterator > iterator_rep)
| replaces existing letter with a new one More...
void | iterated_model (const Model &model)
| set the iteratedModel (iterators and meta-iterators using a single model instance)
Model & | iterated_model ()
| return the iteratedModel (iterators & meta-iterators using a single model instance)
ProblemDescDB & | problem_description_db () const
| return the problem description database (probDescDB)
ParallelLibrary & | parallel_library () const
| return the parallel library (parallelLib)
void | method_name (unsigned short m_name)
| set the method name to an enumeration value
unsigned short | method_name () const
| return the method name via its native enumeration value
void | method_string (const String &m_str)
| set the method name by string
String | method_string () const
| return the method name by string
String | method_enum_to_string (unsigned short method_enum) const
| convert a method name enumeration value to a string
unsigned short | method_string_to_enum (const String &method_str) const
| convert a method name string to an enumeration value
String | submethod_enum_to_string (unsigned short submethod_enum) const
| convert a sub-method name enumeration value to a string
const String & | method_id () const
| return the method identifier (methodId)
int | maximum_evaluation_concurrency () const
| return the maximum evaluation concurrency supported by the iterator
void | maximum_evaluation_concurrency (int max_conc)
| set the maximum evaluation concurrency supported by the iterator
size_t | maximum_iterations () const
| return the maximum iterations for this iterator
void | maximum_iterations (size_t max_iter)
| set the maximum iterations for this iterator
void | convergence_tolerance (Real conv_tol)
| set the method convergence tolerance (convergenceTol)
Real | convergence_tolerance () const
| return the method convergence tolerance (convergenceTol)
void | output_level (short out_lev)
| set the method output level (outputLevel)
short | output_level () const
| return the method output level (outputLevel)
void | summary_output (bool summary_output_flag)
| Set summary output control; true enables evaluation/results summary.
size_t | num_final_solutions () const
| return the number of solutions to retain in best variables/response arrays
void | num_final_solutions (size_t num_final)
| set the number of solutions to retain in best variables/response arrays
void | active_set (const ActiveSet &set)
| set the default active set (for use with iterators that employ evaluate_parameter_sets())
const ActiveSet & | active_set () const
| return the default active set (used by iterators that employ evaluate_parameter_sets())
void | active_set_request_vector (const ShortArray &asv)
| return the default active set request vector (used by iterators that employ evaluate_parameter_sets())
const ShortArray & | active_set_request_vector () const
| return the default active set request vector (used by iterators that employ evaluate_parameter_sets())
void | active_set_request_values (short asv_val)
| return the default active set request vector (used by iterators that employ evaluate_parameter_sets())
void | sub_iterator_flag (bool si_flag)
| set subIteratorFlag (and update summaryOutputFlag if needed)
bool | is_null () const
| function to check iteratorRep (does this envelope contain a letter?)
std::shared_ptr< Iterator > | iterator_rep () const
| returns iteratorRep for access to derived class member functions that are not mapped to the top Iterator level
virtual void | eval_tag_prefix (const String &eval_id_str)
| set the hierarchical eval ID tag prefix More...
std::shared_ptr< TraitsBase > | traits () const
| returns methodTraits for access to derived class member functions that are not mapped to the top TraitsBase level
bool | top_level ()
| Return whether the iterator is the top level iterator.
void | top_level (bool tflag)
| Set the iterator's top level flag.

## Protected Member Functions
void | pre_run ()
| pre-run portion of run (optional); re-implemented by Iterators which can generate all Variables (parameter sets) a priori More...
void | core_run ()
| Performs the concurrent iteration by executing selectedIterator on iteratedModel multiple times in parallel for different parameter sets.
void | print_results (std::ostream &s, short results_state=FINAL_RESULTS)
| print the final iterator results More...
void | derived_init_communicators (ParLevLIter pl_iter)
| derived class contributions to initializing the communicators associated with this Iterator instance
void | derived_set_communicators (ParLevLIter pl_iter)
| derived class contributions to setting the communicators associated with this Iterator instance
void | derived_free_communicators (ParLevLIter pl_iter)
| derived class contributions to freeing the communicators associated with this Iterator instance
IntIntPair | estimate_partition_bounds ()
| estimate the minimum and maximum partition sizes that can be utilized by this Iterator
void | initialize_iterator (int job_index)
| used by IteratorScheduler to set the starting data for a run
void | pack_parameters_buffer (MPIPackBuffer &send_buffer, int job_index)
| used by IteratorScheduler to pack starting data for an iterator run
void | unpack_parameters_initialize (MPIUnpackBuffer &recv_buffer, int job_index)
| used by IteratorScheduler to unpack starting data and initialize an iterator run
void | pack_results_buffer (MPIPackBuffer &send_buffer, int job_index)
| used by IteratorScheduler to pack results data from an iterator run
void | unpack_results_buffer (MPIUnpackBuffer &recv_buffer, int job_index)
| used by IteratorScheduler to unpack results data from an iterator run
void | update_local_results (int job_index)
| used by IteratorScheduler to update local results arrays
const Model & | algorithm_space_model () const
| return the result of any recasting or surrogate model recursion layered on top of iteratedModel by the derived Iterator ctor chain
virtual void | declare_sources ()
| Declare sources to the evaluations database.
Protected Member Functions inherited from MetaIterator
| MetaIterator (ProblemDescDB &problem_db)
| standard constructor
| MetaIterator (ProblemDescDB &problem_db, Model &model)
| alternate constructor
| ~MetaIterator ()
| destructor
void | post_run (std::ostream &s)
| post-run portion of run (optional); verbose to print results; re-implemented by Iterators that can read all Variables/Responses and perform final analysis phase in a standalone way More...
void | check_model (const String &method_ptr, const String &model_ptr)
| check that a model identified by pointer has the same id as the iteratedModel passed through the ctor chain
void | allocate_by_pointer (const String &method_ptr, Iterator &the_iterator, Model &the_model)
| initialize the_iterator and the_model based on method_ptr
void | allocate_by_name (const String &method_string, const String &model_ptr, Iterator &the_iterator, Model &the_model)
| initialize the_iterator based on method_string
std::pair< int, int > | estimate_by_pointer (const String &method_ptr, Iterator &the_iterator, Model &the_model)
| estimate minimum and maximum processors per iterator needed for init_iterator_parallelism(); instantiates the_iterator and the_model as needed, but on minimal processor ranks (is later augmented by allocate_by_pointer())
std::pair< int, int > | estimate_by_name (const String &method_string, const String &model_ptr, Iterator &the_iterator, Model &the_model)
| estimate minimum and maximum processors per iterator needed for init_iterator_parallelism(); instantiates the_iterator and the_model as needed, but on minimal processor ranks (is later augmented by allocate_by_name())
Protected Member Functions inherited from Iterator
| Iterator (BaseConstructor, ProblemDescDB &problem_db, std::shared_ptr< TraitsBase > traits=std::shared_ptr< TraitsBase >(new TraitsBase()))
| constructor initializes the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the derived class constructors - Coplien, p. 139) More...
| Iterator (NoDBBaseConstructor, unsigned short method_name, Model &model, std::shared_ptr< TraitsBase > traits=std::shared_ptr< TraitsBase >(new TraitsBase()))
| alternate constructor for base iterator classes constructed on the fly More...
| Iterator (NoDBBaseConstructor, unsigned short method_name, std::shared_ptr< TraitsBase > traits=std::shared_ptr< TraitsBase >(new TraitsBase()))
| alternate constructor for base iterator classes constructed on the fly More...
| Iterator (NoDBBaseConstructor, Model &model, size_t max_iter, size_t max_eval, Real conv_tol, std::shared_ptr< TraitsBase > traits=std::shared_ptr< TraitsBase >(new TraitsBase()))
| alternate envelope constructor for instantiations without ProblemDescDB More...
virtual const VariablesArray & | initial_points () const
| gets the multiple initial points for this iterator. This will only be meaningful after a call to initial_points mutator.
StrStrSizet | run_identifier () const
| get the unique run identifier based on method name, id, and number of executions
void | initialize_model_graphics (Model &model, int iterator_server_id)
| helper function that encapsulates initialization operations, modular on incoming Model instance More...
void | export_final_surrogates (Model &data_fit_surr_model)
| export final surrogates generated, e.g., GP in EGO and friends More...

## Private Member Functions
void | initialize_iterator (const RealVector &param_set)
| called by unpack_parameters_initialize(MPIUnpackBuffer) and initialize_iterator(int) to update iteratedModel and selectedIterator
void | initialize_model ()
| initialize the iterated Model prior to Iterator instantiation and define param_set_len

## Private Attributes
Iterator | selectedIterator
| the iterator selected for concurrent iteration
RealVector | initialPt
| the initial continuous variables for restoring the starting point in the Pareto set minimization
RealVectorArray | parameterSets
| an array of parameter set vectors (either multistart variable sets or pareto multi-objective/least squares weighting sets) to be performed.
int | paramSetLen
| length of each of the parameter sets associated with an iterator job (number of continuous variables for MULTI_START, number of objective fns for PARETO_SET)
int | numRandomJobs
| number of randomly-generated parameter sets to evaluate
int | randomSeed
| seed for random number generator for random samples
PRPArray | prpResults
| 1-d array of ParamResponsePair results corresponding to numIteratorJobs

## Friends
class | IteratorScheduler
| protect scheduler callback functions from general access

## Additional Inherited Members
Static Protected Member Functions inherited from Iterator
static void | gnewton_set_recast (const Variables &recast_vars, const ActiveSet &recast_set, ActiveSet &sub_model_set)
| conversion of request vector values for the Gauss-Newton Hessian approximation More...
Protected Attributes inherited from MetaIterator
IteratorScheduler | iterSched
| scheduler for concurrent execution of Iterators
int | maxIteratorConcurrency
| maximum number of concurrent sub-iterator executions
Protected Attributes inherited from Iterator
ProblemDescDB & | probDescDB
| class member reference to the problem description database More...
ParallelLibrary & | parallelLib
| class member reference to the parallel library
ParConfigLIter | methodPCIter
| the active ParallelConfiguration used by this Iterator instance
Model | iteratedModel
| the model to be iterated (for iterators and meta-iterators employing a single model instance)
size_t | myModelLayers
| number of Models locally (in Iterator or derived classes) wrapped around the initially passed in Model
unsigned short | methodName
| name of the iterator (the user's method spec)
Real | convergenceTol
| iteration convergence tolerance
size_t | maxIterations
| maximum number of iterations for the method
size_t | maxFunctionEvals
| maximum number of fn evaluations for the method
int | maxEvalConcurrency
| maximum number of concurrent model evaluations More...
ActiveSet | activeSet
| the response data requirements on each function evaluation
size_t | numFinalSolutions
| number of solutions to retain in best variables/response arrays
VariablesArray | bestVariablesArray
| collection of N best solution variables found during the study; always in context of Model originally passed to the Iterator (any in-flight Recasts must be undone)
ResponseArray | bestResponseArray
| collection of N best solution responses found during the study; always in context of Model originally passed to the Iterator (any in-flight Recasts must be undone)
bool | subIteratorFlag
| flag indicating if this Iterator is a sub-iterator (NestedModel::subIterator or DataFitSurrModel::daceIterator)
short | outputLevel
| output verbosity level: {SILENT,QUIET,NORMAL,VERBOSE,DEBUG}_OUTPUT
bool | summaryOutputFlag
| flag for summary output (evaluation stats, final results); default true, but false for on-the-fly (helper) iterators and sub-iterator use cases
ResultsManager & | resultsDB
| reference to the global iterator results database
EvaluationStore & | evaluationsDB
| reference to the global evaluation database
EvaluationsDBState | evaluationsDBState
| State of evaluations DB for this iterator.
ResultsNames | resultsNames
| valid names for iterator results
std::shared_ptr< TraitsBase > | methodTraits
| pointer that retains shared ownership of a TraitsBase object, or child thereof
bool | topLevel
| Whether this is the top level iterator.
bool | exportSurrogate = false
| whether to export final surrogates
String | surrExportPrefix
| base filename for exported surrogates
unsigned short | surrExportFormat = NO_MODEL_FORMAT
| (bitwise) format(s) to export

## Detailed Description

Meta-iterator for multi-start iteration or pareto set optimization.

This meta-iterator maintains two concurrent iterator capabilities. First, a general capability for running an iterator multiple times from different starting points is provided (often used for multi-start optimization, but not restricted to optimization). Second, a simple capability for mapping the "pareto frontier" (the set of optimal solutions in multiobjective formulations) is provided. This pareto set is mapped through running an optimizer multiple times for different sets of multiobjective weightings.

## Member Function Documentation

## ◆ pre_run()

void pre_run | ( |  | ) |
| protected virtual

pre-run portion of run (optional); re-implemented by Iterators which can generate all Variables (parameter sets) a priori

pre-run phase, which a derived iterator may optionally reimplement; when not present, pre-run is likely integrated into the derived run function. This is a virtual function; when re-implementing, a derived class must call its nearest parent's pre_run(), if implemented, typically before performing its own implementation steps.

Reimplemented from Iterator.

References Analyzer::all_samples(), Iterator::all_samples(), ParallelLibrary::bcast_hs(), Model::continuous_lower_bounds(), Model::continuous_upper_bounds(), Model::continuous_variables(), Dakota::copy_data(), Model::estimate_message_lengths(), ConcurrentMetaIterator::initialPt, Iterator::iteratedModel, IteratorScheduler::iterator_message_lengths(), IteratorScheduler::iteratorCommRank, IteratorScheduler::iteratorScheduling, IteratorScheduler::iteratorServerId, MetaIterator::iterSched, IteratorScheduler::lead_rank(), Model::message_lengths(), Iterator::methodName, Iterator::methodPCIter, IteratorScheduler::miPLIndex, IteratorScheduler::numIteratorJobs, IteratorScheduler::numIteratorServers, ConcurrentMetaIterator::numRandomJobs, Iterator::parallelLib, ConcurrentMetaIterator::parameterSets, ConcurrentMetaIterator::paramSetLen, ConcurrentMetaIterator::prpResults, ConcurrentMetaIterator::randomSeed, and MPIPackBuffer::size().

## ◆ print_results()

void print_results | ( | std::ostream & | s,
|  | short | results_state = `FINAL_RESULTS`
| ) |  |
| protected virtual

print the final iterator results

This virtual function provides additional iterator-specific final results outputs beyond the function evaluation summary printed in finalize_run().

Reimplemented from Iterator.

References ResultsManager::active(), ResultsManager::allocate_matrix(), Variables::continuous_variables(), Variables::discrete_int_variables(), Variables::discrete_real_variables(), Variables::discrete_string_variables(), ParamResponsePair::eval_id(), ResultsManager::insert_into(), Iterator::methodName, ConcurrentMetaIterator::parameterSets, ConcurrentMetaIterator::paramSetLen, ConcurrentMetaIterator::prpResults, ParamResponsePair::response(), Iterator::resultsDB, Iterator::run_identifier(), ParamResponsePair::variables(), and Response::write_tabular().

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

- ConcurrentMetaIterator.hpp
- ConcurrentMetaIterator.cpp