sirmax Posted January 21, 2013 Share Posted January 21, 2013 Тут интересно получилось - сейчас пересчитал эти танки вручную, второй случай сошелся, а первый - не совсем. У меня сравнение Т40 с Хуммеля дает 67%, а не 74%. Тут какое-то разногласие вышло. У нас есть штраф при сравнении арт с другой техникой, можно его повысить, это вопрос настроек. Скажем, вычитать не 1, а 2. Совсем не сравнивать тоже нельзя - тогда получится, что танки, оставшиеся без аналогов, будут тупо резаться по дамагу, что не совсем хорошо. По светлякам - я уже просил выше повысить штраф при сравнении их с любой техникой кроме светляков и СТ 8-10 уровней. Ждем sirmax'a. Что конкретно надо сделать? Это ошибка при переводе алгоритма на вебсервис - ниже 50% сходства не должно сравнивать вообще. Это сделал Link to comment Short link Share on other sites More sharing options...
tourist Posted January 21, 2013 Author Share Posted January 21, 2013 (edited) Что конкретно надо сделать? При сравнении арт с другой техникой вычитай из оценки не 1, а 2. В моем коде это строка else if(current->link->type==3 || base.link->type==3)same--; Тут нужно поставить same-=2; По светлякам подобным же методом ввести штраф при сравнении их с любой техникой кроме светляков и СТ 8-10 уровней. if(current->link->type==4 && base.link->type!=4 && (base.link->type!=5 || base.link->level<8))same--; Так, намудрил с последним условием - теперь вроде правильно. Edited January 21, 2013 by tourist Link to comment Short link Share on other sites More sharing options...
sirmax Posted January 22, 2013 Share Posted January 22, 2013 Да, ошибка у меня была - арту по зависимости реально не резало вообще. При сравнении арт с другой техникой вычитай из оценки не 1, а 2. В моем коде это строка else if(current->link->type==3 || base.link->type==3)same--; Тут нужно поставить same-=2; Сделал По светлякам подобным же методом ввести штраф при сравнении их с любой техникой кроме светляков и СТ 8-10 уровней. if(current->link->type==4 && base.link->type!=4 && (base.link->type!=5 || base.link->level<8))same--; Сделал Link to comment Short link Share on other sites More sharing options...
tourist Posted January 22, 2013 Author Share Posted January 22, 2013 (edited) Sirmax, мне реализовать все нововведения (перечисленные на этой и предыдущей странице) в своем коде и скинуть его тебе, или будем сразу у тебя делать? В принципе, они несложные, мне кажется можно воткнуть с первой попытки, без задваивания усилий. Текущая версия программы и базы вот тут: http://rghost.ru/43225099 Исправление ошибок сравнения в ней уже есть, сейчас делаю приведение всех справочников к одному регистру и удаление А-20 и М103. Кстати, китайцев в базе нет - я не знаю их точные имена чтобы забить. UPD. 1. Привел все справочники к одному регистру. 2. Убрал танки А-20 и М103. 3. Убрал срезание статы при ее значениях ниже 45%. 4. Добавил итоговую порезку до 53/55/57% при недостаточном числе боев на высоких уровнях. 5. Исправил удаление "мелких" арт 5-7го уровней. В принципе, осталось замутить самообучение таблицы дамага, но это надо сперва обсудить - будем делать или нет. Оно вроде как несложно, но там придется делать еще одну таблицу со статистикой порезки игроков. Edited January 22, 2013 by tourist Link to comment Short link Share on other sites More sharing options...
sirmax Posted January 22, 2013 Share Posted January 22, 2013 Sirmax, мне реализовать все нововведения (перечисленные на этой и предыдущей странице) в своем коде и скинуть его тебе, или будем сразу у тебя делать? В принципе, они несложные, мне кажется можно воткнуть с первой попытки, без задваивания усилий. Давай обновлять параллельно, так хотя бы можно будет сравнить и проверить правильность реализации. Ну или тебе нужно вникать в JS. :) Кстати, китайцев в базе нет - я не знаю их точные имена чтобы забить. Вот ссылка на файл с данными, который мы обновляем автоматом от патча к патчу: http://code.google.com/p/wot-xvm/source/browse/trunk/src/xvm/src/wot/utils/VehicleInfoData2.as В нем есть все необходимое. Данные берутся из файлов клиента. UPD. 1. Привел все справочники к одному регистру. 2. Убрал танки А-20 и М103. 3. Убрал срезание статы при ее значениях ниже 45%. 4. Добавил итоговую порезку до 53/55/57% при недостаточном числе боев на высоких уровнях. 5. Исправил удаление "мелких" арт 5-7го уровней. Ок, как сделаю отпишусь. В принципе, осталось замутить самообучение таблицы дамага, но это надо сперва обсудить - будем делать или нет. Оно вроде как несложно, но там придется делать еще одну таблицу со статистикой порезки игроков. Давай пока все кроме этого отладим. У меня пока нет возможности вычислять дамаг на лету, надо думать как это сделать. Скорей всего придется OLAP для аналитики поднимать, но это не скоро. В данный момент я обновляю его вручную, и обход всей базы занимает несколько часов. Link to comment Short link Share on other sites More sharing options...
tourist Posted January 22, 2013 Author Share Posted January 22, 2013 (edited) Вот ссылка на файл с данными, который мы обновляем автоматом от патча к патчу: http://code.google.com/p/wot-xvm/source/browse/trunk/src/xvm/src/wot/utils/VehicleInfoData2.as В нем есть все необходимое. Данные берутся из файлов клиента. Ок, начал добавлять китайцев. Давай пока все кроме этого отладим. У меня пока нет возможности вычислять дамаг на лету, надо думать как это сделать. Скорей всего придется OLAP для аналитики поднимать, но это не скоро. В данный момент я обновляю его вручную, и обход всей базы занимает несколько часов. Там все просто и вряд ли понадобится OLAP, я выше описывал суть: На форуме предложили интересную идею - сделать таблицу с дамагом самообущающейся. Алгоритм примерно такой: 1. При работе программы собираем статистику срезаний танков по двум показателям: насколько мы должны были срезать танк по дамагу (и доверию) и насколько фактически срезали с учетом других машин. 2. Когда наберется достаточно данных (100, например), то в случае, если подавляющее большинство из них будет показывать в одну сторону - корректируем табличное значение требуемого дамага, чтобы исправить ситуацию. Так постепенно программа сама выведет значения требуемого дамага по всем танкам, и сама же будет его обновлять при изменениях игры. Просто мне такое будет реализовать затруднительно, так как для тестирования потребуется прогнать через прогу много аккаунтов подряд - проще это пробовать сразу на сервере. Edited January 22, 2013 by tourist Link to comment Short link Share on other sites More sharing options...
sirmax Posted January 22, 2013 Share Posted January 22, 2013 Там все просто и вряд ли понадобится OLAP, я выше описывал суть: Просто мне такое будет реализовать затруднительно, так как для тестирования потребуется прогнать через прогу много аккаунтов подряд - проще это пробовать сразу на сервере. Я писал ранее, что мы используем mongodb, а она не предназначена для подобных вычислений - в ней необходимо вычитывать все данные, что очень не эффективно. Для подобных задач нужна или реляционная SQL БД, или сразу OLAP. Хотя надо будет подумать, может и получится корректировать на лету по твоему алгоритму... Подумаю как будет время. Link to comment Short link Share on other sites More sharing options...
tourist Posted January 22, 2013 Author Share Posted January 22, 2013 Хотя надо будет подумать, может и получится корректировать на лету по твоему алгоритму... Подумаю как будет время. Не обязательно на лету - достаточно просто разок прогнать энное количество аккаунтов и посмотреть, что покажет статистика. Посмотреть можно даже вручную - нужен лог, какие танки насколько должно было срезать по дамагу/доверию, и насколько их срезало фактически. Link to comment Short link Share on other sites More sharing options...
sirmax Posted January 22, 2013 Share Posted January 22, 2013 Да не, вручную муторно. К тому же, малая выборка будет иметь большую погрешность, а большая - те же проблемы с БД. В общем, это нужно думать на свежую голову. Почему-то не работает по следующему игроку: http://proxy.bulychev.net:1333/?0,TWR,___KPAH___ Первым находит этот акк: http://worldoftanks.eu/community/accounts/507610283-___KPAH___/ Надо что-то придумать с разными регионами. База-то общая. У нас ключом является id игрока, а имена могут дублироваться. 1. Привел все справочники к одно регистру. 2. Убрал танки А-20 и М103. Это только в base.csv? Если да, то готово. 4. Добавил итоговую порезку до 53/55/57% при недостаточном числе боев на высоких уровнях. Готово. Link to comment Short link Share on other sites More sharing options...
tourist Posted January 22, 2013 Author Share Posted January 22, 2013 Это только в base.csv? Если да, то готово. Это в коде программы - воткнул функцию смены регистра и условия по "нечитанию" этих двух танков. Link to comment Short link Share on other sites More sharing options...
sirmax Posted January 22, 2013 Share Posted January 22, 2013 (edited) Это в коде программы - воткнул функцию смены регистра и условия по "нечитанию" этих двух танков. Хм, у меня наверно этой проблемы не было. А насчет А-20 и М103 - это где? Нашел Edited January 22, 2013 by sirmax Link to comment Short link Share on other sites More sharing options...
sirmax Posted January 23, 2013 Share Posted January 23, 2013 Собрал новые данные по дамагу за 100к случайных игроков. http://code.google.com/p/wot-xvm/downloads/detail?name=calc.csv.7z Link to comment Short link Share on other sites More sharing options...
Slava7572 Posted January 24, 2013 Share Posted January 24, 2013 По делу:что то у меня одни проценты с прочерком показывает.Может что не правильно сделал?Вписал вот такой макрос в графу на загрузку: <font color='{{c:twr}}'>{{twr}}</font>..Правда я конфиг не менял(там моя сборка,не охота было переписывать),а просто вставил графы про цвет (// Динамический цвет по TWR (T-Calc) (только с xvm-stat) и т.д.).Вставил правильно,потому что конфиг работает и все показывает.Я только лог миникарты не переписывал,юзаю другую.А,да!Файл battle.swf и FinalStatistic.swf у меня свои,так как они завязаны на звук лампочки+моя рамка карты и мод статистики.Показывает версию 3.3.2 тест 2.Версия XVM-стат-1.2.0.Вроде бы какой то макрос пока не работает,вроде бы не этот? Link to comment Short link Share on other sites More sharing options...
sirmax Posted January 24, 2013 Share Posted January 24, 2013 я же написал что еще не работает. Link to comment Short link Share on other sites More sharing options...
Slava7572 Posted January 24, 2013 Share Posted January 24, 2013 я же написал что еще не работает. Спасибо за ответ.Точно не знал. Link to comment Short link Share on other sites More sharing options...
Sheks Posted January 25, 2013 Share Posted January 25, 2013 Сие чудное творение будет использоваться по умолчанию в xvm? И что означают колонки Ka и Kd в результате? Link to comment Short link Share on other sites More sharing options...
jage Posted January 25, 2013 Share Posted January 25, 2013 и еще можно потом подсказать тупоговоловому как я где и как эти макросы вставить,а то мне уже не удобно попрашайничать конфиг переделать Link to comment Short link Share on other sites More sharing options...
sirmax Posted January 25, 2013 Share Posted January 25, 2013 Сие чудное творение будет использоваться по умолчанию в xvm? И что означают колонки Ka и Kd в результате? по умолчанию вряд ли, так как TWR будет работать только начиная с довольно приличного количества боев. Но в куче кастомных конфигов наверняка будет использоваться. и еще можно потом подсказать тупоговоловому как я где и как эти макросы вставить,а то мне уже не удобно попрашайничать конфиг переделать Пока не дергайся, TWR не скоро запустится. Во-первых, он еще не готов, нужно доделывать, а времени как всегда не хватает. Во-вторых, по результатам тестов он все-таки весьма тяжел, так что наш прокси не справляется с расчетом. Некоторое время считается нормально, но когда попадается одновременно несколько пользователей с большим количеством танкав, сервис уходит в ступор. Так что тут еще нужно оптимизировать код, или думать как рассчитывать не на лету, а как-то по-другому. Link to comment Short link Share on other sites More sharing options...
tourist Posted January 25, 2013 Author Share Posted January 25, 2013 (edited) И что означают колонки Ka и Kd в результате? Коэфициент доверия к стате на танке и коэффициент достаточности дамага. по умолчанию вряд ли, так как TWR будет работать только начиная с довольно приличного количества боев. Но в куче кастомных конфигов наверняка будет использоваться. Нужно еще с кривым дамагом от ВГ что-то решить. Пока не дергайся, TWR не скоро запустится. Во-первых, он еще не готов, нужно доделывать, а времени как всегда не хватает. Во-вторых, по результатам тестов он все-таки весьма тяжел, так что наш прокси не справляется с расчетом. Некоторое время считается нормально, но когда попадается одновременно несколько пользователей с большим количеством танкав, сервис уходит в ступор. Так что тут еще нужно оптимизировать код, или думать как рассчитывать не на лету, а как-то по-другому. Попробуй ограничить количество расчитываемых танков - скажем, до 20 или 15. Также можно ограничить глубину рекурсии - например, тремя уровнями. Так, по советам читателей предлагаю добавить еще пару фишек. 1. Корректировать доверие в зависимости от числа боев: base[j].link->acc=base[j].link->acc*(1-1/sqrtf(base[j].battles)); 2. Повышать % побед на проверяемом танке если на нем менее 300 боев и на других похожих танках стата лучше. Я реализовал это следующим образом, но тут могут быть варианты: if(current->battles<300 && (cutter(current->same[0])+cutter(current->same[1])+cutter(current->same[2])+cutter(current->same[3]))/m>cutter(current)){if(m)current->rate+=min(5-(float)current->battles/100,(cutter(current->same[0])+cutter(current->same[1])+cutter(current->same[2])+cutter(current->same[3]))/m-cutter(current)); else current->rate+=5-(float)current->battles/100; printf("\nRate of %s increased to %f",current->tank,current->rate);} Это в самом начале функции generate, после строчки m=search(current); Edited January 25, 2013 by tourist Link to comment Short link Share on other sites More sharing options...
nemoW Posted January 25, 2013 Share Posted January 25, 2013 Во-вторых, по результатам тестов он все-таки весьма тяжел, так что наш прокси не справляется с расчетом. Некоторое время считается нормально, но когда попадается одновременно несколько пользователей с большим количеством танкав, сервис уходит в ступор. Так что тут еще нужно оптимизировать код, или думать как рассчитывать не на лету, а как-то по-другому. Так ведь стата пользователей обновляется раз в неделю, зачем его в реальном времени перерасчитывать? Link to comment Short link Share on other sites More sharing options...
Recommended Posts