This function should be used to configure a search with simulated annealing.
cooling.schedule(
type = "adaptive",
start_temp = 1,
end_temp = -1,
lambda = 0.01,
total_iter = 2e+05,
markov_iter = 1000,
markov_leave_frac = 1,
acc_type = "probabilistic",
frozen_def = "acc",
frozen_acc_frac = 0.01,
frozen_markov_count = 5,
frozen_markov_mode = "total",
start_temp_steps = 10000,
start_acc_ratio = 0.95,
auto_start_temp = TRUE,
remember_models = TRUE,
print_iter = 1000
)
An object of class cooling.schedule
which is a list of all necessary cooling parameters.
Type of cooling schedule. "adaptive"
(default) or "geometric"
Start temperature on a log10 scale.
Only used if auto_start_temp = FALSE
.
End temperature on a log10 scale.
Only used if type = "geometric"
.
Cooling parameter for the adaptive schedule. Values between 0.01 and 0.1 are recommended such that in total, several hundred thousand iterations are performed. Lower values lead to a more fine search with more iterations while higher values lead to a more coarse search with less total iterations.
Total number of iterations that should be performed. Only used for the geometric cooling schedule.
Number of iterations for each Markov chain. The standard value does not need to be tuned, since the temperature steps and number of iterations per chain act complementary to each other, i.e., less iterations can be compensated by smaller temperature steps.
Fraction of accepted moves
leading to an early temperature reduction. This is
primarily used at (too) high temperatures lowering
the temperature if essentially a random walk is
performed. E.g., a value of 0.5 together with
markov_iter = 1000
means that the chain will
be left if \(0.5 \cdot 1000 = 500\) states were
accepted in a single chain.
Type of acceptance function. The
standard "probabilistic"
uses the conventional
function
\(\exp((\mathrm{Score}_\mathrm{old} -
\mathrm{Score}_\mathrm{new})/t)\)
for calculating the acceptance probability.
"deterministic"
accepts the new state, if and only
if
\(\mathrm{Score}_\mathrm{new} -
\mathrm{Score}_\mathrm{old} < t\).
How to define a frozen chain.
"acc"
means that if less than
\(\texttt{frozen\_acc\_frac} \cdot
\texttt{markov\_iter}\) states with different scores
were accepted in a single chain, this chain is
marked as frozen. "sd"
declares a chain as frozen if the
corresponding score standard deviation is zero.
Several frozen chains indicate that the search is finished.
If frozen_def = "acc"
, this parameter
determines the fraction of iterations that define a frozen chain.
Number of frozen chains that need to be observed for finishing the search.
Do the frozen chains
have to occur consecutively ("consecutive"
)
or is the total number of frozen chains
relevant ("total"
)?
Number of iterations that should be used for
estimating the ideal start temperature if auto_start_temp =
TRUE
is set.
Acceptance ratio that should be achieved with the automatically configured start temperature.
Should the start
temperature be configured automatically?
TRUE
or FALSE
Should already evaluated models be saved in a 2-dimensional hash table to prevent fitting the same trees multiple times?
Number of iterations after which a progress report shall be printed.
type = "adapative"
(default)
automatically choses the temperature steps by using the
standard deviation of the scores in a Markov chain
together with the current temperature to
evaluate if equilibrium is achieved. If the standard
deviation is small or the temperature is high,
equilibrium can be assumed leading
to a strong temperature reduction. Otherwise, the
temperature is only merely lowered.
The parameter lambda
is essential to control
how fast the schedule will be executed and, thus,
how many total iterations will be performed.
type = "geometric"
is the conventional
approach which requires more finetuning. Here,
temperatures are uniformly lowered on a log10 scale.
Thus, a start and an end temperature have to be
supplied.