code: def default_update(self, step, T, E, acceptance, improvement):
          
  
          elapsed = time.time() - self.start
          if step == 0:
              print(' Temperature        Energy    Accept   Improve     Elapsed   Remaining',
                    file=sys.stderr)
              print('\r%12.5f  %12.2f                      %s            ' %
                    (T, E, time_string(elapsed)), file=sys.stderr, end="\r")
              sys.stderr.flush()
          else:
              remain = (self.steps - step) * (elapsed / step)
              print('\r%12.5f  %12.2f  %7.2f%%  %7.2f%%  %s  %s\r' %
                    (T, E, 100.0 * acceptance, 100.0 * improvement,
                     time_string(elapsed), time_string(remain)), file=sys.stderr, end="\r")
              sys.stderr.flush()
docs: Default update, outputs to stderr.
  
          Prints the current temperature, energy, acceptance rate,
          improvement rate, elapsed time, and remaining time.
  
          The acceptance rate indicates the percentage of moves since the last
          update that were accepted by the Metropolis algorithm.  It includes
          moves that decreased the energy, moves that left the energy
          unchanged, and moves that increased the energy yet were reached by
          thermal excitation.
  
          The improvement rate indicates the percentage of moves since the
          last update that strictly decreased the energy.  At high
          temperatures it will include both moves that improved the overall
          state and moves that simply undid previously accepted moves that
          increased the energy by thermal excititation.  At low temperatures
          it will tend toward zero as the moves that can decrease the energy
          are exhausted and moves that would increase the energy are no longer
          thermally accessible.