сыграно 697 260 партий
онлайн 5 игроков



Форум /

Мой ИИ лохан, слабо играет



Proger
Proger офлайн
Участник
Позавчера написал:

Мой ИИ зевает детские маты, не знаю как написать Nega Max
Написал первичную логику, алгоритм видит угрозы, уходит с угроз, видит куда атаковать, атакует дорогую фигуру, дешевую фигуру под защитой не трогает, уходит из под шахов

Не могу даже мысленно представить, как начать писать алгоритм Nega Max

dddddddddddd555.jpg

gggtttyyyuuu888.jpg

URL | Цитировать


Proger
Proger офлайн
Участник
Позавчера написал:

Сгенерировать все возможные ходы, и расставить оценки?
Например при атаке на ладью оценка 40, при атаке на ферзя оценка 200
Да?
Потом выбрать лучший ход

URL | Цитировать


Admin офлайн 1267
Администратор сайта
Вчера написал:

Прочитал описание NegaMax'а и тоже мало что понял. Чем он отличается от Minimax'а?

Вроде, это какой-то упрощённый алгоритм. Если при этом ещё ветвление дерева меньше 4, тогда то, что ИИ играет плохо, кажется объяснимым.

URL | Цитировать


Proger
Proger офлайн
Участник
Вчера написал:

Я читал уроки на initit.ru, там в алгоритме древо ходов с оценками

Вот я собираюсь сделать шах компьютеру - могу написать что компьютер этот шах увидит, буду писать "грозит шах от ферзя", и что дальше? Приказывать ходить королем? Ломаю голову

Когда будет ясный мысленный план, тогда займусь написанием

URL | Цитировать


Admin офлайн 1267
Администратор сайта
Вчера написал:

Уже не помню толком, как этот алгоритм устроен.

Кажется, там за взятие каждой фигуры начисляются баллы каждому ходу, ответу и так далее - по дереву. Только движение идёт от края дерева - вниз. Выбираются самые эффективные ходы на последнем уровне глубины расчёта, запоминаются его оценки, спускаются эти оценки на уровень ниже, в основание ветки, снова повторяется то же самое и так далее - до самого основания дерева. Здесь выбирается ход с самым высоким баллом и программа воспроизводит его на доске. Но это minimax, кажется.

Ещё не помешает добавить определение матов. Типа, если ходы где-то кончились, значит игрок проиграл и этой ветке присваивается самый высокий балл на предыдущем уровне. Тут ещё проблема небольшая есть. Если, допустим, анализ не более 3-х ходов, то мат можно предвидеть максимум на два хода вперёд: ход-ответ-ответ невозможен. В то время как обычный расчёт учитывает преимущества взятия фигур на уровень выше. Именно это позволяет так просто ставить маты программе с очень ограниченной видимостью или обманывать её, уступая фигуры на максимальном уровне видимости программы.

Также можно ещё добавить разную небольшую эвристику. Какие-то ходы ведут к позиционным недостаткам, вроде невозможности сделать рокировку - им можно добавить небольшую отрицательную оценку.

Кажется, примерно так может быть устроен простой шахматный движок.

URL | Цитировать


Proger
Proger офлайн
Участник
Вчера написал:

Да, я знаю как устроено дерево с оценками
Не могу это написать, это очень сложно
Даже 1 ветку на 3 хода не могу написать

Седня настраивал код , теперь ИИ предвидит шах игрока, запустил встречный поток

Допустим шах на клетку 180 записываю в переменную $ugroza=180;

И потом подставляю ход компьютера "ход=180", но это пол дела
Если клетка 180 пустая, надо ходить королем и спасаться от шаха

Кажется это глупая методика, так не пишут, получилась ручная настройка

Спастись бы от детского мата и будет отлично

URL | Цитировать


Admin офлайн 1267
Администратор сайта
Сегодня написал:

Честно говоря, мало что понял из вопроса. Тут проще самому что-то сделать, особенно когда пишешь свой движок, чем объяснить другим и получить дельный совет. Опять же, если нужно чтобы работало - надо брать готовое, что уже написано и отлажено. Если же нужен именно свой движок, ради того, чтобы сделать его самому, то помощь здесь некстати. Не будет полной радости от успеха, если в итоге что-то получится.

URL | Цитировать