Chat:Ru/2020-11-23

From CG community
Jump to navigation Jump to search

MadKnight: да можно и тут на инглише

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

MadKnight: просто улучшай бота

NightLuna: сейчас?

MadKnight: кнш

MadKnight: есть ещё идеи?

NightLuna: все мои идеи делают хуже

MadKnight: так надо более сложные условия ставить

MadKnight: как когда ты давала бонус за рецепт к которому идёт противник - нужно более сложное условие, я же говорил

MadKnight: чтобы эта идея заработала

MadKnight: более "умное" условие, когда бонус давать

NightLuna: да я вроде поставила более умное

MadKnight: какое

NightLuna: ой ну не очень умное)) даю бонус только если стоимость больше 15

MadKnight: это совсем простое

MadKnight: надо делать условие - стоит ли идти за этим рецептом? а что если противник не идёт за ним?

NightLuna: нет, ну если стоимость больше 15 и это самый близкий к врагу рецепт, а к нам он еще ближе, то точно надо брать

NightLuna: блин, я проигрываю боссу все игры... это плохо

MadKnight: так а в чём проблема тогда? почему не сработало?

MadKnight: почему хуже было?

NightLuna: а, ну я потом подтюнила и вроде стало норм

NightLuna: я понятия не имею какое это влияние оказывает на мое место в рейтинге

NightLuna: если бы у меня был норм винрейт против босса и я не проиграла ему 4 игры из 5

MadKnight: а покажи реплей

NightLuna: https://www.codingame.com/share-replay/509629977

MadKnight: https://sun9-57.userapi.com/impg/ftKeHTP-7ANoL3_HaF0J9eYE0XlgAFilj12x_A/EtY6bPIrjOk.jpg?size=68x48&quality=96&proxy=1&sign=f15aee78a611cb89a83e66c250faf582

MadKnight: ну смотри какое он комбо взял

MadKnight: очень удобное

MadKnight: а ты вместо этого взяла -3 t1 +3 t2

NightLuna: провал

MadKnight: [-3,1,1,0] мне кажется вообще фигня

NightLuna: ну я потом 3 0 0 0 добираю

NightLuna: но все равно фигня

MadKnight: ход 18 - о, он купил спелл, чтобы получить 1 синий камень

NightLuna: ну я теоретически тоже так могла

NightLuna: у меня есть это в переборе..

NightLuna: но вообще ты прав, надо учить спелы как-то разумнее

MadKnight: о, а на 32 он заюзал это комбо которое я показал

MadKnight: в общем он как будто планирует сразу несколько потионов

NightLuna: да он просто взял комбо, а потом его заюзал, потому что это комбо

MadKnight: не, вообще

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

MadKnight: NightLuna а у тебя же оценка есть?

NightLuna: есть

NightLuna: а можно было без нее?

MadKnight: а какая у тебя?

NightLuna: ну price * 2 * coef + invScore

NightLuna: coef с каждым ходом угасает

MadKnight: а промежуточные?

NightLuna: я только баллы за заказы даю

MadKnight: это называется без оценки

MadKnight: запили оценку для промежуточных

NightLuna: и прибавляю скор инвентаря чтобы он не оставлася пустым

NightLuna: ну и еще прибавляю скор инвентаря, который в конце остался...

NightLuna: price * 2 * coef + invScore * 0.2

NightLuna: 0.2 забыла

MadKnight: да это понятно

MadKnight: я про промежуточную оценку

MadKnight: её надо

NightLuna: типа каждую вершину оценить и умножать на коэфициент?

MadKnight: хмм не это не имеет смысла

NightLuna: а как?

MadKnight: скорее

MadKnight: смотреть сколько подходящих камней под potion's

NightLuna: ааа, ты про такую

NightLuna: типа количество зелей, которые можно сварить на текущем ходу?

MadKnight: ненене

MadKnight: типа насколько близко ты к зельям

MadKnight: насколько мало недостающих камней

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

MadKnight: ну да

NightLuna: ой сложная формула получится и по любому еще неправильно работать будет

MadKnight: это всё коэффициенты

MadKnight: зато это big step

MadKnight: big improvement

MadKnight: может в легу закинуть

NightLuna: вот вместо того, чтобы 2 раза победить босса, он 2 раза победил меня, и что в итоге, застряли с ним вместе в золоте...

NightLuna: ну раз биг импрувмент, то надо делать

NightLuna: мне бы повысить винрейт против босса, вот это был бы импрувмент

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

NightLuna: мне кажется, что мне нужен какой-то качественный толчок

NightLuna: я уже 6 часов почти в леге и не сдвигается...

MadKnight: вот это может быть тот самый качественный толчок

MadKnight: запили промежуточную оценку

NightLuna: ilgiocatore давай в топ золота, нужен человек с хорошим винрейтом против босса)))

ilgiocatore: я активно занимаюсь дерганьем коэффициентом)

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

NightLuna: ахаах)

NightLuna: блин, расстояние считать в терминах моих спелов чет сложно

MadKnight: босс, возможно, сразу к 2 оценивает расстояние

MadKnight: или ещё чёт замудрённое

MadKnight: а так какой у тебя поиск?

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

NightLuna: бфс

MadKnight: не понял

MadKnight: с каким коэффициентом?

NightLuna: у каждой вершины есть какой-то вес, который зависит от расстояния до зелий.

NightLuna: как считать стоимость всей цепочки?

MadKnight: хммм зачем тебе их складывать

MadKnight: это вообще отдельное значение

MadKnight: это типа - потенциал ноды

NightLuna: и что с ним делать?

MadKnight: проходить сначала по нодам с потенциалом

MadKnight: типа nextNodeToExplore = max(nodes)

MadKnight: и ещё делить этот score на глубину ноды

MadKnight: или типа того

MadKnight: или можешь вообще сделать Beam Search - брать только топ 10 нод со всей текущей глубины

NightLuna: расстояние от меня до босса 0.16

NightLuna: 0.18*

MadKnight: собираешься пройти в легу, имея 1/10 побед против босса?)

MadKnight: Beam Search попробуй

MadKnight: просто брать топ N нод вместо всех

NightLuna: у меня одна из пяти

NightLuna: и это у этой версии, у других лучше было

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

NightLuna: чет фигово на боссе натренировались, проигрывают все

MadKnight: так ты запили этот поиск

NightLuna: просто что-то я не уверена, что смогу сейчас по быстрому на бимсеч перейти

MadKnight: посмотрим чё будет

MadKnight: почему нет?

MadKnight: там же просто заменить массив всех нод на массивN

NightLuna: разница 0.04

tomatoes: гц

NightLuna: ну я на дне легенды XD

ilgiocatore: ее

tutubalin: NightLuna у меня тоже бфс, но я где-то в середине серебра

tutubalin: в чём секрет?

NightLuna: у меня отсечение есть

NightLuna: и боле мене оптимально все

NightLuna: и еще сделана концовка

tutubalin: а ты когда поиск останавливаешь?

NightLuna: когда время заканчивается

tutubalin: в смысле, что именно ищешь?

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

NightLuna: ну в смысле каждый лист...

tutubalin: цепочка делает только одно снадобье или все?

tutubalin: я ищу пути до первого снадобья только. в итоге состояний так мало, что отсекать вообще нечего

NightLuna: ну там все возможные

NightLuna: в некоторых несколько зелей делается

NightLuna: до первого и правда мало

NightLuna: аж до 45 каким то чудом дошел

dbf: значит надо немного улучшить до футболки

NightLuna: хахахах)))

NightLuna: уже 59

NightLuna: все таки на дне буду

tutubalin: под конец запилил таки MCTS, то он всего 2к сим успевает сделать

tutubalin: в результате играет сильно хуже чем бфс

BorisZ: может оценка нужна другая или константы подергать

BorisZ: редко же бывает чтоб с первого раза взлетело

Zhmyh: Блин, нейросеть с рандомных весов научилась выигрывать сильных челов, но винрейт все еще очень низкий :tired_face:

tutubalin: блин, запилил такой классный класс для инвентаря, позволяющий проверять, можно ли использовать заклинание, всего за одно сложение и один побитовый AND а толку-то, если всё остальное не работает как надо :(

BorisZ: проектирование снизу вверх )

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

BorisZ: везде засада

tutubalin: ну я сперва прототип сделал. нашёл слабые места и их поправил

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

wlesavo: NightLuna грац

YurkovAS: поздравляю

BorisZ: она всю ночь билась насмерь с боссом, теперь наверное спит счастливая )

Uljahn: небось в телеге флудит

mihei: сабмиты действительно сильно тупили или это только мне так показалось?

tomatoes: утром нормально было. под конец и вчера вечером тупило сильно

Egrace: а что, больше нельзя в fall challange играть?

Egrace: в spring можно, а в fall нельзя? О_о

tomatoes: временно нельзя

tomatoes: попозже добавят отдельно

Egrace: а, ок)

Egrace: а то у меня не было достаточно времени в ходе контеста

Egrace: хотел побаловаться еще

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

C2H5OH: а решения победителей публикуют или хотя бы заставляют их описать своё решение?

tomatoes: https://www.codingame.com/forum/t/fall-challenge-2020-feedbacks-strategies/187846

Egrace: а футболка и не нужна

wlesavo: не заставляют, но они сами описывают

tutubalin: C2H5OH на форуме желающие пишут пост-мортемы. разумеется, без кода, только описание идеи, возникшие проблемы и т.д.

C2H5OH: для меня идея "beam search" это не тот уровень, который хотелось бы увидеть. Я попробовал погуглить, я не могу понять что к чему, потому что я этим никогда не занимался раньше.

Uljahn: так займись, вон в 2048 правила простые, и бимсёрч заходит хорошо

Uljahn: даже я осилил его случайно

tutubalin: C2H5OH бимсёрч только звучит как какая-то мегатехнологическая неведомая штуковина. но на самом деле это просто слегка модифицированный BFS или Дейкстра

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

Default avatar.png maddenvvs: Всем удачи! Спасибо чату, вы очень вдохновляющие!

tutubalin: так вот, идея бимсёрча: если размер очереди превышает некий предел, просто выбрасываем из неё те состояния, которые кажутся неперспективными. перспективность определяется какой-то эврестической функцией

BorisZ: tutubalin очень хорошо объясняешь, даже я все понимаю )

C2H5OH: Вы рассказываете со средины. Откуда взялась очередь, откуда взялся граф? Я так понимаю, что все, кто попал в голду и в легу, идут по этому пути. А я вообще не понимаю что вы делаете. Поэтому и спрашиваю есть ли где-то описание решений.

tomatoes: :grinning:

BorisZ: давайте я попробую объяснить, все равно работа в голову не идет

C2H5OH: попробуй)

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

BorisZ: количество денег

C2H5OH: есть

BorisZ: у этого класса (состояние) должно быть 2 ключевых метода

C2H5OH: 4

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

Default avatar.png rkfcccccc: всем привет

Default avatar.png rkfcccccc: кто откуда

Default avatar.png rkfcccccc: дават езнакомиться

C2H5OH: сварить бутылку, выучить спелл, сварить спелл, отдохнуть

Default avatar.png rkfcccccc: я из горда астана

BorisZ: 2) из текущего состояния и валидного хода производит новое состояние - потомка

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

C2H5OH: пока понятно

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

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

BorisZ: тогда на 4 итерации будет уже 10**4 == 10к потомков

BorisZ: это всего навсего глубина 4

BorisZ: это полный перебор или бфс

BorisZ: он быстро упрется в лимит

C2H5OH: да, понятно

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

BorisZ: тогда 300 это будет ширина луча

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

C2H5OH: не из каждых 10 оставлять 3, а всего общую ширину 300?

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

BorisZ: нет, именно оставлять 300 лучших из всех 3000 каждый раз

C2H5OH: пока что ты описывал метод ветвей и границ. с этим всё понятно. но если ты нагенерировал 295 потомкув, то как ты выбираешь какие 5 лишние, при генерации следующей пачки?

BorisZ: если 295 то никаких лишних нет, все хорошо, это меньше чем ширина луча

BorisZ: всех оставляем

C2H5OH: у тебя уже 295, а ты хочешь добавить пачку 10

BorisZ: допустим мы имеем 295 состояний на одной глубине

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

BorisZ: потом из 2950 выкинем все кроме 300 лучших

BorisZ: и переходим к следующему поколению

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

C2H5OH: а оценка потомка эмпирическая?

BorisZ: да, надо подбирать, это может быть сложно

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

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

wlesavo: ну и дубликаты очень важно учитывать

C2H5OH: ну, откроют ведьм на постоянно, надо будет попробовать.

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

C2H5OH: так главный вопрос: вы оценивали общее состояние или выбирали какую-то одну из бутылочек и старались её сварить?

wlesavo: общее состояние конечно

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

C2H5OH: у меня были версии с общим сотоянием, надо было в эту сторону копать...

mihei: а что плохого в пустом инвентаре? зато сварится раньше

wlesavo: mihei \долго разгоняться заново

C2H5OH: общее состояние достигается за меньшее число ходов

wlesavo: так можно за 5-6 ходов 3 зелья сдать

mihei: не все ли равно долго разгоняться после варки, или долго собирать ингредиенты перед ней

mihei: в среднем будет одно и то же

wlesavo: в том то и дело что с ингридиентами ты можешь эффективно юзать заклинания

mihei: а вот это кстати да

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

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

BorisZ: если с частично наполненым то намного больше вариантов - быстрее следующую собрать

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

C2H5OH: а как вы тогда учитывали ходы противника? если ты понимаешь что вот эту бутылочку он сварит быстрее тебя?

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

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

BorisZ: C2H5OH тут большинство не сильно учитывало - некоторые на 1 ход только

mihei: и какая глубина поиска у вас получалась?

tutubalin: я всю цепочку не храню - только первый шаг

tutubalin: потом от родителя потомку передаётся как семейная реликвия

wlesavo: эээх юркова вытеснили из футболок вместе с эйлером

mihei: короче, в какой контест не плюнь, все делают поиск/перебор/га/сим *ворчит по эвристически*

BorisZ: не - последние несколько были вполне себе эвристические

BorisZ: легко определить по количеству питонов в леге)

Default avatar.png AVFr: по моему pb поддается :grinning:

BorisZ: там плотность у них около 20 места - не понятно еще кто кого

C2H5OH: да, до какой глубины у вас поиск получался? до какого уровня потомков?

wlesavo: в районе 15 вначале, дальше чуть больше ширина чуть меньше глубина

C2H5OH: а после первой бутылочки вы всё равно пытались все 6 сварить? или как-то отсекали часть бутылок?

BorisZ: это должно учитываться - стейт после варки уже не содержит этот brew

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

C2H5OH: я так понимаю, что каждый ход всё рассчитывается занов.

C2H5OH: если у тебя сварено 3 бутылочки, то тебе ж нет смысла варить ещё 5

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

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

NightLuna: а где обычно лежат пастмортемы ко всем контестам? я что-то найти не могу...

tomatoes: тема на форуме

Uljahn: https://www.codingame.com/forum/t/fall-challenge-2020-feedbacks-strategies/187846

Default avatar.png Zero0: не можете напомнить, давали ссылку на лог архива чата, хочу почитать, я то ли забыл добавит в закладки, то ли удалил, не найду и гуглом, что-то сразу не гуглится?

Uljahn: https://cg.spdns.eu/wiki/Special:PrefixIndex?prefix=Ru%2F&namespace=3000

Default avatar.png Zero0: Спасибо!

NightLuna: а если за прошлые хочешь?

NightLuna: блин, уменя все время одна фигня с чатом кг, спрошу что-то, уйду и забуду вообще ответ посмотреть =(

Uljahn: за прошлые в прошлых темах, по форуму поиск хорошо работает

Uljahn: фильтруешь по Feedback&Strategies

NightLuna: спасибо!

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

wlesavo: оооо бластер со смитсимаксом, по методичке меда видать делал :smiley:

Hamibar: Получается чатик по итогу остался без футболки(

Uljahn: aropan же получил

Uljahn: поздравляем

Hamibar: ага. Точно. Я уж хотел сделать вывод, что нужно кодить а не в чатике сидеть :grinning:

Uljahn: ну, он не особо прям сидел, но иногда заглядывал

wlesavo: да ладно, я не очень даже на легенду надеялся

Uljahn: да ты монстр, как мед в молодости)

wlesavo: ух ща мож даже на этом въеду в топ100

wlesavo: прикольно что у меня ниже 39% винрейта против всех кто выше оказался нет http://cgstats.magusgeek.com/app/fall-challenge-2020/wlesavo

Zhmyh: А следующий контест только в мае? :open_mouth:

Uljahn: возможно будет неофициальный в промежутке

Uljahn: эйлер подал уже заявку

NightLuna: оо

NightLuna: круто

NightLuna: а вы в этом чатике прям на сайте сидите?

Zhmyh: я да

Uljahn: с внешнего клиента пробовал - не очень понравилось

Uljahn: в браузере и дискорд, и чатик, и форум сразу

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

Automaton2000: потому что у меня есть

NightLuna: как много всего

Uljahn: кстати, в общаке народ интересуется, какие спеки в РАИКе, какие процы, есть ли мультитрединг

NightLuna: это лучше в чатике раика спрашивать или мб у них на сайте есть

Uljahn: Nerchio уже заинтересовался :smiley:

NightLuna: эйлер в дискорде писал про раик

NightLuna: интересно сколько иностранцев участвуют

Uljahn: прикольно, как у нас в телеге говорят, что CG слишком просто (терисы с перебором), вот РАИК - другое дело, а в общаке тут рекурс пишет про РАИК - переусложнение дизайна и каша из правил ))

Uljahn: *тетрисы

735487: по моему опыту в раике нужны немного другие виды поиска. например в футболе у меня была глубина что то типа не больше 16 тиков. а там надо было на 100+ вперед заглядывать

735487: правила да большие. много текста. но на самом деле не намного больше чем на CG

NightLuna: Unjahn да)))) тоже об этом подумала

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

Uljahn: я так и понял

tomatoes: и те, и другие в принципе правы :thinking:

NightLuna: дело вкуса

NightLuna: я не пробовала раик, посмотрим

Uljahn: завтра анонс на хабре должен выйти, вроде

NightLuna: вроде да

C2H5OH: так fall-challenge-2020 уже запустили на постоянно?

YurkovAS: да

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

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

BorisZ: но конечно каждый кулик свое болото хвалит

NightLuna: про болото верно подмечено, конечно XD

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

NightLuna: идеально

BorisZ: а еще там сабмит сутки идет пока скор устаканится

NightLuna: уууу

NightLuna: мне сегодня утром сабмиты понравились, 15 минут

NightLuna: ляпота

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

NightLuna: вот за это я люблю кг

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

NightLuna: посмотрим, что там такого раик предлагает, что я от кг отрекусь)))

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

NightLuna: куда же советов везде есть, изи перейти

NightLuna: а переделать?

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

BorisZ: *жалко

BorisZ: свои велосипеды всегда самые красивые

NightLuna: ахахах) ну лучше уж расстаться, чем страдать

BorisZ: я понимаю что бимсерч + разумный скор + какой-то прунинг это надежный путь

NightLuna: ну бфс тоже хватит

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

NightLuna: ну и может какая фича из советов

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

NightLuna: скорее всего да

NightLuna: я хочу его попробовать в 2048

BorisZ: у меня пока идея такая - типа мктс, поздно придумал уже

Xanrum: написал в гугл бимсерч и не нашел ничего, в гугле всего 5 резульатов, наверное особая, программисткая магия

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

NightLuna: beam search

Uljahn: https://en.wikipedia.org/wiki/Beam_search

Xanrum: спасибо

NightLuna: норм, дерзай, потом расскажешь

Xanrum: до полседнего тюнил перебор, и никакой леги : (

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

Uljahn: лучшего?

BorisZ: конечно лучшего - тот то это в самый раз

Uljahn: не слишком оптимистично?

Uljahn: это типа смитси получится, не?

BorisZ: это выглядит привлекательнее чем какая-то оценка с потолка как в бимсерче

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

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

BorisZ: для себя только

BorisZ: как я понял из постмортемов - народ на 1-2 хода смотрит на противника максимум

Uljahn: т.е. роллаут на 1-2 хода?

BorisZ: для то противника отдельно что-то закостылить, а ролауты нормальные - ходов на 10-12 думал

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

BorisZ: да, может испортить, но это справедливо одинаково для любого способа

BorisZ: поиска

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

BorisZ: брать лучшую его цепочку и рецепты которые он должен сварить соответственно повышать или понижать в оценке

BorisZ: если раньше него сдаешь то бонус, если позже то штраф

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

BorisZ: у него другой план )

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

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

BorisZ: ну про разгон и про мультикаст и в чате писали много раз

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

aropan: > поздравляем Спасибо.

BorisZ: aropan вобще отлично выступил, поздравляю)

aropan: Спасибо, но я без комьюнити не смог бы.

aropan: Две вещи, которые мне оч помогли, которые я узнал и чата в тг, это фиксированная стоимость ингредиентов и как надо правильно писать приоритетную очередь для глубины.

aropan: https://twitter.com/chokudai/status/713979313377255425 там немножко с багами, но суть понять можно.

BorisZ: фиксированная стоимость рецептов или спеллов?

aropan: Фиксированная стоимость ингредиентов, из которых можно по составу заказа понять его стоимость.

aropan: То есть, что они стоят 1, 2, 3, 4 соответственно, а все заказы это сумму входящих в него ингредиентов + небольшой бонус за количество различных ингредиентов.

BorisZ: а понял сумма стоимостей камней _ бонус 1 или 2 да 4-5 разных

BorisZ: а как это знание помогло - непонятно )

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

BorisZ: копить дорогих камней больше на дорогие рецепты?

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

aropan: Не надо дорогие.

aropan: То есть четыре по 1 такие же как один за 4 по сути.

aropan: То есть не важно как ты будешь комбинировать камни ты продаешь их за их стоимость.

aropan: Вообще можно про заказы забыть по сути - заказы только нужны, чтобы очистить рюкзак.

aropan: И набивать камнями дальше.

aropan: То есть смотри - когда ты продаешь камне и получаешь VP, то у тебя общая ценность состояния не изменится (если считать ее как стоимость камней в инвентаря + VP).

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

aropan: Нет-нет.

aropan: Приготовить за один ход 10 дешевых камне лучше, чем два дорогих.

aropan: Все четко выражается в одно число.

735487: aropan: а какие там баги у чокудая?

aropan: Если бы это было не так (сумма заказа не соответствовала ценности камней), то надо было бы как-то хитро комбинировать камни и смотреть как их между заказами распределить.

aropan: А так смотреть не надо - каждый камень когда будет продан в заказ будет продан по фиксированной цене.

aropan: Но к концу игры конечно нужно понимать, что стоимость камней меняется и становится 0, 1, 1, 1.

BorisZ: ну я про это и говорю что ты оцениваешь состояние по сумме камней с весами 1 2 3 4

aropan: Да. И так можно делать только потому, что заказы равен сумме камней в нем +-.

aropan: > aropan: а какие там баги у чокудая? @735487 BestState надо из последнего состояния брать. И конечно можно играться с ChokudaiWidth и MaxTurn.

BorisZ: да, звучит логично все, у меня всегда лишние камни оцениваются как 0.5 1 1 1

BorisZ: надо попробовать поменять просто

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

aropan: > да, звучит логично все, у меня всегда лишние камни оцениваются как 0.5 1 1 1 Всегда? Так должно быть только в конце. Вначале камне стоят 1 2 3 4

aropan: В конце игры. Иначе ты будешь стремится делать заказы как можно быстрее, но это не лучший вариант.

aropan: Лучший сделать камней с запасом, чтобы после покупки заказа ты мог быстрее перейти к следующему заказу.

BorisZ: да, я понял всю логику

BorisZ: почему это не в мою голову приходит - так все просто )

735487: aropan: а как тогда определять когда заказ пора делать?

735487: я у себя в оценке за заказ награждал. походу надо наоборот было штрафовать )

aropan: Нужно делать длинные цепочки. В длинных цепочках ты не сможешь увеличить (стоимость камней + VP) без того, чтобы делать заказ.

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

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

aropan: Без симы мне кажется совсем никак.

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

BorisZ: не взлетело сразу

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

YurkovAS: как говорит на друг: ГА меньше думать заставляет

BorisZ: не поспоришь)

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

Hoggins: Ух, самое время пойти и применить полученные навыки в каком то еще мультике, или выспаться...

MadKnight: Hoggins так что, какой мультик выбрал?)