Алгоритм подсчета очков / рейтинга - PullRequest
4 голосов
/ 07 сентября 2010

Суть

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

Как работают соревнования

Соревнования состоят из команды, состоящей из одного или нескольких спортсменов / участников из данного спортзала, которые соревнуются с таким же количеством участников из одного или нескольких других спортивных залов.Нет ограничений по количеству спортивных залов, которые могут участвовать в конкурсе - потенциально может быть более ста спортивных залов, которые могут принять участие в конкурсе.Очки присваиваются каждой команде в зависимости от различных факторов: времени, повторений, самого тяжелого подъема и т. Д.

Присвоение баллов каждой команде в рамках одного соревнования является легкой частью;все становится немного интереснее, когда мы пытаемся составить рейтинг для каждого спортзала на основе их истории соревнований.Интуитивно понятно, что команда, занявшая 1-е место среди 10 других спортивных залов в соревновании, должна иметь более высокий ранг, чем команда, занявшая 1-е место среди 5 других спортивных залов другого соревнования.

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

Ответы [ 3 ]

4 голосов
/ 03 декабря 2010

Проверьте TrueSkill, используемый в Halo для ранжирования игроков. http://research.microsoft.com/en-us/projects/trueskill/details.aspx ELO имеет дело только с 1 на 1, тогда как TrueSkill может работать с командами из 1 или более игроков и несколькими командами.

Есть также онлайн-калькуляторы, если вы не хотите ничего кодировать. Если вам нужны примеры кода, оригинал доступен на F #, Джефф Мозер перекодировал его в C # и недавно в PHP. Google "Джефф Мозер Компьютерные навыки"

1 голос
/ 07 сентября 2010

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

Например:

Обычно, когда упражнение x выполнено в 40 раз, его мышцу можно увеличить на 5 пунктов

Мистер.А делает упражнение х 30 раз и получил 4 мышцы.Следовательно, оценка по г-ну А = (4/30) / (5/40)

Общая оценка представляет собой сумму другого упражнения, выполненного г-ном А. Всего = Оценка (x) + Оценка (y)+ Score (z)

Это достаточно справедливо, поскольку фактический результат сравнивается непосредственно с ожидаемым результатом.Это также может помешать сильному человеку выполнить легкое упражнение.Поскольку, вы знаете, Арнольд Шварценеггер не может увеличить свою мышцу, используя 1 кг гантелей.

Конечно, единица (мышца) может варьироваться в зависимости от упражнения.

1 голос
/ 07 сентября 2010

Как насчет того, чтобы относиться к каждой команде как к "избиению" всех команд, которые она поставила выше в определенном соревновании, и "к проигрышу" для всех команд, которые она поставила ниже?Затем вы можете вычислить ELO для каждой команды с течением времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...