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