2009-12-10 3 views
38

Я реализовал систему рейтинга Elo в игре. Количество игроков не ограничено. Игроки могут присоединиться к игре постоянно, поэтому количество игроков, вероятно, постепенно увеличивается.Elo rating system: стартовая ценность, когда игроки могут присоединиться к игре постоянно

Как точно рассчитываются значения Elo, это не важно из-за этого факта: если команда A бьет команду B, то выигрыш Elo E равен B's Elo loss.

Поэтому у меня есть проблема, связанная исходные значения для моей системы оценки:

  • Должен ли я использовать начальное значение «0» для каждого игрока? Сумма всех значений Elo будет постоянной. Но поскольку количество игроков увеличивается, будет какая-то дефляция Elo, не так ли?
  • Должен ли я использовать любое начальное значение больше 0? В этом случае сумма всех значений Elo будет постоянно увеличиваться. Так может быть инфляция Эло. Проблема: точки Elo теряют значение, но начальное значение всегда остается неизменным.

Что мне делать? Вы можете мне помочь? Заранее спасибо!

+2

Вы говорите ниже, что вы не хотите, чтобы Elo стала отрицательной. Тогда вы не можете начинать с 0. Если вы начинаете с 0, сумма всех значений Elo не будет постоянной, если вы искусственно закрепили счет, чтобы остаться> = 0. –

+1

Да, это так. Но даже начиная с 1000 или около того не препятствует тому, чтобы числа стали отрицательными, не так ли? – caw

ответ

52

Вы можете начать с нуля и добавить коэффициент выдумки к отображаемому счету, чтобы сохранить его выше нуля, или вы можете начать с 1000 - это то же самое. Да, с отправной точкой 1000 вы получите все большее количество очков ELO в системе, но в среднем каждый игрок будет равным числу - 1000. Начальное значение для Elo всегда является текущим средним. ELO - игра с нулевой суммой, очки, проигранные игроком A, получаются игроком B.

Когда вы устанавливаете начальную точку на 1000, по сути, вы говорите, что средний игрок = 1000 очков. С закрытой группой начальных игроков (бета-тестеров?) это правда, внутри этой группы средний = 1000. Но если игра - это то, что вы улучшаете со временем, то ваш средний игрок средней группы становится высококвалифицированным по сравнению с тем, кто не играл.

Теперь, когда вы назначаете 1000 новому игроку, вы говорите, что новые средние игроки = существующий высококвалифицированный средний игрок. Это неправда, они, вероятно, будут намного менее квалифицированы, чем ваша первоначальная закрытая группа. Таким образом, новый игрок теряет очки, а ваши высококвалифицированные игроки получают => инфляцию. То, что вам нужно сделать, - это точно оценить навыки новых игроков и присвоить им рейтинг, который больше соответствует их фактическому навыку. Это можно сделать, назначив им «предварительный рейтинг» для своих первых игр x, пока вы не почувствуете их мастерство. Когда в предварительном порядке оценивается только их показатель ELO, это изменится, а не те, в которых они играют. Как только они присоединятся к реальной системе, очки, которые они приносят в забитый ELO, будут примерно равняться их фактическому навыку, и они не будут резко или вверх не двигаться вверх или вниз => нет инфляции или дефляции.

Короче говоря: Предварительные рейтинги

+1

Большое спасибо! Поэтому я могу дать каждому игроку 1000 стартовых очков. Но у новых игроков есть только предварительная оценка для первых игр X. До сих пор? В этих играх X они только выигрывают или теряют очки как обычные, но их противники этого не делают. Правильно? – caw

+3

Да, точно. Затем, после нескольких временных игр, у вас должен быть рейтинг, который примерно отражает их истинную способность. Обновите их до нормального статуса игрока, с этим рейтингом, а затем обработайте их так же, как и все остальные. – Andrew

+0

Хорошо. Но стартовая ценность по-прежнему остается сложной. Выбирая либо очень слабых противников, либо довольно сильных противников - в зависимости от того, выше или ниже старт, чем средний, я могу оказать сильное влияние на стартовую ценность после X-игр. Разве я не могу? – caw

2
  1. У игрока есть этот счет?
  2. Будут ли игроки понимать Эло?
  3. Игроки будут продолжать играть, если их оценка станет отрицательной?

Я бы начал все с некоторой положительной точки (10, 100, 1000, это не имеет значения). Когда два человека относительно способности играют друг с другом, баллы торгуются, как ожидалось. Там, где вам нужно сосредоточиться, есть своего рода относительная способность между двумя игроками.

Предположим, что в дальнейшем в жизни игры у меня есть 25000 очков, а вы 10000 на 100. Я бил вас, я ничего не получаю, и вы ничего не теряете. Зачем? Потому что я просто pwned n00b, вот почему. Для нового игрока не должно быть никакого преимущества, чтобы снять стартового игрока. Кроме того, даже если вы находитесь в каком-то диапазоне очков, вы должны реализовать что-то, где вы можете заработать столько очков от данного игрока за определенный промежуток времени.

Очевидно, что это будет постоянно изменяться в течение всей жизни вашей игры.

+0

Спасибо. Игроки видят счет, поскольку он является основным критерием для рейтинга игрока. Что вы хотите сказать: «Поймут ли игроки понять Эло»? Оценка Elo не должна становиться отрицательной. Если это произойдет в случае потери, проигравший не получит вычитания, но победитель получит его дополнение как обычно. – caw

+0

Вещь, которую вы упоминаете относительно 25 000 пунктов против 100 баллов: Это будет инфляция, не так ли? Поэтому мне просто нужно избегать инфляции. – caw

+2

Независимо от того, когда в игру войдет новый игрок, у вас будет некоторое количество инфляции - начните ли вы с 0 или 100. Если у меня 0, но не получится отрицательно, если вы выиграете конкурс, вы будете получить очки, не отнимая их. Это добавляет в систему общее количество очков. Итак, как только вы признаете, что у вас должна быть инфляция, теперь вы должны принять решение о мерах по обузданию этой инфляции. Корректировка вознаграждений/штрафов, основанных на относительном количестве игроков, является лучшим способом настройки. –

2

Я не знаю, полезно ли это, но Mark Glickman's Ratings Page обсуждает некоторые проблемы с рейтингами Elo, их отклонениями и т. Д. (См. Последние параграфы там). Также см. Его рейтинговую систему, Glicko system, которая, похоже, учитывает частоту воспроизведения и обсуждает надежность рейтинга. Наконец, в его research page есть много статей, в которых обсуждаются рейтинги и их надежность.

Надеюсь, что это поможет.

+0

Спасибо. Я хочу использовать алгоритм Elo. Это точно. Но я не знаю, с чего начать: 0 или любое положительное число (например, 1000). – caw

+0

Если вы беспокоитесь об оценке дефляции/инфляции, вам придется внести некоторые изменения в алгоритм: например, переменный коэффициент k, инъекции рейтинговых очков или и то, и другое. Я не очень подробно смотрел на систему Glicko, но он имеет дело с недостатками алгоритма Elo. Это сложная проблема: удачи! –

+0

Новая идея: начальное значение для оценки Elo всегда является текущим средним. Поэтому, если у меня есть пользователи с 0, 300, 200 и 150, пятый пользователь получит 163. Будет ли это хорошо? – caw

17

Этот сайт используется рейтинг Эло. Они начинают при 1200

, взятой из рейтинговой системы http://gameknot.com/help-answer.pl?question=29

GameKnot основана на рейтинговой системе Эло с фиксированным K = 20 и следующих модификаций:

Первые 20 игр используются для установления рейтинг игрока на сайте. В течение первых 20 игр рейтинг игрока рассчитывается как среднее значение рейтингов всех его противников, +400 в случае победы, -400 в случае потери, то же самое для ничьей. +/- 200 очков используются при игре против игрока с предварительным рейтингом. Оценка игрока в первых 20 играх, после чего устанавливается. Рейтинг игроков считается равным 1200 в течение первых 5 рейтинговых игр.

Тайм-ауты считаются победами только в том случае, если в игре было не менее 3 ходов (потери всегда учитываются для тайм-аутов, независимо от того, сколько ходов было сделано).

Высшее из двух рейтингов, в начале игры и в конце, используется для расчета корректировок рейтинга после окончания игры.

Например, если во время ваших первых 20 игр для рейтинга вы сыграли 3 игры, и вы выиграли у 1200 игроков с предварительным рейтингом, то против 1400 игроков с установленным рейтингом, но проиграли против 1600 игроков с установленным рейтингом, ваш рейтинг будет : ((1200 + 200) + (1400 + 400) + (1600 - 400))/3 = 1467

Или, если в течение первых 20 игр с рейтингом вы выиграли против 1200 предварительных, победа против 1400, (1200 + 200) + (1400 + 400) + (1600-200) + 1500)/4 = 1525

+0

Спасибо, очень полезно! – caw

1

Я думаю, что большинство ELO- Лик e в Интернете будет иметь проблемы с ползучести рейтингов.

Предположим, что все новые игроки начинаются с нуля. LousyPlayer проигрывает дюжину игр, и его рейтинг значительно ниже нуля. Что мешает ему очистить свой браузер, зарегистрировать новую учетную запись под новым адресом электронной почты и начать?

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

+0

Большое спасибо, я не думал об этом. Поэтому я не могу полностью предотвратить инфляцию или дефляцию, не так ли? – caw

+0

Нет!ELO отлично работает, когда каждый играет всех остальных ... но не тогда, когда люди перемещаются и выходят из системы. Вы должны посмотреть, какие другие игровые системы используют для предотвращения инфляции или дефляции. –

+0

Этого можно избежать с большей гамилизацией вашей системы (достижения и т. Д.) - тогда создание новой учетной записи не так распространено, так как игроки теряют свои «эго-привилегии», когда они это делают. Это используется во многих играх – niilzon

2

Может быть, сделать очки не быть в состоянии идти ниже стартера примерно и поставить сумму он потери в какой-то «карман.

Допустим, игроки начинают с 0. один игрок имеет ELO 0 и потерять 10 очков Теперь представим себе, что игрок выиграл следующую игру и получил 11 очков. Вместо того, чтобы получить эти 11 очков, он получит всего 1 очко. И теперь его «карман» будет имеют 0 баллов.

2

Elo работает на разница в рейтингах двух игроков или команд, фактическое значение не имеет значения. u может начинаться с любого числа, которое вам нравится. Я запускаю систему для Facebook Scrabble League со стартовым значением 5000, просто чтобы отличить ее от других систем рейтингов Scrabble.

Инфляция не является результатом того, что новички с более высоким рейтингом теряют очки для опытных игроков - все это происходит вовремя. Инфляция исходит от людей с менее средним рейтингом, выходящим из системы. Это то, что имеет тенденцию происходить в онлайн-играх, в отличие от реальных шахмат, где дефляция - это проблема, потому что высоко оцененные игроки уходят на пенсию и выводят свои очки из системы.

Но вам нужно беспокоиться об инфляции? Единственный раз, когда важно, чтобы сравнить текущие игроки с историческими фигурами - не проблема, с которой могут столкнуться геймеры. Даже если вы беспокоитесь об инфляции, ее легко исправить. Найдите средний рейтинг всех ваших текущих игроков и сравните его с начальным показателем, если он слишком высок, уменьшите рейтинг каждого, чтобы вернуть его в линию. По моему опыту сокращение 1 или 2 балла за период рейтинга делает трюк и учитывает много новичков, которые получают избиение и не возвращаются.

Многие системы дают новичкам более высокие значения K, чтобы они быстрее находили свой уровень.

Другой подход заключается не в том, чтобы оценивать новичков, пока они не сыграли свой первый период рейтингов, и в этот момент вы рассчитываете рейтинг на основе того, что, если бы для Elo было правильно предсказать результаты. Это невозможно, если у вас есть все игроки без рейтинга и (я думаю) будет включать рекурсию, если в турнире есть несколько новичков. Это также подрывает принцип «нулевой суммы» Elo и снимает вашу способность измерять инфляцию. Однако, разговаривая с людьми, которые используют эту систему, мне говорят, что «все это проявляется» на практике.

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