tin-woodman
@tin-woodman
Топорный подход к красно-черным деревьям

Как смягчить экспоненциальную выдержку?

Захотелось странного, чтобы экспонента была не такой экспонентой. Использую алгоритм экспоненциальной выдержки delay = min(2^attempt * base_delay, max_delay) и радуюсь тому, как задержка взлетает с десяти секунд до пары часов при первых попытках, но не радуюсь дальнейшим темпам роста. Хочется как-то смягчить приращения при больших значениях attempt, но к своему позору не соображу как.
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 1
twobomb
@twobomb
Не совсем не пойму, ну возможно необходимо уменьшить шаг приращения attemp что даст более плавные и долгие значения.
А если вам нужно чтобы сначала все быстро шло, а конце более плавно. То в начале делаете шаг большим, а чем ближе к конце тем шаг меньше. Таким образом вначале быстро пойдет набор, а в дальнешем перерастет в более медленный и плавный, в зависимости от того насколько сильно поменяете шаг приращения.
Можно шаг приращение каждый умножать на такую херню
(1 - last_delay/max_delay)
last_delay это предыдущая задержка, первый шагом её можно сделать равно нулю
Но всеравно в таком случае чем ближе к концу тем оно сильнее стремится к бесконечности и крч есть вариант что оно никогда не закончится поэтому нужно немного доработать например так
(0.2 + (1 - last_delay/max_delay) * 0.8)
Как это применять? Шаг приращения вашего attemp умножайте на эту хрень
Например у вас step = 0.5
Значит каждую итерация
step = 0.5 * (0.2 + (1 - last_delay/max_delay) * 0.8)
Крч я не матетематик, думайте пробуйте
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы