Jump to content
Korean Random
TurinDeNar

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

Recommended Posts

Sirmax, извини что отвлекаю, но хотелось бы как-то довести до логического конца хотя бы уже то что сделано, а то на сегодня формула то фактически так и не заработала как планировалось:)

Было сегодня время, залез я в какой-то файл:) где вроде как описан код формулы (надеюсь что я туда залез:))), поковырялся там и вот что вижу:

 

1. Нужно все-таки внести изменения в коэффициенты Ktb и Kab, о чем я уже писал в этом посте. У тебя я вижу что эти изменения не внесены.

Я тут попробовал тебе упростить задачу, и сделал эти изменение в виде программного кода (я не программист!!! просто по аналогии делал:)

В общем эти два коэффициента по правильному должны рассчитываться так.

 

// 2
        var Ktb = (Bt <= 50) ? 0                           //    0..50  => 0
            : (Bt <= 500) ? (Bt - 50) / 1000               //  51..500  => 0..0.45
            : (Bt <= 1000) ? 0.45 + (Bt - 500) / 2000      //  501..1000 => 0.45..0.7
            : (Bt <= 2000) ? 0.7 + (Bt - 1000) / 4000      // 1001..2000 => 0.7..0.95
            : 0.95 + (Bt - 2000) / 8000;                   // 2000..     => 0.95..
// 3
        var Kab = (Ba <= 500) ? 0                          //   0..0.5k  => 0
            : (Ba <= 5000) ? (Ba - 500) / 10000            //  1k..5k => 0..0.45
            : (Ba <= 10000) ? 0.45 + (Ba - 5000) / 20000   //  5k..10k => 0.45..0.7
            : (Ba <= 20000) ? 0.7 + (Ba - 10000) / 40000   // 10k..20k => 0.7..0.95
            : 0.95 + (Ba - 20000) / 80000                  // 20k..    => 0.95..

2. При правке когда мы ввели коэффициент Ean  в общей формуле ты оставил Ea без изменений, а нужно было Ea заменить на  Ean.

3. Как я и подозревал формула у тебя рассчитывается на базе xwn, в то время как в ней же участвует и teff (переменная Et) а это ошибка, так как это не сопоставимые между собой значения. Предлагаю оставить в расчете xwn (этим мы решим проблемы с обрезкой WN до 1 при отрицательных значениях), а вот teff нужно пока просто в расчетах делить на 20 для приведения этого значения в соответствие с xwn.

В общем формула с учетом этих двух замечаний будет иметь такой вид:

        // 5
        var Eb = (Et > 0)
			? (((3 / 5 * (Et / 20) * Krt) * (Krt + Ktb)) +
                ((2 / 5 * Ean * Kra) * (Kra + Kab))) * (Kra + 0.25 * Klvl)
            : ((Ean * Kra) * (Kra + Kab)) * (Kra + 0.25 * Klvl);

Не знаю, правильно ли будет такая запись для кода (Et / 20) но наверно да:)

 

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

 

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

В общем нормальной работы формулы мы по сути то пока еще и не видели:)

 

Да и еще, если оставлять и 1-ю экспериментальную то в ней соответственно тоже нужно будет поправить эти вещи.
 

 
Edited by TurinDeNar

Share this post


Link to post

Short link
Share on other sites

Sirmax, извини что отвлекаю, но хотелось бы как-то довести до логического конца хотя бы уже то что сделано, а то на сегодня формула то фактически так и не заработала как планировалось:)

Было сегодня время, залез я в какой-то файл:) где вроде как описан код формулы (надеюсь что я туда залез:))), поковырялся там и вот что вижу:

Можешь сам редактировать, хоть и не программист. :) Ты все правильно написал.

Не успеваю за всем следить.

 

Поправил формулу, вот новые swf.

https://sites.google.com/site/sirmaxwiki/file-cabinet/bin.zip?attredirects=0&d=1

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Sirmax, Kab поправил, Ea на Ean в двух местах в формуле сменил, (Et / 20) сделал, все отлично, спасибо!

 

Только вот обрати внимание, я там в коэффициент Ktb тоже вносил изменения, а он в коде остался без изменений.

Измени его еще плиз, и я уже сегодня смогу наконец-то заснуть спокойно:)

 

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

Edited by TurinDeNar

Share this post


Link to post

Short link
Share on other sites

Только вот обрати внимание, я там в коэффициент Ktb тоже вносил изменения, а он в коде остался без изменений.

 

вроде менял

Share this post


Link to post

Short link
Share on other sites

вроде менял

Хм... там сейчас вроде это:

Kab изменен, а Ktb старый

// 2
        var Ktb = (Bt <= 100) ? 0                          //    0..100  => 0
            : (Bt <= 500) ? (Bt - 100) / 500               //  101..500  => 0..0.8
            : (Bt <= 1000) ? 0.8 + (Bt - 500) / 2000       //  501..1000 => 0.8..1.05
            : (Bt <= 2000) ? 1.05 + (Bt - 1000) / 4000     // 1001..2000 => 1.05..1.3
            : 1.3 + (Bt - 2000) / 8000;                    // 2000..     => 1.3..

        // 3
        var Kab = (Ba <= 500) ? 0                          //   0..0.5k  => 0
            : (Ba <= 5000) ? (Ba - 500) / 10000            //  1k..5k => 0..0.45
            : (Ba <= 10000) ? 0.45 + (Ba - 5000) / 20000   //  5k..10k => 0.45..0.7
            : (Ba <= 20000) ? 0.7 + (Ba - 10000) / 40000   // 10k..20k => 0.7..0.95
            : 0.95 + (Ba - 20000) / 80000                  // 20k..    => 0.95..
Edited by TurinDeNar

Share this post


Link to post

Short link
Share on other sites

Да, провтыкал. Поправил, перезалил.

Все Sirmax спасибо, все шикарно. Запустил пару реплеев (результат по которым меня раньше очень смущал), сейчас все очень даже адекватно считает, а значит  формула начала работать так как и предполагалось.  

Share this post


Link to post

Short link
Share on other sites

Извините, а откуда файлы с обновленными формулами качать?

Share this post


Link to post

Short link
Share on other sites

Извините, а откуда файлы с обновленными формулами качать?

Вот из этого поста по ссылке.

 

Sirmax, а вот интересно... а в какой именно swf зашиты формулы расчета шансов?

Share this post


Link to post

Short link
Share on other sites

Приветствую.

Насчет проверки адекватности результатов формулы.. Я немного не понимаю зачем городить базу реплеев, их парсинг и т.д. Почему просто не собирать эти данные непосредственно с клиентских машин напрямую и автоматически? Расчет % уже произведен на клиенте, результаты боя есть (понятно не всех боев, но подавляющего большинства), почему бы не использовать эти данные? Никакого парсинга, дополнительная нагрузка и на серв и на клиент минимальна.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

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

Потому что это проще реализовать.

 

Эта идея уже обсуждалась. Дело в том, что для этого надо как минимум код писать. И там не всё так просто, есть подводные камни. Не могу сейчас найти, где мы это обсуждали.

Нашел. Вру, не по этому поводу обсуждение было, но смысл тот же: передавать данные от клиента после каждого боя. Можешь тут почитать мою вторую цитату, ответ sirmax и посты ниже.

Edited by seriych

Share this post


Link to post

Short link
Share on other sites

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

Замечания:

1. Если в сетапе много низкоуровневых светляков (а балансер нынче такие команды любит), правило не работает.

2. Если в одной команде есть скилованный светляк (а балансер пока светляков по командам не уравнивает), а в другой нет никаких - степень влияния ещё выше.

3. Если у игрока плохая стата на акке и особенно на танке, правило не работает.

4. Если в команде есть скилованная арта и карта не химки - влияние светляков ещё выше.

5. Если в команде есть скилованные высокоуровневые СТ и ЛТ - степень влияния ниже.

Или всё это даст влияние на Wa в пределах погрешности?

Share this post


Link to post

Short link
Share on other sites

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

Замечания:

1. Если в сетапе много низкоуровневых светляков (а балансер нынче такие команды любит), правило не работает.

2. Если в одной команде есть скилованный светляк (а балансер пока светляков по командам не уравнивает), а в другой нет никаких - степень влияния ещё выше.

3. Если у игрока плохая стата на акке и особенно на танке, правило не работает.

4. Если в команде есть скилованная арта и карта не химки - влияние светляков ещё выше.

5. Если в команде есть скилованные высокоуровневые СТ и ЛТ - степень влияния ниже.

Или всё это даст влияние на Wa в пределах погрешности?

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

Share this post


Link to post

Short link
Share on other sites

Sirmax, а вот интересно... а в какой именно swf зашиты формулы расчета шансов?

ХЗ, там сейчас все перекручено, классы дублируются в разных SWF. К сожалению, по-другому при нашем подходе сделать нельзя. Я бы с радостью вынес весь код XVM в отдельную библиотеку, но в ScleForm флер урезаный, библиотеки так просто не подгрузишь.

Шансы по идее должны включаться в те SWF, где используются - BL, PP, SF, FS.

Share this post


Link to post

Short link
Share on other sites

С днем Защитника Отечества вас, мужчины! 

 

Sirmax. В общем проверил я по своему калькулятору правильность расчета формулы в клиенте. Все отлично, все считается правильно как для полной формулы (xwn+teff) так и для ее сокращенного варианта (только по xwn).

Взял скрин с реплея боя jage (со специально сделанным для полноты информации для анализа конфигом) где 52% было по 1-й экспериментальной (сокращенной) и 47% по 2-й экспериментальной (полной):

shot_332.1361608881.jpg

Бой они кстати слили, но суть не в этом, так как формула больше применима для рандомных боев, где тащат в основном 4-5-6 игроков а все остальные по сути баласт. В ротных боях все немного по другому.

В общем вбил я стату игроков этого боя в свой калькулятор и получил те же значения.

52% для сокращенного варианта формулы:

xwn.1361609141.jpg

и 47% для полного варианта:

xwnteff.1361609215.jpg

 

В общем предлагаю смело ставить эти две формулы в релиз 0.8.4 в качестве основных, так как то что они лучше устаревших текущих это 99,9%, ну а то что не хуже так это все 100%. Ну а на месте экспериментальных же предлагаю тестировать различные улучшения уже этих двух формул считая их основными.

 

Но прежде чем ставить форумы на основное место нужно сделать еще одно небольшое их усовершенствование о котором уже говорилось в этой теме. 

Я говорю о принудительной верхней обрезке значения боевой эффективности игрока. 

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

В общем на том же калькуляторе боя jagе я попробовал искусственно снизить значение текущего боя с 12 до 11 и 10 чтобы посмотреть каких максимальных значений боевой эффективности могли бы достичь игроки этого боя на этих машинах если бы они попали не в 12 лвл боя а в минимальный для них 10.

12 лвл боя:

12.1361611107.jpg

Максимальные значения у jage и Freeman74 достигли 198 и 194 соответственно.

11 лвл боя:

11.1361611320.jpg

Максимальные значения у jage и Freeman74 достигли 253 и 250 соответственно.

10 лвл боя:

10.1361611420.jpg

Максимальные значения у jage и Freeman74 достигли 285 и 309 соответственно. Но здесь мне пришлось снизить минимальную планку боя у арты jage с 11 до 10 лвл.

 

В общем что мы видим, значения в 300 вполне достижимы, а они еще могут быть и больше если бы эти игроки со своими средними лвл танков (8 и 9) попали бы в бои 4 лвл за счет чего их нормализованная эффективность еще бы увеличилась.

Сделал в калькуляторе расчет по себе, если бы я попал на Т40 в максимально комфортные для меня условия боя и получил расчетное значение своей возможной боевой эффективности для этого боя - 367.

Turin-367.1361611657.jpg

Решил для интереса забить в калькулятор данные камрада Jage если бы он попал в максимально щадящие условия боя на своей Су-26. Расчетное значение возможной боевой эффективности для него получилось - 322

jage-322.1361612528.jpg

 

В общем по результатам этого анализа, мне кажется что максимальное пороговое значение после которого стоит отрезать все что выше как аномальное для повышения точности прогноза формулы это 300. Seriych, как считаешь? Вменяемо? Вводим в формулу? Выше точно не стоит, а вот ниже хз... немного сомневаюсь но мне кажется что тоже не стоит.

 

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

 

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

 

Calculator for a chance to win.zip

Edited by TurinDeNar

Share this post


Link to post

Short link
Share on other sites
Seriych, как считаешь? Вменяемо?
Понимаешь, я не вдавался в подробности, как у тебя там что корректируется и как получается итоговый балл. Я понятия не имею, 300- это много или мало. Я могу лишь повторить свое предложение об обрезке по исходным значениям xwn и xeff.

Share this post


Link to post

Short link
Share on other sites

Понимаешь, я не вдавался в подробности, как у тебя там что корректируется и как получается итоговый балл. Я понятия не имею, 300- это много или мало. Я могу лишь повторить свое предложение об обрезке по исходным значениям xwn и xeff.

Я понял. Ладно это я просто хотел лишь услышать стороннее мнение, но на самом деле судя по раскладке верхнее значение 300 это вполне вменяемая цифра:)

Ее и стоит вводить "волевым решением",  точность расчетов это определенно в некоторых моментах повысит:)  

 

Sirmax, сделай плз когда сможешь еще 1 дополнение к формуле:

Вводим показатель Ebn (возможная боевая эффективность игрока, нормализованная по верхнему пороговому значению), которое будет равно:

if Eb <=300 then Ebn = Eb; else Ebn = 300

и тогда нужно будет не забыть еще исправить в формулах суммирования эффективности всей команды с Eb на Ebn.

 

Это нужно сделать в двух экспериментальных формулах и все.... можно смело переводить их в разряд основных.

 

Но меня если честно немного беспокоит мысль, что возможно 300 это немного и высокое значение потому как подбиралось оно не по глобальной выборке, а на основании вышеописанных расчетов.... может быть 250-280 было бы и более адекватным значением... хз даже. Может стоит снизить исходя из принципа осторожности. 

Я реально немного в сомнениях...  Вот бы видеть в составе основной формулу со значением 300, а в экспериментальной с 250, чтобы была возможность сравнивать расчетный шанс по ним и итогу боя - все бы сразу стало понятно:)

Edited by TurinDeNar

Share this post


Link to post

Short link
Share on other sites

Ещё немного соображений.

В низкоуровневых боях (скажем, ниже 6-7) часто попадаются твинки с 0-1к боев, % побед > 49 и 20+ эффективностью. Для них Ktb (и в меньшей степени Kab) совершенно не показателен, ну и Ean тоже - т.к. новый РЭ и WN6 режут рейтинги в песке. Может для таких игроков увеличить влияние Krt и Kra, или их и так апает за счет низкого avglvl?

Share this post


Link to post

Short link
Share on other sites

Ещё немного соображений.

В низкоуровневых боях (скажем, ниже 6-7) часто попадаются твинки с 0-1к боев, % побед > 49 и 20+ эффективностью. Для них Ktb (и в меньшей степени Kab) совершенно не показателен, ну и Ean тоже - т.к. новый РЭ и WN6 режут рейтинги в песке. Может для таких игроков увеличить влияние Krt и Kra, или их и так апает за счет низкого avglvl?

В общем то апает действительно из-за более низкого его текущего avglvl по отношению к уровню текущего боя (хотя далеко не всегда... так как продвинутые твинки сразу берут премтанк 8 лвл), да и потом... это какой то "не страшный" твинк зачем его апать, вот если бы у него был % побед 60-65+  то это да, но тогда бы его апнуло по этому % побед:)  

Edited by TurinDeNar

Share this post


Link to post

Short link
Share on other sites

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

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

 

Sirmax, сделай плз когда сможешь еще 1 дополнение к формуле:

Вводим показатель Ebn (возможная боевая эффективность игрока, нормализованная по верхнему пороговому значению), которое будет равно:

if Eb <=300 then Ebn = Eb; else Ebn = 300

и тогда нужно будет не забыть еще исправить в формулах суммирования эффективности всей команды с Eb на Ebn.

Это нужно сделать в двух экспериментальных формулах и все.... можно смело переводить их в разряд основных.

Сделал, скоро выложу. Заодно сделаю основными, пока будут дублировать экспериментальные.

 

Но меня если честно немного беспокоит мысль, что возможно 300 это немного и высокое значение потому как подбиралось оно не по глобальной выборке, а на основании вышеописанных расчетов.... может быть 250-280 было бы и более адекватным значением... хз даже. Может стоит снизить исходя из принципа осторожности. 

Я реально немного в сомнениях...  Вот бы видеть в составе основной формулу со значением 300, а в экспериментальной с 250, чтобы была возможность сравнивать расчетный шанс по ним и итогу боя - все бы сразу стало понятно:)

Вынес максимальное значение в конфиг:

{

  "consts": {

    "MAX_EBN": 300

  }

}

можешь играться

 

if Eb <=300 then Ebn = Eb; else Ebn = 300

А меньше 1 может быть? 

Ebn =  max(0, min(300, Eb))

может так?

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...