Короче говоря : вы создали экстремальную ледяную бурю , в которой сообщения просто замерзают через 48 часов.
Нет ничего "неправильного" в вашемалгоритм, но вы позволяете счетам «остывать» слишком быстро.
Представьте, что посту два дня (тогда предложение if
) срабатывает.В этом случае x = 1
, и в этом случае exp(..)
приведет к:
>>> exp(-8)
0.00033546262790251185
Это верно.0.00033...
или 0.03%
.Таким образом, это означает, что если ваш пост набрал 10 000 голосов, базовый балл составляет 9.21
, и после этого умножения только:
>>> log(10000) * exp(-8)
0.003089724985059729
Да, схема охлаждения должна гарантировать, что в конечном итоге все остынет, но непоместив сообщения в ледяную бурю.
Вы можете, например, удалить фактор 8*
.Это означает, что на второй день мы умножаем счет на ~ 0.37
или 36,79%.Вы можете немного поэкспериментировать с фактором или некоторыми другими частями схемы охлаждения и, таким образом, позволить постам хорошо остыть.
Другой аспект заключается в том, что время довольно опровергнуто : вы считаетеколичество дней.Но это означает, что до тех пор, пока второй день не полностью закончен, значение равно 1. Но с момента, когда второй день закончился, " температура " поста делает гигантское падение.Вы можете использовать количество секунд и вместо этого делить на 86'400:
timeDiff = (now - self.post.date).total_seconds() / 86400 # continuum