Вопрос:

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

machine-learning chess

23946 просмотра

13 ответа

29039 Репутация автора

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

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

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

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

Автор: Frank Источник Размещён: 18.07.2009 10:15

Ответы (13)


4 плюса

200536 Репутация автора

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

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

Автор: RichieHindle Размещён: 18.07.2009 10:18

0 плюса

2368 Репутация автора

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

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

Автор: Matthieu Размещён: 18.07.2009 10:20

7 плюса

74174 Репутация автора

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

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

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

Автор: Stefano Borini Размещён: 18.07.2009 10:27

8 плюса

128 Репутация автора

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

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

Автор: CaptainProton Размещён: 18.07.2009 10:31

0 плюса

2260 Репутация автора

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

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

Автор: stribika Размещён: 18.07.2009 10:31

0 плюса

6881 Репутация автора

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

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

Автор: Andrew Johnson Размещён: 18.07.2009 10:34

0 плюса

5571 Репутация автора

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

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

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

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

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

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

Автор: ryan_s Размещён: 18.07.2009 10:46

6 плюса

59527 Репутация автора

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

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

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

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

альтернативный текст

Автор: Nosredna Размещён: 19.07.2009 02:59

54 плюса

1812 Репутация автора

Решение

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

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

http://www.chessbin.com

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

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

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

Автор: Adam Berent Размещён: 23.07.2009 12:38

33 плюса

14841 Репутация автора

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

Автор: RoadWarrior Размещён: 05.08.2009 12:31

2 плюса

31320 Репутация автора

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

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

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

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

Автор: Dennis Размещён: 03.01.2010 02:41

0 плюса

8031 Репутация автора

Вероятно, это слишком просто, но все же интересные уроки, которые нужно усвоить: я представляю вам игру ZX81 Chess

Автор: Dervin Thunk Размещён: 23.02.2013 06:10

2 плюса

5249 Репутация автора

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

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

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

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

* Лучший двигатель (например, Рыбка, Гудини, Стокфиш, Хиаркс), который может побить любого человека на земле в 99% случаев: это огромное усилие, вам понадобится МНОГО терпения и многолетний опыт.

Вот как я это вижу!

Автор: Fernando Размещён: 28.06.2013 05:32
Вопросы из категории :
32x32