@classmethod
def simulate_values(cls, num_events, **scheduler_kwargs):
    """Method to simulate scheduled values during num_events events.

        Args:
            num_events (int): number of events during the simulation.
            **scheduler_kwargs : parameter scheduler configuration kwargs.

        Returns:
            list of pairs: [event_index, value]

        Examples:

        .. code-block:: python

            lr_values = np.array(LinearCyclicalScheduler.simulate_values(num_events=50, param_name='lr',
                                                                         start_value=1e-1, end_value=1e-3,
                                                                         cycle_size=10))

            plt.plot(lr_values[:, 0], lr_values[:, 1], label="learning rate")
            plt.xlabel("events")
            plt.ylabel("values")
            plt.legend()

        """
    keys_to_remove = ['optimizer', 'save_history']
    for key in keys_to_remove:
        if key in scheduler_kwargs:
            del scheduler_kwargs[key]
    values = []
    scheduler = cls(optimizer={}, save_history=False, **scheduler_kwargs)
    for i in range(num_events):
        scheduler(engine=None)
        values.append([i, scheduler.optimizer_param_groups[0][scheduler.
            param_name]])
    return values
