Inheritance diagram for SequentialHybridStrategy:

Public Member Functions | |
| SequentialHybridStrategy (ProblemDescDB &problem_db) | |
| constructor | |
| ~SequentialHybridStrategy () | |
| destructor | |
Protected Member Functions | |
| void | run_strategy () |
| iterators on different models of varying fidelity | |
| const Variables & | variables_results () const |
| return the final solution from selectedIterators (variables) | |
| const Response & | response_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 ¶m_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 | |
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.
| 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).
1.5.1