Программирование шахмат

Студенческий спорт
Студенческий спорт: Программирование шахматУ меня есть идея, написать свой шахматный движок. С целью попрактиковаться в программирование да и в шахматах тоже.
Мож еще ктото тож хочет. Я имею работу не над одним проектом, а за разными, с целью посмотреть чья программа сильнее. Но конечно это не сейчас, после сессии естественно.
42 комментария
avatar
Правило 50 ходов делается по-человечески - ведем запись ходов, на ней отражаем взятия и ходы пешками, а потом проверяем время от времени. Тройной повтор аналогично. Был у меня неплохой исходничек для игры по локалке, правда не мой, там подключались самопальные движки.
avatar
Да? А как вы собираетесь внедрить это в перебор дерева вариантов?
avatar
Правило 50 ходов - никак, слишком оно суровое, а троекратное - в зависимости от оценки позиции, устраивает нас или нет. Будем проверять возникающую позицию на равенство той, которая была 2 и 4 полухода назад.
avatar
А я написал свой движок :)
Против людей играет довольно неплохо (стабильно обыгрывает знакомых 1-разрядников и КМС-ов), против других движков - похуже (рейтинг 2300 ЭЛО).
Если интересно - пишите! Могу поделиться исходниками (Delphi) :)
З.Ы. а насчет повторения позиции и правила 50 ходов:
повторения лучше делать не через сравнение позиций 2 и 4 полухода назад. Правильней хранить хэши всех позиций которые встречались, и в которые можно попасть из данной позиции (то есть все позиции после хода пешки или взятия (таких позиций теоретически может быть не много - не более 50)). также запоминаем количество таких позиций - если оно больше 50 - оценка 0, т.к. правило 50 ходов. :) И если есть совпадение текущей позиции с 2-мя позициями из этого списка - повторение :)
avatar
Отлично! ))
Вопрос - какой хэш? MD5 думаю снизит скорость работы вдвое... надо что-нибудь попроще...
avatar
не! там свой хэш считается. очень быстро! буквально 3-5 операций XOR в процедуре MakeMove :) скорость вообще не снижает, а если использовать хэш-таблицу для сохранения промежуточных вычислений - то будет очень круто! скорость как таковую не повысит, а сила игры сильно возрастет :)
avatar
А можно мне с ней сыграть? У меня текущий ЭЛО 2396
avatar
Алексей, а Вы дописали свою программу?
avatar
Алексей, это будет жестоко по отношению к бедной программе! :-D
А так, мне не жалко!
Вот движок (UCI): http://urshak2006.narod.ru/files/ur11b.zip подключать к любой оболочке, поддерживающей этот протокол.
А вот моя собственная оболочка http://urshak2006.narod.ru/files/ur.exe правда глючная и недоделанная.. но у меня и цели не было оболочку делать. Написал просто чтобы было :)
avatar
Ну как успехи в избиении программы? :)
avatar
Пока не опробовал. Только запускал в качестве аналитического движка. По сравнению с Рыбкой, конечно слабовата. Но у Рыбки чуть ли не нейросеть для типичных позиций. Думаю, что когда "обычный" расчет вариантов поставлен хорошо, надо выделять случаи, когда некоторые форсированные варианты нуждаются в более глубоком расчете. А также совершенствовать алгоритмы оценки позиции.
avatar
Безусловно, писать шахматные движки занятие интересное. Еще более интересно, по всей видимости писать движки для шведок. Но как по мне, куда более перспективно разрабатывать универсальный искуственный интеллект, и например, использовать шахматы как полигон для его тестирования.
avatar
В рыбе никаких нейросетей нет :) Просто очень быстрые перебор и оценочная функция (в которой имеется таблица дисбаланса материала, которую вообще не автор рыбки делал :))
С продлениями в моем движке довольно неплохо (не смог реализовать нормально только продление при единственном отходе от шаха). У меня проблемы с сокращениями - режет все подряд, даже то, что не стоит (особенно заметно, когда пешка скоро превращается в ферзя - вообще в упор не видит). Но все же в большинстве позиций сокращения дают довольно неплохое усиление за счет увеличения глубины.
avatar
>например, использовать шахматы как полигон для его тестирования.
Шахматы плохой пример для тестирования ИИ.
avatar
>Шахматы плохой пример для тестирования ИИ.
Значит ли это, что ИИ еще слабо развит?

Иван Freeman Макляков , есть ли перспективы применения нейросетей в движках для оценки позиции путем сравнения ее с другими характерными позициями, у которых оценка известна?
avatar
>Значит ли это, что ИИ еще слабо развит?
Я вообще-то не очень уверен, возможно я неправ.
avatar
Универсальный ИИ действительно очень сабо развит. Возможно шансы на его создание увеличатся с созданием новой элементной базы (ИМХО, микропроцессоры себя изжили), например, квантового компьютера, или чего-то еще. А вообще, где-то читал, что точка сингулярности (момент, когда машины станут умнее людей) будет пройдена (возможно) уже в ближайшие 50 лет.
Насчет нейронных сетей - врядли. Вроде уже пытались написать такую программу - думала очень долго и проигрывала всем. Хотя подробностей я не знаю.
А вот что-то наподобие генетических алгоритмов уже используется для автоматической настройки параметров оценочной функции (вроде так рыбку настраивали). Я тоже начинал писать настройщик, но забросил когда новый комп взял - взялся за создание многопроцессорной версии своего движка :)
avatar
> Возможно шансы на его создание увеличатся с созданием новой >элементной базы (ИМХО, микропроцессоры себя изжили)
Механитис - профессиональное заболевание тех, кто верит, что ответ задачи, которую он не может ни решить, ни даже сформулировать, легко будет найти, если получить доступ к достаточно дорогой вычислительной машине.
avatar
У квантового компьютера принцип действия принципиально другой. И логика имеет принципиальные отличия, потому спектр решаемых задач сильно отличается.
avatar
Какая разница, все равно механитис остается в силе - у Вас :). Живые организмы, замечу никаких квантовых вычислителей не используют.

>потому спектр решаемых задач сильно отличается.
Тогда это уже не имеет права называться компьютером.
avatar
>Живые организмы, замечу никаких квантовых вычислителей не >используют.
На эту тему есть фундаментальный труд Шредингера 45-го года "Волновая механика и жизнь". Так что насчет квантовых вычислений живыми организмами неизвестно.
avatar
До сих пор остается актуальным вопрос, а может ли то, что мы называем интеллектом, вообще быть представлено в виде алгоритма :)
На эту тему надыбал книгу Р. Пенроуза "Новый Ум Короля", как прочитаю - расскажу :)
avatar
До сих пор остается актуальным вопрос, а существует ли интеллект вообще или это только кажется.
avatar
Наверно всетаки не интеллект в человечесом виде, а способность решать трудноформулируемые задачи. Ну к примеру адекватная оценка происходящего на доске.
avatar
Многие спрашивают новые фигуры для клиента ChessPlanet. Решил сделать один такой набор. Он заменяет комплект "Современные". Вот скрины. Единственное, не стал менять самые маленькие фигуры в наборе. Вряд ли ими кто пользуется. Но если будут нужны, то и их поменяю тоже.
А пока что я сделал доску и фигуры для Чесспланет из Аквариума, то есть теперь доска и фигуры могут быть как в аквариуме, тока на планете) Скачать отсюда: http://letitbit.net/download/32784.320711c848b964d84...
Для установки, распаковать в папку \Program Files\Rybka Aquarium\PieceThemes

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.