Rybka explained?

Тема в разделе "Машинное отделение", создана пользователем WinPooh, 2 ноя 2006.

  1. WinPooh
    Оффлайн

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

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

    http://mysite.verizon.net/vzesz4a6/id7.html

    На CCC или WBF были комментарии к этой статье самого Васика. Кое-что указано верно, а кое-что - нет - сказал он :)
     
  2. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Захотелось свою ОФ переписать с нуля :)
     
  3. Binary
    Оффлайн

    Binary Учаcтник

    Репутация:
    0
    1) неплохо эту статейку увидеть на русском языке
    2) после беглого просмотра я понял что рыбка не зря рассматривает так мало позиций в секунду :) ,
    а проводит сложнейший анализ , где ее фигуры окажутся через 3 хода , но почему именно через 3?!
    3) вообще я и до этого догадывался , что сила рыбки в оценочной ф-ции , другое дело , что не всякий рискнет
    бросится за написание возможно лучшей , но чрезвычайно гем... т.е. сложной ф-ции , за что Васику респект!
     
  4. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Хотелось бы только понять откуда такая уверенность. Например:
    Rybka does not use look-up tables in its evaluation function.
    Насколько можно доверять таким заявлениям?
     
  5. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Я думаю, что важно что фигура может сделать за один ход. За два хода не так важно. За три это уже маловажно. За четыре это настолько незначительно, что не стоит даже и вычислять.
     
  6. bankuss
    Оффлайн

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

    Репутация:
    6
    да действительно... а что же за таблицы в exe файле? аж на 4.8 мега
     
  7. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Может быть это защита от пиратов? Защита Фрукта весит несколько мегабайт.
     
  8. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
  9. bankuss
    Оффлайн

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

    Репутация:
    6
    WildCat разве рыбка защищена? если бы была защита, то свежая версия не появлялась бы с такой скоростью в файлообменниках. а тут раз и готово... уже выкачивают...
     
  10. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Так в файлообменниках есть все шахматные проги, как бы они не были защищены :)
     
  11. Binary
    Оффлайн

    Binary Учаcтник

    Репутация:
    0
    Васик говорил , что специально не будет делать защиту рыбки , поскольку это бесполезно ,
    как он считает ... я с ним согласен :D
     
  12. Позиционер
    Оффлайн

    Позиционер Зарегистрирован

    Репутация:
    0
    Васик защищает не доступ к проге, а доступ к коду.
     
  13. NS
    Оффлайн

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

    Репутация:
    3
    Угу, а Фабиен и Hiarcs делают защиту - и получается что защита не Бесполезна!!!
    Из Васика, по моему мнению - просто никудышный маркетолог. И упущенная им прибыль превышает все допустимые пределы...
     
  14. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Он умный - теперь под теплым и небесплатным крылом дядей с MBA из Люкасофта :)
     
  15. Mustitz
    Оффлайн

    Mustitz баннер

    Репутация:
    37
    Зависит от типа позиции. В остро-тактической позиции нет времени заниматься маневрами. А в спокойной позиции это становится все более значительным, не говоря уже об эндшпиле. Я не знаю как гросмейстеры, но лично я при размышлениях часто просчитываю хода только одной стороны, отвечая только на угрозы, размены. Это помогает глубже вникнуть в позицию.

    Ну... вообще-то большой проблемы глянуть нету, было бы желание :) Рискну предположить, что возможно это база миттельшпильных/эндшпильных позиций и планов. Люди накопили тут большое количество знаний, которые, насколько мне известно, почти не используются шахматными программами.
     
  16. NS
    Оффлайн

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

    Репутация:
    3
    ИМХО конечно это не база планов, а база оценок.
    Статичные Таблицы оценок в зависимости пешечной структуры и материала.
    План программе не нужен, план нужен человеку чтоб не сбиваться в расчете вариантов.

    А план программы строится из максимизации оценки при помощи переборных алгоритмов.
    Хотя может храниться статистика опровергающих ходов для разных классов позиций - но это тоже никак не "миттельшпильные планы"

    Знания накопленные людьми - шахматными программами используются, способ перебора вариантов очень близок к человеческому, а для оценки используются и знания, и базы партий, и статистика накопленная человечеством.
     
  17. Mustitz
    Оффлайн

    Mustitz баннер

    Репутация:
    37
    Вот тут не согласен. Оценка позиции это результат расчета вариантов. Глянув на позицию я не могу ее оценить —- надо в нее погрузиться. Оценка позиции не может быть выведена из общих соображений, для этого нужен анализ. Перебов вариантов. Только тогда можно сказать: у белых лучше, у черных лучше и т.д. Но глянув на знакомую позицию я могу сразу выделить серии взаимосвязаных ходов, которые имеют смысл все вместе. Например, если это карлсбладский вариант, то сразу напрашивается a4, b4, b5. Или другой план, f3, e4. Плюс хода, которые подготавливают это тоже типичны для данной позиции. Но ходить f3 без e4 бессмысленно. Поэтому если после прведения f3 в течении 3-4 нет угрозы e4, то вариант можно отсекать.

    Имхо, сила рыбки не в том, что она считает много вариантов, и не в точной оценке позиции, а в том, что она знает, что считать.

    Вот тут, как мне кажется, все наоборот. Как может быть способ перебора вариантов близок к человеческому, если количество рассметриваемыз вариантов отличается на порядки? Человеческая оценка позиции абсолютно другой природы, чем компьютерная. Компьютерная оценка это некоторое число, которое затем используется в минимаксе + альфа-бета. У компьютера нет оценки "неясно", компьютерная оценка позиции это число, учитывающее факторы позиции. Человеческая оценка это тоже учет факторов позиции, но направленый не на то, чтобы определить лучше или хуже (это скажут варианты), а для того, чтобы определить выбор продолжений (серий ходов), которые надо рассматривать. Особенно в блиц, я часто не считаю: ход белых, ход черных, ход белых... А часто мысленно делаю серию ходов за белых и серию ходов за черных.Оцениваю возникающую позицию в плане того, как играть дальше. Для человека более перспективна та позиция, где они видит как играть.
     
  18. NS
    Оффлайн

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

    Репутация:
    3
    Если бы у человека была оценка "неясно" - он бы не смог сделать ход, человек в любом случае сравнивает две неясные позиции, и решает какая из них предпочтительней.

    Рыбка знает что считать - ровно настолько-же, что и другие программы. Есно из-за лучшей оценки она считает именно те варианты, но специфику переборных алгоритмов шахматных программ наверно всё-таки долго объяснять в этом топике.
    Уж поверьте мнению шахматных программистов :)

    И оценка позиции - это не результат расчета вариантов, а оценка полученная при помощи ОФ, и спущенная по дереву перебора в корень.

    Для программы тоже более перспективна та позиция, в которой она знает как играть - видит конкретные позиционные признаки, и способы их реализации (видит пути увеличения оценки), человек в переборе поступает так-же.
     
  19. Сергей Марков
    Оффлайн

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

    Репутация:
    0
    Ерунда :) Таблицы у Васика — это фигурные паттерны. Есть только два вопроса: как он их строил, и как именно он их использует...
     
  20. Chemer
    Оффлайн

    Chemer Максим

    Репутация:
    0
    Друзья, чтобы не гадать, давайте попробуем дизасемблировать.
     
  21. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Вся статья ерунда? Или ты иммешь в виду что-то конкретное?
    Откуда инфа про фигурные паттерны? Я помню их еще предлогали программеры Отелло. А их ОФ действительно зверские :)
    Сергей, поделись, если что знаешь.
     
  22. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Так автор статьи это и делал. Но по дизассемблеру понять идеалогию проги практически нереально.
     
  23. NS
    Оффлайн

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

    Репутация:
    3
    C отелло проще. С самого начала предлагалось оценивать комбинации в углу и на краю доски...
    В шахматах что-то подобное предлагал Ботвинник...
    Битые определенными фигурами поля, и сами Фигуры на доске...
    Например Черный король на g8, пешка на h7, Белый слон бьет на h7, Ферзь на d2 или e1, Конь на f3, поля h5 и g5 не биты соперником, между ферзем и полем h5 кроме коня f3 ничего нет :))))
     
  24. NS
    Оффлайн

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

    Репутация:
    3
    И пешка на h7 защищенна только королем :)
    Кроме оценки можно получить потенциально опровергающий ход C:h7.
     
  25. Сергей Марков
    Оффлайн

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

    Репутация:
    0
    Для меня лично сейчас основным вопросом является собственно извлечение паттернов на основе анализа БД. То, что мы сейчас имеем в оценочных функциях, это те же паттерны, только которые выделялись и оценивались вручную. Извлечение паттернов — операция весьма трудоемкая. Ну, посудите сами, при подходе "в лоб" нам придется перебрать все подмножества элементов паттерна. Тут есть несколько решений — например, анализ только паттернов включающих не более N элементов.
    Задача может быть переформулирована как поиск К-плотных подграфов в графе.
    Если есть желание — можем попробовать решить задачу вместе, особенно учитывая тот факт, что я сейчас очень загружен на основной работе :((

    p.s. Про паттерны я сделал вывод из бесед с Васиком по почте + тем фактом, что я заметил, какие именно постинги он удалил в ССС :)))
     
  26. NS
    Оффлайн

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

    Репутация:
    3
    Коммерческая программа не позволяет избавиться от основной работы? :)

    Надо знать с каких паттернов начать - я предлагаю с оценки Пешечной структуры в центре (сами пешки с линий "с" по "f", и признак их изолированности/проходная/слабая - для пешек на "f" и "с")+ наличие Фигур (Слоны - белопольный и чернопольный отдельно и Признак двух слонов) и защищенность короля (коэффициент, зависящий от пешечной структуры и материала на доске)


    У Рыбки как раз Беда с оценкой пешечных структур на некоторых классах позиций, например
    r1bq1rk1/ppp2pbp/2np1np1/3Pp3/2P1P3/2N2N2/PP2BPPP/R1BQ1RK1 b - - 0 8
    Классическую старушку, и планы подрыва центра в ней - Рыбка не понимает.
     
  27. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Можешь рассказать всем, о чем говорили с Васиком?
     
  28. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    +1 Я заметил на партии одной :)
     
  29. bankuss
    Оффлайн

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

    Репутация:
    6
    самое главное это быстрый поиск в БД этого паттерна.низкий nps в дебюте\миттельшпиле у рыбки говорит о том, что операция эта дается не легко :) для пешечных "форм" можно попробовать использовать хэш - хранить в базе хэш пешечной позиции(паттерна). а вот с фигурами все сложней получается.
     
  30. Сергей Марков
    Оффлайн

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

    Репутация:
    0
    Да ну, конечно нет. На шахматах я едва заработал 1000 EUR за все время. А на работе, будучи программистом под j2ee/ejb + руководителем группы я получаю в месяц в 1.5 раза больше :)

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

    В Рыбке все сейчас более чем примитивно.
     
  31. Сергей Марков
    Оффлайн

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

    Репутация:
    0
    В Рыбке, например, ФВ использует оценочную функцию только на первом уровне.
    Поскольку в искомых паттернах будет не очень много элементов, можно создавать индексы по каждой группе элементов паттерна.
     
  32. Сергей Марков
    Оффлайн

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

    Репутация:
    0
    Ну вкратце, да. Говорил о замене PSQ на оценку, в зависимости от пешечной структуры и фланга, на котором находится король. Васик сказал, что я в целом угадал, только именно короля не стоит брать, т.к. по его мнению король принципиально не отличается от других фигур :) Еще сказал: постарайся особенно модель не усложнять, потому что то, что сейчас есть в Рыбка — это весьма примитивно. Ну и напоследок добавил, что с нетерпением ждет моих результатов :)

    В CCC он удалил, например, пост, где говорил, что у него в программе есть множество паттернов: конь на таком-то поле, пешка на таком-то... :)) Этот пост никто не заметил раньше, потому что он был написан до того, как Рыбка стала известной, а потом его Васик стер.
     
  33. NS
    Оффлайн

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

    Репутация:
    3
    С продажами как-то совсем всё печально...
    Если нужны простые, тогда и думать нечего. Считаем пешку фигурой, и смотрим все
    однофигурный сочетания, Двух-фигурные, Если хватит сил, то трехфигурные.
    Если есть существенная зависимость оценки от сочетания фигур, то добавляем в базу.
    Для доступа - есно страничный механизм.
    Можно поля битые конкретной фигурой конкретного цвета тоже считать отдельной фигурой.

    Для настройки ОФ - все остальные признаки тупо отключаем.
    Я только не знаю ни одного мат. метода для решения этой задачи...
    У нас в ОФ получается слишком много параметров.

    Если считать чисто на 1ply, без продлений и ФВ - то получаем
    Для каждой позиции - сдаланный ход гроссом, и линейную функцию оценки после каждого хода.
    Нам нужно максимизировать количество совпадений ходов.
    наверно такую задачу можно решить.
     
  34. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Я так понял, что у тебя много новых идей есть. Может будешь о них подробно рассказывать в ветке про Смарфи?
     
  35. NS
    Оффлайн

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

    Репутация:
    3
    + к предыдущему посту. Наличие пешки определенного цвета на определенном поле я считаю что нужно добавлять (то есть она конечно и так есть, но нужна с признаком проходная/изолированная/слабая).
    И еще признак для паттернов - просто наличие одной фигуры определенного цвета на доске (белопольный и чернопольный слоны - разные фигуры)