Подтвердить что ты не робот

Насколько сложно реализовать шахматный движок?

Мне интересно, как трудно было бы реализовать шахматный движок. Существуют ли уже версии с открытым исходным кодом?

Кажется, вам понадобится функция подсчета очков для данного созвездия доски и очень быстрый способ изучения нескольких вероятных будущих созвездий. Изучение всех возможных будущих движений, конечно, невозможно, поэтому можно с жадностью следовать самым многообещающим ходам или использовать приближенные методы, такие как имитированный отжиг, чтобы следовать вероятным ходам вероятностно.

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

Было бы забавным проектом, чтобы разные команды работали над шахматами, а затем позволяли им играть друг против друга...

4b9b3361

Ответ 1

В прошлом году я провел свой собственный шахматный движок на С#. Это было не так уж сложно. Во время моей работы я допустил ошибки, я обнаружил, что информация в Интернете просто не представлена ​​четко, и большая ее часть была просто скопирована с других сайтов.

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

http://www.chessbin.com

Я даже создал Chess Game Development Kit, который поможет вам начать разработку собственного шахматного движка, который содержит:

  • Весь код, необходимый для представления шахматной доски и шахматных фигур
  • Код, связанный с проверкой движения шахматной фигуры
  • Графический интерфейс пользователя, отображающий положение шахмат и позволяющий перемещать фигуры вокруг доски.

Мой сайт в основном предназначен для людей, подобных вам; люди, которые хотят начать свой собственный шахматный движок.

Ответ 2

Да, это определенно входит в сферу студенческого проекта. Вот несколько ссылок из моего архива, чтобы вы начали:

Ответ 3

Crafty является одним из лучших шахматных движков и полностью открытым исходным кодом. Однако я бы отговорил вас от использования его для студенческого проекта, написанного на C, очень сложного и очень трудно понять, потому что он сильно оптимизирован.

В учебных целях я бы рекомендовал взглянуть на сайт Адама Беренса, где он описывает процесс, который прошел, когда он реализовал шахматный движок в С#. Конечно, исходный код также доступен. Это отличный момент для начала, на мой взгляд.

Ответ 4

Я не могу ответить на ваш вопрос, но я могу ответить на ваш окончательный комментарий

"Было бы забавным проектом иметь разные команды работают над шахматами а затем позволить им играть против каждого другое..."

Это уже сделано на FICS шахматный сервер. Я предлагаю вам войти туда (требуется telnet) и проверить документацию также, вы, вероятно, сможете связаться с людьми, которые могут дать вам конкретные подсказки для своих шахматных фигур.

Ответ 5

Разумный шахматный движок на современных компьютерах, безусловно, выполним, особенно если вы достаточно взрослые, чтобы помнить, что было много программ для шахматистов, в которых использовалось всего несколько К памяти на 8-битных машинах 1 и 2 МГц, которые могли бы играть довольно хорошо, В настоящее время вы можете выпустить шахматный движок на интерпретируемом языке и избить штаны у топ-программиста 6502 или Z80, кодирующего его самые быстрые быстрые вещи.

Я получил работу с Дэном Спракленом, который сделал оригинальную Sargon в 1978 году с его женой Кэтлин. Брат Кэтлин сделал порт в Apple II, и я работал с ним и с его сыном. (В то время, когда я работал с этими парнями, был проведен бизнес по шахматам для бизнеса. Я помню одного парня, который вытащил игры Atari ST и Amiga Chess, и к тому времени на них действительно не было рынка.)

" Компьютерные игры - потрясающее введение в шахматное программирование, когда его любители выполнили его в 1983 году. До сих пор приятно читать. Обложки хорошего материала: альфа-бета, минимакс и т.д.

Это достаточно хорошая книга, в которой вы можете начать там, а затем узнать о достижениях, достигнутых с тех пор.

alt text http://g-ecx.images-amazon.com/images/G/01/ciu/a9/01/ef2de893e7a081414e106110.L._AA240_.jpg

Ответ 6

Чтобы сделать хороший, сложно, но, вероятно, на правильном уровне для выпускного проекта (когда я взял мой батчелор в области компьютерных наук, мой друг написал шахматный движок для своей итоговой диссертации).

И да, есть Open Source, ведущий соперник GNU Chess, который очень уважаем.

Ответ 7

Каждый год в моем университете курс "Введение в ИИ" (курс 3 курса) требует от студентов создания шахматной программы с нуля вместе с бумагой, и мы рассмотрели главу о состязательном поиске на лекции, чтобы у студентов было достаточно знаний для сделай это. Для нас проект может быть выполнен как самостоятельно, так и с другим (очевидно, ожидая лучшей программы, если это делается с партнером, например, с более глубоким слоем и т.д.). Поскольку курс компьютерной графики также является курсом 3 курса, учащимся разрешается комбинировать окончательный проект с окончательным проектом курса ИИ.

Так как я нахожусь на третьем курсе, и я принимаю оба курса (которые закончились с первого семестра), я объединился с другом, который также на обоих курсах, и мы работаем над программой с тех пор, как конец наших экзаменов (который был около 21 декабря), и он должен состояться 11 января.

Это полностью выполнимо в течение месяца (особенно в качестве выпускного проекта). Мы делаем 3D-шахматную программу, поэтому она требует больше работы, чем просто шахматный движок. Самые сложные части будут принимать решение о представлении доски, реализуя все правила (en passant, castling, promotion и т.д.), Создавая эвристическую функцию и игровое дерево (что обычно делается с обрезкой альфа-бета).

Вот сайт, который мы используем для документирования прогресса, а затем размещаем код и бумагу, как только мы закончим (сейчас это немного пусто). http://sites.google.com/site/chessatbrock/

Ответ 8

Это зависит от уровня силы, на который вы нацеливаетесь, и навыков программирования. Предполагая, что вы область опытного программиста, здесь мое мнение (я знаю много двигателей, но никогда не закодировал один):

* Очень простой движок, который может бить новичка/любителя (ELO 1200-1600): много кода, но легко.

* Двигатель, который может победить "клубного игрока" (ELO 1800-2000): он начинает напрягаться, вам понадобится открытие книг, оптимизация и твердотельный AI

* Двигатель, который может победить мастера: трудно, вам понадобится несколько лет предыдущего опыта.

* Верхний двигатель (например, Rybka, Houdini, Stockfish, Hiarcs), который может победить любого человека на земле в 99% случаев: это огромное усилие, вам нужно много терпения и многолетний опыт.

Что я вижу!

Ответ 9

Все зависит от цели, которую вы исправите об ИИ игры! если это игра 2 игроков.. легко! Но ИИ довольно тяжело... Правильно, хорошо известно, что открытый источник - это шахматы GNU!

Некоторые алгоритмы: http://www.vclcomponents.com/s/0__/source_code_genetic_algorithm_chess
Вот шахматное программирование wiki!

Ответ 10

Вам нужно сгенерировать все шаги vaild для данного состояния. Затем для каждой возможности вам нужно проверить оппоненты возможных ходов. Если есть хотя бы одна из них, которая ухудшает ваше положение, вы не должны следовать этой ветке. Для этого вам нужно какое-то забивание, чтобы определить, насколько хорошо вы это делаете. У шахмат уже есть некоторые правила о том, сколько единиц стоит столько очков. Достаточно взглянуть вперед только на несколько шагов. Избиение программы по-прежнему будет непростым.

Это, конечно, далеко не идеальное: настоящие игроки могут пожертвовать некоторыми подразделениями для достижения долгосрочных целей. Этот алгоритм этого не сделает.

Ответ 11

Мы сделали mancala AI, за которым последовал шахматный AI в алгоритмах и структурах данных (второкурсник CS).

Однако профессор предоставил большие куски шахматного движка, и нам пришлось делать такие вещи, как улучшение функции решения, выполнение матчей и другие вещи.

Ответ 12

В моем подходе к курсу AI мы потратили полсекунда, создав различные шахматные движки, и проверили их с помощью XBoard или WinBoard. Затем в конце семестра у нас был турнир, в котором учащиеся шахматных движков соревновались друг с другом в XBoard. В целом это получилось довольно хорошо.

Взаимодействие с XBoard довольно легко, если я правильно помню. Вот несколько ссылок.

http://www.gnu.org/software/xboard/

интерфейс для XBoard

http://www.tim-mann.org/xboard/engine-intf.html

Я не уверен, что это доставит вам все, что вы хотите, я думаю, что наши шахматные двигатели должны были создавать свои собственные представления на досках и сами создавать свои ходы, но, по крайней мере, это дает вам графическую панель, которая знает правила и имеет графический интерфейс.

Ответ 13

Это, наверное, слишком простой, но все же интересный уроки, которые нужно изучить: я представляю вам ZX81 Chess