.. probability(), temperature() and neighbour() functions were
not implemented for a correct SA implementation.
.. results still need to be constrained to avoid solutions that
are implausible for the athlete status or history
.. added a solver using a simulated annealing algorithm.
.. the solver is constrained to physiologically plausible
values, but these may not be valid for the athlete. So
a second update is required to allow the user to constrain
the solver.
.. secondly, the algorithm cannot be halted and doesn't use
multiple CPUs/threads should they be available this should
be in a second update to part 2
.. finally, a visualisation is needed to show the solver progress
across the search space to give the user an indication of
where the best solutions were found (especially if they don't
constrain it themselves).