Ceci est une ancienne révision du document !
Evaluation Queue
The EvaluatorControl
manages the evaluations. It has a queue of EvalQueuePoints
which are points that need to be evaluated. The points are generated by SearchMethods
, PollMethods
, or other Steps
derived from IterationUtils
. The EvaluatorControl
also handles the Evaluator(s).
The queue is implemented by a vector.
Points may be ordered before evaluation. This is useful for opportunistic evaluation, more so when there is little CPU available (few threads for OpenMP).
There are multiple sorting criteria: DIR_LAST_SUCCESS
, LEXICOGRAPHICAL
, RANDOM
, SURROGATE
; others like QUAD_MODEL
should be added. See parameter EVAL_QUEUE_SORT
.
The default is DIR_LAST_SUCCESS
.
The way the EvaluatorControl
is implemented, the points at the end of the vector are evaluated first - they have the greatest priority.
Points are taken by threads for evaluation. As soon as a thread is done evaluating a point, it is free, and it pops the next point in the queue.
When a point is evaluated, updates are done:
- If opportunism is used, a
FULL_SUCCESS
will stop evaluations. Evaluations that are already in progress will continue, but no new evaluation will be started. Eval
of the point is saved to the cache.- The stats to be displayed are updated.
- Some members of
EvaluatorControl
, like the counter for the number of evaluations, are updated.
When evaluations are done because a termination condition Quand les évaluations sont terminées, à cause d’une Condition d’arrêt, un seul thread (le main thread) sort De la fonction run de l’EvaluatorControl. Les autres threads Continuent à rouler dans la fonction run en attendant de nouveaux points À évaluer.
bla, bla, bla… (more to be added).
Ignore remaining lines, this is brouillon:
Dans le cas de PSD-Mads, on a un main thread par Sous-problème, plus d’autres threads secondaires Qui ne sont utilisés que pour des évaluations.