Return a copy of this instance using a custom cooling function.
Parameters:
cooling_fn (callable) – A function with signature (nt,m,ntimes)->float
where nt is the current time step, m is the current
iteration, and ntimes is the total number of time steps.