Тема: 6-7-фигурный эндшпильный генератор готов

Шахматный генератор всех 3-4-5-6-7-фигурных эндшпилей. В моем формате (tb).
Базы чуть больше по размеру, чем в формате Налимова (10-20 процентов).
Потому, что у меня получился чуть менее совершенный встроенный архиватор,
который сжимает базы. Некоторые типы (например KBB-KN) в моем формате даже
меньше по размеру. Все количества позиций по статистике совпадают со
статистикой Налимова. Работает под Windows, хороший UI, и хорошо оптимизирован
по соотношению параметров "количество оперативной памяти - время генерации".
(например, многие 6-фигурные базы можно создавать имея меньше 1 ГБ
оперативной памяти). Оптимизация очень важна, т.к. генерация 7-фигурных
будет продолжаться долгие годы и выигрыш здесь очень значительный. 

Также, сделал удобный анализатор шахматных окончаний, который
использует мои базы, там можно играть, смотреть оценки позиций, искать по
определенным характеристикам в базе (например, выигранные за 100 ходов, с ходом
белым и нет белых фигур под боем), и т.д.

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

http://generatorchess.qsh.ru/Default.aspx

2

Re: 6-7-фигурный эндшпильный генератор готов

Спасибо! Но перед тем, как воспользоваться, вопрос неграмотного: что есть формат tb и можно ли его подключить к продуктам от ChessBase?

Re: 6-7-фигурный эндшпильный генератор готов

Цель была такая - написать 6-7-фигурный генератор, и оптимизировать его по максимуму.  А то 7-фигурного сейчас вообще нигде нет, а 6-фигурный вроде есть, но для него нет хорошего интерфейса и он не под Windows.  Я написал под Windows.

Формат tb - это мой формат, пока он работает только в моем анализаторе.  У меня нету форматов Налимова, Томпсона, Шреддера и т.д. Если бы я их знал, то мог бы переписать в любой формат. Т.к. я их не знаю,  записываю базы в свой tb.  Но у кого есть программы, с помощью которых можно анализировать базы, например, в формате Налимова, можно переписать их из моего в тот. Для этого я и создал еще кроме анализатора - свой dll.  Он позволит программам вынимать оценки для позиций из базы.

Отредактировано Skipper_NORTON (03/11/2008 11:49:21)

4

Re: 6-7-фигурный эндшпильный генератор готов

Ну а на каком железе и за какое время можно получить все 7-ми фигурные окончания? И сколько места нужно для их хранения?

5

Re: 6-7-фигурный эндшпильный генератор готов

ProstoTak пишет:

Ну а на каком железе и за какое время можно получить все 7-ми фигурные окончания? И сколько места нужно для их хранения?

6-ти фигурки весят ~1230Gb. Их генерили несколько лет на мощном компе. Последний файл был сгенерирован в начале августа 2006 года, если мне не изменяет память. 5-1 окончания никто не генерил и никто генерить не будет, если разве что не найдется смельчак, который сгенерит 7 фигурные, но это примерно 200Tb.

Да, пока винчестеры до 1 терабайта, такие не поставишь. Но лет через 5-10, будут винчестеры, скажем по 50-200 терабайт, вполне возможно, поставив несколько винчестеров. И я уверен в этом. В 1999 году когда я купил свой первый комп, то винчестеры были по 2 гигабайта, т.е. в 500 раз меньше сегодняшних. А генерировать можно и нужно начинать прямо сейчас, и записывать на диски (они дешевле всего). Когда в будущем будут компы, при которых можно будет использовать 7-фигурки, то можно будет сразу их использовать, а не ждать пока сгенерятся лет 10. Организовать бы вот, на многих компах генерацию, и обмениваться друг с другом? Правда, генератора даже 6-фигурных нигде не найти, не говоря про 7-фигурные.

Тут были вопросы, сколько будет генерироваться 6-фигурная база. Сильно зависит от эндшпиля, от числа ходов значит и от фигур, а также пешечный - или нет, от количества итераций которые придется сделать, но полагаю, у Налимова - судя по скорости (5-фигурных), скажем, на современном, хорошем процессоре, Athlon 64 4000, одноядерном - СРЕДНЕСТАТИСТИЧЕСКИ - 3 недели будет генерироваться (это в среднем, т.к. некоторые больше, некоторые - меньше). 7-фигурная - 2 года. Ну и что? Всего 7-фигурных - 1001 база. Значит одному компу надо 2000 лет.

А если юзать 4-ядерный процессор, которые уже появились в продаже - то уже в 4 раза меньше по времени (спорное утверждение, так как для этого нужно чтобы генератор был оптимизирован под многопоточность, но даже при этом прирост производительности будет не кратен количеству ядер, а меньше чем в 4 раза). А если объединить усилия и генерировать на 250 компах (найти столько людей с компами), то уже - в 1000 раз меньше. Т.е. не 2000 лет.

А всего за 2 года - можно сгенерировать АБСОЛЮТНО ВСЕ 7-фигурные базы.

А интересного там сколько будет...

Цитата ОТСЮДА.

Отредактировано Renegat23 (03/11/2008 12:28:18)

"-...ЭТО - Идея овцы, и выражается она в овечьих образах и формулировках.    - А эта Идея... Она, вообще говоря, гуманная?   - Гуманная. В понимании овцы.      - А в вашем понимании?       - Не знаю... " (С)

Re: 6-7-фигурный эндшпильный генератор готов

Вся тема смахивает на утку. Вот сел чел. за комп. Пару -тройку пивка и создал генератор 7-фигурной базы.
И ссылку на якобы генератор. Там никаких сведений о требованиях к железу. 6 фигур несколько лет генерили, причем на современном оборудовании. А про 200Тб на все семифигурники по мнению автора - это вот как раз не проблема. По мнению Саши из Виннипега и для 6-фигурников  нужно в первую очередь много быстрой оперативной памяти.  Вот с жесткими дисками ща особых проблем нет, тем более их можно распределить.  А пока у компов продвинутых 4 гига RAM .  А тут детский сад такой ))))
    Рад буду если ошибаюсь.

Отредактировано Сергей С. Питер (03/11/2008 13:35:14)

Сайт про покер и шахматы.
http://PokerChess.ru

Re: 6-7-фигурный эндшпильный генератор готов

>> Пару -тройку пивка и создал генератор 7-фигурной базы. >>

Вот тут Вы сильно ошибаетесь. Я делал генератор больше года, потом несколько месяцев ушло на тестирование. А потом программу - графический анализатор самой игры, правда, сделал намного быстрее.

Re: 6-7-фигурный эндшпильный генератор готов

>> Там никаких сведений о требованиях к железу >>
 
Тут тоже ошибаетесь. Запустите генератор, выберите тип эндшпиля, который хотите сгенерировать, и увидите требования к железу. Например, при генерации 6_KRBN-KQ будет около 800 МБ оперативной памяти, пару десятков гигабайт на жестком диске и сгенерируется за пару дней.

А общие требования к железу писать смысла нет, т.к. они зависят от типа генерируемого эндшпиля. На анализатор (RetroChess.exe) писать требования к железу смысла нет, т.к. он всегда ест около 30 МБ оперативной памяти.

Отредактировано Skipper_NORTON (03/11/2008 15:14:14)

Re: 6-7-фигурный эндшпильный генератор готов

>> А про 200Тб на все семифигурники по мнению автора - это вот как раз не проблема.  >>
 
А я не спорю что там будет 200 терабайт на все 7-фигурники, и такие винчестеры доступны будет может, только  через 5 лет.  Я  думаю, что может, у кого есть доступ к мощному серверу, и смогут начать создавать 7-фигурные прямо сейчас. Ведь на их создание уйдут долгие годы. Я всего лишь сделал высокооптимизированный генератор и анализатор к нему.  А 6-фигурные я генерирую у себя дома прямо сейчас, все же выгоднее чем качать по интернету 1 терабайт. За 1 гиг траффика - 20 долларов, и выкачивать 1 терабайт за 20 тысяч долларов смысла нет.

Отредактировано Skipper_NORTON (03/11/2008 15:16:19)

10

Re: 6-7-фигурный эндшпильный генератор готов

Ну не знаю, не знаю.. Пока желания не возникает заняться генерацией. Тем более что железо совсем никудышное у меня ../../extensions/custom_smilies_2/img1/smile

Re: 6-7-фигурный эндшпильный генератор готов

Вот уже конкретные цифры. 6 фигур ( без пешек!) требуют 800 мб. Спасибо.А ведь с пешками намного более проблем. Скока памяти нада? А для 7 фигур? С 6 фиг. ни у кого проблем нет. Никаких 200 тб для генератора не нужно. Ведь генерирование по частям происходит. По сочетаниям фигур. Тем более там большинство позиций типа 3 ферзя против коня и слона и не нужны никому. Практически интересные позиции все с пешками, ну в общем фантастические позиции можно не генерировать.
   Вот покажите сколько нужно памяти и примерно времени на актуальные эндшпиля типа ладейников с пешками и ферзевых. Пару десятков примеров.  Для 7 фигур!

Skipper_NORTON пишет:

>> Там никаких сведений о требованиях к железу >>
 
Тут тоже ошибаетесь. Запустите генератор, выберите тип эндшпиля, который хотите сгенерировать, и увидите требования к железу. Например, при генерации 6_KRBN-KQ будет около 800 МБ оперативной памяти, пару десятков гигабайт на жестком диске и сгенерируется за пару дней.

А общие требования к железу писать смысла нет, т.к. они зависят от типа генерируемого эндшпиля. На анализатор (RetroChess.exe) писать требования к железу смысла нет, т.к. он всегда ест около 30 МБ оперативной памяти.

Сайт про покер и шахматы.
http://PokerChess.ru

12

Re: 6-7-фигурный эндшпильный генератор готов

>> покажите сколько нужно памяти и примерно времени на актуальные эндшпиля типа ладейников с пешками и ферзевых. Пару десятков примеров.  Для 7 фигур
 
200 ТБ - имеется в виду все 7-фигурные - будут иметь размер, когда будут построены. То, что по частям генерация, это понятно.
 
6-фигурные требуют от 400 МБ оперативной памяти до 5-6 ГБ (пешечные). Генерируются несколько дней, что по силам каждому - и комп такой собрать и сгенерировать. Для 7-фигурных комп пока персональный такой собрать трудно, хотя я уже видел в продаже материнские платы, поддерживающие 32 ГБ оперативной памяти. В будущем такие компы будут и персональные, а пока что генерировать можно только на мощном сервере.  Генерация 7-фигурного - будет требовать от 20 ГБ оперативной памяти, до 140 ГБ оперативки (пешечные с любыми  >=2 одинаковыми фигурами). У 7-фигурных - типов эндшпилей, когда все фигуры уникальны очень мало, но будет очень небольшое количество типов эндшпилей, для которых потребуется более 200 ГБ оперативки.  Это только мощный сервер. Я же говорю, 7-фигурные пока сген-ть можно только если у кого есть доступ к мощному серверу. По примерам тут разбивать смысла не вижу, т.к. количество памяти зависит - от того, пешечный или нет и есть ли одинаковые фигуры в типе. Для каждого множества типов пойдет примерно одинаковое количество памяти. Например, слон и 2 пешки против ладьи и 1 пешки (7_KBPP-KRP) - потребует до 120 ГБ оперативы.
 
Можно на беспешечные и вместо 20 ГБ оперативы, поставить скажем 8 ГБ (такие материнки почти все уже), но тогда время генерации увеличится из-за использования свопа, может в 2 раза, может и больше. Не сравнивал. Я дома генерирую 6-фигурки, у меня 8 ГБ оперативы, хватает с избытком для любого. У меня 4-ядерный проц и 4 винчестера, так я вообще 4 генератора одновременно запустил.

Отредактировано Skipper_NORTON (03/11/2008 16:51:47)

13

Re: 6-7-фигурный эндшпильный генератор готов

В принципе, похожая ситуация была в 1998 году, когда вышел генератор Налимова для 5-фигурных, он требовал до 600 МБ оперативы, а на компах персональных тогда 32 МБ казалось уже много. По сути, программа будущего, если считать только персональные компы. А на мощных серверах 5-фигурные были сгенерированы уже в 90-е годы.

14

Re: 6-7-фигурный эндшпильный генератор готов

Времени нужно много на 7-фигурные. Я не знаю, какая производительность у нынешних мощных многопроцессорных компов.

15

Re: 6-7-фигурный эндшпильный генератор готов

Надо бы сайт получше и исходники открыть ../../extensions/custom_smilies_2/img1/smile
А  так кота  в мешке запускать...

На форум talkchess ходили?

Особо фанатичных поклонников Топалова теперь можно игнорировать, смотрите
http://kasparovchess.crestbook.com/view … hp?id=3536

Re: 6-7-фигурный эндшпильный генератор готов

Да... вот до чего доводит отсутствие безлимитного инета в дальней провинции.Глядишь не будет у местных кулибиных возможность скачать Рыбку3 - так так напишут генератор шахматных программ.
   Беспешечники 7 фигур редко встречаются. Не особо интересны.
А насчет свопа - дык не в 2 раза, а в 1000 раз замедлится скорость при недостатке быстрой памяти.Ненамного, но противно)))
   И ваще, по моему мнению, неплохо бы услышать мнение NS и прочих специалистов о перспективах 7-ми фигурников.

Сайт про покер и шахматы.
http://PokerChess.ru

17

Re: 6-7-фигурный эндшпильный генератор готов

когда же интересно 32-фигурники сгенерируют?) и скока надо оперативки на них?))) в порядке юмора

А если пенсионеры перейдут на стоклеточные? Смогу я их пятачить 1 к 5?

18

Re: 6-7-фигурный эндшпильный генератор готов

На talkchess пока не ходил, времени не было.  Надо будет зайти. Проект у меня, 50 тысяч строк кода, сложнейшие ухищрения для оптимизации по скорости генерации и уменьшения использования оперативной памяти, писал больше года. И чаще всего разобраться в чужом коде труднее чем написать с нуля свое.  Доказательство правильности алгоритмов - просто запустить генератор и сгенерировать несколько десятков разнотипных окончаний, с пешками и без, и до 7 фигур. Я так и сделал. Хотя 7-фигурные полностью не удается сгенерировать, пока у меня нет мощного компа, тестировал независимые модули по частям. А 6-фигурные - и после полной генерации оказываются правильными. Все точно - значит  и остальные типы  будут правильными, ведь принципы те же.  Алгоритмы  нечувствительны к перемене фигур на доске. Я и писал независимый модуль для тестирования, и сравнивал все количества позиций с количеством в базах Налимова (это до 6 фигур включительно), все совпадает.
 
В 1000 раз замедлится только если ОЧЕНЬ мало оперативы, в тысячи раз меньше чем надо.  Я сравнивал - если в 10 раз меньше чем надо, то в 10 раз и замедляется скорость генерации. Потому что при использовании свопа, если не хватает памяти, Windows держит в памяти самые используемые в каждый момент участки памяти, и случаи, когда промахивается (нужно заходить в своп) - очень редки.
 
32-фигурники сгенерируют только когда появится квантовый компьютер.  ../../extensions/custom_smilies_2/img1/smile  На обычном оперативки нужно будет порядка 10 в 40-й степени гигабайт.

19

Re: 6-7-фигурный эндшпильный генератор готов

Конечно, самый лучший вариант - это когда оперативной памяти хватает.  Такие компьютеры сейчас есть. Но если у шахматистов нету доступа к настолько мощным компам - то как вариант генерировать и на тех компах, где памяти не будет достаточного количества. В любом случае, чем раньше начнется создание таких, 7-фигурных, тем раньше и закончится.  А когда закончится, лет через 10, будут и винчестеры по 200 терабайт, и  мы поюзаем 7-фигурные на своем веку раньше... ../../extensions/custom_smilies_2/img1/smile

20

Re: 6-7-фигурный эндшпильный генератор готов

Skipper_NORTON пишет:

Проект у меня, 50 тысяч строк кода, сложнейшие ухищрения для оптимизации по скорости генерации и уменьшения использования оперативной памяти, писал больше года. И чаще всего разобраться в чужом коде труднее чем написать с нуля свое.

Да ладно, вы думаете, что нет авторы предыдущих эндшпильных баз или там авторы Рыбки, Шрёддера, Крафти, не разберутся в вашей программе? Осипов поди её может прям в дизассемблере читать, как и мой препод по программированию из универа.

Открывайте исходники ../../extensions/custom_smilies_2/img1/smile  Лучше оптимизация -> быстрее базы генерятся.
К тому же, у вас ещё есть года два для работы для программой -- до тех пор результаты хранить просто физически негде ../../extensions/custom_smilies_2/img1/smile

Отредактировано drowsy (04/11/2008 16:02:12)

Особо фанатичных поклонников Топалова теперь можно игнорировать, смотрите
http://kasparovchess.crestbook.com/view … hp?id=3536

21

Re: 6-7-фигурный эндшпильный генератор готов

drowsy пишет:

Осипов поди её может прям в дизассемблере читать

Ага, ему больше нечем заняться.  Зачем вам исходники то? Человек написал программу, кто хочет - юзает, кто не хочет - нет, а открывать ему чего или нет - его личное дело.

22

Re: 6-7-фигурный эндшпильный генератор готов

дуп пишет:

Человек написал программу, кто хочет - юзает, кто не хочет - нет, а открывать ему чего или нет - его личное дело.

Личное, но обсуждаемое.

Особо фанатичных поклонников Топалова теперь можно игнорировать, смотрите
http://kasparovchess.crestbook.com/view … hp?id=3536

23

Re: 6-7-фигурный эндшпильный генератор готов

Renegat23 пишет:

Да, пока винчестеры до 1 терабайта, такие не поставишь. Но лет через 5-10, будут винчестеры, скажем по 50-200 терабайт, вполне возможно, поставив несколько винчестеров.

Я думаю, что когда дело дойдёт до генерации 7-8 фигурных баз, народ будет покупать storage где-нибудь у Гугла на облаке, и там же на серверах приложений запускать генератор... Всяко дешевле выйдет, с учётом обслуживания, бэкапа и т.д.

Веруй, что есть в природе и кроме этого языки

24

Re: 6-7-фигурный эндшпильный генератор готов

WinPooh пишет:

Я думаю, что когда дело дойдёт до генерации 7-8 фигурных баз, народ будет покупать storage где-нибудь у Гугла на облаке, и там же на серверах приложений запускать генератор... Всяко дешевле выйдет, с учётом обслуживания, бэкапа и т.д.

да, видимо вы правы.

Особо фанатичных поклонников Топалова теперь можно игнорировать, смотрите
http://kasparovchess.crestbook.com/view … hp?id=3536

25

Re: 6-7-фигурный эндшпильный генератор готов

А такой вариант: анализировать отдельно взятую позицию?

26

Re: 6-7-фигурный эндшпильный генератор готов

Исходники в будущем можно и открыть, кому они действительно были бы полезны.  Но не в публичный же доступ каждому, кому доступен интернет.  Это же не алгоритмик какой-нибудь на 1000 строк кода, который за несколько дней пишется.  А проект, который пишется год.
   
Думаю, сервер с более чем 100 ГБ оперативной памяти найти можно (это для 7-фигурных с пешками). Это даже не суперкомпьютер.  Есть суперкомпы, 100000-процессорные системы, которые считают погоду и другие всякие вещи. Получить для любой 7-фигурной позиции наилучшую игру и самый точный анализ - гораздо более интересная задача, чем сделать скажем прогноз погоды на 2 дня дальше.

27

Re: 6-7-фигурный эндшпильный генератор готов

анализировать отдельно взятую позицию - чаще всего по процессорному времени будет ненамного меньше (всего на пару порядков) чем весь данный тип эндшпиля, ВСЕ позиции, с определенными фигурами.  Ну, конечно если в этой позиции не мат в 3 хода...  ../../extensions/custom_smilies_2/img1/smile   Это если вы хотите получить действительно полный исчерпывающий анализ, и доказать, за сколько ходов позиция выиграна и какие ходы к каким оценкам ведут.  Поэтому смысла просто нет - лучше изучить сразу все позиции в данном эндшпиле, и потом для любой позиции из многих миллиардов сможете получить лучшую игру.

28

Re: 6-7-фигурный эндшпильный генератор готов

анализ конкретной позиции выполняется freezer от shredder. по сути, он достраивает базу эндшпильную ../../extensions/custom_smilies_2/img1/smile

никакой тренер не научит тебя тому, что ты сам можешь почерпнуть в книгах (С) Петросян
http://shahmatiuga.livejournal.com

Re: 6-7-фигурный эндшпильный генератор готов

krey пишет:

анализ конкретной позиции выполняется freezer от shredder. по сути, он достраивает базу эндшпильную ../../extensions/custom_smilies_2/img1/smile

freezer нужны 6-фигурники или 5 достаточно?

30

Re: 6-7-фигурный эндшпильный генератор готов

freezer по идее вообще ничего не нужно ../../extensions/custom_smilies_2/img1/smile Главное грамотно выставить ограничения на позицию, и вперед - генерировать базу.

31

Re: 6-7-фигурный эндшпильный генератор готов

Skipper_NORTON пишет:

Получить для любой 7-фигурной позиции наилучшую игру и самый точный анализ - гораздо более интересная задача, чем сделать скажем прогноз погоды на 2 дня дальше.

Более интересная только шахматным фанатам, а погода интересна (и нужна, в отличие от шахмат) всем ../../extensions/custom_smilies_2/img1/smile

32

Re: 6-7-фигурный эндшпильный генератор готов

Skipper_NORTON пишет:

анализировать отдельно взятую позицию - чаще всего по процессорному времени будет ненамного меньше (всего на пару порядков) чем весь данный тип эндшпиля, ВСЕ позиции, с определенными фигурами.  Ну, конечно если в этой позиции не мат в 3 хода...  ../../extensions/custom_smilies_2/img1/smile   Это если вы хотите получить действительно полный исчерпывающий анализ, и доказать, за сколько ходов позиция выиграна и какие ходы к каким оценкам ведут.  Поэтому смысла просто нет - лучше изучить сразу все позиции в данном эндшпиле, и потом для любой позиции из многих миллиардов сможете получить лучшую игру.

Хорошо, рассмотрим некоторое семифигурное окончание, например


8/2R5/1p6/p2k2K1/P7/3r4/8/8


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

33

Re: 6-7-фигурный эндшпильный генератор готов

Отличная новость, Skipper_NORTON. Поздравляю с достижением - релизом генератора!

У меня несколько вопросов:
1. Какая метрика использовалась? DTM (Distance To Mate - Расстояние до мата)?
2. Учитывается ли взятие на проходе?
3. Учитывается ли рокировка?
4. Возможно ли получить таблицы для метрик DTZ и DTZ50?
5. Есть ли пример использования таблиц в виде исходника на С?
6. Есть ли поддержка произвольных размеров доски? ../../extensions/custom_smilies_2/img1/smile

Спасибо!

KCEC | EGTB Online | 3x3 Chess | 3x4 Chess
"Причем тут вообще ОФ? ОФ не влияет на выбор хода." - NS
"Уже неподтвердились как минимум два факта." - NS

34

Re: 6-7-фигурный эндшпильный генератор готов

а если сжать утилитой из tbgen ? datacomp.exe называется, она создает emd файл из сгенерированого файла налимова. работает в командной строке.

35

Re: 6-7-фигурный эндшпильный генератор готов

Kirr
 
Использовал метрику - расстояние до мата. Именно эта метрика самым точным способом показывает, насколько один ход лучше другого. А если использовать метрику, с расстоянием до перехода в младший эндшпиль - то не будет точно показывать. Там еще может быть 200 ходов до мата с очень сложной игрой и стремиться быстрее попасть в такой младший эндшпиль нет смысла. 
 
Взятие на проходе конечно же, учитывается. Все количества позиций с любыми оценками - будут совпадать с количествами в базах Налимова, только формат баз у меня другой.
 
Позиции с рокировками в базы окончаний не заносятся. Когда на доске меньше 8 фигур, то просто невероятно, что там будет возможность рокироваться. В базах Налимова, кстати, тоже такие позиции не заносятся, как я заметил.  Но поставить такую позицию на доску и играть с рокировкой, конечно, можно, просто в этом случае программа не сможет получить оценку из базы.
 
таблицы для метрик DTZ и DTZ50 получить тоже могу, но это не так быстро... Там много чего в движке менять придется. Но все же лучше, чем писать это с нуля  ../../extensions/custom_smilies_2/img1/smile  В любом случае, это будет альтернативный вариант баз, который будет не совсем точно отражать лучшие ходы. Самый правильный вариант, как писал выше - считать до мата. А правило 50 ходов - должно вообще по моему мнению распространяться только на людей, т.к. если человек не смог выиграть за много ходов, то он и в будущем не выиграет, только зря будет мучить соперника. Не думаю, что найдутся люди, которые выиграют позицию за 100-200 ходов при наилучшем сопротивлении. А если программа может выиграть, то зачем ограничивать ее? Именно поэтому раньше вводили много исключений из правила 50 ходов для типов эндшпилей, где человек все-таки, якобы смог бы выиграть.
 
пример использования таблиц в виде исходника на С  есть, но в интернете исходники в публичный доступ не выкладывал. Там я вместе с проектом выложил dll,  для доступа к моим таблицам.  Вводишь позицию в формате FEN, вызываешь  функцию из dll, и получаешь оценку позиции. Могу расширить возможности dll, и привести пример кода на C++, как использовать.
 
Поддержку произвольных размеров доски могу реализовать, но это тоже не за короткое время. Несколько месяцев, возможно, уйдет.

Отредактировано Skipper_NORTON (05/11/2008 16:17:38)

36

Re: 6-7-фигурный эндшпильный генератор готов

Mustitz
 
Вы привели пример исключительный в своем роде. Конечно, для такой позиции проще сделать расчет. Но таких позиций очень мало.
 
bankuss
 
Если сжать утилитой из tbgen, то уверен что сожмутся не хуже чем у Налимова. WinRAR, по крайней мере, мои базы сжал лучше чем у Налимова.  Но использовать чужие разработки как-то нехорошо, поэтому я написал свой собственный архиватор для баз, он сжимает-разжимает очень быстро, блоками по 10 килобайт, это гарантирует быстрый доступ к базам, но базы получились на 20 % больше по размеру, чем у Налимова, например, все 5-фигурные - у Налимова  7,1 GB, а у меня 8,8  GB. Архиватор у Налимова получился лучше.  Но  зато у меня программа очень хорошо оптимизирована по количеству используемой оперативной памяти, а также, по скорости генерации.

37

Re: 6-7-фигурный эндшпильный генератор готов

Архиватор, я так понял, писал не Налимов. Там совсем другой автор. Блоки там по 8192 судя по вызову из командной строки.

38

Re: 6-7-фигурный эндшпильный генератор готов

Один момент - WinRAR сожмет базы лучше чем у Налимова, если сжимать разжатые. Если сжимать базу уже после того как их сожмет моя программа, то конечно, сожмется хуже. Энтропия (мера беспорядка) растет от сжатия любым архиватором, следовательно каждое следущее сжатие уже сжатого будет менее эффективно.
 
Написать хороший архиватор, типа WinRAR - это надо становиться уже спецом в совершенно другой области - в алгоритмах по сжатию данных.  А я больше специалист по шахматным алгоритмам, чем по сжатию данных. Но тот архиватор, который я написал, с учетом того, что делал меньше 1 месяца - думаю тоже неплох.  ../../extensions/custom_smilies_2/img1/smile  Налимов, вообще архиватор для своих баз не писал, насколько мне известно, там этим занимался Andrew Kadatch. А я сделал все - и шахматную алгоритмику, и архиватор, и дизайн, и тестировал все сам, и никто не помогал мне.  В будущем еще хочу обычную программу шахматной игры вообще из любой позиции сделать.

39

Re: 6-7-фигурный эндшпильный генератор готов

В будущем еще хочу обычную программу шахматной игры вообще из любой позиции сделать.
А до сих пор что, шахматные программы не из любой позиции играть могут?

40

Re: 6-7-фигурный эндшпильный генератор готов

Skipper_NORTON пишет:

Mustitz
Вы привели пример исключительный в своем роде. Конечно, для такой позиции проще сделать расчет. Но таких позиций очень мало.

Почему таких позиций мало? Как по мне львиная часть практических семифигурных окончаний содержат пешки. Например, фигура + две пешки против фигуры и пешки. Почти ко всем окончаниям этой группы можно привести рассуждения, которые я привел выше.

41

Re: 6-7-фигурный эндшпильный генератор готов

ProstoTak
 
Во-первых, не из любой. Например, с 10 ферзями не поиграешь.  ../../extensions/custom_smilies_2/img1/smile  Во-вторых, я имел в виду, что пока моя программа играет только из позиций, которые есть в базе, а позже сделаю обычную шахматную программу.
 
Mustitz
 
Пешки содержат большая часть. Но именно таких - где быстро будет переход в 6-фигурный, и немного нужно считать - думаю, мало позиций.

42

Re: 6-7-фигурный эндшпильный генератор готов

Skipper_NORTON пишет:

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

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


5Q2/5p1k/6p1/5r2/6K1/8/7P/8


Это самая неприятная в расчете позиция. Считаем: белая пешка может занять пять полей, черные пешки соответственно пять и четыре. Итого 100 вариантов. Вместо того, чтобы учитывать всевозможное расположение пешек: 60*59*58 = 205 000 вариантов. С учетом того, что надо искать мат в случае превращения и т. п. верхняя оценка сложности окончания в два раза превышает пятифигурное окончание.

43

Re: 6-7-фигурный эндшпильный генератор готов

Самое главное здесь - добиться максимальной скорости генерации и минимума использования оперативной памяти.  Так можно добиться большого выигрыша по времени - сгенерировать на несколько лет быстрее, и по деньгам - найти менее дорогостоящий комп для генерации 7-фигурных баз.  Я очень много сделал для этой оптимизации, и сейчас появляются идеи, как еще лучше оптимизировать, но это пока в ближайшем будущем реализовать не получится, надо все хорошо обдумать.

44

Re: 6-7-фигурный эндшпильный генератор готов

Mustitz
 
Я понимаю, что вы хотите сказать. А если пешки превратятся в фигуры?  Мы можем получить из этой позиции множество 7-фигурных опять же, младших эндшпилей. А фигуры-то в будущем могут стать куда угодно. Придется считать все возможные позиции в будущем из данной позиции, игнорировать что-то здесь нельзя (даже если нам кажется что это плохой вариант), т.к. там могут быть всякие скрытые возможности. И это намного больше чем число позиций в 5-фигурнике, и даже чем в 6-фигурнике.  Ради одной этой позиции делать такой расчет смысла думаю, нет.  А так мы сгенерировали все сразу - и программа мгновенно, за доли секунды получит точную оценку для ЛЮБОЙ 7-фигурной позиции.  Вообще не нужно будет ничего считать, все будет рассчитано заранее.  А для вашего случая, думаю подойдет Freezer.  Я с ним не разбирался.

45

Re: 6-7-фигурный эндшпильный генератор готов

ну вот как 4 фигурку генерируешь ручным генератором - запускашь например KPKP - он начинает генерировать KNKN KBKB и тд. и только потом уже пишет сам KPKP. здесь так же?

46

Re: 6-7-фигурный эндшпильный генератор готов

Я это тоже понимаю. Только для генерации, например, базы ферзь с пешкой против ладьи с двумя пешками надо генерировать огромное количество промежуточных баз: два ферзя против ладьи и двух ферзей и т. п. С учетом вышесказанного время генерации общей семифигурной базы может быть очень велико. С другой стороны рассчитать конкретную 7-8-9 фигурную позицию не составит большого труда. Конечно, возможен вариант превращения пешки, но в этом случае я бы удовольствовался ответом: оценка неизвестна, игра сводится к такой-то позиции. Думаю, что еще один аналог freezer был бы полезным. Если у Вас нет желания развиваться в этом направлении, то я не могу иметь ничего против. Мое дело предложить ../../extensions/custom_smilies_2/img1/smile

47

Re: 6-7-фигурный эндшпильный генератор готов

bankuss
 
Так же. Иначе быть не может. Чтобы рассчитать все позиции в эндшпиле KPKP, надо знать будущее этих позиций. А в будущем пешки могут превратиться в фигуры. Следовательно, эндшпиль KQKP например, будет младшим для KPKP, т.е. он уже должен быть построен, чтобы построить KPKP.
 
Mustitz
>> С другой стороны рассчитать конкретную 7-8-9 фигурную позицию не составит большого труда.
 
Думаю будет трудоемко, уже 7-фигурную считать. Конечно, менее трудоемко, чем весь данный тип 7-фигурки, но ради одной позиции, будет нерациональное использование времени CPU.  Если вводить много ограничений, и сводить к ответу "оценка неизвестна, игра сводится к такой-то позиции", то такой вариант еще может и прокатит.
 
Что-нибудь типа freezer-a я  мог бы написать, все таки у меня много готовых алгоритмов, и менять придется меньше чем писать с нуля. Но это все равно довольно долго будет по времени.

48

Re: 6-7-фигурный эндшпильный генератор готов

Skipper. По какому принципу файлы многофигурных эндшпилей на слайсы разбивал (чтобы по кусочкам в оперативную память грузить)? И как справился с задачей загрузки младших эндшпилей в память,чтобы ретроалгоритм стартануть? Такие вот, технические вопросы :-)

49

Re: 6-7-фигурный эндшпильный генератор готов

Спасибо за ответы.

Skipper_NORTON пишет:

Использовал метрику - расстояние до мата. Именно эта метрика самым точным способом показывает, насколько один ход лучше другого. А если использовать метрику, с расстоянием до перехода в младший эндшпиль - то не будет точно показывать. Там еще может быть 200 ходов до мата с очень сложной игрой и стремиться быстрее попасть в такой младший эндшпиль нет смысла.

таблицы для метрик DTZ и DTZ50 получить тоже могу, но это не так быстро... Там много чего в движке менять придется. Но все же лучше, чем писать это с нуля  ../../extensions/custom_smilies_2/img1/smile  В любом случае, это будет альтернативный вариант баз, который будет не совсем точно отражать лучшие ходы. Самый правильный вариант, как писал выше - считать до мата. А правило 50 ходов - должно вообще по моему мнению распространяться только на людей, т.к. если человек не смог выиграть за много ходов, то он и в будущем не выиграет, только зря будет мучить соперника. Не думаю, что найдутся люди, которые выиграют позицию за 100-200 ходов при наилучшем сопротивлении. А если программа может выиграть, то зачем ограничивать ее? Именно поэтому раньше вводили много исключений из правила 50 ходов для типов эндшпилей, где человек все-таки, якобы смог бы выиграть.

Демонстрируете узкий взгляд на проблему. "лучше" (в "насколько один ход лучше другого") бывают разные. Всё-таки немало любителей шахмат интересуются прежде всего шахматными окончаниями, а не окончаниями в варианте игры без правила 50 ходов.

Можно убрать правило 50 ходов, можно и пешкам разрешить ходить назад. В обоих случаях получится некая настольная игра, но это будут не те шахматы в которые играют на турнирах, на чемпионатах мира по шахматам. А многих, включая меня, интересуют именно те шахматы.

Метрика DTZ50 меня интересует также потому, что таблицы с ней должны получиться компактнее.

Skipper_NORTON пишет:

пример использования таблиц в виде исходника на С  есть, но в интернете исходники в публичный доступ не выкладывал. Там я вместе с проектом выложил dll,  для доступа к моим таблицам.  Вводишь позицию в формате FEN, вызываешь  функцию из dll, и получаешь оценку позиции. Могу расширить возможности dll, и привести пример кода на C++, как использовать.

Да, хотелось бы увидеть пример использования в виде исходника на C.
 

Skipper_NORTON пишет:

Поддержку произвольных размеров доски могу реализовать, но это тоже не за короткое время. Несколько месяцев, возможно, уйдет.

Это не сильно важная фича, но если появится, я буду рад!

KCEC | EGTB Online | 3x3 Chess | 3x4 Chess
"Причем тут вообще ОФ? ОФ не влияет на выбор хода." - NS
"Уже неподтвердились как минимум два факта." - NS

50

Re: 6-7-фигурный эндшпильный генератор готов

Skipper_NORTON пишет:

Один момент - WinRAR сожмет базы лучше чем у Налимова, если сжимать разжатые. Если сжимать базу уже после того как их сожмет моя программа, то конечно, сожмется хуже. Энтропия (мера беспорядка) растет от сжатия любым архиватором, следовательно каждое следущее сжатие уже сжатого будет менее эффективно.
 
Написать хороший архиватор, типа WinRAR - это надо становиться уже спецом в совершенно другой области - в алгоритмах по сжатию данных.  А я больше специалист по шахматным алгоритмам, чем по сжатию данных. Но тот архиватор, который я написал, с учетом того, что делал меньше 1 месяца - думаю тоже неплох.  ../../extensions/custom_smilies_2/img1/smile  Налимов, вообще архиватор для своих баз не писал, насколько мне известно, там этим занимался Andrew Kadatch. А я сделал все - и шахматную алгоритмику, и архиватор, и дизайн, и тестировал все сам, и никто не помогал мне.  В будущем еще хочу обычную программу шахматной игры вообще из любой позиции сделать.

Существуют хорошие библиотеки, например, LZMA. Не обязательно всё самому писать. Старндартную библиотеку С вы ведь не брезгуете использовать? Если всё делать самому, то начать тогда нужно с ОС и компилятора.

KCEC | EGTB Online | 3x3 Chess | 3x4 Chess
"Причем тут вообще ОФ? ОФ не влияет на выбор хода." - NS
"Уже неподтвердились как минимум два факта." - NS