Взвешенный алгоритм голосования - PullRequest
2 голосов
/ 09 ноября 2010

Я ищу информацию о том, какой алгоритм голосования будет для меня лучшим. У меня есть базовая система голосования «Вверх / Вниз», где пользователь может голосовать только за продукт. Я бы хотел, чтобы он был взвешенным, чтобы годовалый продукт не соответствовал тем же стандартам, что и новый.

Я думаю сделать алгоритм, который принимает количество голосов за каждый продукт за последние 30 дней. Однако это создает ничью. Я не хочу, чтобы голоса старше 30 дней стали бессмысленными, но, возможно, не такими весовыми, как новые. Тогда, возможно, голоса после 90 дней даже будут взвешены меньше, чем голоса старше 30 дней.

Кто-нибудь знает об алгоритме, который делает это уже, и даже более того, может быть легко вычислен в PHP?

Ответы [ 2 ]

3 голосов
/ 09 ноября 2010

Google App Engine имеет хороший пример , который имеет дело с голосами, которые "затухают" со временем.

Это на Python, но оно должно соответствовать вашим потребностям.

0 голосов
/ 09 ноября 2010

Я думаю, что, учитывая простоту ваших требований, лучший способ действий - написать это самостоятельно.

Не зная больше, я думаю, что ваша задача будет заключаться в том, чтобы решить, сохранять ли эти данные в вашей базе данных впредварительно взвешенный формат (например, «когда голосование подано, дайте ему $ this_year + 1 очко»), независимо от того, рассчитываете ли вы весовой коэффициент в своем запросе к базе данных (например, порядок по баллам, который учитывает как положительные, так и даты голосованияли), или вы возвращаете все необходимые данные и выводите весовые коэффициенты в PHP.Выбор зависит от того, что именно должно делать ваше приложение, и сколько данных там будет.

...