Jump to content
Korean Random
TurinDeNar

[Формула расчета шансов на победу / Chance to win formula]

Recommended Posts

Ковырял как-то давно ServiceChannelPage.swf после чего начала материтсо кнопка "подробнее". Вообще не помню подробностей, но выдавала она фразу типа id_room=4845665083438825 или id_battleroom не помню. Но это уже говорило о том что у каждого боя есть айди. Кроме того в папке %appdata%\Wargaming.net\WorldOfTanks\battle_results  при правильной работе той кнопки появляется файл $id_room.dat с результатами боя. А вчера перед написанием поста, я проверил точно, что название этого dat файла идентично с файлом у моего совзводного, что ещё раз подтверждает факт наличия айди.

 

Именно эти я взял с результатов боя.

Я не говорил что у боя нет id в принципе, речь шла о файле xvm-stat.log. Вот в нем этого id как раз нет.

Share this post


Link to post

Short link
Share on other sites

Вы всё-таки поспешили возмущаться. В скрипте реализовано удаление дубликатов, это ок. Но связывания setup'ов и results'ов там нету.

Как это нет? сетапы парсятся в players, результаты в results, при выгрузке результата связываются по vehicleId:

fs.writeFileSync(resFN, '<results>\n');
fs.writeFileSync(plFN, '<players>\n');
for (var i in results) {
  var result = results[i];
  var ok = true;
  for (var j = 0; j < result.ids.length; ++j) {
    var vehicleId = result.ids[j];
    if (!players[vehicleId]) {
      console.log("player with vehicleId=" + vehicleId + " not found, result skipped");
      ok = false;
      break;
    }
  }
  if (!ok)
    continue;
  fs.appendFileSync(resFN, result.res);
  for (var j = 0; j < result.ids.length; ++j)
    fs.appendFileSync(plFN, players[result.ids[j]]);
}
fs.appendFileSync(resFN, '</results>\n');
fs.appendFileSync(plFN, '</players>\n');

в результате работы скрипта получается xml вида:

<results>
  <result vehId1="122370321" vehId2="122370302" vehId3="122370310" vehId4="122370322" vehId5="122370306" vehId6="122370308" vehId7="122370309" vehId8="122370328" vehId9="122370311" vehId10="122370315" vehId11="122370313" vehId12="122370314" vehId13="122370319" vehId14="122370330" vehId15="122370331" vehId16="122370304" vehId17="122370305" vehId18="122370323" vehId19="122370324" vehId20="122370303" vehId21="122370307" vehId22="122370326" vehId23="122370312" vehId24="122370327" vehId25="122370325" vehId26="122370329" vehId27="122370316" vehId28="122370317" vehId29="122370318" vehId30="122370320" draw="0" created="1359994094"/>
  <result vehId1="33962841" vehId2="33962855" vehId3="33962844" vehId4="33962845" vehId5="33962860" vehId6="33962866" vehId7="33962862" vehId8="33962863" vehId9="33962864" vehId10="33962852" vehId11="33962867" vehId12="33962868" vehId13="33962869" vehId14="33962870" vehId15="33962861" vehId16="33962842" vehId17="33962857" vehId18="33962853" vehId19="33962858" vehId20="33962859" vehId21="33962846" vehId22="33962847" vehId23="33962848" vehId24="33962865" vehId25="33962849" vehId26="33962850" vehId27="33962851" vehId28="33962854" vehId29="33962843" vehId30="33962856" draw="0" created="1360267001"/>
  <result vehId1="21022710" vehId2="21022703" vehId3="21022687" vehId4="21022692" vehId5="21022690" vehId6="21022715" vehId7="21022691" vehId8="21022706" vehId9="21022707" vehId10="21022694" vehId11="21022711" vehId12="21022697" vehId13="21022698" vehId14="21022701" vehId15="21022702" vehId16="21022686" vehId17="21022704" vehId18="21022688" vehId19="21022705" vehId20="21022689" vehId21="21022693" vehId22="21022712" vehId23="21022709" vehId24="21022695" vehId25="21022696" vehId26="21022713" vehId27="21022714" vehId28="21022699" vehId29="21022700" vehId30="21022708" draw="0" created="1360420084"/>
</results>

, которая нормально загружается, например, в Excel.

vehId1-vehId15 - команда победителей

vehId16-vehId30 - команда проигравших

draw="1" - ничья

Распарсил результаты от nemoW и TurinDeNar

results-nemoW.xml.zip

results-TurinDeNar.xml.zip

Edited by sirmax

Share this post


Link to post

Short link
Share on other sites

Как это нет? сетапы парсятся в players, результаты в results, при выгрузке результата связываются по vehicleId:

fs.writeFileSync(resFN, '<results>\n');
fs.writeFileSync(plFN, '<players>\n');
for (var i in results) {
  var result = results[i];
  var ok = true;
  for (var j = 0; j < result.ids.length; ++j) {
    var vehicleId = result.ids[j];
    if (!players[vehicleId]) {
      console.log("player with vehicleId=" + vehicleId + " not found, result skipped");
      ok = false;
      break;
    }
  }
  if (!ok)
    continue;
  fs.appendFileSync(resFN, result.res);
  for (var j = 0; j < result.ids.length; ++j)
    fs.appendFileSync(plFN, players[result.ids[j]]);
}
fs.appendFileSync(resFN, '</results>\n');
fs.appendFileSync(plFN, '</players>\n');
в результате работы скрипта получается xml вида:

<results>
  <result vehId1="122370321" vehId2="122370302" vehId3="122370310" vehId4="122370322" vehId5="122370306" vehId6="122370308" vehId7="122370309" vehId8="122370328" vehId9="122370311" vehId10="122370315" vehId11="122370313" vehId12="122370314" vehId13="122370319" vehId14="122370330" vehId15="122370331" vehId16="122370304" vehId17="122370305" vehId18="122370323" vehId19="122370324" vehId20="122370303" vehId21="122370307" vehId22="122370326" vehId23="122370312" vehId24="122370327" vehId25="122370325" vehId26="122370329" vehId27="122370316" vehId28="122370317" vehId29="122370318" vehId30="122370320" draw="0" created="1359994094"/>
  <result vehId1="33962841" vehId2="33962855" vehId3="33962844" vehId4="33962845" vehId5="33962860" vehId6="33962866" vehId7="33962862" vehId8="33962863" vehId9="33962864" vehId10="33962852" vehId11="33962867" vehId12="33962868" vehId13="33962869" vehId14="33962870" vehId15="33962861" vehId16="33962842" vehId17="33962857" vehId18="33962853" vehId19="33962858" vehId20="33962859" vehId21="33962846" vehId22="33962847" vehId23="33962848" vehId24="33962865" vehId25="33962849" vehId26="33962850" vehId27="33962851" vehId28="33962854" vehId29="33962843" vehId30="33962856" draw="0" created="1360267001"/>
  <result vehId1="21022710" vehId2="21022703" vehId3="21022687" vehId4="21022692" vehId5="21022690" vehId6="21022715" vehId7="21022691" vehId8="21022706" vehId9="21022707" vehId10="21022694" vehId11="21022711" vehId12="21022697" vehId13="21022698" vehId14="21022701" vehId15="21022702" vehId16="21022686" vehId17="21022704" vehId18="21022688" vehId19="21022705" vehId20="21022689" vehId21="21022693" vehId22="21022712" vehId23="21022709" vehId24="21022695" vehId25="21022696" vehId26="21022713" vehId27="21022714" vehId28="21022699" vehId29="21022700" vehId30="21022708" draw="0" created="1360420084"/>
</results>
, которая нормально загружается, например, в Excel.

vehId1-vehId15 - команда победителей

vehId16-vehId30 - команда проигравших

draw="1" - ничья

 

Ну ок, связка по vehicleId там присутствует, просто я парсю по своему, и такая связка мне не совсем удобна. Мне нужно получить в результате выборку типа (BattleId, chance(в процентах), result("win"/"lose")).

я думаю мы друг друга поняли

а для чего вы используете эти файлы players.xml и results.xml?

Edited by neverexist

Share this post


Link to post

Short link
Share on other sites
Распарсил результаты от nemoW

А ты в старую табличку сможешь добавить результаты nemoW, а то что-то у меня не выходит с этими таблицами динамическими?

Или просто только по новым данным от nemow, их всё равно заметно больше

Edited by seriych

Share this post


Link to post

Short link
Share on other sites

блин, я кажись тупой осел. Там у меня решетки отображались в ячейках- думал не получилось нормально сделать, а в старом файле также- это просто число в ячейку не помещается. А я не сохранил с расстройства :-)

Заново буду делать


Да, всё получилось. Особо ничего нового. Точность по топорному методу угадал/не угадал понизилась до 65%. Моя оценка смысла не имеет, если нет формулы, с которой можно сравнить. Но если будет новая формула, уже статистики вполне достаточно, чтобы делать адекватные выводы. Или с коэффициентами текущей можно будет поиграться на досуге.

Share this post


Link to post

Short link
Share on other sites
А где настраивается цвет, которым отображаются шансы?

Весьма странное место, откуда берутся эти цвета.



  "colors": {
    "rating": [

На мой взгляд даже если не делать отдельную настройку, то всё равно лучше был бы любой из вариантов:

- красить не настраиваемо, но симметрично относительно 50%. Скажем, если одна смена цвета на 55%, то на 45% тоже должна быть смена цвета.

- вообще не красить.

 

Я когда-то давно высказывал это мнение, но оно не нашло поддержки.

Edited by seriych
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

По поводу графика VinRatio/Chancegroup, принципов его построения.

Замечание 1. Существуют правила объединения точек в группы. (Подробнее можно посмотреть, например, для критерия согласия Пирсона) .

Идея заключается в формировании групп так, чтобы они несли одинаково достоверную информацию. В первом приближении - в каждой группе одинаковое количество измерений. Прямо рекомендуемое ( в литературе) количество групп - ~ квадратный корень из числа измерений. Но вообще, для призентабельности графика, есть мнемоническое правило ( связанное с точкой перегиба статистики Колмогорова - 40 измерений) - ориентироваться на число измерений в 40 шт.

 

Замечание 2. Каждый бой дает 2 измерения - одна команда выиграла, другая проиграла. У первой и у второй команд был свой шансы и он получили свою реализацию.

 

У меня есть обработанные данные о 202 боях, т.е 404 реализации шансов на победу. 404^0.5=~20 измерений. Я выбрал среднее меду 20 и 40 = 30 измерений в группе.

 

Итог - систематическое отклонение на 12%. Гыг, две точки которые отстоят от 50% на ~12% дают правильный результат. Т.е. модель дает правильный результат при соотношении сил команд  3 к 2.

 

ЗЫ. На счет 3 к 2. эт вилами по воде. НО.

Есть соображение. У многих район 40-50 % получился прмерно правильно, а за 50 % - превышение ( и уменя тоже, если использовать только реализации шанса моей команды). Если исходить из того, что не только данным модом,  но и его анализом, интересуются продвинутые игроки, то напрашивается мысль, что, рассматриваемые реализации от  команд выше среднего. Тогда если шанс меньше 50 - встретились равные или вторая команда содержит игроков выше продвинутых. Больше 50 - вторая команда слабее. Значит есть некоторый уровень "недодвинутости" игроков для которых построитель шанса занижает их вклад в победу. 

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

Ошибка (при расчете обратных вероятностей поставил 1 вместо 100, считал в %) .

post-16145-0-18458700-1376564138_thumb.jpg

Практически, можно считать, что совпадают. При большом числе измерений линейный тренд должен совпасть с теорией.

 

 

 

 

 

Edited by Bloodest

Share this post


Link to post

Short link
Share on other sites
Каждый бой дает 2 измерения - одна команда выиграла, другая проиграла. У первой и у второй команд был свой шансы и он получили свою реализацию.

Каким макаром тогда точки не симметричны и линия через 50/50 не проходит?

Edited by seriych

Share this post


Link to post

Short link
Share on other sites

...

 

Вопрос по формуле (почти). Если взять вклад игрока в шанс на победу своей команды и умножить его на шанс победы своей машины против него же - насколько данная характеристика сможет отражать ответ на вопрос "кого фокусить первым"?

Share this post


Link to post

Short link
Share on other sites

Всем привет.У меня такая же проблема.Отображается шанс на победу только при нажатие кнопки TAB,а при загрузки боя нет.Я в настройках xwm переименовал как здесь написано \res_mods\xvm\configs\@Default\ открыть там файл battleLoading.xc найти там параметр "showChances": false, и переименовать его на "showChances": true.Но это результатов не дало всеравно  шанс на победу показывает только при нажатие кнопки TAB.Что делать?Помогите плиз.XVM 4.1.Всем спасибо.

Share this post


Link to post

Short link
Share on other sites

Вечер добрый!
Скажите пжл, как вкл. отображение статистики при загрузке боя? У меня она начинает работать лишь тогда, когда начинается отсчет времени!
Это задержка на сервере или у меня что-то отключено в конфигурациях?
Заранее спасибо!

Share this post


Link to post

Short link
Share on other sites

Eb= ((Ean * Kra) * (Kra + Kab)) * (Kra + 0,25 * Klvl)

Значение Kra = (100 + Ra - 48.5)/100 близко к 1, значение Klvl = (Tmax + Tmin)/2 - T в случае брелков может быть меньше минус четырех, тогда значение (Kra + 0,25 * Klvl) становится отрицательным, то есть всё значение Eb становится отрицательным. В итоге получаем, что наличие брелка в команде хуже, чем если бы танка вообще не было. Причем чем выше рейтинг игрока на брелке, тем больше он снижает общий шанс на победу своей команды. Очевидная ересь получается. Надо бы это исправить, особенно учитывая ввод режима 7/42, где наличие танков 1 уровня в боях 8 уровня очень даже помогают команде. Для начала хотя бы просто ограничить Eb каким-то неотрицательным значением.

 

up. Проверил в тренировке, наличие 1 уровня в бою 8 уровня никак не влияет на шанс, хотя по приведенной формуле должно. Посмотрел в коде, там как раз Eb ограничивается снизу нулем:

        return Math.max(0, Math.min(Config.s_config.consts.MAX_EBN, Eb));
надо бы формулу в шапке поправить.

 

В итоге откровенного бреда, как я описывал выше, не возникает, однако ограничение нулем ведет к тому, что, например, два лишних T1 в команде 7/42 никак не влияют на шанс, тогда как в действительности они очень важны. С другой стороны в высокоуровневом рандомном бою их ценность действительно стремится к нулю, хоть и тоже ненулевая. Создание отдельной формулы для 7/42 - это, наверное, отдельный разговор, потому думаю нужно ввести какую-то компромиссную корректировку, которая и ценность 1 уровня в 7/42 будет учитывать и не переоценивать брелков в рандоме.

 

Варианты могут быть разные:

- Ограничивать Eb не нулем, а каким-то положительным значением

- Учет уровня танка сделать не линейным

- Учитывать разницу количества игроков в командах

 

Хотя в принципе режим 7/42 можно распознавать просто по количеству игроков в командах, и если оно меньше 8, то только тогда применять корректировку на брелки

Edited by seriych

Share this post


Link to post

Short link
Share on other sites

Значение Kra = (100 + Ra - 48.5)/100 близко к 1, значение Klvl = (Tmax + Tmin)/2 - T в случае брелков может быть меньше минус четырех, тогда значение (Kra + 0,25 * Klvl) становится отрицательным, то есть всё значение Eb становится отрицательным. В итоге получаем, что наличие брелка в команде хуже, чем если бы танка вообще не было. Причем чем выше рейтинг игрока на брелке, тем больше он снижает общий шанс на победу своей команды. Очевидная ересь получается. Надо бы это исправить, особенно учитывая ввод режима 7/42, где наличие танков 1 уровня в боях 8 уровня очень даже помогают команде. Для начала хотя бы просто ограничить Eb каким-то неотрицательным значением.

 

up. Проверил в тренировке, наличие 1 уровня в бою 8 уровня никак не влияет на шанс, хотя по приведенной формуле должно. Посмотрел в коде, там как раз Eb ограничивается снизу нулем:

        return Math.max(0, Math.min(Config.s_config.consts.MAX_EBN, Eb));
надо бы формулу в шапке поправить.

 

В итоге откровенного бреда, как я описывал выше, не возникает, однако ограничение нулем ведет к тому, что, например, два лишних T1 в команде 7/42 никак не влияют на шанс, тогда как в действительности они очень важны. С другой стороны в высокоуровневом рандомном бою их ценность действительно стремится к нулю, хоть и тоже ненулевая. Создание отдельной формулы для 7/42 - это, наверное, отдельный разговор, потому думаю нужно ввести какую-то компромиссную корректировку, которая и ценность 1 уровня в 7/42 будет учитывать и не переоценивать брелков в рандоме.

 

Варианты могут быть разные:

- Ограничивать Eb не нулем, а каким-то положительным значением

- Учет уровня танка сделать не линейным

- Учитывать разницу количества игроков в командах

 

Хотя в принципе режим 7/42 можно распознавать просто по количеству игроков в командах, и если оно меньше 8, то только тогда применять корректировку на брелки

 

Это Сирмакс сам это ограничение нижнего порогового значения по нулю сделал, я об этом как-то и не подумал в свое время - поправил в шапке формулу, спасибо seriych.

А с режимом 7/42 и правда нужно что-то дополнительно сделать. Вариант с нелинейным учетом уровня танков для боев именно режима 7/42 мне видится более подходящим. Если ограничивать Eb не нулем, а присваивать какое-то положительное значение, то не совсем представляю как это самое положительное значение для брелка определить:)

Edited by TurinDeNar

Share this post


Link to post

Short link
Share on other sites

Вариант с нелинейным учетом уровня танков для боев именно режима 7/42 мне видится более подходящим. Если ограничивать Eb не нулем, а присваивать какое-то положительное значение, то не совсем представляю как это самое положительное значение для брелка определить:)

По идее Не Eb ограничивать надо, а непосредственно значение (Kra + 0,25 * Klvl) , что по сути является ограничением на Klvl, то есть это получается всего лишь частный случай нелинейного учета уровня.

Share this post


Link to post

Short link
Share on other sites

Как то странно xvm вычислил шанс на победу в этом бою. Команда противников выглядит явно сильнее, а шанс на победу равен 63%.

post-17893-0-48568500-1383480215_thumb.jpg

Share this post


Link to post

Short link
Share on other sites

Как то странно xvm вычислил шанс на победу в этом бою. Команда противников выглядит явно сильнее, а шанс на победу равен 63%.

Может быть реплей остался? Было бы интересно поковыряться, посмотреть за счет чего такой шанс на победу получился. На первый взгляд и правда что-то не то, команда противника не явно сильнее конечно, но как минимум команды более менее равны, а тут 63%...

Edited by TurinDeNar

Share this post


Link to post

Short link
Share on other sites

Может быть реплей остался? Было бы интересно поковыряться, посмотреть за счет чего такой шанс на победу получился. На первый взгляд и правда что-то не то, команда противника не явно сильнее конечно, но как минимум команды более менее равны, а тут 63%...

 

Реплея к сожалению не осталось. Я думал ников игроков со скриншотов хватит для проверки работы формулы.

Share this post


Link to post

Short link
Share on other sites

Реплея к сожалению не осталось. Я думал ников игроков со скриншотов хватит для проверки работы формулы.

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

Edited by TurinDeNar

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...