Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/34: Рейтинг темы: голосов - 34, средняя оценка - 4.53
45 / 45 / 9
Регистрация: 11.04.2010
Сообщений: 223
1

Протокол UCI - нужен пример хорошего движка для шахмат

19.05.2010, 19:15. Показов 6829. Ответов 37
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Я на данный момент пишу шахматный движок по протоколу UCI, процесс идет не уверенно... На данный момент не реализованно и половины комманд, а обыграть его сможет даже трехлетний ребенок.
Было бы очень интересно ознакомится с движком чужой разработки...
Существует очень много движков, Но беда в том, что сами движки найти гораздо легче чем их код.
Если кто-нибудь занимался этим неблагодарным делом, очень прошу помочь...
Программа мне нужна только для ознакомления. Переделывать под себя, а уж тем более присваивать оную я не буду... Заранее спасибо!

З.Ы. Код Желательно на Си
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2010, 19:15
Ответы с готовыми решениями:

Нужен совет в выборе хорошего(нормальный бюджет) монитора 24" для игр и кино
Добрый день! Помогите пожалуйста определиться с монитором! Основные требование - 1920×1080,...

Нужен совет с выбором движка для написания игры на ios
Добрый день! Хотелось бы обратиться к опытным программистам с таким вопросом: какой движок выбрать...

Нужен совет с выбором движка и языка для создания игры
Добрый день! Прошу совета у опытных программистов: У меня есть идея для создания компьютерной...

Нужен совет по выбору движка для нестандартного интернет сервиса
Добрый день! Хочу попробовать реализовать интернет проект. Суть следующая: база данных, которая...

37
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
11.04.2015, 09:49 2
Оживлю тему. Вот моя шахматная программа. Пока как движок не оформлялась и UCI не поддерживает.
Вложения
Тип файла: rar Chess.rar (313.0 Кб, 24 просмотров)
0
случайный прохожий
2927 / 1944 / 606
Регистрация: 20.07.2013
Сообщений: 5,144
15.04.2015, 03:26 3
Просто отлично.
1
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
15.04.2015, 05:58 4
Цитата Сообщение от romex Посмотреть сообщение
Если кто-нибудь занимался этим неблагодарным делом, очень прошу помочь...
Ну для начала надо ознакомится с предметной областью а не с движками. Например с критериями оценки позиции по Стейницу.
Ну и еще - придумать как прикручивать, вернее как наполнять библиотеку дебютов.
0
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
15.04.2015, 21:27 5
А вот усовершенствованная версия. Играет лучше. В комплекте простой UCI-движок. С Arena играет.

Однако, резервы совершенствования ещё далеко не исчерпаны. Смотрю код Ифрита и пытаюсь сделать LMR (Late Move Reduction). Пока получается не очень - играть-играет, но Ифриту с глубиной анализа 8 полуходов проигрывает и довольно быстро. Либо я LMR реализовал неправильно (но вроде код у Ифрита довольно ясный, да и что там можно напутать-то... Впрочем, статей на русском по LMR я не нашёл, а принцип, быть может, понял превратно. ), либо неправильно работают другие эвристики. При отключении нулевого хода и Razoring с Futility Pruning играет лучше и сопротивляется дольше, но всё равно сливает, да и думать начинает гораздо дольше.
Вложения
Тип файла: rar Chess2.rar (394.5 Кб, 22 просмотров)
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
15.04.2015, 22:11 6
Цитата Сообщение от da-nie Посмотреть сообщение
Пока получается не очень - играть-играет, но Ифриту с глубиной анализа 8 полуходов проигрывает и довольно быстро. Либо я LMR реализовал неправильно (но вроде код у Ифрита довольно ясный, да и что там можно напутать-то... Впрочем, статей на русском по LMR я не нашёл, а принцип, быть может, понял превратно. ), либо неправильно работают другие эвристики.
Глубина просчета нужна только в осложнениях (сложных разменах и комбинациях). А комбинаторная игра умерла еще во времена Стейница. Ну а для позиционной гораздо важнее правильное определение пунктов стратегического давления.
0
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
16.04.2015, 18:29 7
Глубина просчета нужна только в осложнениях
Продления, разумеется, рассматриваются отдельно в статическом поиске. Но перебор на 6 или на 8 полуходов нужно рассматривать весь (разумеется, с использованием эвристик для отсечения веток дерева). Так вот, я ставил Ифриту 8 полуходов перебор и играл своим движком с ним. Проигрываю, как ни жаль.
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
16.04.2015, 19:56 8
Цитата Сообщение от da-nie Посмотреть сообщение
(разумеется, с использованием эвристик для отсечения веток дерева)
Главные эвристики которые просто реализуемы - контроль цента, форпосты,контроль вскрытых вертикалей и диагоналей, слабости пешечной структуры (сдвоенные и "висячие" пешки), проходные пешки, ну и как то соотнести это с материалом. Гораздо труднее (вернее затрудняюсь даже сказать в каком направлении думать) - возможность развить атаку на короля (один из главных по Стейницу критериев).
0
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
16.04.2015, 21:28 9
Главные эвристики которые просто реализуемы - контроль цента, форпосты,контроль вскрытых вертикалей и диагоналей, слабости пешечной структуры (сдвоенные и "висячие" пешки), проходные пешки, ну и как то соотнести это с материалом.
Это не эвристики, а статическая оценка позиции. Эвристика появится когда из этих оценок придётся выбирать что оставить, а что выбросить.

возможность развить атаку на короля
В простейшем случае - при приближении фигуры к королю в его квадранте продлевать анализ на один полуход.
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
16.04.2015, 22:25 10
Цитата Сообщение от da-nie Посмотреть сообщение
В простейшем случае - при приближении фигуры к королю в его квадранте продлевать анализ на один полуход.
Давление на короля возможно и с другого конца доски. Ну а учитывая что возможность к примеру не напрямую давления, а возможность быстрого наращивания давления (не обязательно на короля, а на окружение), то вообще получаем ужасть.
Цитата Сообщение от da-nie Посмотреть сообщение
Эвристика появится когда из этих оценок придётся выбирать что оставить, а что выбросить.
Выбор все равно работает на оценке позиции. Соответственно эвристикой в данном случае является выбор соотношения оценок.

Добавлено через 1 минуту
Цитата Сообщение от da-nie Посмотреть сообщение
продлевать анализ на один полуход
Имеется в виду вообще стратегическая возможность. Т.е. для ее оценки понадобится вообще продление анализа как минимум на пол-партии а не на полуход.

Добавлено через 7 минут
Цитата Сообщение от da-nie Посмотреть сообщение
простейшем случае - при приближении фигуры к королю
А вообще стратегические пункты давления (в том числе и пункты с которых и в которые развивается атака на короля) закладываются в дебюте во время его разработки.

Хотя это относится больше к алгоритму анализа для человека а не для машины.
0
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
17.04.2015, 06:32 11
Выбор все равно работает на оценке позиции. Соответственно эвристикой в данном случае является выбор соотношения оценок.
Оценка не даст вам возможности решить, какой ход надо сделать. Вот получили вы на глубине 8 полуходов оценки всех веток. Так какой же ход надо сделать? А сделать надо такой, чтобы загнать противника к нужной нам оценке. Это не максимальная оценка на 8 полуходах - это оценка максимально достижимая в данных условиях. Вот тут-то и вступает в дело эвристика, чтобы этот путь найти, а все иные отсечь и даже не рассматривать.

Имеется в виду вообще стратегическая возможность.
Этого и человек не делает.

то вообще получаем ужасть.
Тем не менее, программы играют и выигрывают. И анализ на пол-партии вперёд не проводят.
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
17.04.2015, 06:40 12
Цитата Сообщение от da-nie Посмотреть сообщение
Этого и человек не делает.
Поверьте мне делает. Во всяком случае профессионалы.

Добавлено через 1 минуту
Цитата Сообщение от da-nie Посмотреть сообщение
Тем не менее, программы играют и выигрывают.
Угу. Ну а как у компа выигрывают? Именно за счет стратегического мышления.

Добавлено через 4 минуты
Алгоритм анализа хода для человека:
1. Определить цели в том числе стратегические хода противника
2. Определить ходы-кандидаты для блокировки целей противника и наращивания стратегического давления
3. Провести просчет в глубину ходов-кандидатов.
Ну и при этом очень желательно считать хотя бы на один ход дальше противника.
0
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
17.04.2015, 16:49 13
Поверьте мне делает. Во всяком случае профессионалы.
На пол-партии без ошибок? Или на 15 ходов с промахами, которые нашла бы программа, способная обсчитать всю партию целиком?

Угу. Ну а как у компа выигрывают? Именно за счет стратегического мышления.
Чёткий результат достигается только в эндшпиле, где человек ясно видит результат и за 30 ходов (он очевиден), а компьютер нет - он на столько не считает (хотя, есть уже давно рассчитанные эндшпили, где мат за чёрт знает сколько ходов существует и человек про такой мат не знал, считая позицию ничейной). В остальном - результат игры с мощнейшими движками зависит по сути от случайностей в позиционной борьбе. Ни один движок не анализирует все последствия своих ходов, поэтому возможны в дальней перспективе комбинации, которые неотвратимы из-за первых ходов, но компьютеру на этих первых ходах это было не видно. К счастью, человек также всех последствий своих ходов не предусматривает, и поэтому обыграть его программе почти всегда проще, чем наоборот.

Алгоритм анализа хода для человека:
Так для компьютера он по сути такой же. Только чтобы программе понять где выгоднее держать фигуру создают тонко настроенные статические оценочные функции.
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
17.04.2015, 21:53 14
Цитата Сообщение от da-nie Посмотреть сообщение
К счастью, человек также всех последствий своих ходов не предусматривает, и поэтому обыграть его программе почти всегда проще, чем наоборот.
То что под руку поподалось из движков обычно не держит именно стратегческое давление. Если правильно придавить до эндшпиля дело просто не доходит. Бегает комп голым королем по полю и в начале миттельшпиля прекрасно.
А вот зевки не прощают. и простейшие жертвы с выигрышем материала в течении ход-два тоже умеют.
0
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
17.04.2015, 22:10 15
Если правильно придавить до эндшпиля дело просто не доходит. Бегает комп голым королем по полю и в начале миттельшпиля прекрасно.
А попробуйте с гудини сыграть.

Интересно, сделал работу с хэш-таблицей как у Ифрита и движок почти выиграл (слил в ничью с очень хорошей оценки - я пока не умею детектировать тройные повторения).
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
17.04.2015, 22:42 16
Цитата Сообщение от da-nie Посмотреть сообщение
Так для компьютера он по сути такой же.
Одно не понятно - как компу определять направления стратегического давления.
Хотя это конечно не моя специализация. Максимум что делал в этом направлении - программу решения шахматных задач на мат.
0
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
17.04.2015, 23:09 17
Одно не понятно - как компу определять направления стратегического давления.
Программа исходит из того, где выгоднее держать фигуру в разных стадиях игры. А дальше тактика потихоньку переходит в стратегию. Скажем, сейчас я учитываю в оценочной функции битые оппонентом поля рядом с королём. Таким образом, программа будет стремиться развивать атаку на короля и его окружение.

В приведённых выше файлах, к сожалению, ошибка в оценочной функции. Они играют, но, как оказалось, не так, как должны были. Надеюсь, доделаю движок и выложу версию более сильную. И менее тормозную - этот момент я пока так и не решил.
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
17.04.2015, 23:19 18
Цитата Сообщение от da-nie Посмотреть сообщение
Оживлю тему. Вот моя шахматная программа.
da-nie, а как бы Вы оценили силу игры данной программы ?
На какой разряд/кмс/мс/гросс ?.. По моим меркам, играет она недурно,
но до известных шахматных движков далеко. Лично у меня получилось
из шести партий две выиграть и одну сыграть вничью, но это за
отсутствием практики, а лет пять назад я бы, наверное, сыграл
лучше (тогда и в турнирах играл, и тренировался постоянно)...
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
18.04.2015, 01:42 19
Цитата Сообщение от da-nie Посмотреть сообщение
Скажем, сейчас я учитываю в оценочной функции битые оппонентом поля рядом с королём. Таким образом, программа будет стремиться развивать атаку на короля и его окружение
Не всегда верно при некоторых раскладах, довольно часто к победе ведет придавить не на короля, а на какое либо слабое место (например на то чтобы провести пешку, или ворваться в необеспеченное пространство)

Добавлено через 2 часа 9 минут
Цитата Сообщение от da-nie Посмотреть сообщение
Чёткий результат достигается только в эндшпиле, где человек ясно видит результат и за 30 ходов (он очевиден), а компьютер нет - он на столько не считает
Эндшпиль против гудини - ладья пешка и ферзь против его голого короля. Вот тут у него такие расчеты включаются... над ходом надолго задумывается, не то что во время всей игры...

Вообще человек считает в основном в миттельшпиле. дебют и эндшпиль обычно на "автомате". Во всяом случае по энцифолограммам снятым с гроссмейстеров.
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
18.04.2015, 01:59 20
Цитата Сообщение от da-nie Посмотреть сообщение
А попробуйте с гудини сыграть.
Оригинальный однако у этого гудини сдаваться. Стратегия однако. Контр-гамбит Альбина. И в этом плане ничем не лучше остального того что видел. Только думает долго.
Миниатюры
Протокол UCI - нужен пример хорошего движка для шахмат  
0
18.04.2015, 01:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2015, 01:59
Помогаю со студенческими работами здесь

Пример движка.
В нашем друге интернете много всего хорошего и не очень. Я только начал изучать PhP. Искал инфу...

Нужен совет хорошего программиста
Ребят хочу освоить программирование, подскажите пожалуйста с чего начать!!!? Имею Высшее...

Нужен пример программы для управления БД
Здравствуйте! Скиньте пожалуйста хороший пример программы для управления базой данных, в которой...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru