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

Тема в разделе "Машинное отделение", создана пользователем Skipper_NORTON, 3 ноя 2008.

Статус темы:
Закрыта.
  1. Skipper_NORTON
    Оффлайн

    Skipper_NORTON Старожил

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


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

    Тема закрыта по просьбе автора, в связи с выходом новой версии.
    Дальнейшее обсуждение здесь: http://kasparovchess.crestbook.com/viewtopic.php?id=5339
     
  2. Umpire
    Оффлайн

    Umpire баннер

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

    Skipper_NORTON Старожил

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

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

    ProstoTak Старожил

    Репутация:
    1
    Ну а на каком железе и за какое время можно получить все 7-ми фигурные окончания? И сколько места нужно для их хранения?
     
  5. Renegat23
    Оффлайн

    Renegat23 баннер

    Репутация:
    0
    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-фигурные базы.

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

    Цитата ОТСЮДА.
     
  6. Сергей С. Питер
    Оффлайн

    Сергей С. Питер Старожил

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

    Skipper_NORTON Старожил

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

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

    Skipper_NORTON Старожил

    Репутация:
    0
    >> Там никаких сведений о требованиях к железу >>

    Тут тоже ошибаетесь. Запустите генератор, выберите тип эндшпиля, который хотите сгенерировать, и увидите требования к железу.

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

    Skipper_NORTON Старожил

    Репутация:
    0
    >> А про 200Тб на все семифигурники по мнению автора - это вот как раз не проблема. >>

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

    ProstoTak Старожил

    Репутация:
    1
    Ну не знаю, не знаю.. Пока желания не возникает заняться генерацией. Тем более что железо совсем никудышное у меня :)
     
  11. Сергей С. Питер
    Оффлайн

    Сергей С. Питер Старожил

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

    Skipper_NORTON Старожил

    Репутация:
    0
    >> покажите сколько нужно памяти и примерно времени на актуальные эндшпиля типа ладейников с пешками и ферзевых. Пару десятков примеров. Для 7 фигур

    200 ТБ - имеется в виду все 7-фигурные - будут иметь размер, когда будут построены. То, что по частям генерация, это понятно.
     
  13. Skipper_NORTON
    Оффлайн

    Skipper_NORTON Старожил

    Репутация:
    0
    По сути, программа будущего, если считать только персональные компы. А на мощных серверах 5-фигурные были сгенерированы уже в 90-е годы.
     
  14. Skipper_NORTON
    Оффлайн

    Skipper_NORTON Старожил

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

    drowsy Учаcтник

    Репутация:
    0
    Надо бы сайт получше и исходники открыть :)
    А так кота в мешке запускать...

    На форум talkchess ходили?
     
  16. Сергей С. Питер
    Оффлайн

    Сергей С. Питер Старожил

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

    dan77790 Учаcтник

    Репутация:
    0
    когда же интересно 32-фигурники сгенерируют?) и скока надо оперативки на них?))) в порядке юмора
     
  18. Skipper_NORTON
    Оффлайн

    Skipper_NORTON Старожил

    Репутация:
    0
    На talkchess пока не ходил, времени не было. Надо будет зайти. Проект у меня, 50 тысяч строк кода, сложнейшие ухищрения для оптимизации по скорости генерации и уменьшения использования оперативной памяти, писал больше года. И чаще всего разобраться в чужом коде труднее чем написать с нуля свое. Доказательство правильности алгоритмов - просто запустить генератор и сгенерировать несколько десятков разнотипных окончаний, с пешками и без, и до 7 фигур. Я так и сделал. Хотя 7-фигурные полностью не удается сгенерировать, пока у меня нет мощного компа, тестировал независимые модули по частям. А 6-фигурные - и после полной генерации оказываются правильными. Все точно - значит и остальные типы будут правильными, ведь принципы те же. Алгоритмы нечувствительны к перемене фигур на доске. Я и писал независимый модуль для тестирования, и сравнивал все количества позиций с количеством в базах Налимова (это до 6 фигур включительно), все совпадает.
     
  19. Skipper_NORTON
    Оффлайн

    Skipper_NORTON Старожил

    Репутация:
    0
    В любом случае, чем раньше начнется создание таких, 7-фигурных, тем раньше и закончится. А когда закончится, лет через 10, будут и винчестеры по 200 терабайт, и мы поюзаем 7-фигурные на своем веку раньше... :)
     
  20. drowsy
    Оффлайн

    drowsy Учаcтник

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

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

    дуп Учаcтник

    Репутация:
    0
    Ага, ему больше нечем заняться. Зачем вам исходники то? Человек написал программу, кто хочет - юзает, кто не хочет - нет, а открывать ему чего или нет - его личное дело.
     
  22. drowsy
    Оффлайн

    drowsy Учаcтник

    Репутация:
    0
    Личное, но обсуждаемое.
     
  23. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

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

    drowsy Учаcтник

    Репутация:
    0
    да, видимо вы правы.
     
  25. Mustitz
    Оффлайн

    Mustitz баннер

    Репутация:
    36
    А такой вариант: анализировать отдельно взятую позицию?
     
  26. Skipper_NORTON
    Оффлайн

    Skipper_NORTON Старожил

    Репутация:
    0
    Исходники в будущем можно и открыть, кому они действительно были бы полезны. Но не в публичный же доступ каждому, кому доступен интернет. Это же не алгоритмик какой-нибудь на 1000 строк кода, который за несколько дней пишется. А проект, который пишется год.
     
  27. Skipper_NORTON
    Оффлайн

    Skipper_NORTON Старожил

    Репутация:
    0
    анализировать отдельно взятую позицию - чаще всего по процессорному времени будет ненамного меньше (всего на пару порядков) чем весь данный тип эндшпиля, ВСЕ позиции, с определенными фигурами. Ну, конечно если в этой позиции не мат в 3 хода... :) Это если вы хотите получить действительно полный исчерпывающий анализ, и доказать, за сколько ходов позиция выиграна и какие ходы к каким оценкам ведут. Поэтому смысла просто нет - лучше изучить сразу все позиции в данном эндшпиле, и потом для любой позиции из многих миллиардов сможете получить лучшую игру.
     
  28. krey
    Оффлайн

    krey Михаил Кройтор Команда форума Команда форума

    Репутация:
    1
    анализ конкретной позиции выполняется freezer от shredder. по сути, он достраивает базу эндшпильную :)
     
  29. Тяжеловес
    Оффлайн

    Тяжеловес Сергей

    Репутация:
    0
    freezer нужны 6-фигурники или 5 достаточно?
     
  30. vitamix
    Оффлайн

    vitamix Команда форума

    Репутация:
    0
    freezer по идее вообще ничего не нужно :) Главное грамотно выставить ограничения на позицию, и вперед - генерировать базу.
     
  31. Хайдук
    Оффлайн

    Хайдук Учаcтник

    Репутация:
    0
    Более интересная только шахматным фанатам, а погода интересна (и нужна, в отличие от шахмат) всем :)
     
  32. Mustitz
    Оффлайн

    Mustitz баннер

    Репутация:
    36
    Хорошо, рассмотрим некоторое семифигурное окончание, например



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

    Kirr Команда форума Команда форума

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

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

    Спасибо!
     
  34. bankuss
    Оффлайн

    bankuss Александр баннер

    Репутация:
    6
    а если сжать утилитой из tbgen ? datacomp.exe называется, она создает emd файл из сгенерированого файла налимова. работает в командной строке.
     
  35. Skipper_NORTON
    Оффлайн

    Skipper_NORTON Старожил

    Репутация:
    0
    Kirr

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

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

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

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

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

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