search_better_random: Search for a better projection using simulated annealing
Description
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