Chat:Ru/2020-05-20

From CG community
Jump to navigation Jump to search

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/ не без воды, но есть и полезные приемы

Default avatar.png 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: ну да, если все будут использовать эту тактику, то клетка останется пустой )