Chat:Ru/2021-04-09
ConstantBolzmann: кстати от себя скажу
ConstantBolzmann: я щас за ночь прошуршал тонну информации
ConstantBolzmann: по сути ту которую уже знаю
ConstantBolzmann: но со стороны явы
ConstantBolzmann: и я понял почему надо платить!
ConstantBolzmann: и безруких которые лезут учить я не знаю
ConstantBolzmann: банить по интернету надо
ConstantBolzmann: и я понял цену этим знаниям
ConstantBolzmann: я вот смотрю туториал
ConstantBolzmann: человек я понимаю по незнанию г----код показывает
ConstantBolzmann: но его просто опасно запускать!
ConstantBolzmann: это хорошо я знаю потомучто я на си пол пайплайна прошел
ConstantBolzmann: а зеленый человек на веру примет
ConstantBolzmann: и шуранет описание кейбиндов когда они уже в глфв есть
ConstantBolzmann: это ппц
ConstantBolzmann: и такое только на яве
ConstantBolzmann: я заметил
ConstantBolzmann: на крестах не было ни одного обзорщика такого
ConstantBolzmann: боль крестов выжигает г-код
ConstantBolzmann: и мне придется теперь чтоб быть ближе к тому кого я глянул пол пайпа писать с крестов на яву или с того чела весь енджин на кресты чтобы врубаться
ConstantBolzmann: только так
ConstantBolzmann: вот и всё я нашел решение
mabu: Ничего не понял, но звучит интересно.
Uljahn: Automaton2000: а ты понял?
Automaton2000: мне кажется это не так просто
ConstantBolzmann: да тут нечего понимать есть библиотека
ConstantBolzmann: библиотека чтото реализовала по сути большую часть того чего она покрыла
ConstantBolzmann: но желание написать велосипед
ConstantBolzmann: что уже написано
ConstantBolzmann: вот прям во фрейморке в проекте итак будет тысячи строк
ConstantBolzmann: нет надо велик написать да еще и кривой
miklla: да, определённо моя проблема исключительно в функции оценки в клоббере, бывает куча позиций, где моих фишек намного больше, чем вражеский, связи между ними выглядят соблазнительно, но они всё равно нулевые и им желательно иметь оценку 0
miklla: и их как раз роллаут хорошо оценивает
miklla: блин, а сложно тут оценку при думать
miklla: типичный пример:
miklla: представьте одномерную позицию в клоббере, сначала идут n>=2 моих фишек, затем сразу идут m>=2 фишек противника
miklla: с точки зрения любой обычной функции оценки значение этой позиции должно быть примерно пропорционально n-m
miklla: но на самом деле это нулевая позиция для любых n,m >=2
miklla: а роллаут это отлично видит
miklla: из-за этого альфа-бета думает, что попадёт в крутую позицию, а на самом деле нет
Uljahn: значение позиции? но там же очки не начисляют за съеденные фишки
Uljahn: суть игры - загонять противника в угол, кто последний - тот и Automaton2000
Automaton2000: тут как раз СА зайдёт
miklla: нулевой позицией по теории называется позиция, в которой какого бы игрока не был ход, то он проиграет
miklla: и есть теорема, что если подыгра образует нулевую позицию, то она может быть удалена без изменения победителя и каких-либо тактических моментов
miklla: например 2 доминошки - нулевая позиция
miklla: или вышеописанная при m,n >= 2
miklla: но если бы было m=1
miklla: то позиция была бы хороша для первого игрока, и чем больше n, тем она строго лучше
miklla: что адекватно выражается функцией оценки
Uljahn: а, в зависимости от очереди хода?
miklla: да
miklla: если ты про нулёвость
miklla: а про позицию с m=1, она была бы хорошо в любом случае
Uljahn: тут, наверное, эффект горизонта (как у всех минимаксов), важен же факт победы, а не перевес по очкам, т.е. оценка может предпочесть позицию, которая в перспективе не ведёт к выигрышу
Uljahn: или ты про обрезку вариантов? если на доске независимы группы типа?
Uljahn: *независимые
magaiti: разве 2 фишки - нулевая позиция?
miklla: доминошка - нет, 2 доминошки - да
magaiti: а ок
miklla: любыптная там арифметика, да? :)
magaiti: не вникал
Uljahn: nim 2D?
magaiti: но теорему можно использовать для анализа позиции, и не трогать нулевые позиции
magaiti: в мктс
miklla: Uljahn ягадал, что значение одной доминошки = ним1, но существуют позиции не нулевые, не положительные, не отрицательные и не какой-либо ним :)
magaiti: просто убрать фишки нулевых позиций
miklla: для этого тебе придётся их обнаруживать
magaiti: только для одной позиции
magaiti: это не скажется на кол-ве роллаутов
miklla: а, ты только в корне собрался?
magaiti: да
miklla: ну это программа минимум
miklla: конечно усилит твою программу
miklla: но не на полную катушку
magaiti: у меня пока совсем минимум, чисто мктс в 300 строк
miklla: ну для среднего эффекта можешь их детектить в дереве или в части дерева до какой-то глубины
magaiti: можно попробовать, но как-нибудь потом. я пока Number Shifting грижу
miklla: я бы даже сказал, что около корня надо выделять больше ресурсов на детект, чем около листьев
miklla: и около корня выходить за рамки кеша
miklla: получается в идеальном мктс надо около корня на компонентах связности запускать альфа бету по разу от каждого игрока :)
miklla: (на компонентах не очень большого размера)
miklla: проблема функции оценки естественно не только в нулевых позициях, но и в позициях, из которых враг может попасть в нулевую за один ход
miklla: у них, конечно, функция оценки не должна выдавать большое положительное число, но выдаёт иногда
vrabosh: sd = distance / (u*10/36*duration) sd = round(sd) if sd%1 > 0.99 else int(sd)
Как прально такое в питоне делать7
Uljahn: это ANEO?
vrabosh: https://www.codingame.com/training/medium/aneo - этот пазл решал, и там према была, что выдавало число n.99992213 и оно должно было быть пральное, но я сначало не замечал
Uljahn: правильно в числитель вынести все сомножители, потом уже делить
Uljahn: думаю, порядок операций имеет значние из-за ошибки округления
Uljahn: x / (10/36) = x * (36/10)
vrabosh: sd = int((distance * 36) / (duration * u * 10)) - вотак сделал и заработало
Uljahn: угу
vrabosh: Uljahn как ты вспомнил, что это aneo, дыже наверно оч давно делал
Uljahn: тоже долго мучался с этим)
Uljahn: потом офигел, как просто пофиксить было
Uljahn: могу своё решение показать, надо?
vrabosh: давай
ConstantBolzmann: Uljahn
ConstantBolzmann: памаги
magaiti: в Number Shifting распараллелил поиск решений на 4 треда
magaiti: сейчас 96-й ищу, скоро 100
YurkovAS: magaiti a-star используешь?
magaiti: да
magaiti: параметризованная эвристика, перебираю параметры
magaiti: пока прокатывает
YurkovAS: с мктс-ом до 95 дошел и все. там в основном на рандомных доигрываниях решалось, по 20-30 ходов (вроде).
magaiti: я пока 95 тоже не прошел
magaiti: все значения парметра перебрал с таймаутом 10 секунд, придется увеличивать таймаут и перзапскать
magaiti: в крайнем случае придется колдовать с эвристикой
wlesavo: у меня там SA на питоне, с чем то типа полного перебора в эндгейме
wlesavo: первый пазл был за который более менее серьезно взялся
ConstantBolzmann: ребят подскажите
ConstantBolzmann: в интели джи создал проект прикрутил к нему лвгл
ConstantBolzmann: тестанул свою прогу топчик
ConstantBolzmann: стал из мейна делать ооп создавая новые классы
ConstantBolzmann: и кароче не видит мейн мои классы
ConstantBolzmann: импорт прописал
ConstantBolzmann: для теста пакет создал
ConstantBolzmann: нифига
ConstantBolzmann: https://imgur.com/a/wevJ7T1
ConstantBolzmann: помогите разобраться
735487: а ничего что функция main это точка входа приложения и она не должна быть внутри класса?
ConstantBolzmann: спасибо разобрался
ConstantBolzmann: мейн это точка входа
ConstantBolzmann: обьект
ConstantBolzmann: в яве это класс
ConstantBolzmann: у класса мейн
ConstantBolzmann: есть метод мейн точка входа!
ConstantBolzmann: который принимает параметры стринг
ConstantBolzmann: это ранабл класс
ConstantBolzmann: запускать можно как от класса
ConstantBolzmann: так и от конструктор или метода
ConstantBolzmann: просто тогда у мейна будет окружение
ConstantBolzmann: если написать конструктор
735487: стал из мейна делать ооп, вот эта фраза меня прямо смутила
ConstantBolzmann: ааа
ConstantBolzmann: просто я написал в мейне сначало
ConstantBolzmann: потом стал бить логику кода на части
ConstantBolzmann: вернее чтото в логику чтото в обработку
ConstantBolzmann: инициализация и прочее
ConstantBolzmann: я хочу работать программистом)
MadKnight: ConstantBolzmann го с нами в stellaris
Uljahn: в стелларис больно долго залипать
ConstantBolzmann: я качаю гладиатора
ConstantBolzmann: https://www.youtube.com/watch?v=ycF37ovhlo0
ConstantBolzmann: https://youtu.be/k6q3vg53Xrc