Российский шахматный форум
Российский шахматный форум
ГлавнаяFAQПоискПользователи Регистрация Войти и проверить личные сообщенияВход
Программирвоание шахматных движков

 
Начать новую тему   Ответить на тему    Российский шахматный форум -> Шахматные программы
Предыдущая тема :: Следующая тема  
Автор Сообщение
Nikolay



Зарегистрирован: 26.07.2008
Сообщения: 109

СообщениеДобавлено: Пн Сен 07, 2009 20:33    Заголовок сообщения: Программирвоание шахматных движков Ответить с цитатой

Принципы программирования шахматных программ.

Мне не понятно как вообще можно программировать шахматные программы. Расскажите кто-нибудь.
Вот смотрите, как я понимаю.
У каждой фигуры есть ценность.
Пешка-1
Конь-3
Слон-3
Ладья-5
Ферзь-8

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

1. e2-e4 e7-e5
2. Qd1-f3 Nb8-c6

Чем с точки зрения компьютера плох ход: 3. Qf3xf7
Ведь после этого хода у программы есть материально преимущество - пешка.
Понятно, что программа увидит, что она теряет ферзя, но для этого её нужно посмотреть на один ход вперед.
Но если такой анализ будет не на первом ходу, а на десятом, программе нужно будет залезать в одиннадцатый ход. или ещё дальше.
Все равно у программы ограничена глубина просмотра.
Как она может отсекать такие нелепые ходы ?

Как это учитывается ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Специалист
 


Зарегистрирован: 19.07.2008


Сообщение Заголовок сообщения: Российский шахматный форум  




Не нравится видеть рекламу? Выход есть! Зарегистрируйтесь!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Вадим



Зарегистрирован: 30.08.2009
Сообщения: 42
Откуда: Иваново

СообщениеДобавлено: Чт Сен 17, 2009 19:44    Заголовок сообщения: Re: Программирвоание шахматных движков Ответить с цитатой

Nikolay писал(а):
Принципы программирования шахматных программ.
Все равно у программы ограничена глубина просмотра.
Как она может отсекать такие нелепые ходы ?
Как это учитывается ?

99% шахматных программ используют alpha-beta алгоритм оптимизации перебора.
Всё просто: в рекурсивной функции AlfaBeta() вводятся 2 переменных alpha - максимум
белых и beta максимум черных. Сначала эти переменные имеют минимальное значение,
например -10000. Если в какой-то позиции для черных получили результат больше
чем beta достигнутый до этого - beta увеличивается. Для белых тоже самое
только с alpha. AlfaBeta() вызывается рекурсивно пока не достигнет максимальной глубины
или пока alpha не сравняется с beta (происходит отсечка некоторых ветвей дерева перебора).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Nikolay



Зарегистрирован: 26.07.2008
Сообщения: 109

СообщениеДобавлено: Пн Сен 21, 2009 20:29    Заголовок сообщения: Re: Программирвоание шахматных движков Ответить с цитатой

Вадим писал(а):

....

Если в какой-то позиции для черных получили результат больше
чем beta достигнутый до этого - beta увеличивается. Для белых тоже самое
только с alpha. AlfaBeta() вызывается рекурсивно пока не достигнет максимальной глубины
или пока alpha не сравняется с beta (происходит отсечка некоторых ветвей дерева перебора).


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



Зарегистрирован: 30.08.2009
Сообщения: 42
Откуда: Иваново

СообщениеДобавлено: Вт Сен 22, 2009 20:29    Заголовок сообщения: Re: Программирвоание шахматных движков Ответить с цитатой

Nikolay писал(а):

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

Это есть так называемый эффект горизонта. Как с ним бороться - толком ни кто не знает. Каждый изобретает свою схему. Лучше всего просчитать на глубину 15 - 20 ходов. Но обычному компу это не подсилу. Слишком большое дерево перебора получается.
Меня больше интересует тема- как научить программу строить хотя бы простейшие планы, такие как: атака на фигуру, "завлечение" фигуры противника на слабое поле, прорыв пешечной фаланги и пр.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
master_olegi



Зарегистрирован: 17.01.2010
Сообщения: 2
Откуда: Nеаполь

СообщениеДобавлено: Вс Янв 17, 2010 10:34    Заголовок сообщения: Ответить с цитатой

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

_________________
"Знаешь, во что я верю?..." (х/ф "Хищник-2")
Вернуться к началу
Посмотреть профиль Отправить личное сообщение AIM Address Yahoo Messenger MSN Messenger
Nikolay



Зарегистрирован: 26.07.2008
Сообщения: 109

СообщениеДобавлено: Пн Мар 29, 2010 11:02    Заголовок сообщения: Ответить с цитатой

Терпеть ненавижу разбираться в чужом коде....
Главное не код. Главное принцип, или алгоритм.
Понятно, что нормальные программы не отдают ферзя за пешку.
Но мне не ясно как это они рассматривают.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
master_olegi



Зарегистрирован: 17.01.2010
Сообщения: 2
Откуда: Nеаполь

СообщениеДобавлено: Сб Май 22, 2010 08:19    Заголовок сообщения: Ответить с цитатой

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

http://files.mail.ru/X2VB4E

_________________
"Знаешь, во что я верю?..." (х/ф "Хищник-2")
Вернуться к началу
Посмотреть профиль Отправить личное сообщение AIM Address Yahoo Messenger MSN Messenger
Zena.Malina



Зарегистрирован: 18.07.2012
Сообщения: 18
Откуда: Москва

СообщениеДобавлено: Пн Авг 06, 2012 11:02    Заголовок сообщения: Ответить с цитатой

http://chessmotor.narod.ru/engines.html

1. Читала, что движки тоже ранжируются по сложности. Выше указан список движков. Скажите какой движок самый легкий? И на каком уровне он играет?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Zena.Malina



Зарегистрирован: 18.07.2012
Сообщения: 18
Откуда: Москва

СообщениеДобавлено: Пн Авг 06, 2012 17:06    Заголовок сообщения: Ответить с цитатой

Или дайте ссылку, где скачать слабый движок. Для новичков.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Slavik



Зарегистрирован: 07.12.2011
Сообщения: 45
Откуда: Украина

СообщениеДобавлено: Ср Авг 08, 2012 11:46    Заголовок сообщения: Ответить с цитатой

Zena.Malina писал(а):

1. Читала, что движки тоже ранжируются по сложности. Выше указан список движков. Скажите какой движок самый легкий? И на каком уровне он играет?

Вот здесь можно посмотреть рейтинги движков:http://www.computerchess.org.uk/ccrl/4040/
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Slavik



Зарегистрирован: 07.12.2011
Сообщения: 45
Откуда: Украина

СообщениеДобавлено: Ср Авг 08, 2012 11:48    Заголовок сообщения: Ответить с цитатой

Zena.Malina писал(а):
Или дайте ссылку, где скачать слабый движок. Для новичков.

Вот ссылка на страничку, где можно скачать движки для новичков:http://www.lissandrello.it/?p=524
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
alexlaw



Зарегистрирован: 16.09.2018
Сообщения: 5
Откуда: Воронеж

СообщениеДобавлено: Вс Сен 16, 2018 21:43    Заголовок сообщения: Ответить с цитатой

На пути к Deep Blue: пошаговое руководство по созданию простого ИИ для игры в шахматы
https://tproger.ru/translations/simple-chess-ai-step-by-step/
Как вам эта статья?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Российский шахматный форум -> Шахматные программы Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы