Given 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

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.
#> Old 1.581977 
#> New 1.581977 try 1 
#> Accept with probability, prob = 1 
#> Using half_range 66