def multiplicative_schedule(
    initial_temperature, current_iteration, cooling_factor=10, **kwargs
):
    """Computes the current temperature using the multiplicative schedule
    formula, which is a function of the number of iterations and the initial
    temperature. The current temperature is equal to.

    .. math::
        \\frac{T_0}{(1 + \\alpha * k)}

    Of course, the multiplication factor must be > 1.

    Args:
        initial_temperature (int or float): the starting temperature of
            the algorithm.
        current_iteration (int): the number of rounds already elapsed.
        cooling_factor (float): the multiplication factor alpha.
            Must be inferior to 1.

    Returns:
        float: The new value for the temperature at round k.
    """
    assert cooling_factor > 1, (
        "Cooling factor must be bigger than 1,"
        "you're warming up the system >.<"
    )
    return initial_temperature / (1 + cooling_factor * current_iteration)