
Search for a better projection using simulated annealing
Source:R/search-better.r
search_better_random.RdGiven an initial \(t0\), the cooling scheme updates temperature at $$T = t0 /\log(i + 1)$$ The candidate basis is sampled via $$B_j = (1 - \alpha) * B_i + \alpha * B$$ where alpha defines the neighbourhood, \(B_i\) is the current basis, B is a randomly generated basis The acceptance probability is calculated as $$prob = \exp{-abs(I(B_i) - I(B_j))/ T}$$ For more information, see https://projecteuclid.org/download/pdf_1/euclid.ss/1177011077
Usage
search_better_random(
current,
alpha = 0.5,
index,
tries,
max.tries = Inf,
method = "linear",
cur_index = NA,
t0 = 0.01,
...
)Arguments
- current
starting projection
- alpha
the angle used to search the target basis from the current basis
- index
index function
- tries
the counter of the outer loop of the opotimiser
- max.tries
maximum number of iteration before giving up
- method
whether the nearby bases are found by a linear/ geodesic formulation
- cur_index
the index value of the current basis
- t0
initial decrease in temperature
- ...
other arguments being passed into the
search_better_random()
Examples
animate_xy(flea[, 1:6], guided_tour(holes(), search_f = search_better_random))
#> Converting input data to the required matrix format.
#> Target: 1.147, try: 17, accept
#> Using half_range 4.4