public enum EnvironmentMode extends Enum<EnvironmentMode>
Also, a Solver
has a single Random
instance.
Some optimization algorithms use the Random
instance a lot more than others.
For example simulated annealing depends highly on random numbers,
while tabu search only depends on it to deal with score ties.
This environment mode influences the seed of that Random
instance.
Enum Constant and Description |
---|
FAST_ASSERT
This mode turns on several assertions (but not all of them)
to fail-fast on a bug in a
Move implementation, a score rule, the rule engine itself or something else
at a reasonable performance cost (in development at least). |
FULL_ASSERT
This mode turns on all assertions
to fail-fast on a bug in a
Move implementation, a score rule, the rule engine itself or something else
at a horrible performance cost. |
NON_INTRUSIVE_FULL_ASSERT
This mode turns on several assertions (but not all of them)
to fail-fast on a bug in a
Move implementation, a score rule, the rule engine itself or something else
at a horrible performance cost. |
NON_REPRODUCIBLE
The non reproducible mode is equally fast or slightly faster than
REPRODUCIBLE . |
PRODUCTION
Deprecated.
Use
NON_REPRODUCIBLE instead. Will be removed in 8.0. |
REPRODUCIBLE
The reproducible mode is the default mode because it is recommended during development.
|
Modifier and Type | Method and Description |
---|---|
boolean |
isAsserted() |
boolean |
isIntrusiveFastAsserted() |
boolean |
isNonIntrusiveFullAsserted() |
boolean |
isReproducible() |
static EnvironmentMode |
valueOf(String name)
Returns the enum constant of this type with the specified name.
|
static EnvironmentMode[] |
values()
Returns an array containing the constants of this enum type, in
the order they are declared.
|
public static final EnvironmentMode FULL_ASSERT
Move
implementation, a score rule, the rule engine itself or something else
at a horrible performance cost.
This mode is reproducible (see REPRODUCIBLE
mode).
This mode is intrusive because it calls the ScoreDirector.calculateScore()
more frequently
than a non assert mode.
This mode is horribly slow.
public static final EnvironmentMode NON_INTRUSIVE_FULL_ASSERT
Move
implementation, a score rule, the rule engine itself or something else
at a horrible performance cost.
This mode is reproducible (see REPRODUCIBLE
mode).
This mode is non-intrusive, unlike FULL_ASSERT
and FAST_ASSERT
.
This mode is horribly slow.
public static final EnvironmentMode FAST_ASSERT
Move
implementation, a score rule, the rule engine itself or something else
at a reasonable performance cost (in development at least).
This mode is reproducible (see REPRODUCIBLE
mode).
This mode is intrusive because it calls the ScoreDirector.calculateScore()
more frequently
than a non assert mode.
This mode is slow.
public static final EnvironmentMode REPRODUCIBLE
Move
implementation) fairly
and reproduce bugs in your code reliably.
Warning: some code can disrupt reproducibility regardless of this mode. See the reference manual for more info.
In practice, this mode uses the default random seed, and it also disables certain concurrency optimizations (such as work stealing).
@Deprecated public static final EnvironmentMode PRODUCTION
NON_REPRODUCIBLE
instead. Will be removed in 8.0.NON_REPRODUCIBLE
because most users prefer to use REPRODUCIBLE
in production.public static final EnvironmentMode NON_REPRODUCIBLE
REPRODUCIBLE
.
The random seed is different on every run, which makes it more robust against an unlucky random seed. An unlucky random seed gives a bad result on a certain data set with a certain solver configuration. Note that in most use cases the impact of the random seed is relatively low on the result. An occasional bad result is far more likely to be caused by another issue (such as a score trap).
In multithreaded scenarios, this mode allows the use of work stealing and other non deterministic speed tricks.
public static EnvironmentMode[] values()
for (EnvironmentMode c : EnvironmentMode.values()) System.out.println(c);
public static EnvironmentMode valueOf(String name)
name
- the name of the enum constant to be returned.IllegalArgumentException
- if this enum type has no constant with the specified nameNullPointerException
- if the argument is nullpublic boolean isAsserted()
public boolean isNonIntrusiveFullAsserted()
public boolean isIntrusiveFastAsserted()
public boolean isReproducible()
Copyright © 2006–2019 JBoss by Red Hat. All rights reserved.