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
SeqHybridMetaIterator Class Reference

Method for sequential hybrid iteration using multiple optimization and nonlinear least squares methods on multiple models of varying fidelity. More...

Inheritance diagram for SeqHybridMetaIterator:
MetaIterator Iterator

Public Member Functions

 SeqHybridMetaIterator (ProblemDescDB &problem_db)
 standard constructor
 
 SeqHybridMetaIterator (ProblemDescDB &problem_db, Model &model)
 alternate constructor
 
 ~SeqHybridMetaIterator ()
 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 pre_run ()
 pre-run portion of run (optional); re-implemented by Iterators which can generate all Variables (parameter sets) a priori 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 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 const Modelalgorithm_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 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)
 
Modeliterated_model ()
 return the iteratedModel (iterators & meta-iterators using a single model instance)
 
ProblemDescDBproblem_description_db () const
 return the problem description database (probDescDB)
 
ParallelLibraryparallel_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 ActiveSetactive_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< Iteratoriterator_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< TraitsBasetraits () 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 core_run ()
 Performs the hybrid iteration by executing a sequence of iterators, using a similar sequence of models that may vary in fidelity.
 
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
 
const Variablesvariables_results () const
 return the final solution from selectedIterators (variables)
 
const Responseresponse_results () const
 return the final solution from selectedIterators (response)
 
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
 
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 run_sequential ()
 run a sequential hybrid More...
 
void run_sequential_adaptive ()
 run a sequential adaptive hybrid More...
 
void partition_sets (size_t num_sets, int job_index, size_t &start_index, size_t &job_size)
 convert num_sets and job_index into a start_index and job_size for extraction from parameterSets
 
void extract_parameter_sets (int job_index, VariablesArray &partial_param_sets)
 extract partial_param_sets from parameterSets based on job_index More...
 
void update_local_results (PRPArray &prp_results, int job_id)
 update the partial set of final results from the local iterator execution
 
void initialize_iterator (const VariablesArray &param_sets)
 called by unpack_parameters_initialize(MPIUnpackBuffer) and initialize_iterator(int) to update the active Model and Iterator
 

Private Attributes

String seqHybridType
 empty (default) or "adaptive"
 
StringArray methodStrings
 the list of method pointer or method name identifiers
 
StringArray modelStrings
 the list of model pointer identifiers for method identification by name
 
bool lightwtMethodCtor
 use of lightweight Iterator construction by name
 
bool singlePassedModel
 use of constructor that enforces use of a single passed Model
 
IteratorArray selectedIterators
 the set of iterators, one for each entry in methodStrings
 
ModelArray selectedModels
 the set of models, one for each iterator (if not lightweight construction)
 
size_t seqCount
 hybrid sequence counter: 0 to numIterators-1
 
Real progressThreshold
 when the progress metric falls below this threshold, the sequential adaptive hybrid switches to the next method
 
PRP2DArray prpResults
 2-D array of results corresponding to numIteratorJobs, one set of results per job (iterators may return multiple final solutions)
 
VariablesArray parameterSets
 1-D array of variable starting points for the iterator jobs
 

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
ProblemDescDBprobDescDB
 class member reference to the problem description database More...
 
ParallelLibraryparallelLib
 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
 
ResultsManagerresultsDB
 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< TraitsBasemethodTraits
 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

Method for sequential hybrid iteration using multiple optimization and nonlinear least squares methods on multiple models of varying fidelity.

Sequential hybrid meta-iteration supports two approaches: (1) the non-adaptive sequential hybrid runs one method to completion, passes its best results as the starting point for a subsequent method, and continues this succession until all methods have been executed (the stopping rules are controlled internally by each iterator), and (2) the adaptive sequential hybrid uses adaptive stopping rules for the iterators that are controlled externally by this method. Any iterator may be used so long as it defines the notion of a final solution which can be passed as starting data for subsequent iterators.

Member Function Documentation

◆ print_results()

void print_results ( std::ostream &  s,
short  results_state = FINAL_RESULTS 
)
protectedvirtual

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 Response::function_values(), Response::is_null(), Variables::is_null(), MetaIterator::iterSched, IteratorScheduler::messagePass, and SeqHybridMetaIterator::prpResults.

◆ run_sequential()

void run_sequential ( )
private

◆ run_sequential_adaptive()

void run_sequential_adaptive ( )
private

run a sequential adaptive hybrid

In the sequential adaptive case, there is interference with the iterators through the use of the ++ overloaded operator. iterator++ runs the iterator for one cycle, after which a progress_metric is computed. This progress metric is used to dictate method switching instead of each iterator's internal convergence criteria. Status: incomplete.

References Iterator::finalize_run(), Iterator::initialize_graphics(), Iterator::initialize_run(), IteratorScheduler::iteratorCommRank, IteratorScheduler::iteratorServerId, MetaIterator::iterSched, SeqHybridMetaIterator::methodStrings, IteratorScheduler::numIteratorServers, SeqHybridMetaIterator::progressThreshold, Iterator::response_results(), SeqHybridMetaIterator::selectedIterators, SeqHybridMetaIterator::selectedModels, SeqHybridMetaIterator::seqCount, Iterator::summaryOutputFlag, and Iterator::variables_results().

Referenced by SeqHybridMetaIterator::core_run().

◆ extract_parameter_sets()

void extract_parameter_sets ( int  job_index,
VariablesArray &  partial_param_sets 
)
inlineprivate

extract partial_param_sets from parameterSets based on job_index

This convenience function is executed on an iterator master (static scheduling) or a meta-iterator master (self scheduling) at run initialization time and has access to the full parameterSets array (this is All-Reduced for all peers at the completion of each cycle in run_sequential()).

References SeqHybridMetaIterator::parameterSets, and SeqHybridMetaIterator::partition_sets().

Referenced by SeqHybridMetaIterator::initialize_iterator(), and SeqHybridMetaIterator::pack_parameters_buffer().


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