Работа с базами Налимова из Дельфи

Тема в разделе "Машинное отделение", создана пользователем NS, 9 июн 2006.

  1. TopicStarter Overlay

    NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Как минимум четыре программы в СНГ написаны на Делфи.
    Я готов (после выхода тактической версии ГО) реализовать работу с ними, и выложить исходники.
  2. Booot Учаcтник

    • Участник
    Рег.:
    05.06.2006
    Сообщения:
    140
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    У меня они уже есть (с исходниками). Я сгенерил 4 и5 фигурные базы для использования в своем движке, но без сжатия размеры у них такие, что 4-мя ограничился пока. Можем объединить усилия и создать толковые собственные базы с нормальным доступом.
  3. TopicStarter Overlay

    NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Описание форматов где-нибудь можно взять?
    На форумах говорили о хороших алгоритмах сжатия Эндшпельных баз.
    Надо поискать ссылки.
  4. Booot Учаcтник

    • Участник
    Рег.:
    05.06.2006
    Сообщения:
    140
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Форматы хранения данных (индексную схему) реализовать несложно. По поводу сжатия - да. Идеи нужны. Но тут для начала надо определиться что мы собственно храним? Есть ранговые базы (хранит расстояние до мата или перехода в младший эндшпиль). И безранговые (хранит только признак "выиграно-проиграно-ничья"). И там и там есть свои достоинства и недостатки. Сейчас у меня используются оба типа баз. Безранговые в переборе, ранговые в корне. Но места жрет много :)
  5. TopicStarter Overlay

    NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
  6. Booot Учаcтник

    • Участник
    Рег.:
    05.06.2006
    Сообщения:
    140
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Они используют только битовые базы. Хорошо, конечно, но есть у меня мнение что нифига они не смогут выиграть выигранное окончание по этим базам :)
  7. Booot Учаcтник

    • Участник
    Рег.:
    05.06.2006
    Сообщения:
    140
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    К примеру 2 слона против коня. Там ВСЕ позиции выиграные! А пойди найди цепочку в 60 ходов к выигрышу....
  8. TopicStarter Overlay

    NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Конечно нужно сжимать :)
    Ранговые нужны в любом случае, но можно хранить не все, а только с кратным рангом.
  9. Booot Учаcтник

    • Участник
    Рег.:
    05.06.2006
    Сообщения:
    140
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    У меня тоже есть такая идея: округлить ранговую базу (для лучшего сжатия). Если исхитрицца, тодля хранения такого рода баз хватит и половинки байта (в несжатом виде) от 0 до 15 должно хватать значений.
  10. TopicStarter Overlay

    NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    То есть в переборе смотрим только признак позиции (безранговые), по факту перехода в данный эндшпиль - уже без перебора (или очень короткий перебор в случае если храним не все позиции) - смотрим по сильно сжатым ранговым базам...
  11. Booot Учаcтник

    • Участник
    Рег.:
    05.06.2006
    Сообщения:
    140
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    можно вообще обойтись одними сжатыми ранговыми - в память их просто при загрузке в безранговом виде заливать на лету
  12. TopicStarter Overlay

    NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    А не будет ничьих по правилу 50-ти ходов? Если только безранговые...
  13. TopicStarter Overlay

    NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Вообще есть метод - если в позиции есть пешки, то хранить безранговые, и дополнительная оценка по степени продвинутости пешки.
  14. Booot Учаcтник

    • Участник
    Рег.:
    05.06.2006
    Сообщения:
    140
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Я имел в виду ранговые :). Из них всегда можно безранговые сделать быстро
  15. Booot Учаcтник

    • Участник
    Рег.:
    05.06.2006
    Сообщения:
    140
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    В некоторых эндшпилях пешки движутся крайне редко - перебором можно не достать
  16. TopicStarter Overlay

    NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Это KQPKQ - там сработает повторение позиции - всё равно на безранговых будет в 50 ходов укладываться (до движения пешки) Хотя надо провести тесты.
  17. TopicStarter Overlay

    NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Ладно, до завтра - завтра рано вставать.
  18. TopicStarter Overlay

    NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    С хранением кратных позиций (например с четным рангом) - возникают большие проблемы :)
    Ведь саму позицию хранить нереально (и Хеш тоже), и надо вычислять место в файле.
    И вопрос - если использовать не налимова, то в турнирах будут подключать библиотеки?
    Для каждого движка в турнире будут качать его, специфическую EGTB?
  19. Booot Учаcтник

    • Участник
    Рег.:
    05.06.2006
    Сообщения:
    140
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Ну да! Индексная схема такова, что хранить выборочные позиции крайне сложно. Зато можно , к примеру, округлить ранги до ближайшей 5, сжать их (там прилично будет, думаю, ведь расброс значений резко сократится) и использовать. В турнирах базы обчно используют (по крайней мере на WBEC Booot играет со своими базами). Чем больше движков будут использовать единый формат баз тем охотнее стало быть этот формат будет использоваться тестерами.
    Вчера увидел результаты первого тестирования новой версии и удивился: типа слабее старой. Но потом обнаружил, что в большей половине партий движок просто просрочил время. Глюк обнаружился в коде управления временем: к 30 ходу все время использовалось, а дальше движок героически ронял флаг :). Какую бы методику тестирования выбрать, чтоб такие глюки не пропускать?
  20. TopicStarter Overlay

    NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    У меня движок в принципе не может просрочить время... Только с Ponderт + очень коротким контролем, и то только из-за того, что ponderhit/stop ловлю только один раз в секунду... :)
    У меня стоит аварийка на
    ОставшеесяВремяДоКонтроля*3/(количествоОставшихсяХодов+2)
    То есть больше этого программа на ход не тратит... (ну еще за вычетом для надёжности еще пары секунд)
  21. TopicStarter Overlay

    NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Хотя может немного другая формула - я несколько раз её менял. Нужно в тексте посмотреть.
  22. Booot Учаcтник

    • Участник
    Рег.:
    05.06.2006
    Сообщения:
    140
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    У меня баг именно при контроле N минут на всю партию. Контроль достаточно редко используется, а вот все ж таки вылез баг :)
  23. TopicStarter Overlay

    NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Я в разных версиях меняю. Считаю, при контроле на всю партию - что осталось 60 ходов, иногда переделываю на 40.
    Сила от этого не меняется, меняется только рапределение времени в течении партии.
    Просрочки не появляются :)
    Тестирую обычно на минуте, иногда с меньшим контролем на всю партию.
    Добавлено. 60 ходов - независимо от номера текущего хода.
    Добавлено Ну и обязательно провожу тест с пондером.
  24. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.120
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Я обычно считаю, что осталось 40 ходов до конца партии, в любом случае (даже при контроле N минут на M ходов). Если в корне произошёл fail high или fail low с изменением первого хода, то имеет смысл добавить немного времени до завершения итерации с новым окном. Ну и, конечно, какой-то фиксированный лимит, за который не залезать ни в коем случае...
  25. TopicStarter Overlay

    NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    N на M, с добавкой я считаю реально оставшееся до контроля количество ходов.
    Аварийка устроена таким образом, что программа просрочить время не может, но на последний перед контролем ход может потратить всё время (есно без просрочки).
    Оставшееся количество Ходов - До контроля.
    Оставшееся время : ТекущиеПоказанияЧасов+(ОставшеесяКоличествоХодов-1)*ДобавкаВремениНаХоде. Это "оставшееся время" используется для вычисления минимального времени на обдумывание. На аварийку расчет немного другой.
    ЗЫ. Проверил - на контроле 10 секунд на партию, без Пондера - просрочек у версии 0.06a нет.
  26. bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    я тут взялся сгенерить налимова 5 фигур - засада полная :) некоторые эндшпили в лет идут -40 минут и готово, а некоторые по 36 часов "думают" :) комп правда не супер - 3 Ггц. П4 прескот (на работе юзаю-на выходные включаю).
  27. Booot Учаcтник

    • Участник
    Рег.:
    05.06.2006
    Сообщения:
    140
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    "В лоб" действительно долго :). Тут надо индексную схему минимальную по возможности выбрать и как-то кешировать ранги, чтоб бестолку из ненужных позиций ходы не генерить.
  28. псевдоним Зарегистрирован

    Рег.:
    29.11.2006
    Сообщения:
    3
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    люди, скиньте базу налимова!!! плиз
  29. псевдоним Зарегистрирован

    Рег.:
    29.11.2006
    Сообщения:
    3
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    где можно скачать в инет? мне трафика не жалко. скажите где? пожалуйста, люди добрые
  30. псевдоним Зарегистрирован

    Рег.:
    29.11.2006
    Сообщения:
    3
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    аська 246632457
  31. TopicStarter Overlay

    NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
  32. Kirr Администратор

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    1.208
    Симпатии:
    22
    Репутация:
    8
    Оффлайн
    Там давно уже нет части шестифигурных. Шестифигурные проще всего скачать из p2p сети eD2K/KAD, с помощью программы eMule, по ссылкам c этой странички: http://kd.lab.nig.ac.jp/chess/tablebases-online/

Поделиться этой страницей