SequentialHybridStrategy Class Reference

models of varying fidelity. More...

Inheritance diagram for SequentialHybridStrategy:

HybridStrategy Strategy List of all members.

Public Member Functions

 SequentialHybridStrategy (ProblemDescDB &problem_db)
 constructor
 ~SequentialHybridStrategy ()
 destructor

Protected Member Functions

void run_strategy ()
 iterators on different models of varying fidelity
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)
 scheduling function (serve_iterators() or static_schedule_iterators())
void pack_parameters_buffer (MPIPackBuffer &send_buffer, int job_index)
 pack a send_buffer for assigning an iterator job to a server
void unpack_parameters_buffer (MPIUnpackBuffer &recv_buffer)
 unpack a recv_buffer for accepting an iterator job from the scheduler
void pack_results_buffer (MPIPackBuffer &send_buffer, int job_index)
 pack a send_buffer for returning iterator results from a server
void unpack_results_buffer (MPIUnpackBuffer &recv_buffer, int job_index)
 unpack a recv_buffer for accepting iterator results from a server
void update_local_results (int job_index)
 update local prpResults with current iteration results

Private Member Functions

void run_sequential ()
 run a sequential hybrid
void run_sequential_adaptive ()
 run a sequential adaptive hybrid
void partition_results (int job_index, size_t &start_index, size_t &job_size)
 extraction from prpResults
void extract_parameter_sets (int job_index, VariablesArray &partial_param_sets)
 extract partial_param_sets from prpResults based on job_index
void extract_results_sets (int job_index, PRPArray &partial_prp_results)
 extract partial_prp_results from prpResults based on job_index
void merge_results_sets (int job_index, PRPArray &partial_prp_results)
 merge partial_prp_results into prpResults based on job_index
void update_local_results (PRPArray &partial_prp_results, int job_id)
 update the partial set of final results from the local iterator execution
void initialize_iterator (const VariablesArray &param_sets)
 initialize_iterator(int) to update the active Model and Iterator

Private Attributes

String hybridType
 sequential or sequential_adaptive
size_t seqCount
 hybrid sequence counter: 0 to numIterators-1
size_t numSolnsTransferred
 to the next iterator
Real progressMetric
 a sequential adaptive hybrid
Real progressThreshold
 sequential adaptive hybrid switches to the next method

Detailed Description

models of varying fidelity.

The sequential hybrid minimization strategy has 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 minimizer), and (2) the adaptive sequential hybrid uses adaptive stopping rules for the minimizers that are controlled externally by the strategy. Note that while the strategy is targeted at minimizers, any iterator may be used so long as it defines the notion of a final solution which can be passed as the starting point for subsequent iterators.


Member Function Documentation

void pack_parameters_buffer ( MPIPackBuffer send_buffer,
int  job_index 
) [inline, protected, virtual]

pack a send_buffer for assigning an iterator job to a server

This virtual function redefinition is executed on the dedicated master processor for self scheduling. It is not used for peer partitions.

Reimplemented from Strategy.

void unpack_parameters_buffer ( MPIUnpackBuffer recv_buffer  )  [inline, protected, virtual]

unpack a recv_buffer for accepting an iterator job from the scheduler

This virtual function redefinition is executed on an iterator server for dedicated master self scheduling. It is not used for peer partitions.

Reimplemented from Strategy.

void pack_results_buffer ( MPIPackBuffer send_buffer,
int  job_index 
) [inline, protected, virtual]

pack a send_buffer for returning iterator results from a server

This virtual function redefinition is executed either on an iterator server for dedicated master self scheduling or on peers 2 through n for static scheduling.

Reimplemented from Strategy.

void unpack_results_buffer ( MPIUnpackBuffer recv_buffer,
int  job_index 
) [inline, protected, virtual]

unpack a recv_buffer for accepting iterator results from a server

This virtual function redefinition is executed on an strategy master (either the dedicated master processor for self scheduling or peer 1 for static scheduling).

Reimplemented from Strategy.

void run_sequential (  )  [private]

run a sequential hybrid

In the sequential nonadaptive case, there is no interference with the iterators. Each runs until its own convergence criteria is satisfied. Status: fully operational.

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.

void extract_parameter_sets ( int  job_index,
VariablesArray partial_param_sets 
) [inline, private]

extract partial_param_sets from prpResults based on job_index

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

void extract_results_sets ( int  job_index,
PRPArray partial_prp_results 
) [inline, private]

extract partial_prp_results from prpResults based on job_index

This convenience function is executed on iterator servers 2 through n (peer partition) following iterator executions and prior to prpResults All-Reduce at bottom of run_sequential(). Therefore, some prpResults entries may be empty.

void merge_results_sets ( int  job_index,
PRPArray partial_prp_results 
) [inline, private]

merge partial_prp_results into prpResults based on job_index

This convenience function may be executed on either an iterator server (access to only a partial prpResults array) or the strategy master (access to full prpResults array).


The documentation for this class was generated from the following files:
Generated on Wed Nov 5 19:54:07 2008 for DAKOTA by  doxygen 1.5.1