Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ИИ в шашках 
:(
    Опции темы
segmentation_fault
Дата 18.11.2005, 02:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 14.2.2005
Где: в интернете

Репутация: нет
Всего: 1



Доброго времени суток. Появилось свободное время, решил написать игру в шашки. Так вот сейчас думаю над тем, как компьютер будет искать лучший ход. По идее, если комп думает на n ходов вперёд, то последовательность его действий должна быть приблизительно такая:
для всех возможных дозволенных ходов:
1. записать ход
2. пересмотреть все возможные ответы соперника и найти из них самый лучший (с точки зрения соперника) причем думать за соперника надо с наверное на n-1 хода вперёд.
3. пересмотреть все свои возможные ответы на такой ход думая на n-2 хода вперёд.
и так далее, пока глубина просчета не достигнет 0. Вроде бы получается рекурсивный алгоритм, но программа при любом не совсем маленьком n будет тормозить наверное ужасно. Не подскажете ли что нибудь получше? Любые идеи прочитаю с интересом.
PM MAIL   Вверх
Exception
Дата 19.11.2005, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 1
Всего: 186



А ты напиши и проверь скорость.. а то раздумывать над алгоритмами долго можно
PM   Вверх
mr.DUDA
Дата 20.11.2005, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 7
Всего: 232



Можно на все возможные варианты расстановки шашек создать по нейронной сети: 2 слоя, у первого слоя 1 вход и N выходов, у второго N входов и M выходов, где входам N соответствует позиция своей шашки, которая ходит; выходам M соответствует позиция, куда эта шашка ходит; обучающим значением служит эффективность хода, т.е. 1 или 0 в зависимости от того, выиграна вся партия или нет, разделённая на номер хода (чем ближе к началу, тем больше вес). Работать сеть будет так: на единственный вход подаём единицу и анализируем, на каком из M выходов максимальное значение - это и будет позиция, "куда ходим".

Обучить все эти нейронные сети, перебрав random-ом все возможные ходы. В конце каждой партии возвращать ошибку по всем участвовавшим НС, зная результат (1 или 0). Это займёт большое время. Результатом будет база данных весовых коэффициентов нейронных сетей, которую можно дополнительно пообучать вручную, усадив какого-нибудь любителя шашек smile. Всё что останется делать программе в real-time - это для текущей расстановки шашек найти соотв. конфигурацию нейронной сети из базы данных (т.е. "поднять" весовые к-ты ходов) и получить результат у сети - куда ходить компу.

З.Ы. сеть простая, обратного распространения ошибки.


--------------------
user posted image
PM MAIL WWW   Вверх
segmentation_fault
Дата 20.11.2005, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 14.2.2005
Где: в интернете

Репутация: нет
Всего: 1



mr.DUDA, спасибо, это интересный вариант. Я слышал, что нейронные сети как раз часто используются для такого рода проблем. К сожалению, знаком с ними только понаслышке, но заодно будет возможность изучить их получше. Только как то влом обучать потом эту сеть - шашечным энтузиастом я не являюсь (больше шахматы люблю) ну может можно будет без этого обойтись.
PM MAIL   Вверх
mr.DUDA
Дата 20.11.2005, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 7
Всего: 232



Цитата(segmentation_fault @ 20.11.2005, 13:13)
Только как то влом обучать потом эту сеть - шашечным энтузиастом я не являюсь (больше шахматы люблю) ну может можно будет без этого обойтись.

Бывают сети с самообучением, но имхо если "посадить друг напротив друга" два компа -- вначале оба будут тупить по страшному, а через пару сотен игр выработают каждый свою стратегию и будут постоянно её применять с небольшими вариациями, так что придётся либо менять одного из противников, либо вносить "элемент неожиданности" - в произвольный момент времени в игру вмешивается третий игрок: функция random(), и делает пару-тройку ходов за оба компа... В любом случае, можно ведь изменять тактику обучения НС на ходу, глядя на результат. Ещё было бы неплохо прогнать через НС все известные игры, сыгранные гроссмейстерами когда-либо, вначале за белых, потом за чёрных.


--------------------
user posted image
PM MAIL WWW   Вверх
Tutti
Дата 7.2.2008, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 7.2.2008

Репутация: нет
Всего: нет



Пожалуйста, подскажите где можно скачать скрипты онлайн шахмат или шашек 
PM MAIL ICQ   Вверх
VictorTsaregorodtsev
Дата 11.2.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 28.7.2006

Репутация: нет
Всего: 8



Ну, есть способ поначалу долго парить комп, но потом AI быстро будет работать. См. подход Fogel и Chellapilla - они лет 15 назад запускали генетический алгоритм над популяцией нейросеток, стравливая сетки друг с другом и потом по результатам игр назначая значения фитнес-функции в зависимости от результативности. В итоге отбираются-эволюционируют сетки вплоть до достижения уровня чуть ли не международного мастера. Подробнее см. статью на английском - к фамилиям добавь checkers (шашки по-английски) и запусти в гугле поиск. Pdf-ки статьи валялись в инете свободно.
Т.е. если есть в наличии алгоритмы по НС и ГА, то такой подход может потребовать минимум трудозатрат - не надо программировать никаких переборов ходов и оценок позиции, а комп можно запустить на выходные поработать - он и найдет лучшую сетку. Не хватит у сетки умения - еще на пару дней можно оставить комп считать ;)
В итоге можно хоть на мобильник саму игру и код обученной сетки перенести - никакого перебора там не будет, всё считаться будет за доли секунды
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.