LINUX.ORG.RU

Асинхронное голосование и голосующие стратеги

 , ,


0

2

Есть голосование, результаты которого влияют на работу триггера (если большинство - согласно, выполнить триггер; в противном случае - нет). Голосование проводится асинхронно, т.е. может занять несколько дней, недель, месяцев.

Все пользователи не равны, у каждого - свой рейтинг, который определяет вес голоса. При этом, рейтинг не постоянен и может измениться в любой момент для каждого из пользователей. Для получения результата нужен кворум (по количеству рейтинга).

label 1: Как бы вы организовали работу подобной системы, чтобы избежать голосующих-стратегов? Типа, все голосуют сейчас (пока у всех рейтинг около 1.0), а я проголосую через две недели, когда мой рейтинг будет 5.0.

Хранить не сам рейтинг, а проголовавших и пересчитывать голоса каждый раз относительно нового рейтинга каждого из участников? Накладно.

На начало голосования записать текущий рейтинг каждого из участников и использовать его? Пока - лучший вариант.

Ясен красен, это зависит от целей проекта. Тем не менее, goto [1].



Последнее исправление: jenyadoe (всего исправлений: 1)

Хранить не сам рейтинг, а проголовавших и пересчитывать голоса каждый раз относительно нового рейтинга каждого из участников? Накладно.

На начало голосования записать текущий рейтинг каждого из участников и использовать его?

Это 2 различных поведения с разными результатами голосования при одинаковом выборе голосующих, какое вам нужно, то и используйте.

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 1)

Если рейтинг может не только расти, но и падать, то часть пользователей будет голосовать не в последний момент, а в тот момент, когда их рейтинг достигнет оценочного максимального значения за период.

На начало голосования записать текущий рейтинг каждого из участников и использовать его?

Если пользователь не имеет задачи победить в следующих голосованиях или не знает о них, то ему будет неинтересно поднимать рейтинг, так как он уже записан.

Хранить не сам рейтинг, а проголовавших и пересчитывать голоса каждый раз относительно нового рейтинга каждого из участников? Накладно.

Почему же? Один запрос к базе. Хранить голоса все равно полезно для целей статистики и аналитики, например.

amomymous ★★★
()

Давай зайду издалека. Мы сейчас о «триггере» в железе или о абстрактной задаче?

Процесс разовый, или повторяющийся или текущий во времени и в новое время результат может быть новый?

Почему могут появляться стратеги? Разве можно предсказать свой рейтинг? Откуда они знают что он не станет 0.001?

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от vertexua

Давай зайду издалека. Мы сейчас о «триггере» в железе или о абстрактной задаче?

Нет, не в железе. Триггер - некая программа, меняющая значения в БД. Например, триггер «давайте забаним Джона», все голосуют, результат.

Процесс разовый, или повторяющийся или текущий во времени и в новое время результат может быть новый?

Это про какой процесс речь?

Почему могут появляться стратеги? Разве можно предсказать свой рейтинг? Откуда они знают что он не станет 0.001?

Рейтингом, на самом деле является количество акций (shares), которые распределены в определенной пропорции:

Вася - 10%, Петя - 40%, Коля - 50%

Но за счёт календарного вестинга (calendar vesting) акции пользователи получают не сразу, а постепенно. Скажем, если у всех условия вестинга одинаковые:

Период - 10 месяцев, расписание - ежемесячно по 5%

То Коля в конце первого месяца получит 5%, второго - ещё 5%, после третьего будет иметь 15%. И так, пока к концу 10 месяца не получит свои 50% в полном объёме. Так же и для других (но условия вестинга у них могут быть разные).

Иными словами, «рейтинг» свой они могут предсказать.

jenyadoe
() автор топика
Ответ на: комментарий от jenyadoe

Т.е. «рейтинг» - это постоянно растущая величина, которая, однако, может внезапно перестать расти (aka «веститься»). Так же у каждого из участников может быть много разных акций с разными условиями вестинга. Не стал сразу говорить, чтобы не усложнять.

jenyadoe
() автор топика

label 1: Как бы вы организовали работу подобной системы, чтобы избежать голосующих-стратегов? Типа, все голосуют сейчас (пока у всех рейтинг около 1.0), а я проголосую через две недели, когда мой рейтинг будет 5.0.

никак. Ошибка в ТЗ. Это типичное деление нуля на ноль, которое может привести к ЛЮБОМУ наперёд заданному результату.

Ошибка в том, что рейтинги должны быть фиксированы на момент ГОЛОСОВАНИЯ, т.е. голосование должно быть мгновенным. Иначе оно не имеет смысла.

emulek
()
Ответ на: комментарий от jenyadoe

Иными словами, «рейтинг» свой они могут предсказать.

тогда смириться с существованием стратегов, чо. Или голосувание проводить в сроки, заведомо меньшие интервала изменения рейтинга. Или считать рейтинг по началу голосования. Что в конце концов получить-то надо? Чем плохи стратеги, кроме наличия мозга?

ну и

Хранить не сам рейтинг, а проголовавших и пересчитывать голоса каждый раз относительно нового рейтинга каждого из участников? Накладно.

зачем каждый раз? единожды по окончанию голосования. Ну и даже если оно надо иметь предварительные результаты по ходу пьянки - это считается весьма быстро.

arkhnchul ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.