Size: a a a

AI Cups Official

2020 October 17

МБ

Михаил Боровой... in AI Cups Official
Alexander N
сам нарисовал в редакторе блок-схем. Пока только выбираю алгоритмы. Что-то типа MCTS хочу наваять
Сам с MCTS разбираюсь. Как evalution учитывать в алгоритме не до конца понятно. Стандартный алгоритм заточен под значения 0/1 (проиграл/выиграл)
источник

МБ

Михаил Боровой... in AI Cups Official
Alexander N
ну вот анонс будет, узнаю для какой игры. В MCTS ведь не надо до конца дерева проходить, чтобы получить win/lose? Там эвристики используются для оценки промежуточных состояний? В принципе я из статьей мог бы узнать, но время никак не выкрою чтобы сесть и почитать эти статьи.
В AlphaGo используются оценки узлов для изменения вероятности выбора узла в фазе симуляции с помощью playout policy. Или у вас досрочное прекращение симуляции и для этого используется оценка результата симуляции?
источник

AN

Alexander N in AI Cups Official
Михаил Боровой
В AlphaGo используются оценки узлов для изменения вероятности выбора узла в фазе симуляции с помощью playout policy. Или у вас досрочное прекращение симуляции и для этого используется оценка результата симуляции?
У меня пока ничего нет. Я просто выбираю алгоритм и набор инструментов, который буду использовать в раике. Там скорее всего будет слишком много узлов в глубину, так-что да, понадобится досрочное прекращение симуляции и какая-то оценка.
источник

МБ

Михаил Боровой... in AI Cups Official
Alexander N
У меня пока ничего нет. Я просто выбираю алгоритм и набор инструментов, который буду использовать в раике. Там скорее всего будет слишком много узлов в глубину, так-что да, понадобится досрочное прекращение симуляции и какая-то оценка.
С оценкой сразу понятно как делать в MiniMax. Наверх пробрасывается оценка с самого низа, промежуточные не вычисляются.
источник

T

Trixter in AI Cups Official
Супер-краткий гайд (всё описанное ниже сугубо моё виденье) по симуляционным деревьям и игровым ботам для них:
1)  Определяется базовый класс бота с главным методом getAnswer()
2) От него наследуется в зависимости от сложности игры симуляционный бот и боты соперники (если соперники не являются умными, а допустим какими-то мобами, то можно не делать такое наследование, а просто, в зависимости от сложности их алгоритмов их описать, прибегнув к реверсу или исследованию поведения этих игровых объектов). Это всё нужно для того, чтобы упростить симуляцию, потому что полная симуляцию и за себя и за соперников обычно дорогая, но если мощности позволяют - то можно симулировать и соперников
3) Далее, пишется  сама симуляция (пока что полный каркас), если игра пошаговая, то всё просто - нам нужно рассмотреть просто все основные состояния игры и их записать, чем буде более полная картина, тем меньше будет тупняков у бота и зависаний - далее, если мы в теории полное дерево имеем, то мы в терминальных узлах однозначно понимаем в какой ситуации выиграли, по этому по минимаксу можем протягивать лучшие значение. Если игра не пошаговая, то у нас будет приближённая симуляция с разными стейтами через какие-то моменты времени, в узлы мы опять же кидаем копии состояния игры (под этим подразумеваю нужные нам для принятия решений данные).
4) Однако в большинстве игр мы не можем полную симуляцию сделать, по этому мы начинаем делать обрезания дерева, альфа-бета отсечение, а также втыкание каких-то свои эвристик в терминальные узлы дерева, по которым мы оцениваем уже состояние игры
5) Какие-то ситуации мы можем считать эквивалентными и их не симулировать, я это назову кластеризациями, хотя это не обязательно именно они. Например, если у нас несколько юнитов, а это пошаговая игра и мы хотим просимулировать их действия, нам не обязательно за каждого эти действия просимулировать, мы можем симулировать сразу конечные состояния - это тоже укарачивает дерево
6) Создаём несколько разных эвристик и сравниваем их по качеству
источник

k

katta in AI Cups Official
>суперкраткий гайд
>создаем класс с методом getAnswer()
мне казалось, в суперкратком гайде не должно быть подробностей реализации
источник

T

Trixter in AI Cups Official
не краткий гайд занял бы книгу
источник

T

Trixter in AI Cups Official
но это деталь нужна для пункта 2
источник

T

Trixter in AI Cups Official
Мы отделяем симуляционного бота, от ботов других, чтобы их не симулировать
источник

T

Trixter in AI Cups Official
по этому я выделил отдельный пункт
источник

AN

Alexander N in AI Cups Official
Trixter
Супер-краткий гайд (всё описанное ниже сугубо моё виденье) по симуляционным деревьям и игровым ботам для них:
1)  Определяется базовый класс бота с главным методом getAnswer()
2) От него наследуется в зависимости от сложности игры симуляционный бот и боты соперники (если соперники не являются умными, а допустим какими-то мобами, то можно не делать такое наследование, а просто, в зависимости от сложности их алгоритмов их описать, прибегнув к реверсу или исследованию поведения этих игровых объектов). Это всё нужно для того, чтобы упростить симуляцию, потому что полная симуляцию и за себя и за соперников обычно дорогая, но если мощности позволяют - то можно симулировать и соперников
3) Далее, пишется  сама симуляция (пока что полный каркас), если игра пошаговая, то всё просто - нам нужно рассмотреть просто все основные состояния игры и их записать, чем буде более полная картина, тем меньше будет тупняков у бота и зависаний - далее, если мы в теории полное дерево имеем, то мы в терминальных узлах однозначно понимаем в какой ситуации выиграли, по этому по минимаксу можем протягивать лучшие значение. Если игра не пошаговая, то у нас будет приближённая симуляция с разными стейтами через какие-то моменты времени, в узлы мы опять же кидаем копии состояния игры (под этим подразумеваю нужные нам для принятия решений данные).
4) Однако в большинстве игр мы не можем полную симуляцию сделать, по этому мы начинаем делать обрезания дерева, альфа-бета отсечение, а также втыкание каких-то свои эвристик в терминальные узлы дерева, по которым мы оцениваем уже состояние игры
5) Какие-то ситуации мы можем считать эквивалентными и их не симулировать, я это назову кластеризациями, хотя это не обязательно именно они. Например, если у нас несколько юнитов, а это пошаговая игра и мы хотим просимулировать их действия, нам не обязательно за каждого эти действия просимулировать, мы можем симулировать сразу конечные состояния - это тоже укарачивает дерево
6) Создаём несколько разных эвристик и сравниваем их по качеству
отличный гайд для приведения мыслей в порядок. Спасибо.
источник

k

katta in AI Cups Official
Чтобы объяснить минимакс не нужны классы и наследование, имхо
источник

T

Trixter in AI Cups Official
я не ставил целью объяснять минимакс
источник

AN

Alexander N in AI Cups Official
katta
Чтобы объяснить минимакс не нужны классы и наследование, имхо
ну да, в начале перебор немного с реализацией, но дальше то норм
источник

МБ

Михаил Боровой... in AI Cups Official
katta
Кто-нибудь знает похожие статьи, но про минимаксы-негамаксы?
Если книги тоже интересуют, то в Artificial Intelligence: A Modern Approach, Russell & Norvig хороша, там есть minimax тоже.
источник

k

katta in AI Cups Official
Михаил Боровой
Если книги тоже интересуют, то в Artificial Intelligence: A Modern Approach, Russell & Norvig хороша, там есть minimax тоже.
Мне именно про различные расширения и улучшения. Там такое есть?
Нашёл занятную статью кнута, но там больше про получение итеративного варианта альфа-беты и анализ, а не про дополнения.
https://pdfs.semanticscholar.org/dce2/6118156e5bc287bca2465a62e75af39c7e85.pdf
источник

T

Trixter in AI Cups Official
Михаил Боровой
Если книги тоже интересуют, то в Artificial Intelligence: A Modern Approach, Russell & Norvig хороша, там есть minimax тоже.
Вроде как в следующем году 4е издание выходит на русском
источник

A

AL in AI Cups Official
Ещё с игрой не определились, а уже решение выбирают. Минимакс для последовательных игр, к слову
источник

D

Dmitriy in AI Cups Official
наплевать 👀
источник

A

AL in AI Cups Official
К тому же в раике обычно мало времени на ход, чтобы перебирать глубже чем на один ход
источник