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

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

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

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

З.Ы. Код Желательно на Си
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.05.2010, 19:15
Ответы с готовыми решениями:

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

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

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

37
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
11.04.2015, 09:49
Оживлю тему. Вот моя шахматная программа. Пока как движок не оформлялась и UCI не поддерживает.
Вложения
Тип файла: rar Chess.rar (313.0 Кб, 26 просмотров)
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,010
15.04.2015, 03:26
Просто отлично.
1
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
15.04.2015, 05:58
Цитата Сообщение от romex Посмотреть сообщение
Если кто-нибудь занимался этим неблагодарным делом, очень прошу помочь...
Ну для начала надо ознакомится с предметной областью а не с движками. Например с критериями оценки позиции по Стейницу.
Ну и еще - придумать как прикручивать, вернее как наполнять библиотеку дебютов.
0
42 / 2 / 0
Регистрация: 11.04.2015
Сообщений: 20
15.04.2015, 21:27
А вот усовершенствованная версия. Играет лучше. В комплекте простой UCI-движок. С Arena играет.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вообще человек считает в основном в миттельшпиле. дебют и эндшпиль обычно на "автомате". Во всяом случае по энцифолограммам снятым с гроссмейстеров.
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
18.04.2015, 01:59
Цитата Сообщение от da-nie Посмотреть сообщение
А попробуйте с гудини сыграть.
Оригинальный однако у этого гудини сдаваться. Стратегия однако. Контр-гамбит Альбина. И в этом плане ничем не лучше остального того что видел. Только думает долго.
Миниатюры
Протокол UCI - нужен пример хорошего движка для шахмат  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.04.2015, 01:59
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru