Dakota  Version 6.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
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 ()
 default constructor More...
 
 Iterator (ProblemDescDB &problem_db)
 standard envelope constructor, which constructs its own model(s) More...
 
 Iterator (ProblemDescDB &problem_db, Model &model)
 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)
 alternate envelope constructor for instantiations by name without the ProblemDescDB More...
 
 Iterator (const Iterator &iterator)
 copy constructor More...
 
virtual ~Iterator ()
 destructor More...
 
Iterator operator= (const Iterator &iterator)
 assignment operator More...
 
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 unpack_parameters_buffer (MPIUnpackBuffer &recv_buffer)
 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 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 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 response_results_active_set (const ActiveSet &set)
 set the requested data for the final iterator response results
 
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 unsigned short uses_method () const
 return name of any enabling iterator used by this iterator More...
 
virtual void method_recourse ()
 perform a method switch, if possible, due to a detected conflict
 
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 int num_samples () const
 get the current number of samples
 
virtual void sampling_reset (int min_samples, bool all_data_flag, bool stats_flag)
 reset sampling iterator to use at least min_samples
 
virtual void sampling_reference (int 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 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 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 (Iterator *iterator_rep, bool ref_count_incr=true)
 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_name) const
 convert a method name enumeration value to a string
 
unsigned short method_string_to_enum (const String &method_name) const
 convert a method name string to an enumeration value
 
String submethod_enum_to_string (unsigned short submethod_name) const
 convert a 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
 
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 vector (for use with iterators that employ evaluate_parameter_sets())
 
const ActiveSetactive_set () const
 return the default active set vector (used by iterators that employ evaluate_parameter_sets())
 
void sub_iterator_flag (bool si_flag)
 set subIteratorFlag (and update summaryOutputFlag if needed)
 
void active_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
 
bool is_null () const
 function to check iteratorRep (does this envelope contain a letter?)
 
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...
 

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)
 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)
 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
 
- 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...
 
bool new_model (const String &method_ptr, const String &model_ptr)
 identify presence of a new model specification identified by pointer, necessitating a new instantiation
 
void check_model (const String &method_ptr, const String &model_ptr)
 check that any model identified by pointer has the same id as the passed iteratedModel
 
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)
 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)
 alternate constructor for base iterator classes constructed on the fly More...
 
 Iterator (NoDBBaseConstructor, unsigned short method_name)
 alternate constructor for base iterator classes constructed on the fly More...
 
virtual void update_from_model (const Model &model)
 set inherited data attributes based on extractions from incoming model
 
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
 

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 methodList
 the list of method name identifiers
 
bool lightwtCtor
 use of lightweight Iterator construction by name
 
IteratorArray selectedIterators
 the set of iterators, one for each entry in methodList
 
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
 

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

void print_results ( std::ostream &  s)
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.

void run_sequential ( )
private
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::methodList, IteratorScheduler::numIteratorServers, SeqHybridMetaIterator::progressThreshold, Iterator::response_results(), SeqHybridMetaIterator::selectedIterators, SeqHybridMetaIterator::selectedModels, SeqHybridMetaIterator::seqCount, Iterator::summaryOutputFlag, and Iterator::variables_results().

Referenced by SeqHybridMetaIterator::core_run().

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: