cooling.schedule: Define the cooling schedule for simulated annealing

View source: R/cooling.schedule.R

cooling.scheduleR Documentation

Define the cooling schedule for simulated annealing

Description

This function should be used to configure a search with simulated annealing.

Usage

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
)

Arguments

type

Type of cooling schedule. "adaptive" (default) or "geometric"

start_temp

Start temperature on a log10 scale. Only used if auto_start_temp = FALSE.

end_temp

End temperature on a log10 scale. Only used if type = "geometric".

lambda

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 rigorous search with less total iterations.

total_iter

Total number of iterations that should be performed. Only used for the geometric cooling schedule.

markov_iter

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.

markov_leave_frac

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.

acc_type

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. "deterministc" accepts the new state, if and only if \mathrm{Score}_\mathrm{new} - \mathrm{Score}_\mathrm{old} < t.

frozen_def

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. Several frozen chains indicate that the search is finished.

frozen_acc_frac

If frozen_def = frozen_acc_frac, this parameter determines the fraction of iterations which defines a frozen chain.

frozen_markov_count

How many frozen chains need to be observed for finishing the search?

frozen_markov_mode

Do the frozen chains have to occur consecutively ("consecutive") or is the total number of frozen chains relevant ("total")?

start_temp_steps

If auto_start_temp = TRUE, how many iterations should be used for estimating the ideal start temperature?

start_acc_ratio

Which acceptance ratio should be achieved with the automatically configured start temperature?

auto_start_temp

Should the start temperature be configured automatically? TRUE or FALSE

remember_models

Should already evaluated models be saved in a 2-dimensional hash table to prevent fitting the same trees multiple times?

print_iter

After how many iterations shall a progress report be printed?

Details

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.

Value

An object of class cooling.schedule which is a list of all necessary cooling parameters.


logicDT documentation built on Jan. 14, 2023, 5:06 p.m.