R/search_polish.r
search_polish.Rd
Search very locally to find slightly better projections to polish a broader search.
search_polish(
current,
alpha = 0.5,
index,
tries,
polish_max_tries = 30,
cur_index = NA,
n_sample = 100,
polish_cooling = 1,
...
)
the current projection basis
the angle used to search the target basis from the current basis
index function
the counter of the outer loop of the opotimiser
maximum number of iteration before giving up
the index value of the current basis
number of samples to generate
percentage of reduction in polish_alpha when no better basis is found
other arguments being passed into the search_polish()
set.seed(2020)
t1 <- save_history(flea[, 1:6], guided_tour(holes()), max = 100)
#> Converting input data to the required matrix format.
#> Value 0.740 35.5 % better - NEW BASIS
#> Value 0.832 52.3 % better - NEW BASIS
#> Value 0.854 2.7 % better - NEW BASIS
#> Value 0.884 3.5 % better - NEW BASIS
#> Value 0.891 0.9 % better - NEW BASIS
#> Value 0.897 0.6 % better - NEW BASIS
#> Value 0.899 0.2 % better - NEW BASIS
#> Value 0.900 0.1 % better - NEW BASIS
#> Value 0.901 0.1 % better - NEW BASIS
#> Value 0.903 0.1 % better - NEW BASIS
#> Value 0.903 0.1 % better
#> Value 0.904 0.1 % better - NEW BASIS
#> Value 0.904 0.1 % better
#> Value 0.904 0.1 % better
#> Value 0.904 0.1 % better
#> Value 0.904 0.0 % better
#> Value 0.904 0.1 % better
#> Value 0.905 0.1 % better - NEW BASIS
#> Value 0.905 0.0 % better
#> Value 0.905 0.0 % better
#> Value 0.906 0.2 % better - NEW BASIS
#> Value 0.908 0.2 % better - NEW BASIS
#> Value 0.909 0.1 % better - NEW BASIS
#> Value 0.909 0.0 % better
#> Value 0.910 0.1 % better
#> Value 0.910 0.1 % better - NEW BASIS
#> Value 0.911 0.1 % better
#> Value 0.910 0.0 % better
#> Value 0.910 0.0 % better
#> Value 0.911 0.0 % better
#> Value 0.911 0.1 % better
#> Value 0.911 0.1 % better
#> Value 0.911 0.1 % better
#> Value 0.911 0.1 % better
#> Value 0.911 0.1 % better
#> Value 0.911 0.1 % better
#> Value 0.910 0.0 % better
#> Value 0.911 0.0 % better
#> Value 0.911 0.1 % better
#> Value 0.911 0.1 % better
#> Value 0.910 0.0 % better
#> Value 0.910 0.0 % better
#> Value 0.910 0.0 % better
#> Value 0.911 0.1 % better
#> Value 0.911 0.1 % better - NEW BASIS
#> Value 0.912 0.1 % better
#> Value 0.912 0.1 % better - NEW BASIS
#> Value 0.912 0.0 % better
#> Value 0.912 0.0 % better
#> Value 0.913 0.1 % better
#> Value 0.913 0.0 % better
#> Value 0.912 0.0 % better
#> Value 0.913 0.1 % better - NEW BASIS
#> Value 0.914 0.0 % better
#> Value 0.914 0.0 % better
#> Value 0.913 0.0 % better
#> Value 0.913 0.0 % better
#> Value 0.913 0.0 % better
#> Value 0.914 0.0 % better
#> Value 0.913 0.0 % better
#> Value 0.914 0.0 % better
#> Value 0.914 0.0 % better
#> Value 0.914 0.0 % better
#> Value 0.914 0.0 % better
#> Value 0.913 0.0 % better
#> Value 0.914 0.0 % better
#> Value 0.914 0.0 % better
#> Value 0.913 0.0 % better
#> Value 0.913 0.0 % better
#> Value 0.914 0.1 % better
#> Value 0.914 0.0 % better
#> Value 0.913 0.0 % better
#> Value 0.914 0.1 % better
#> Value 0.914 0.1 % better
#> Value 0.914 0.0 % better
#> Value 0.913 0.0 % better
#> Value 0.914 0.0 % better
#> No better bases found after 25 tries. Giving up.
#> Final projection:
#> -0.527 0.039
#> -0.040 0.391
#> -0.037 0.456
#> 0.059 0.524
#> -0.846 -0.007
#> 0.027 0.602
attr(t1, "class") <- NULL
best_proj <- t1[, , dim(t1)[3]]
animate_xy(
flea[, 1:6],
guided_tour(holes(),
search_f = search_polish,
cur_index = 0
),
start = best_proj
)
#> Converting input data to the required matrix format.
#> alpha gets updated to 0.475
#> alpha gets updated to 0.4286875
#> alpha gets updated to 0.3675459
#> alpha gets updated to 0.2993685
#> alpha gets updated to 0.2316456
#> alpha gets updated to 0.1702808
#> alpha gets updated to 0.1189134
#> alpha gets updated to 0.07888961
#> better basis found, index_val = 0.9138799
#> better basis found, index_val = 0.9142625
#> better basis found, index_val = 0.9143806
#> alpha gets updated to 0.04972013
#> better basis found, index_val = 0.9150011
#> alpha gets updated to 0.02976928
#> better basis found, index_val = 0.9151749
#> better basis found, index_val = 0.915217
#> alpha gets updated to 0.01693277
#> better basis found, index_val = 0.9152574
#> The improvement is too small!
#> current basis: -0.630828 -0.04306601 -0.01484365 0.1367652 -0.7587744 0.0744156 0.0241523 0.3725548 0.4504461 0.5111922 0.1030181 0.6211181 cur_index: 0.9152574
#> Using half_range 0.98