Chat:Ru/2020-11-17

From CG community
Jump to navigation Jump to search

BorisZ: http://chat.codingame.com/pastebin/eb1f14d9-5ecb-433e-971a-4f425037db27

BorisZ: после того как прочитаешь первую строку инпута - стартуешь таймер

BorisZ: опять чат помер

Pyhesty: а питон запустить в релизе реально а не дебаг?

Uljahn: а смысл?

BorisZ: у обычного питона нет никакого релиза это ж интерпретатор просто

BorisZ: есть альтернативные реализации питона с компиляцие на лету или пакеты чтоб обычный компилировать но тут их нет все равно

BorisZ: на 22 и на 24 месте питон однако, видимо есть какие-то еще пути кроме перебора

Uljahn: https://stackoverflow.com/a/26584048

Uljahn: https://stackoverflow.com/a/2167639

Uljahn: странно, у меня чат работает сейчас

aropan: Не должен?

aropan: Или запятая лишняя?

Uljahn: дома не работал

Uljahn: перезагрузили что ли уже

Hoggins: мгновение назад у меня вообще ничего не грузилось...

NightLuna: +1

Uljahn: Automaton2000: тест

Uljahn: ахах, теперь ручат работает, а общак тупит

NightLuna: надо наверное врага учитывать начать...

wlesavo: у меня с симой для врага хуже работает, оч странно, уже вроде все проверил, багов не должно быть, а работает хуже, даже с пессимистичной оценкой чем с оценкой по нулевой глубине, т.е. по текущему состоянию

BorisZ: действительно я и не знал про дебаг

BorisZ: но он конечно нефига не делает кроме отключения асертов и докстригов

Hoggins: Я как то не нашел какого то толкового описания применения MCTS с учетом врага. Так делают вообще?

wlesavo: дефолтное мктс учитывает врага, здесь только проблема с одновременными ходами, но можно их сделать последовательными, другое дело что здесь оно похоже не сильно надо

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

wlesavo: я тоже думал, ну у меня конечно поиск плохой, может на хорошем поиске и даст чего

Uljahn: иногда могут быть два рецепта на похожих ингредиентах, оба враг не сможет сделать

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

NightLuna: это да, концовка важна

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

NightLuna: а правда, что stl работает долго, потому что дебаг?

tutubalin: если враг может сделать быстрее, возможно нужно забрать какое-нибудь заклинание из книжки, чтобы он не смог сделать быстрее. но это теория

Uljahn: надо сделать так, чтобы враг мог сделать быстрее только дешевые зелья, но это теория

tutubalin: вот, например, насколько я понял, у Бориса заклинание учится только непосредственно перед использованием. то есть, сперва нужно собрать для него ингредиенты, и только потом учить. пока он собирает ингредиенты - мы можем забрать заклинание.

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

wlesavo: эйлер говорил что вчера еще пока он топ1 держал у него еще не было то ли совсем предсказания соперника то-ли на максимально примитивном уровне и он рашил шестое зелье даже если это вело к поражению

wlesavo: то есть просто хорошего поиска может быть вполне достточно для легенды

NightLuna: ну да, если неправильно предсказать соперника, то пока будешь брать бесполезные для себя заклинания свой темп потеряешь

NightLuna: а до легенды же еще далеко, не факт, что его та стратегия пройдет...

Uljahn: справедливо

tutubalin: хммм... а что делать, если у тебя уже 5 зелий собрано, осталось последнее, но ты отстаешь от соперника?

tutubalin: варить побольше t1?

aropan: > хммм... а что делать, если у тебя уже 5 зелий собрано, осталось последнее, но ты отстаешь от соперника? Значит ты в плохом положении.

aropan: > варить побольше t1? Думаю стоит доварить шестое, ведь если не ты доваришь, то доварит соперник. Просто найти более подходящее и t1+ оставить больше в рюкзаке.

aropan: А еще интересно получается, что ты можешь шестым зельем закончить, но в зависимости от хода соперника (кастовал они или покупал) результат может быть разный.

Uljahn: так глубина небольшая, можно минимаксить

Uljahn: или это предтерминальный стейт когда, и противник неизвестен?

Uljahn: покупал? тут вроде продавать надо наоборот :)

Zhmyh: У кого-нибудь бывали аномалии с таймаутами? Один и тот же матч с практически детерминированным решением запускаю несколько раз и получаю совершенное разное время.

Zhmyh: А на локальной машине все вроде довольно стабильно.

Zhmyh: Второй день сижу в профилировщике, пытаюсь найти эту аномалию, но на локалке все ок.

Zhmyh: Вообще у кого-нибудь таймауты бывают?

Uljahn: в дискорде и на форуме обсуждают эту проблему

Uljahn: рандомные задержки во многих языках, включая плюсы

Uljahn: рабочая версия - серваки тупят

BorisZ: tutubalin то что заклинание учится перед использованием - это так, это легко пофиксить, после того как лучшая цепочка известна - свапнуть изучения в начало

BorisZ: это не повлияет ни на что в моем случае, но если там какой-то смитси с взаимодействием, то может и поломать что-то

BorisZ: то есть первые шаги могут вести к двум разным доставкам в зависимости от действий оппонента

NightLuna: эйлер тыбзит заклинания из под носа прям ><

NightLuna: хотя нет, возможно он не сециально

wlesavo: ну он говорил что добавил учет противника недавно более менее нормальный, так что может и специально

BorisZ: не будем с ним играть

wlesavo: да сделаем свою легенду, с договорными матчами и ведьмами

Zhmyh: if (enemy == euler)

 donotlearnspells();

Zhmyh: он не украдет у тебя изучения, если ты не будешь ничего изучать

Zhmyh: think about it

NightLuna: :grinning:

wlesavo: а у меня почему-то любое изменение ломает бота, иногда такую дичь творит

NightLuna: мб четное число багов?

NightLuna: что-нибудь убираешь и становится нечетное

wlesavo: ну я же баги то не исправляю

wlesavo: но может добавляю, да

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

BorisZ: дерево построить на несколько ходов вглубь, а потом из каждого листа свое МС фигачить

BorisZ: хоть первые ходы все переберутся и без повторений

BorisZ: все в плюс

wlesavo: вариант конечно, но роллаутов маловато на такое

wlesavo: вот че это такое https://www.codingame.com/share-replay/504084434

BorisZ: монтекарло есть? - есть, дерево есть? есть - значит MCTS )

wlesavo: не, я про тупость бота, несколько раз видел что он перестает варить, а виде не воспроизводится, бред какой-то, надо баги искать короче

NightLuna: у меня так же делала, когда быг был

NightLuna: баг*

wlesavo: он думает что проиграл, хотя эта проверка только на 6ом зелье, пойду искать короче

Uljahn: а селекшон?

gybson_samara: а никто в обратку не идет, от зелья к инвентарю? там вроде разветвлений не так много

BorisZ: а селекшн для зануд )

Uljahn: как раз пойти собираюсь

BorisZ: gybson_samara я думал про это но если даже так проще, то это не топ решение, нужно планировать варку на пару зельев вперед

Uljahn: так после выполнения заказа приходят новые зелья

BorisZ: так будет меньше ходов иногда - промежуточных камней больше, короче получится

BorisZ: но может запилить и нормально получится, надо пробовать

Uljahn: а, ну это как в поворятах - собирать универсальный инвентарь

Uljahn: или в C4L

BorisZ: новые приходят это аргумент, но все равно мне кажется что надо не на одно целится а комплексно, но доказать не могу, на уровне интуиции

Uljahn: ну, это вроде очевидно, чтобы противник не вычислил, на что ты нацелился, и не перехватил

Uljahn: я вот думаю попробовать выбирать пару из дорогих и дешевых зелий с наибольшим количеством общих ингредиентов

Uljahn: и пусть противник делает дешевое :)

MadKnight: чё, уже все запилили Beam Search ?

Uljahn: Automaton2000: чатик, живи

Automaton2000: ну и как ты это делаешь?

MadKnight: Uljahn как ты это делаешь?

Uljahn: Automaton2000: как я это делаю?

Automaton2000: ну я вот не знаю

Uljahn: я вот тоже

BookSaver: Automaton2000: ты живой еще, курилка?

Automaton2000: Дело в том, что это не так важно

BookSaver: Automaton2000: ну я почему-то так и подумал.

Automaton2000: а как ты это делаешь?

BookSaver: Automaton2000: головой, а почему ты спрашиваешь?

Automaton2000: ну у меня и у кубера

wlesavo: это завтра уже золото получается?

Uljahn: у кого-то может и получается :(

wlesavo: ля забыл дисконт поставить на терминальную награду, думаю че он не заканчивает когда знает что победил

wlesavo: вот это я понимаю сабмит пошел

wlesavo: еще нашел одну эвристику интересную, но пока не уверен что она какой-то результат дала

Uljahn: я уже доволен тем, что нашёл, как в контесте поупражняться в numpy, а то вообще бы забросил в первый день, когда в бронзу на рандоме вышел :)

Uljahn: увлекательные эксперименты с сомнительным результатом, как обычно

BorisZ: мне кажется что вполне хватит питона для простого плана - найти кратчайший путь к каждому из зелий для себя и для врага и выбрать самый выгодный

BorisZ: скорее всего те питоны что на 30 месте что-то подобное и делают

BorisZ: ну и концовку проработать

TheCrucial: js мой таймаутится в ситуациях когда в инвентаре 0 вещей. ищу тупо в ширину до первого поушена. подскажите как улучшить

Uljahn: а REST не юзаешь?

TheCrucial: видимо нет. это что значит то?

Uljahn: :scream_cat:

Uljahn: восстанавливает потраченные спеллы

Uljahn: есть начальный спелл на +2 т0

735487: restfull api framework ))))

TheCrucial: ааааа вот я вначале как веб дев про restfull apis и подумал)

TheCrucial: да , отдых использую)

Uljahn: профессиональная деформация)

BorisZ: я честно говоря тоже )

BorisZ: https://ru.wikipedia.org/wiki/REST

TheCrucial: одно из рёбер. но только когда 2+ спелла на кд

Uljahn: добавь пустой инвентарь в эту проверку

Uljahn: "когда 2+ спелла на кд или пустой инвентарь"

Laiff: хм я на 5 спелах рестаюсь

TheCrucial: почему это должно большой буст дать

Uljahn: можно ещё проверить, что лёрн не даст халявных т0

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

Laiff: Это смотря на какой структуре ищешь

Uljahn: :thinking:

Uljahn: Laiff: посоветуй структуру для поиска путей

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

Laiff: Хотя сейчас мой основной противник это их окружение, потому что таймауты так и не починили они кажется

Uljahn: граф с метрикой на расстояниях Хэмминга или типа того? :thinking:

Uljahn: 20к валидных переходов, многовато для LUT

SergeyShirokov: почему все время таймаутится скрипт, кто знает?

Uljahn: админы молчат, их в дискорде уже завалили вопросами подобными

735487: а я вот не знаю стоит что то пробовать написать или нет :) времени пока нет. хотя может в последние пару дней на выходных что то налабаю :)

Uljahn: прикольно будет, если ботхайдеры в последнюю минуту сабмитнут топовых ботов, а они из-за таймаутов в топ не дойдут :relieved:

SergeyShirokov: поставил 20 мс на поиск - все равно таймаутится иногда

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

SergeyShirokov: я так и считаю

Laiff: Uljahn можно и с метрикой но я пока переходы не взвешиваю, только приоритезация взвешивается по рецептам

Uljahn: дискретное движение по гиперплоскости в 115-мерном пространстве :upside_down:

Laiff: 1000 мерном если быть точным, а так да верно, 10 мс на ход в плохом случае в среднем 2-4мс получается

Laiff: и это умудряется падать потому что окружение фигней страдает

SergeyShirokov: блин, мне ж не сам доход надо учитывать а доход / кол-во ходов до него

Laiff: ну да при хорошем расладе 6 доставок за 40- ходов, но стратегию обучения нужно еще поточить

Uljahn: я количество возможных спеллов за базис взял...

Uljahn: интересно, получится ли scipy натравить на это дело, там Делоне и Вороной...

Laiff: ну там получается около 25к вариаций по спелам получается, а по поводе делоне вороного они рандомные а эта штука по сути детерминирована и этим стоит пользоваться

Uljahn: ясно, спасибо

735487: слушайте а что просто генерация действия на сложение 4 чисел и оценка результата не катит?

SergeyShirokov: просто из интереса - кто сколько состояний успевает проанализировать за эти 50 мс? и на каком языке?

Laiff: js 10ms все

Laiff: js 10ms все ) нужные

NightLuna: у меня таймауты, не понимаю как так, у меня есть иф на прошедшее время...

SergeyShirokov: у меня иногда будто даже ход не начинается

NightLuna: вот из 30 игр в арене у меня в 3 был таймаут...

NightLuna: на арене*

BorisZ: если у всех примерно одинаково таймаутит то в среднем разултат будет такой же как и без глюков

BorisZ: так что можно не париться

BorisZ: если починят, то всем одновременно тоже

735487: наверняка кол-во таймаутов у всех будет разное :)

Laiff: будет весело если количество таймаутов будет зависеть от языка :)

aropan: > просто из интереса - кто сколько состояний успевает проанализировать за эти 50 мс? и на каком языке? В тг обсуждали это. У меня на плюсах около 50-60к. Это с включенным оптимизациями, без них 20-25к. На шарпе кто-то 70-80к делает. Но мне еще есть где почистить что-нибудь.

NightLuna: у меня плюсы, где-то 70-90к, но у меня только перебор меня и все

wlesavo: у меня 10-15к роллаутов на глубину 15 на плюсах, маловато, но зато более менее полная сима

aropan: > у меня плюсы, где-то 70-90к, но у меня только перебор меня и все Неплохо. А все перебираешь?

aropan: Можешь купить, закастить, сбросится, еще раз закастить и еще что-нибудь купить? )

NightLuna: купить это в смысле из книги?

NightLuna: или зелье

aropan: Из книги.

NightLuna: да, могу

aropan: Хм.

aropan: А чего так хорошо у тебя? )

aropan: Это уникальные состояния только?

NightLuna: да, 70к это разве много?

aropan: Для меня да. )

aropan: Все, что больше моего много.

aropan: Мир относителен.

wlesavo: это уже не относительность а эгоцентричность :slight_smile:

Uljahn: у wlesavo получается 150-225к тогда? вы про роллауты или симуляции одного раунда?

Laiff: блин 50% падения на ранкинге как это вообще понимать, они это вообще фиксить планируют кто в курсе?

Uljahn: все падают одинаково -> проблемы нет

NightLuna: у тех, кто не использует все 50мс по любому нет проблем

wlesavo: ну 50% это не платформа, это у тебя проболемы

NightLuna: wlesavo у тебя есть таймауты на арене?

BorisZ: у меня 60-100 к действий - то есть симуляций одного раунда

wlesavo: у меня до 40мс зарезано, но таймауты случаются

BorisZ: тоже 40 мс отсечка

NightLuna: у меня 45, но я заметила, что пофиг 45 или 40, вот на 30 нет таймаутов

NightLuna: > у меня 60-100 к действий - то есть симуляций одного раунда

раунд это что?

NightLuna: 2 раза скопировалось(

Uljahn: один ход игры

Uljahn: роллаут - последовательность ходов

BorisZ: ну чего-то скастануть или выучить

NightLuna: Uljahn спасибо

wlesavo: а ну и еще у меня в глубине выучить и отдохнуть за действие не считается, т.е. на отсечку не влияет

wlesavo: уменьшил глубину при фиксированных роллаутах чуть не в топ 40 залез, вот как так

Zhmyh: что значит фиксированный ролаут?

Zhmyh: а

wlesavo: на 8к отсечка

wlesavo: если наиграл то заканчивает

SergeyShirokov: а какая последняя лига открыта сейчас?

Zhmyh: серебро

SergeyShirokov: а, вижу

wlesavo: правада там у зено сломанный ббот который на халяву пушит

Zhmyh: wselavo 8к или 80к?

wlesavo: 8к

Zhmyh: а что тут челы про 80к говорят

Uljahn: так это роллаутов

aropan: > это уже не относительность а эгоцентричность :slight_smile: Нет, это не так - я лучше всех все знаю. ))

wlesavo: так у них состояния а не роллауты

Zhmyh: а

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

Laiff: у меня ход 10мс максимум а так 2-3мс

Uljahn: с этим никто не спорит, я просто одну точку зрения озвучил, которую в дискорде видел)

wlesavo: не может быть при таком 50% таймаутов, либо время меришь не от первого инпута либо что

Default avatar.png dolphin278: Я периодически видел, что отвечаю дольше 50мс, но иногда это к дисквалификации не приводит O_o

Zhmyh: это правда

Zhmyh: у меня максимум 65 былл

Default avatar.png dolphin278: +

Uljahn: dolphin278: если превышение не два хода подряд, то могут простить его

Laiff: это я выяснил дается 5 превышений на самом деле после 5 дисквал, а тут падения на первом ходу с таймаутом

Uljahn: админы не уточняли, какие параметры у алгоритма, можно только догадываться по тестам

Uljahn: 5 превышений за игру не подряд?

wlesavo: Laiff ищи баги

Uljahn: а на какой процент?

Default avatar.png dolphin278: @Uljahn Спасибо, не знал про два раза подряд.

wlesavo: на первый ход вообще секунда дается

Uljahn: ещё выводи частоту проца, на котором код исполняется

Laiff: во сколько точно пребивают я не выяснил точно, но пару раз пропускали 120 мс за один ход с последующими превышениями до 10 мс

Uljahn: тут 5 вариантов процов, они очень разные по производительности

wlesavo: Laiff как ты время замеряешь?

Uljahn: 120мс - не реально, у тебя криво время меряется

Laiff: говорю что видел

SergeyShirokov: или это первый ход)

Uljahn: при 50мс лимите вряд ли больше 60мс может быть в процессе игры

Laiff: нет первый ход жестко 1000 перескочил и умер

wlesavo: Laiff старт времени после первого инпута должен быть

Uljahn: это на js?

Laiff: да и да

Laiff: точнее так я вообще ничего не делаю до первого инпута если на то пошло

Uljahn: а прогревать не нужно JIT?

Laiff: за разумное время я на это повлять изнутри не могу

wlesavo: YurkovAS найс сабмит

Uljahn: MichaelPu на питоне прям рядом с wlesavo... жесть

Uljahn: японские питонисты ещё нарисовались

NightLuna: в топ 200 таких всего 2

NightLuna: в основном японцы на плюсах

Uljahn: так они в топ-40

Uljahn: ну топ-50

NightLuna: как они этого добились? эвристики какие-то?

TheCrucial: свои ядра эффективные арендовали

wlesavo: да, жалко от японцев не будет пмов, но вод от микаэля этого ждем

wlesavo: вот*

TheCrucial: почему ты так уверен что не будет?

wlesavo: никогда не бывает :disappointed:

wlesavo: даже от регулярных

NightLuna: а ты сам писал когда-нибудь?

wlesavo: я оба раза

NightLuna: круто

wlesavo: ну там ничего выдающегося то не было, хотя футболку за кораблики конечно приятно

NightLuna: кораблики это которые месяц шли?

NightLuna: капец)) я где-то неделю играла и все... даже в легу не прошла

wlesavo: ага

NightLuna: ой, там в легенде всего 64 человека, сложно было

wlesavo: а у меня была удаленка на которой можно было почти не работать и я месяц играл в кораблики :smiley:

wlesavo: я там голд босс

NightLuna: неплохо, я как-то чуть не стала боссом в игре на эвристики, повезло


wlesavo: дышу в спину первому питонисту :smiley: ща еще кови чуть чуть подпушит

wlesavo: против кови какой-то винрейт лютый, 7/2

Uljahn: naniwazu в реплеях выводит глубину и число нод :confused:

Uljahn: закупки спеллов у них умные, конечно

wlesavo: все, запушили выше него, гештальт закрыт :slight_smile:

wlesavo: для питона числа большие прямо у него

Uljahn: угу, я в шоке

SergeyShirokov: блин, при изучении спелла ему назначается случайный id?

aropan: > блин, при изучении спелла ему назначается случайный id? Есть такое.

wlesavo: не случайный, но другой, потому что вы можете изучяить один и тот же спел

SergeyShirokov: NEUDOBNO

SergeyShirokov: еще и за этим теперь следить)

aropan: After learning a spell, the learnt version of the spell has a different id from the one previously within the tome.


BorisZ: id вобще не нужны, сами спеллы то все уникальные

aropan: Из условия.

SergeyShirokov: id проще хранить, потом команды-то из них формируются

BorisZ: ну перев выводом и пробежаться один по всем экшнам которые в инпутах были

BorisZ: *один раз

SergeyShirokov: ага, с этим разобрался

SergeyShirokov: все равно непонятный таймаут получается, даже если 30 мс отсечка

SergeyShirokov: попробовал подебажить: иногда таймаутит аж на 6 мс после первого чтения ввода

BookSaver: Скорее всего все крутится на каких-нибудь виртуалках в каком-нибудь амазоне. На бумаге все работает хорошо. А по факту если соседи по железу активно потребляют ресурсы - тормоза и лаги на ровном месте.

BookSaver: И не отдебажить

Hoggins: хз, я не так часто наблюдаю за своими играми, но таймаутов не замечаю... Останавливаю симу на 45мс, именно время симуляции, и за 1-2мс завершается ход. Может я что то не так меряю.

Hoggins: А что бы дэбажить можно запускать локально, сам с собой, но уже почти идеально

Uljahn: BookSaver: угадал, всё именно так, до этого (года три назад) были другие вируалки (вроде на azure) и таймаутов не было

BorisZ: если таймаут каждую игру то это скорее всего баг какой-то в боте

BorisZ: у всех как я понял раз на 10-20 игр, да и то только у тех, кто юзает время на полную 40мс и больше

Uljahn: эти необъяснимые провалы начались после переезда, какое-то время терпимо было, а недавно появились новые типы процов в ротации виртуалок, очень нестабильные

BorisZ: ну да, нестабильные - редко таймауты, и на несколько десятков мс

BorisZ: а не то чтоб каждую игру

Uljahn: мы не знаем, как там у амазона нагрузка балансируется

BorisZ: я в IDE гоняю периодически игр по 10 с собой на арене - вобще ни разу не было таймаута

Uljahn: ошибка выжившего :smirk:

aropan: https://github.com/s-vivien/CGBenchmark рекомендую, мощная штука.

BorisZ: вот кстати вполне себе кандидат в причины подвисаний

BorisZ: если человек 100 запустят на ночь гонять разные версии ботов - весь амазон ляжет )

BorisZ: 170 results found for «Score - Computing»

BorisZ: плюс еще столько же гоняют cgbenchmark

YurkovAS: как-то карлисо скидывал статистику бенча для крестиков, там было порядка 2к игр и работало это неделю :smile:

YurkovAS: ну или может не неделю, но сутки точно

BorisZ: ну если дело в повышенной нагрузке то может смгут добрать себе еще серверов

BorisZ: до конца контеста

BorisZ: хотя фиг знает как там тарифы устроены, может и нельзя так

Uljahn: раньше добавляли инстансов в последние выхи, когда всё еле ползало

Uljahn: правда, не понимаю, как это проблему решит

Uljahn: хммммм, сабмитнул в крестиках - ни одного таймаута за 60 игр. может в рефери дело?

SergeyShirokov: ничего не понимаю, почему бот фейлится

Laiff: добро пожаловать в клуб

735487: Uljahn: у меня давно есть мысль что реально дело в рефери. что там сборщик мусора шалит. у крестиков просто сима простая

735487: и еще все они написаны на sdk для создания мульти которое на java

SergeyShirokov: в конце while(True) сообщение выводится, а в начале после этого - нет

735487: а с java похоже самые большие проблемы

SergeyShirokov: походу бот настолько мощный что прошёл бесконечный цикл до конца

NightLuna: мде https://www.codingame.com/share-replay/504506830

Xyze: ахах, нормально

NightLuna: Причем та то с ней обычно все норм, но тут чет накатил шопоголизм. Раз в 50 игр.

Uljahn: на 20-м можно было зелье сдать...

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

BorisZ: возможно в оценку вкючаешь количество 1+ камней

BorisZ: хотя до конца еще далеко

NightLuna: ну она там решила, что хочет сделать 2 рецепта. 61 и 72. но там не влияло, она могла сделать 61, а потом спокойно собирать на 71. в оценке баг видимо

NightLuna: собирать на 72*

NightLuna: ну и потом, когда она решила, что сразу 61 не будет собирать, соперник стыбзил его... и все пошло не по плану)

NightLuna: видимо слишком заполненный инвентарь. не было пространства для маневра)) нельзя же удалять

BorisZ: эх хорошо когда можно разобраться почему твой бот что-то делает

BorisZ: не так

BorisZ: когда будет MCTS хрен разберешься

wlesavo: я даже в мс не всегда понимаю чего он хочет, только по скору примерно догадываюсь если в какие-то большие награды попал

wlesavo: блин, все-таки почти держится бот в топ 30, так можно будет и за легенду побороться

Egrace: а что такое мс и mcts?

Vitaliy_Kamalin: Microsoft Certified Technology Specialist (MCTS), или Сертифицированный специалист по технологиям Microsoft

tomatoes: monte carlo tree search

Egrace: понял, спасибо

Zhmyh: mc и mcts это не одно и то же?

Vitaliy_Kamalin: mc - это миллисекунды

Zhmyh: найс троллинг

tomatoes: у них только общая идея похожа

Vitaliy_Kamalin: Ну простите, есть же всё в гугле -_-

tomatoes: мол делай рандом, потом что-то посчитай и вроде как получишь что-то толковое

Zhmyh: Ок, спасибо. Ну тут, как я понимаю, когда говорят MC имеют в виду MCTS?

735487: нет это разные вещи

BorisZ: монтекарло это берется состояние, к нему применяется случайное валидное действие несколько раз последовательно

BorisZ: в конце вычисляется счет, если он лучше чем раньше то цепочка запоминается

BorisZ: цепочка действий

BorisZ: потом сначала - пока время не кончится

BorisZ: первое действие из лучшей цепочки - это наш ход

Zhmyh: состояние - это текущее или их несколько может быть?

BorisZ: можно эту идею улучшать бесконечно - не совсем случайные действия, переменная длина цепочки - до чего-то хорошего и так далее

BorisZ: состояние начальное - которое мы собрали из инпутов

BorisZ: игровой мир на время t=0

BorisZ: к нему возвращаемся после каждой цепочки

Zhmyh: то, что ты объяснил, это разве не просто случайный линейный подбор ходов из начального состояния?

BorisZ: наверное можно и так сказать, но длинновато )

Zhmyh: это и есть этот ваш монте-карло?)

NightLuna: как корабль назовешь, так он и поплывет) mc звучит солиднее

Zhmyh: и это работает?

Zhmyh: че

Zhmyh: дичь

BorisZ: как-то работает понятно что почти всегда есть что-то получше

BorisZ: но когда сима есть то это самое простое что можно с ней сделать

Zhmyh: вот раньше, когда обсуждали, я вроде из контекста думал, что сима запускается из нескольких вершин

Zhmyh: или это уже не mc а mcts?

BorisZ: да, наверное про него говорили, не знаю, там точно запускается из вершин, называется ролаут

BorisZ: а потом херак и черная магия - я сам не понимаю почему оно работает )

Zhmyh: так я про всю матешу говорю)

Uljahn: от полного рандома логично перейти к управляемому рандому, т.е. к многоруким бандитам (multiarmed bandits), раскурить формулу UCB1, а там и дерево можно начинать строить (MCTS), так всё увязывается в стройную систему

Uljahn: вся матеша там вращается вокруг оптимальности выбора вариантов в условиях неопределённости

Hoggins: а что будет узлами в MCTS в этой игре? оно мне как то на крестики нолики вообще не похоже...

Hoggins: *в дереве по которому будем симулить ходы

BorisZ: состояние игры

Uljahn: придётся сделать ходы последовательными, т.е. противник будет знать твой ход, это т.н. "параноидный" вариант MCTS, он слишком пессимистичный

BorisZ: корень дерева - то что есть сейчас тэ нулевое

Hoggins: состояние - твои ингридиенты+спэлы?

Zhmyh: инвентарь тоже

BorisZ: каждый потомок - состояние после валидного хода

Zhmyh: а ну да

Hoggins: ага, понятно. Теперь понятно на что убить еще одну ночь

Zhmyh: или не одну

BorisZ: одна ночь - очень оптимистично

Hoggins: ну, ниже дна упасть сложно :)

BorisZ: полярная ночь может )

Uljahn: ещё можно погуглить Monte Carlo Tree Search for Simultaneous Move Games, decoupled UCT (DUCT)

Uljahn: и смитсимакс

Uljahn: это из местного фольклора

Uljahn: https://tech.io/playgrounds/36476/smitsimax

735487: смитси не зайдет потому что противник может сделать твое действие невалидным

Hoggins: везде так описан алгоритм, что я не понимаю как его пидалить... Но по этим словам находится что то, что я еще не читал. Спасибо

Uljahn: а, ну да, про смитси говорили, что он тут не подходит

wlesavo: Zhmyh ну вообще мс запустить в рабочее состояние гораздо проще чем что либо другое, какую нибудь генетику пока параметры не накрутишь нормально оно вообще не будет работать, а это дает быстрый результат, часто этого быстрого результата достаточно

wlesavo: но оценка нужна хорошая конечно, без нее ничего не заработает

wlesavo: ладно, доброй ночи

Egrace: Доброй ночи :)

Default avatar.png Lunya: :stuck_out_tongue_winking_eye:

Egrace: Тут подключается какая-нибудь библиотека для работы с векторами в плюсах?

Zhmyh: вектор как контейнер или как математический?

Egrace: как математический

Egrace: который представлен в виде вектора как контейнера ;)

Zhmyh: вроде тут ничего кроме стандартных нельзя подключить

Egrace: да ну, в питоне нумпи есть, например

Zhmyh: только в код вставлять реализацию

Zhmyh: в плюсах же в принципе нету такого, как математический вектор в stl

BorisZ: тут надо 2 функции - сложить 2 вектора и проверить что он входит в инвентарь, каждая в пару строчек

Zhmyh: я через std::array писал

Zhmyh: и для удобства using

BorisZ: быстрее написать чем проверять что тут есть )

Zhmyh: ну и операторы можно перегрузить

zuko3d: Zhmyh а чем тебе std::valarray не математический вектор?

Zhmyh: О, не знал о нем

Zhmyh: Прикольная вещь