Проект SmarThink: вопросы, ответы, обсуждение

Discussion in 'Машинное отделение' started by Сергей Марков, 11 Aug 2006.

  1. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    Здесь можно задавать вопросы и обсуждать алгоритмы/перспективы.
     
  2. Kirr
    Оффлайн

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

    Репутация:
    8
    Главные вопросы: Есть ли какие-нибудь определённые планы на будущее? Когда можно ожидать новую версию?

    В настоящий момент Smarthink 1.0 занимает 13-ю позицию в нашем однопроцессорном рейтинг листе. Хотелось бы увидеть возвращение в первую десятку, лучше в пятёрку. :)

    Второй вопрос - как вы организуете тестирование и оценку улучшений. Блиц-матчи или наборы тестовых позиций? Тесты с предыдущей версией или с набором оппонентов? С какими движками, книжками и т.д. Спасибо! :)
     
  3. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    Я сейчас работаю над тестированием принципиально нового метода. У меня есть версия, которая немножко сильнее 1.0, пунктов на 15.
    По моим оценкам, новый метод мощет весьма существенно усилить программу. Проблема, конечно, как всегда в катастрофической нехватке времени :(

    Для тестирования используются разные способы: главным образом, матчи против наборов движков. Есть несколько таких наборов. Прежде всего, в них входят, конечно, сильнейшие движки: Rybka, Shredder, Fritz, Fruit, Hiarcs, Junior.
    Тесты используются сравнительно редко.
    Сейчас есть еще подстройка по БД: когда для большой БД партий для каждой позиции производится перебор с глубиной 4-5 полуходов и затем выбранный движком ход сравнивается с ходом в партии. Этот подход был в свое время предложен командой Deep Blue.
     
  4. Fruit
    Оффлайн

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

    Репутация:
    3
    А что это даёт? Ведь, в партии всегда найдутся ошибки!
     
  5. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    Ну и что. Ведь используется множество партий. Причем рассматриваются ходы выигравшей стороны в партиях, выигранные игроками с ELO >2600. Если мы предположим, что ошибок в этих партиях меньше, чем не ошибочных ходов, то на множестве партий стремящемся к бесконечности наш метод будет работать. Посколько мы предполагаем, что количество ошибочных ходов существенно меньше, чем не ошибочных, то на сравнительно большом множестве партий этот подход должен работать.
     
  6. Fruit
    Оффлайн

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

    Репутация:
    3
    Таким образом, версия считается сильнее, если совпало большее число ходов. Ясно.

    "когда для большой БД партий для каждой позиции производится перебор с глубиной 4-5 полуходов и затем выбранный движком ход сравнивается с ходом в партии"

    А как это осуществить? Как потом быстро узнать сколько ходов сопало?
     
  7. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    Только "ручками". У меня написана специальная процедура, которая парсит pgn-файл и для каждого хода запускает процедуру сравнения. А лог пишется в файл.
     
  8. NS
    Оффлайн

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

    Репутация:
    3
    Согласно этой статистики можно автоматом настраивать оценочную функцию...
    А не просто смотреть процент соответсвий :)
     
  9. WildCat
    Оффлайн

    WildCat Коршунов Игорь Staff Member

    Репутация:
    0
    Я все-таки хотел бы получить ответы на свои вопросы:
    Что нового в SmarThink 1.0?
    Что есть специфического в SmarThink (чего нет у других)?

    Я сейчас работаю над тестированием принципиально нового метода.
    Это секретный метод?
     
  10. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    Так и делается. Методом спирально-покоординатного спуска.
     
  11. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    Пока что он насколько секретный, насколько и непроверенный. Когда появятся первые обнадеживающие результаты, я опубликую общее описание подхода.
     
  12. NS
    Оффлайн

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

    Репутация:
    3
    А каким образом минимизируется количество параметров в оценочной функции?
     
  13. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    - BM-extension;
    - новая модель оценки атаки на короля;
    - новые psq;
    - использование SEE для оценки проходных;
    - "скользящие" оценки в зависимости от стадии игры;
    - новая оценка мобильности;
    - полный ретьюнинг компонентов оценочной функции;
    - усовершенствование в контроле траекторий атаки в середине игры;
    - UCI-интерфейс;
    - новый механизм распределения времени;
    - использование данных о текущих угрозах для улучшения упорядочения ходов;
    - незначительные изменения в расширениях поиска;
    - добавлены шахи в ФВ;
    - исправлен ряд ошибок и внесено мн-во мелких изменений;
    - произведена оптимизация кода.

    Вот. Может быть что-то и забыл...
     
  14. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    Я сам выбираю набор параметров. Каждый параметр сейчас подстраивается последовательно в цикле.
     
  15. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    Таких техник на самом деле в SmarThink очень много. Иногда новации незначительны, иногда существенны. Иногда я просто не знаю, что это новации. Из-за того, что авторы держат большую часть своих методов в секрете, многие из методов переоткрываются по 2-3 раза. Например, SmarThink имеет эвристику, определяющую может ли конь "перехватить" проходную пешку. Позже я узнал, что подобный метод используется, например, в Gandalf. Аналогично, например, SmarThink увеличивает время обдумывания не только в случае падения оценки, но и в случае ее роста. Наблюдая за игрой движков можно заметить, что так же делает Ruffian. SmarThink активно углубляет/сокращает перебор, и некоторые из таких продлений/сокращений более чем неклассические. SmarThink использует R=2/1 при переборе с пустым ходом. SmarThink использует неклассическую схему Pruning/razoring. SmarThink использует fail-hard клон PVS, тоже несколько неклассический. SmarThink имеет множество эндшпильных эвристик, касающихся как оценки, так и перебора. Многие из этих эвристик не реализованы в известных движках с открытыми исходниками. SmarThink основан на BITBOARDS, но не используется повернутые таблицы. Вместо этого используются битовые векторы и сложные неклассические BITBOARD-операции. В принципе, многие методы SmarThink оказали существенное влияние на Glaurung (в свое время мы менялись с Ромстадом исходниками и он воспроизвел у себя многие мои методы).
     
  16. Fruit
    Оффлайн

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

    Репутация:
    3
    И где можно скачать эту замечательную процедуру? :)
     
  17. WildCat
    Оффлайн

    WildCat Коршунов Игорь Staff Member

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

    Например,
    - новая модель оценки атаки на короля;
    Ведь интересно, что это такое.
    И т.д.

    - усовершенствование в контроле траекторий атаки в середине игры;
    Это вообще непонятно что такое.
     
  18. Fruit
    Оффлайн

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

    Репутация:
    3
    А, ведь, и дебютную книгу можно подобрать с помощью этой статистики. Скажем, взять партии, игранные специалистами в каком-либо варианте, в другом, в третьем.....А затем, те варианты, где у проги наибольшее количество совпадений, включать в дебютную книгу....Правда, и сил многовато уйдёт :)
     
  19. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    Так по сути на этом же основано дебютное самообучение. Движок собирает статистику выигрышей/проигрышей/ничьих по сыгранным вариантам и эта статистика потом используется при выборе варианта.
     
  20. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    В смысле? Каждый автор для своей программы сам ее пишет :)
    Вы имеете в виду, нельзя ли эту процедуру включить в релиз движка? Можно-то можно, только зачем? С движком производится "заводская" подстройка, улучшить ее в "домашних условиях" если и можно, то только на доли процента.
     
  21. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    Ну... Модель атаки на короля это набор алгоритмов при помощи которых движок оценивает атаку :) А что конкретно интересует в этих алгоритмах?

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

    Вы - Коршунов, или ник просто совпадение? :)
    Вы занимаетесь шахматным программированием?
     
  22. NS
    Оффлайн

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

    Репутация:
    3
    Кошунов - это Игорь Коршунов. Автор Каллисто и WildCat. :)
    А что за стандартная схема с R=2/1?
    Мне казалось что Стандартная схема с R=3...
    (у меня R=3,2,1 - но обычно 3)
     
  23. NS
    Оффлайн

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

    Репутация:
    3
    Про траектории... Ну вкратце тут идея такова, что для некоторых бесперспективных "тихих" ходов в дереве перебора глубина перебора уменьшается. Важно чтобы в число "сокращенных" ходов не попали те, которые относятся к перемещению фигур по траекториям атаки.

    Это в рамках LMR ?
     
  24. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    Я и говорю, что у меня нестандартная :)
    Просто в SmarThink есть другие агрессивные сокращения перебора и R=3 в нем не катит.
     
  25. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Сергей, а вы не могли бы сгенерировать версию для Линукс с march=amd64? Я бы с удовольствием потестировал.
     
  26. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    В рамках OBP :) :) :)

    Ordering-based pruning. Специфическая разновидность Forward pruning. Во Fruit это History pruning.
     
  27. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    Постараюсь сделать на неделе.
     
  28. NS
    Оффлайн

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

    Репутация:
    3
    OBP, LMR, Forward, History...
    Как не называй, смысл примерно одинаков :)
     
  29. NS
    Оффлайн

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

    Репутация:
    3
    Если Прунинг - полное отсечение ветви, а Редукшн - сокращенный перебор на ветви - то правильней этот метод называть Редукшн...
     
  30. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Я буду в отъезде до четверга. Мой e-mail anton на kulchitsky.org. Спасибо! Жду с нетерпением такой возможности! Могу и помочь скомпилировать тоже.
     
  31. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    Пожалуй.
    Смысл в том, что несколько первых "тихих" ходов в "тихих" узлах смотрятся на полную глубину. А остальные на усеченную. Если усеченный перебор возвращает >alpha, то перебираем этот ход на полную глубину.
     
  32. NS
    Оффлайн

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

    Репутация:
    3
    Да я знаю. В Анечке Редукшн есть начиная с версии 0.06 (то есть версии Которой нет и трех месяцев с момента начала разработки), и в версии 0.07 дает прибавку... Более 100 пунктов!!! (нестандартная схема) Сила версии 0.07 меньше 2400 Только из-за слишком простой позиционной оценки.
     
  33. WildCat
    Оффлайн

    WildCat Коршунов Игорь Staff Member

    Репутация:
    0
    Ну... Модель атаки на короля это набор алгоритмов при помощи которых движок оценивает атаку smile А что конкретно интересует в этих алгоритмах?

    Вот эти алгоритмы и интересуют. От того что ты сказал, что они новые понятнее не становится. Хотелось бы о них узнать побольше. У тебя еще много таких интересных пунктов было. Хотелось бы чтоб ты их иногда расписывал в порядке важности. И самому понятнее немного станет.

    Мой ник не не случайность. Я это и есть я.

    http://www.kasparovchess.crestbook.com/viewtopic.php?id=564 - Спец. топик для обсуждения и тестирования различных техник шахматного программирования. Я там выкладываю свои результаты по некоторым техникам (в данный момент тестирую важность бонуса ладьи на 7-ой линии). Было бы хорошо, если бы и ты свои результаты туда выкладывал.
     
  34. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

    Репутация:
    0
    Раньше все было описано в терминах "тропизма". Теперь учитываются атаки фигур на поля соседние с королем и на пешечное прикрытие короля, причем в т.ч. и "сквозные" атаки. Отдельно есть бонус за атаку фигуры на "зону" короля противника + отдельно оцениваются сами поля (стоят ли на них фигуры, защищены ли они фигурами). Бонус за атаку масштабируется в соответствие с количеством дефектов в пешечном щите. Оценка дефектов практически изменений не претерпела по сравнению с 0.17.

    Можно.
    Кстати, хинт на 10-15 пунктов. Попробуй: ладья/ферзь на 8-ой ;)
     
  35. WildCat
    Оффлайн

    WildCat Коршунов Игорь Staff Member

    Репутация:
    0
    хинт на 10-15 пунктов
    У меня если всегда добавлять страшно падает сила (-144 после 128 игр).
    В нормальной версии у меня этот бонус только если есть вражеский король на 8-ой.
    Версия вообще без бонуса играет пока очень неплохо.

    Попробуй: ладья/ферзь на 8-ой.
    Помогает?