$extrastylesheet
Dakota  Version 6.2
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends
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

List of all members.

Public Member Functions

 SeqHybridMetaIterator (ProblemDescDB &problem_db)
 standard constructor
 SeqHybridMetaIterator (ProblemDescDB &problem_db, Model &model)
 alternate constructor
 ~SeqHybridMetaIterator ()
 destructor

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
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

Private Member Functions

void run_sequential ()
 run a sequential hybrid
void run_sequential_adaptive ()
 run a sequential adaptive hybrid
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
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

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) [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 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 
) [inline, private]

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: