Strategy for multi-start iteration or pareto set optimization. More...
Public Member Functions | |
ConcurrentStrategy (ProblemDescDB &problem_db) | |
constructor | |
~ConcurrentStrategy () | |
destructor | |
Protected Member Functions | |
void | run_strategy () |
Performs the concurrent strategy by executing selectedIterator on userDefinedModel multiple times in parallel for different settings within the iterator or model. | |
void | initialize_iterator (int job_index) |
initialize the iterator about to be executed within a parallel iterator 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 PRP results arrays with current iteration results | |
Private Member Functions | |
void | initialize_iterator (const RealVector ¶m_set) |
called by unpack_parameters_buffer(MPIUnpackBuffer) and initialize_iterator(int) to update userDefinedModel and selectedIterator | |
void | print_results () const |
prints the concurrent iteration results summary (called by run_strategy()) | |
Private Attributes | |
Model | userDefinedModel |
the model used by the iterator | |
Iterator | selectedIterator |
the iterator used by the concurrent strategy | |
bool | multiStartFlag |
distinguishes multi-start from Pareto-set | |
RealVector | initialPt |
the initial continuous variables for restoring the starting point in the Pareto set strategy | |
RealVectorArray | parameterSets |
an array of parameter set vectors (either multistart variable sets or pareto multi-objective/least squares weighting sets) to be performed. | |
PRPArray | prpResults |
1-d array of ParamResponsePair results corresponding to numIteratorJobs |
Strategy for multi-start iteration or pareto set optimization.
This strategy maintains two concurrent iterator capabilities. First, a general capability for running an iterator multiple times from different starting points is provided (often used for multi-start optimization, but not restricted to optimization). Second, a simple capability for mapping the "pareto frontier" (the set of optimal solutions in multiobjective formulations) is provided. This pareto set is mapped through running an optimizer multiple times for different sets of multiobjective weightings.
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.
References ConcurrentStrategy::parameterSets.
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.
References ConcurrentStrategy::initialize_iterator().
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.
References ConcurrentStrategy::prpResults.
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.
References ConcurrentStrategy::prpResults.