def METHOD_NAME(self, metrics=None, epoch=None):
    # convert `metrics` to float, in case it's a zero-dim Tensor
    current = float(metrics)
    if epoch is None:
        epoch = self.last_epoch + 1
    self.last_epoch = epoch
    if self.is_better(current, self.best):
        self.best = current
        self.num_bad_epochs = 0
    else:
        self.num_bad_epochs += 1
    if self.in_cooldown:
        self.cooldown_counter -= 1
        self.num_bad_epochs = 0  # ignore any bad epochs in cooldown
    if self.num_bad_epochs > self.patience:
        self._reduce_lr(epoch)
        self.cooldown_counter = self.cooldown
        self.num_bad_epochs = 0
    self._last_lr = [group["lr"] for group in self.optimizer.param_groups]