Chat:Ru/2020-05-20
ilt: пробую UTT свой возродить, что-то я тут слишком умное хотел сделать
ilt: правильно я понимаю, что в классической версии на следующем ходе данные исходного дерева вообще не используются?
tomatoes: я просто сдвигаю на нужное место и дальше погнал считать :thinking:
tomatoes: но помоему оно особо не добавляло пользы, оставил потому что в теории лучше должно быть
dbf: ilt, в классической тоже можно переиспользовать ту часть дерева, которая соответствует сложившейся на твой новый ход ситуации
Hamibar: а после запуска в мульти что-ли пересчитывают? закончил около 90 сейчас 56 :slight_smile:
Uljahn: нет, они стараются наоборот поменьше считать
Uljahn: если не нравится, что удачно запушили - можно ресабмитнуть :smirk:
BorisZ: да просто народ сабмитит, игра то открыта
BorisZ: чат глючит что ли
Uljahn: ну и рандом существенный
Uljahn: чат тупит иногда, будто сообщения не доходят
wlesavo: лол, нашел баг что защищался в pr в зависимости от id противника вместо того чтобы в зависимости от числа дронов, и противники с id 0 могли по стелсу захватывать базы
Uljahn: id захардкодил?
wlesavo: не, там был словарь {id: count} и я в max получал id вместо каунта
Uljahn: норм
Uljahn: поэтому я всегда со словарями работаю через keys(), values() или items(), за исключением проверки на вхождение ключа
wlesavo: ну там правильнее было итемс взять потому что мне и ключ и значение нгужны были, но я как-то к итемс не привык, но чтобы такого не было лучше привыкнуть
Uljahn: конструкция k, v for k, v in d.items() довольно часто встречается
Uljahn: чё-т в PR2 подбешивают несимметричные карты, или сама карта симметричная по топологии, а по расположению ресурсов и штабов - нет
AntonT: когда я просто переключался на новую ноду, не удаляя ненужные поддеревья, у меня память быстро кончалась)
Uljahn: а, это про переиспользование дерева с прошлого хода в MCTS?
Uljahn: можно установить границу индекса, а потом обнулять при выходе за него
dbf: я в итоге так и не смог сделать, чтобы и дерево переиспользовать и от gc не страдать, пришлось пожертвовать переисполььзованием
Uljahn: а как тут gc задействуется?
Uljahn: если в начале выделяешь большой пул нод под дерево
dbf: непонятно как вернуть в пул часть узлов. если без переиспользования, то я на каждом шаге просто брасываю счетчик текущего объекта в пуле на 0 и все
aropan: dbf, а на чем пишешь?
vrabosh: Unit Fractions - вот задача каварная
vrabosh: нашел решение чисто программерским способом.. всеравно заставляют идти читать математику
dbf: aropan на Java
aropan: Сочувствую.
aropan: Там нет принудительного вызова gc?
ilt: dbf у меня похоже проблема переиспользования дерева и gc
ilt: вываливается с таймаутом в произвольное время
ilt: попробую тоже от переиспользования отказаться для начала
aropan: Переиспользование это же норм тема.
aropan: Может дерево слишком разрастается и просто память заканчивается (и gc не виноват)? Дерево надо как-то ограничивать?
Uljahn: а, каэется понял, помню кубер что-то говорил, что джява объекты перемещает под капотом, поэтому адрес в памяти становится невалидным или что-то в этом роде
Uljahn: какие-то внутренние оптимизации размещения
Uljahn: потому что не понятно, как объекты в пуле могут стать мусором, такое возможно вообще?
vrabosh: 9999 199960003 1/9999 = 1/99990000 + 1/10000 1/9999 = 1/33336666 + 1/10002 1/9999 = 1/11118888 + 1/10008
vrabosh: ....
vrabosh: вот как это посчитать?
dbf: aropan так моя цель, чтобы он вообще не вызывался, а не вызывать его принудительно :)
aropan: А, хм, мне показалось, что кушается много памяти и в этом проблема.
dbf: Uljahn, мусор - это если не из пула брать своего, а просто создавать каждый раз новые. С пулом все хорошо, только не удается вернуть в него, допустим, половину дерева легко т.к. в ней могут быть узлы из разных частей пула
dbf: но мне по замерам переиспользование не особо много дало, так что я с радостью променял его на возможность считать 99 мс из 100 не закладывая время под внезапный gc
BorisZ: vrabosh вроде перебором должно решиться от n+1 до 2n
BorisZ: типа 1/n = 1/2n + 1/2n то есть это верхняя граница
BorisZ: опять чат глючит зараза
BorisZ: только надо класс Rational юзать если есть в языке, если нет, то написать недолго самому
BorisZ: в питоне вроде есть
Uljahn: dbf: хм, тут переиспользование объектов и переиспользование накопленных статистик смешивается, вроде, т.е. ближе к концу пула придётся сбрасывать индекс рута в ноль и начинать построение дерева с нуля, но объекты пула можно не пересоздавать, наверное, а просто инициализировать нужными значениями, или это медленно будет?
Uljahn: под пулом я тут понимаю заранее выделенный очень большой массив нод (в принципе, в нумпае можно без объектов сделать, но пока ума не хватает всё собрать)
BorisZ: я в UTTT выделял полтора миллиона нод - видимо больше не давало, не помню уже, переиспользовать их не приходилось, но может потому что у меня маловато роллаутов было
Uljahn: либо ноды были крохотные
BorisZ: а переиспользование дерева дает не такой большой прирост, прикидывали на пальцах - проценты да, но в разы точно нет, ветка маленькая относительно родительского дерева один хрен
Uljahn: ну да, не более 10%
BorisZ: Uljahn кто-то говорил что 5 млн выделял, но я могу путать уже числа, давно было
Uljahn: amuruskin вроде использовал такой метод
Uljahn: *amurushkin
aropan: О, нормально - поспал, а меня в легенду втащило. )
tutubalin: vrabosh задача решается перебором
tutubalin: а я чо-то не вижу Unit fractions в codegolf
dbf: wlesavo есть пара книжек: https://www.ozon.ru/context/detail/id/4311012/ https://www.ozon.ru/context/detail/id/4127815/ не без воды, но есть и полезные приемы
Akarachudra: wlesavo самая классика - это разработка через тестирование Кента Бека.
wlesavo: пм от топ1 подъехал
gybson_samara: ого за контест отсыпали 3к очков, сразу в менторы
Uljahn: норм пм от топ-1, интересная идея - хранить лучшую версию противника и развивать её в заисимости от течения игры, тоже давно думаю об адаптивной модели
Uljahn: опять сообщения не обновляются
dbf: у меня вообще постоянно отваливается чат и сообщения пропадают. бесит, когда до середины дочитал :)
Uljahn: так, у кого не обновляются сообщения, скажите версию браузера - пойду в дискорд на канал багов
Uljahn: зарепорчу
Uljahn: у меня на лисе последней иногда бывает, помогает перезапуск браузера
BorisZ: проверка связи
Uljahn: тест пройден
BorisZ: Version 73.0.3683.86 (Official Build) (64-bit)
BorisZ: хром
Uljahn: в смысле, в хроме тоже бывает заморозка чата?
BorisZ: причем и в винде и в юниксе
BorisZ: угу не обновляется ни фига, чтоб прочитать приходится страницу обновлять
YurkovAS: BorisZ у тебя в spring challenge 2020 для поиска лучшего пути beam search используется?
BorisZ: YurkovAS нет, бфс, если встретил точку то генерю путь до нее, оцениваю, продолжаю бфс
Uljahn: написал в техподдержку :smirk_cat:
dbf: ждем когда попросят перезагрузить компьютер 3 раза :laughing:
YurkovAS: BorisZ это обычный бфс? если добавить после него рандомный поиск и вызывать хотябы 100 раз, то рандомный всегда находит путь круче. проверено
YurkovAS: еще они убрали чат, когда находишься внутри игры, раньше вроде было.
dbf: ого, вот это удар
dbf: дейстивтельно, нет
Uljahn: а, может из за этого и чат у нас тупит
BorisZ: у меня меньше 1000 путей успевало нагенерить, иногда 400 только, не влезло бы ничего больше
BorisZ: да и начал писать я все это в воскресенье в 8 вечера, закончил полпятого утра, до этого с другой идеей возился
dbf: ого, вот-так вложился для легенды!
BorisZ: ну там были пути тоже но все по другому искалось, но не взлетело
wlesavo: BorisZ как ты первый ход в платинум рифте выбирал помнишь?
wlesavo: YurkovAS ты бы знал сколько я раз страницу игры перезагрузил, думаю что за баг, где чат
BorisZ: wlesavo в первом я запилил потенциальные поля, оно само как-то выбирается
wlesavo: BorisZ на первый ход тоже?
BorisZ: ну может это не настоящие пп фиг знает, как я это понимаю по крайней мере
BorisZ: сейчас гляну
BorisZ: с первым там были какие-то тонкости, если просто на самые жирные прыгать то все помрут солдатики
wlesavo: ну да, я пока выбирал континент и уже на нем вовевал, в 1на1 просто самые жирные лучше работали, ну и континент выбирал либо самый жирный либо второй по жирности в зависимости от плотности карты
wlesavo: чуть чуть до леги не хватает
BorisZ: нет, никаких исключений, но самые жирные клетки там у меня не всегда самые низкие, соседние с ними тоже давят вниз
wlesavo: хм, интересно
BorisZ: сейчас не могу понять уже, но вроде бы я тоже сколько-то ходов высаживаюсь только на один континент, на остальные забиваю пока
BorisZ: если больше 2х игроков, то первые 2 хода высаживаюсь на второй по лучшести континент, потом на общих основаниях
BorisZ: там кстати тоже от случая много зависит, попробуй ресабмит сделать - у меня одна верия финишировала в серебре, потом она же в легу вышла, может даже без изменений
wlesavo: ну я пробовал, 10 место это +- лучший результат, запушил когото в легу даж
wlesavo: да, тогда все очень похоже, надо остальные аспекты глянуть
BorisZ: самый короткий бот кстати - меньше 200 строчек кода
wlesavo: неплохо, у меня 500 где-то уже
tutubalin: если больше двух игроков, то имеет смысл в начале не на жирную клетку высаживаться, а на соседние с ней - противники друг друга вырезают и занимаешь пустую
wlesavo: ну это тож понятно, но не всегда работает как надо
tutubalin: ну да, если все будут использовать эту тактику, то клетка останется пустой )