Minimize solution using Simulated Annealing meta-heuristic.

initial Initial solution of type T to the problem.
cost_func Callable which takes current solution of type T, evaluates it and returns float with the cost estimate. The better solution is, the lower resulting value should be; negative values are allowed.
move_func Callable which takes current solution of type T and returns a new solution candidate of type T which is random iteration over input solution. The input solution, which is argument to this callback should not be mutated.
random_sample Callable which gives uniformly sampled random value from the [0, 1) interval on each call.
temp_initial Optional initial temperature for simulated annealing optimization. Scale of this value is cost_func-dependent.
temp_final Optional final temperature for simulated annealing optimization, where search should be stopped. Scale of this value is cost_func-dependent.
cooling_factor Optional factor to be applied to the current temperature and give the new temperature, this must be strictly greater than 0 and strictly lower than 1.
repeat Optional number of iterations to perform at each given temperature.
trace_func Optional callback for tracing simulated annealing progress. This is going to be called at each algorithm step for the arguments: solution candidate (T), current temperature (float), candidate cost (float), probability of accepting candidate (float), and acceptance decision (boolean).

The best solution found.

ValueError When supplied arguments are invalid.