Chat:Ru/2020-09-15

From CG community
Jump to navigation Jump to search

ConstantBolzmann: иду на варфронт, давай оплачивай подписку гогого за орду!)

gsomix: Доброе утро.

MadKnight: hihi gsomix

MadKnight: чё пилишь?

gsomix: Пощади, я только на работу пришел. :)

gsomix: MadKnight не дает расслабиться.

MadKnight: да ты уже 12 минут как на работе

MadKnight: вполне можно было отдышаться и начать чёнить пилить

MelnikovIgor: gsomix о, ты на фшарпике пишешь, норм)

Default avatar.png Chebyrek: Парни как юзнуть буст?

Uljahn: в гоночках?

Uljahn: пиши строку BOOST в вывод

Uljahn: вместо ускорения

Uljahn: или ты про с++ библиотеку спрашиваешь? :thinking:

gsomix: MelnikovIgor, да, но я на нем пишу в стиле "as a Better Python". :)

tutubalin: а он же пошустрее питона?

MelnikovIgor: Ну, зависит, .net надо смотреть

MelnikovIgor: Я в крестиках на шарпике на 25 месте

MelnikovIgor: В каких то контестах питона больше в топе

MelnikovIgor: В .net можно неуправляемым кодом и указателями

пользовтаься, почти как в плюсах, в питоне так можно?

MelnikovIgor: Я просто не знаю

Uljahn: неуправляемый - это без GC?

MelnikovIgor: Да

MadKnight: напрямую указатели как в с++ крч

MelnikovIgor: И да и нет, можно работать с указателями, но так чтобы GC знал об аллокации (фиксировал обьект в памяти), а можно работать с указателями так чтобы гц не знал ничего об аллокации

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

Uljahn: но тогда и утечки возможны?

MadKnight: Uljahn не, они просто берут manageable объект и берут на него указатель

depthzer0: добавил в гоночках упреждение - 18 й... ну теперь надо интеллект как-то подключать...

depthzer0: наверное ))

MadKnight: depthzer0 и какие идеи?)

depthzer0: ну с ГА наверное начну... но тут уже сима нужна, если я всё правильно про ГА понимаю

MadKnight: лучше с попроще начинай

depthzer0: например?

MadKnight: ну смотри

MadKnight: как ты понимаешь ГА ?

depthzer0: как эвристический алгоритм поиска ))

MadKnight: ну давай его разберём

depthzer0: мутация, скрещивание, селекция

MadKnight: он генерит поколение случайных солюшенов, оценивает их

depthzer0: и снова генерит, и снова...

MelnikovIgor: Uljahn утечки возможны, все операции с указателями выполняются только при включении флага unsafe

depthzer0: пока не получится из г конфетка ))

735487: а я в search race на 4 очка всего отстаю от 8 места и никак не нарандомлю ))

depthzer0: просто не знаю, что может быть попроще ГА.... пока не очень много алгоритмов знаю...

Uljahn: depthzer0: проще только просто рандомить особей и оценивать, без скрещивания

735487: SA проще

Uljahn: ага, в SA величина мутаций управляемая

MelnikovIgor: SA?

Uljahn: simulated annealing

Uljahn: метод имитации отжига

MelnikovIgor: Это какой то конкретный алгоритм? Это же общее название?

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

depthzer0: https://habr.com/ru/post/112189/

MelnikovIgor: Так, эта штука подойдет же для генерации весов нейронки?)

MelnikovIgor: Или вы на прямую пути в гоночках считаете с помощью GA/SA

MadKnight: depthzer0, короче, GA генерит случайные, потом пытается их улучшать

MelnikovIgor: MadKnight я так понял он улучшает не все параметры за ша, а по одному и на дельту, которая зависит от температуры?

magaiti: на случайную величину, пропорциональную дельте

MadKnight: MelnikovIgor но это всё - микроулучшения

MadKnight: достаточно просто нагенерить 10 000 случайных солюшенов и заюзать лучшее

ConstantBolzmann: а что вы в гоночках генерируете?

ConstantBolzmann: можя ща вкурю в этот алгоритм

depthzer0: я генерирую координаты точки, куда ехать

ConstantBolzmann: генерация происходит после первого круга или что означает генерация в гоночках

ConstantBolzmann: ты после первого круга генерируешь?

depthzer0: не, сразу начинаю

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

Uljahn: лучше наверное не точки генерить, а наборы углов поворота и ускорений

depthzer0: ConstantBolzmann не, я генерю пока чисто тригонометрически - одна точка получается за раз

depthzer0: Uljahn я имею в виду конечный результат, т.к. интерфейс понимает только координаты и ускорение

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

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

735487: depthzer0: лучше генерировать угол от -18 до 18 и скорость

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

735487: причем генерить так чтобы 200 скорость и углы +-18 были чаще

depthzer0: amurushkin учту, спасибо

ConstantBolzmann: ммм получается решение в такой задаче как маска эталонная

ConstantBolzmann: спек

735487: ConstantBolzmann: генерится последовательность ходов. оценивается и лучшая выбирается

ConstantBolzmann: ага

ConstantBolzmann: это получается механика спеков похожа на генерацию по опр параметрам

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

magaiti: крокодил Гена играл в крестики-нолики сам с собой. Проиграл три раза и очень расстроился.

Uljahn: стакан у Гены был наполовину пуст

depthzer0: Кстати, раз уж зашла речь, а как контролировать тайм лимит?

magaiti: я с лимитом намучался, хз как

magaiti: опрашивать время

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

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

depthzer0: или есть более хитрые способы?

magaiti: типа того

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

magaiti: выбери лучший

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

Uljahn: *отсчёт

Uljahn: на питоне я юзаю timeit.default_timer, более-менее точно получается

magaiti: ну вот я сделал 70 мсек отсечку, при заявленном таймауте 75, и все равно где-то раз в 500-1000 боев выскакивает таймаут

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

MadKnight: > где-то раз в 500-1000 боев выскакивает таймаут ну это уже слишком мало

magaiti: я точно не помню, но вроде частота таймаутов еще от нагрузки сервера зависела

MadKnight: тогда это можно объяснить тем, что ОС отложила твой процесс проги бота в очередь и вернулась только через 5мс

magaiti: ну и смысл тогда вообще

MadKnight: типа твоя прога висела на паузе в очереди аж 5мс

magaiti: у меня 2 года висела отсечка 50 мс, между прочим

magaiti: и ничего

magaiti: чет не вижу пользы от еще 20 мс

MadKnight: зависит от алгоритма ващет

magaiti: видимо сходится раньше

magaiti: выиграл у рисуса. потому что он словил 2 таймаута, лол

magaiti: но чувствую в топ 20 мне с этим алгоритмом уже не ворваться

magaiti: http://cs5.pikabu.ru/post_img/big/2015/12/04/5/1449210847155432089.jpg

735487: я когда то тоже так думал. а потом починил баг в симе. улучшил оценочнку. ускорил немного. и ворвался :)

magaiti: у меня уже были такие моменты

735487: вот в search race бы еще 4 очка выдрать

magaiti: улучшить оценочку - это сложно

magaiti: что за серч рейс

735487: https://www.codingame.com/multiplayer/optimization/search-race

magaiti: а почему она так популярна?

magaiti: это 1 под без врагов?

MelnikovIgor: Простой симулятор для тренировки нейронок

MelnikovIgor: И подготовке к CSB)

magaiti: а

735487: это же оптимизация. кто больше очков наберет

magaiti: ну без коллизий не тру

MelnikovIgor: Там физика как в CSB

MelnikovIgor: кроме коллизиц

magaiti: ясненько-ясненько

magaiti: нейронку было бы забавно заиметь

735487: там и без нейронок есть чем заняться ))

magaiti: ну как - взять PID controller и коэффициенты натренировать нейронкой

magaiti: для начала

magaiti: чет csb перестал бои считать

magaiti: забанил меня штоль

gsomix: Что скажете про Code of Ice and Fire? Интересная игра?

Uljahn: правила не очень сложные, зато и глубины особой нету

gsomix: Спасибо. Я выделил немного свободного времени сегодня. Нужно инвестировать в мульти. :)

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

tutubalin: да не, там разные задачи есть

tutubalin: 1. отрезание юнитов противника

tutubalin: 2. расстановка башен

tutubalin: 3. идеальный в плане экономики захват начальной территории

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

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

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

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

BorisZ: вроде у эйлера в постмортеме а может не у него

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

BorisZ: слишком много ветвлений для симы

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

gsomix: BorisZ, порядок жестко прописан, или есть оценка действий?

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

BorisZ: но это у меня так, может у топов и похитрее что-то

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

BorisZ: шахты почти никто не юзал, башня почти всегда выгоднее чем 2 ил 3 лвл солдатик

gsomix: штош

gsomix: Пока портировал Starter kit для поварят с Ocaml на F# — свободное время и закончилось. :)

gsomix: Но зато будет в чего начать в следующий раз.

gsomix: Доброй ночи.

gsomix: Доброе утро? :thinking: