###############################################################################
#######           Definition of Run Parameters attributes          ############
#####
##### . Each definition must be separated by at least a comment line
#####     (starting by #)
#####
##### . The definition must provide the name, type and default value
#####     (no default: '-' or 'N/A') in this order, one by line.
#####
##### . Only a single word is considered for the name,
#####     type and default value (extra is comment)
#####
##### . The short info, the help and the keywords must be provided in this
#####     order within "\(" and "\). For keywords, the plural part of a word
#####     can be put in parenthesis; both singular and plural will be keywords
#####
##### . The default value is automatically reported in the help.
#####
##### . In addition, the definition can have optional attributes:
#####       - ALGO_COMPATIBILITY_CHECK yes/no, the default is no. If yes, the
#####         value of this attribute can be used for comparing two sets of
#####         attributes for algorithm compatibility. This is used by the
#####         Runner.
#####
#####       - RESTART_ATTRIBUTE yes/no, the default is no. If yes, the
#####         value of this attribute can be modified during hot or warm
#####         restart. Otherwise, modifying this attribute during hot restart
#####         will trigger an error message.
#####
#####       - UNIQUE_ENTRY yes/no, the default is yes. If no, multiple
#####         values may be assigned to this parameter.
#####
###############################################################################
ADD_SEED_TO_FILE_NAMES
bool
true
\( The flag to add seed to the file names \)
\(

. If \'yes\', the seed is added to the name of output file provided by STATS_FILE

. Argument: one boolean (\'yes\' or \'no\')

. Example: ADD_SEED_TO_FILE_NAMES no

\)
\( advanced seed(s) random number run stat(s) file history solution(s) \)
ALGO_COMPATIBILITY_CHECK no
RESTART_ATTRIBUTE no
################################################################################
ANISOTROPIC_MESH
bool
true
\( MADS uses anisotropic mesh for generating directions \)
\(

. MADS uses anisotropic mesh for generating directions

. Argument: one boolean ('yes' or 'no')

. Example: ANISOTROPIC_MESH no

\)
\( advanced mads direction(s) anisotropic anisotropy aniso \)
ALGO_COMPATIBILITY_CHECK yes
RESTART_ATTRIBUTE yes
################################################################################
ANISOTROPY_FACTOR
NOMAD::Double
0.1
\( MADS anisotropy factor for mesh size change \)
\(

. Set anisotropy_factor for mesh relative coarsening/refining if the anisotropic
  mesh is enabled.

. Argument: one positive real

. Example: ANISOTROPY_FACTOR 0.05

\)
\( advanced mads direction(s) anisotropic anisotropy aniso \)
ALGO_COMPATIBILITY_CHECK yes
RESTART_ATTRIBUTE yes
################################################################################
DIRECTION_TYPE
NOMAD::DirectionTypeList
ORTHO N+1 QUAD
\( Direction types for Poll steps \)
\(
. Direction types used by Poll steps (Mads and CS) to generate trial points.

. Several direction types can be defined (one direction type per line).

. Arguments: direction type in:
    ORTHO 2N      : OrthoMADS, 2n
    ORTHO N+1 NEG : OrthoMADS, n+1, with (n+1)th dir = negative sum of
                                                       the first n dirs
    ORTHO N+1 QUAD: OrthoMADS, n+1, with (n+1)th dir from quad
                                                     model optimization
    N+1 UNI       : MADS with n+1, uniform distribution of dirs
    SINGLE        : Single direction
    DOUBLE        : Two opposite directions
    CS            : Coordinate directions (only with CS_OPTIMIZATION)

. Examples:
    . DIRECTION_TYPE N+1 UNI
    . DIRECTION_TYPE ORTHO 2N
    . DIRECTION_TYPE DOUBLE

\)
\( advanced poll direction ortho \)
ALGO_COMPATIBILITY_CHECK yes
RESTART_ATTRIBUTE no
UNIQUE_ENTRY no
################################################################################
DIRECTION_TYPE_SECONDARY_POLL
NOMAD::DirectionTypeList
DOUBLE
\( Direction types for Mads secondary poll \)
\(
. Direction types for the secondary poll

. Several direction types can be defined (one direction type per line).

. Arguments: same as DIRECTION_TYPE

. If DIRECTION_TYPE is ORTHO 2N or ORTHO N+1 NEG is defined, then the default
  value for DIRECTION_TYPE_SECONDARY_POLL is DOUBLE. Otherwise, it is SINGLE.

. Examples:
    . DIRECTION_TYPE_SECONDARY_POLL ORTHO 2N
    . DIRECTION_TYPE_SECONDARY_POLL SINGLE

. See also: DIRECTION_TYPE RHO

\)
\( advanced poll direction primary secondary \)
ALGO_COMPATIBILITY_CHECK yes
RESTART_ATTRIBUTE no
UNIQUE_ENTRY no
################################################################################
FRAME_CENTER_USE_CACHE
bool
false
\( Find best points in the cache and use them as frame centers \)
\(
. When this parameter is true, when the Update step occurs, the points with
  the best values are found in the Cache. Multiple points may have the same
  value. These points are all used as frame centers for the next Search and
  Poll steps.

. When this parameter is false, the frame centers (one feasible and one
  infeasible) are kept from previous iterations. This is the classical
  MADS algorithm.

\)
\( advanced \)
ALGO_COMPATIBILITY_CHECK yes
RESTART_ATTRIBUTE yes
################################################################################
H_MAX_0
NOMAD::Double
NOMAD::INF
\( Initial value of hMax. \)
\(
. Initial value of hMax. Used for progressive barrier (PB) constraints.

. Argument: one positive real.

. Points x such that h(x) > hMax are rejected. h measures the feasibility, or
  how much the constraints are violated.

. Example: H_MAX_0 100.0

\)
\( advanced hmax h_max constraint(s) pb feasibility progressive barrier \)
ALGO_COMPATIBILITY_CHECK yes
RESTART_ATTRIBUTE no
################################################################################
HOT_RESTART_FILE
std::string
hotrestart.txt
\( The name of the hot restart file \)
\(

. Name of the file where the information about hot restart is kept.


\)
\( advanced hot restart file(s) file interrupt \)
ALGO_COMPATIBILITY_CHECK no
RESTART_ATTRIBUTE no
################################################################################
HOT_RESTART_ON_USER_INTERRUPT
bool
false
\( Flag to perform a hot restart on user interrupt \)
\(

. If true, when NOMAD runs and the user does an interruption (CTRL+C),
  then the parameters can be modified. Upon pressing CTRL+D, the resolution
  continues where it was stopped, using the modified parameters.

. If false, when NOMAD runs and the user does an interruption (CTRL+C),
  the resolution ends.

\)
\( advanced hot restart file(s) interrupt \)
ALGO_COMPATIBILITY_CHECK no
RESTART_ATTRIBUTE no
################################################################################
HOT_RESTART_READ_FILES
bool
false
\( Flag to read hot restart files \)
\(

. If true, the hot restart files (hotRestart.txt and CACHE_FILE) are read
  when NOMAD is started. If NOMAD is ran twice, the second run starts from
  where the first run ended.

. If false, the hot restart files are ignored when NOMAD is started. Two runs
  in a row will start from the same configuration.

. See also: HOT_RESTART_WRITE_FILES, CACHE_FILE

\)
\( advanced hot restart file(s) interrupt \)
ALGO_COMPATIBILITY_CHECK no
RESTART_ATTRIBUTE no
################################################################################
HOT_RESTART_WRITE_FILES
bool
false
\( Flag to write hot restart files \)
\(

. If true, when NOMAD ends, write the hot restart files (hotRestart.txt and
  CACHE_FILE).

. See also: HOT_RESTART_READ_FILES, CACHE_FILE

\)
\( advanced hot restart file(s) interrupt \)
ALGO_COMPATIBILITY_CHECK no
RESTART_ATTRIBUTE no
################################################################################
MAX_ITERATIONS
size_t
INF
\( The maximum number of iterations of the MADS algorithm \)
\(

. Maximum number of iterations

. Argument: one positive integer. INF means there is no maximum.

. Example: MAX_ITERATIONS 1000

\)
\( advanced max maximum iteration(s) stop(s) stopping criterion(s) \)
ALGO_COMPATIBILITY_CHECK yes
RESTART_ATTRIBUTE yes
################################################################################
MAX_ITERATION_PER_MEGAITERATION
size_t
INF
\( Maximum number of Iterations to generate for each MegaIteration. \)
\(
. Maximum number of Iterations to generate for each MegaIteration.

. Argument: one positive integer. INF means there is no maximum.

. If there are few points in the barrier, this parameter has no effect.

. If FRAME_CENTER_USE_CACHE is false, this parameter has no effect.

. If there are many points in the barrier, this parameter limits
  the number of iterations generated.
  A mixture of feasible and infeasible points of the barrier is used to
  generate iterations.
  Each iteration uses a point of the barrier as frame center.

\)
\( advanced \)
ALGO_COMPATIBILITY_CHECK yes
RESTART_ATTRIBUTE yes
################################################################################
MAX_TIME
size_t
INF
\( Maximum wall-clock time in seconds \)
\(
. Argument: one positive integer. INF means there is no maximum.

. Example: MAX_TIME 3600 # one hour max

\)
\( basic clock stop time \)
ALGO_COMPATIBILITY_CHECK no
RESTART_ATTRIBUTE yes
################################################################################
MEGA_SEARCH_POLL
bool
false
\( Evaluate points generated from Search and Poll steps all at once \)
\(
. If true, generate all points from Search and Poll steps, and then
  start evaluation. This method is preferred when multiple processes
  are available in parallel to evaluate points. This way, more processes
  will work on evaluating points simultaneously.

. If false, generate points from Search, evaluate them, and then continue
  to Poll, or to next Search. This is the classic way of evaluation.
  If multiple processes are available for evaluation, and the Search step
  generated a single point, only that point is evaluated while the other
  processes do nothing.

\)
\( advanced \)
ALGO_COMPATIBILITY_CHECK yes
RESTART_ATTRIBUTE yes
################################################################################
NB_THREADS_OPENMP
int
-1
\( The number of threads when OpenMP parallel evaluations
are enabled \)
\(

. Set the number of threads to be used by OpenMP.

. Argument: One positive integer, or -1. A value of -1 means OpenMP decides
  by itself.

. Example: NB_THREADS_OPENMP 8

\)
\( advanced thread(s) openmp parallel eval(s) evaluation(s) \)
ALGO_COMPATIBILITY_CHECK yes
RESTART_ATTRIBUTE no
################################################################################
REJECT_UNKNOWN_PARAMETERS
bool
false
\( Flag to reject unknown parameters when checking validity of parameters \)
\(

. If true, when reading a parameters file, NOMAD will ignore unknown parameters.

. If false, when reading a parameters file, NOMAD will exit if unknown
  parameters are present.

\)
\( advanced valid param(s) parameter(s) ignore \)
ALGO_COMPATIBILITY_CHECK no
RESTART_ATTRIBUTE no
################################################################################
RHO
NOMAD::Double
0.1
\( Rho parameter of the progressive barrier \)
\(
. Used to choose if the primary frame center is the feasible or infeasible
  incumbent.

. Argument: real

. If the value is negative, both feasible and infeasible incumbents are
  treated as primary poll centers.

. Example: RHO 0.5
\)
\( advanced primary secondary \)
ALGO_COMPATIBILITY_CHECK yes
RESTART_ATTRIBUTE no
################################################################################
SEED
int
0
\( The seed for the pseudo-random number generator \)
\(

. Random seed

. Argument: one nonnegative integer (max UINT32_MAX)

. The default value is used for each run if the parameter is not provided.

. The seed is used in the output file names

. Example: SEED 123456

\)
\( advanced seed(s) random number run \)
ALGO_COMPATIBILITY_CHECK yes
RESTART_ATTRIBUTE yes
################################################################################
SPECULATIVE_SEARCH
bool
true
\( MADS speculative search method \)
\(

. MADS speculative search (optimistic strategy)

. Argument: one boolean ('yes' or 'no')

. Example: SPECULATIVE_SEARCH no

\)
\( basic mads search speculative \)
ALGO_COMPATIBILITY_CHECK yes
RESTART_ATTRIBUTE yes
################################################################################
SPECULATIVE_SEARCH_BASE_FACTOR
NOMAD::Double
4.0
\( Distance of the MADS speculative search method \)
\(

. The MADS speculative search creates a point in a direction of success from the
  best incumbent(s). The distance depends on the frame size, the number of search
  points to be generated and a base factor (>1).

. Argument: one NOMAD::Double strictly greater than 1.

. Example: SPECULATIVE_SEARCH_BASE_FACTOR 3.0

\)
\( advanced mads search speculative \)
ALGO_COMPATIBILITY_CHECK yes
RESTART_ATTRIBUTE yes
################################################################################
SPECULATIVE_SEARCH_MAX
size_t
1
\( MADS speculative search method \)
\(

. Number of points to generate using the MADS speculative search (optimistic
  strategy)

. Argument: one positive integer

. Example: SPECULATIVE_SEARCH_MAX 2

\)
\( advanced mads search speculative \)
ALGO_COMPATIBILITY_CHECK yes
RESTART_ATTRIBUTE yes
################################################################################
STOP_IF_FEASIBLE
bool
false
\( Stop algorithm once a feasible point is obtained \)
\(

. Stopping criterion on feasibility.

. Argument: boolean.

. Example:
    . STOP_IF_FEASIBLE true.

\)
\( advanced stopping terminate(s) termination(s) \)
RESTART_ATTRIBUTE no
################################################################################
STOP_IF_PHASE_ONE_SOLUTION
bool
false
\( Stop algorithm once a phase one solution is obtained \)
\(

. Stopping criterion on feasibility. Used by the Phase One algorithm
  to obtain a feasible point when EB (Extreme Barrier) constraints
  are set and the starting point is infeasible.

. A Phase One solution is a point for which the EB constraints are
  satisfied. Any PB (Progressive Barrier) constraints are ignored.

. Argument: boolean.

. Example:
    . STOP_IF_PHASE_ONE_SOLUTION true.

\)
\( advanced stopping terminate(s) termination(s) phase one  \)
RESTART_ATTRIBUTE no
################################################################################
USER_CALLS_ENABLED
bool
true
\( Controls the automatic calls to user function \)
\(
. If true the user functions are called (update_iteration, ...)

\)
\( advanced user(s) callback function(s) \)
ALGO_COMPATIBILITY_CHECK no
RESTART_ATTRIBUTE yes
################################################################################
