сила Рыбки

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

  1. TopicStarter Overlay

    Binary Учаcтник

    • Участник
    Рег.:
    27.08.2006
    Сообщения:
    135
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Мытищи
    Оффлайн
    попытался вспомнить все известные мне версии от вполне логичных до весьма и весьма спорных...
    если у кого есть другие версии , пишите
  2. NS Нефёдов Сергей

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

    Binary Учаcтник

    • Участник
    Рег.:
    27.08.2006
    Сообщения:
    135
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Мытищи
    Оффлайн
    а какой правильный?
    (тем более , что его только Васик и несколько человек знают)
  4. NS Нефёдов Сергей

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

    Binary Учаcтник

    • Участник
    Рег.:
    27.08.2006
    Сообщения:
    135
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Мытищи
    Оффлайн
    а что 2-ой вариант не подходит ?! (просто таблицы оценок в зависимости от пешечной структуры и положения фигур полностью не влезло)
  6. NS Нефёдов Сергей

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

    Binary Учаcтник

    • Участник
    Рег.:
    27.08.2006
    Сообщения:
    135
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Мытищи
    Оффлайн
    тогда выбирай последний
  8. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    А Насчет того что Васик хороший шахматист - это кто придумал такую легенду?
    Кто придумал что ЭЛО 2300 это феноменально для шахматного программиста???
    Насчет программиста... Придумал новый метод, и хороший программист это не одно и то-же.
  9. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    2.201
    Симпатии:
    64
    Репутация:
    3
    Оффлайн
    Он хроший шахматный программист, такую идею придумал и реализовал.
  10. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    2.201
    Симпатии:
    64
    Репутация:
    3
    Оффлайн
    Для пониманя силы рыбки, нужно разобраться, почему так близка оценка Тоги/Фрута и этой самой рыбки. Допустим, что это не клон. Почему оценка так похожа?

    Вот мнение Kirr:

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

    Kirr: Использование рыбкой битбордов подтверждает Винсент Дипевен, который её дизассемблировал и подробно изучал. Также на битборды указывает существенный прирост скорости который рыбка получает на 64-битных процессорах, в отличие от фрукта (тоги). Клон рыбка или не клон я не знаю, но близость оценочной функции рыбки и фрукта слишком велика для совпадения, по-моему.

    **********************************************************************************
    А вот NS:

    NS: Я начинаю понимать почему "Рыбья оценка" так близка к оценке Тоги/Фрукта

    Wildcat:... но никому не скажу?

    NS: У Васика не было собственного сильного движка, поэтому для получения Хода (для исключения нестабильных позиций) и оценки - он скорей всего использовал Тогу (до тех пор пока его движок не стал сильнейшим).
  11. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Все знают что Рыбка основана на Битбордах. (это показывает хотя-бы разница в быстродействии 32 и 64 битных версий)
    И оценка Рыбки на порядок лучше оценки Фрукта/Тоги...
    Простым портированием не улучшить оценку, и тем более не получить больше сотни пунктов прибавки.
  12. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    2.201
    Симпатии:
    64
    Репутация:
    3
    Оффлайн
    Так, я о том же. Ты, очевидно, прав.....Где-то Kirr писал (не могу найти), что больше всего на Фрукт/Тогу похожи более поздние версии Рыбки? Получается, что Васик подбирал подходящую для оценки признаков прогу, а потом, в конце концов, остановился на Фрукте/Тоге? Или как?
  13. NS Нефёдов Сергей

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

    А насчет плагиата самой ОФ - в последнее время я в это не верю. Это бессмысленно.
  14. Vlad_Imir Новичок

    • Новичок
    Рег.:
    12.11.2006
    Сообщения:
    77
    Симпатии:
    284
    Репутация:
    20
    Адрес:
    Россия
    Оффлайн
    А в чем сила Fruit (Toga)? На первый взгляд ничего особенного. History Pruning? Отказ использования hash, если узел PV?
    Согласитесь, что код не сложнее Crafty, или ряда других программ. Так в чем? Код открыт.

    У рыбки, на мой взгляд, оценочная функция гораздо лучше чеи у остальных программ.
    К примеру http://www.rybkachess.com/index.php?auswahl=Evans+gambit (GAME 2 SHREDDER 9 - RYBKA Beta)
    11 ход черных O-O допускающий выигрыш качества (Bh6). Если оценочная ф-ия простая, то никакие ухищрения не позволят программе сделать этот ход, ни futility pruning, ни reductions, ни extensions, ни Null move, сколько не пробуй схем сортировки не поможет. С моего уровня понимания шахмат - это зевок, тем более фигуры у черных не развиты, где ж компенсация? А выходит, что есть компенсация.
  15. NS Нефёдов Сергей

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

    • Новичок
    Рег.:
    12.11.2006
    Сообщения:
    77
    Симпатии:
    284
    Репутация:
    20
    Адрес:
    Россия
    Оффлайн
    Futility pruning у Тоги кажется примитивным, не учитывает материальный баланс, в частности.
    static /* const */ int FutilityMargin1 = 100;
    static /* const */ int FutilityMargin2 = 300;
    И это все. Хоть полна доска фигур, хоть эндшпиль. Не берется во внимание при этом (может и не надо?) - может это киллер move, может та же угроза мата (после Null move probing), может в этой ветке были (на предыдущих ply) расширения итп.
    Не pv, не шах, не взятие, не расширение и вперед.

    Много программ использую fractional extensions. А здесь, вроде опять слишком просто - extension если шах, единственный ответ на шах, угроза мата (после null move), recupture.
    А играет сильно. Лучше всех других с открытым кодом. Quiescence search лучше чем в Crafty, но в том же Arasane не хуже и в ряде других.

    Было бы интересно узнать мнения специалистов, что ж в Тоге особенного такого, что она так сильна
  17. NS Нефёдов Сергей

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

    LMR в Тоге достаточно хорош (сама идея сбора статистики на двух массивах - значительно лучше чем на одном, при одном массиве у часто встречающихся ходов получается завышенная статистика, а у редких заниженная). Футилити прост, но в отличии от Футилити в Крафти прибавляет силы программе.
    А какая может быть зависимость границ в зависимости от стадии партии???
    В Футилити делается такая граница, чтоб нельзя было отыграть без взятия (вот и получается одна пешка), в Экстендед - чтоб нельзя было отыграть вилкой (вот и получаются три пешки), так что не должны границы зависить от стадии партии.
  18. WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Фабьен очень четко представляет взаимодействие различных частей программы. Т.е. все очень жутко сбалансированно.
    А вообще у меня давно есть идея разложить Фрукт на кусочки и посмотреть какой кусочек сколько добавляет. Но если сила действительно в балансе, то трудно будет получить адекватное понимание разбиением на части.
  19. NS Нефёдов Сергей

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

    • Новичок
    Рег.:
    12.11.2006
    Сообщения:
    77
    Симпатии:
    284
    Репутация:
    20
    Адрес:
    Россия
    Оффлайн
    <<А какая может быть зависимость границ в зависимости от стадии партии???
    Например, в пешечном эндшпиле в каком-то узле дерева, скажем у черных перевес в 4 пешки, но белые пешки на 6 горизонтали и готовы достичь последней горизонтали (или они проходные или возможен прорыв). В этом случае лучше вообще отменить futility prunung (при ходе белых, если даже вроде ход дает предварительную оценку значительно ниже alpha), либо увеличить margin до 9 пешек (ферзя).
    То есть если принять, что оценочная функция не идеальна и не может оценить угрозу прорыва пешек (или просто бег пешек в ферзи), то лучше либо увеличивать margine при этой угрозе либо вообще отменить futility pruning. Чем меньше фигур на доске -тем более весом становится этот фактор
  21. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    В пешечном эндшпиле глубина может зашкаливать за 30 ply, и использование Футилити можно считать за редкое сокрашение глубины на 1 ply, но такое изменение глубины в пешечнике не влияет на силу.
    Футилити с Границей в 9 пешек не нужно, так как не сократит дерево.

    И не совсем понятно, как при Depth=1 программа может увидеть провод пешки в Ферзи, даже если не будет отсечения по Футилити.
  22. Vlad_Imir Новичок

    • Новичок
    Рег.:
    12.11.2006
    Сообщения:
    77
    Симпатии:
    284
    Репутация:
    20
    Адрес:
    Россия
    Оффлайн
    8/8/8/1p5r/p1p1k1pN/P2pBpP1/1P1K1P2/8 b

    В этой позиции вымгрывает b4 (Или Rxh4). В своей программе я проверяю возможность прорыва пешек (до вызова futility, если прорыв возможен futility отменяется), если этого не делать, то после жертвы пешки и качества futility обрезает расчет, так как у белых слишком плохо и нечего дальше считать. Конечно, при более глубоком расчете она найдет жертвы, но время затратит больше.
    При проверке - 274,633 узлов, без проверки 1,132,354. Правда, здесь более быстрое решение получается не за счет увеличени margin, а за счет проверки на возможность прорыва.

    Я согласен с WildCat насчет жуткой балансировки. Я пробовал механически перенести futility pruning из Toga. Стало хуже. У меня лучше считает при большем марджине, и при его увеличении при уменьшении числа фигур на доске. Кажется, что при таком маленьком margine программа должна (?) хуже видеть комбинации, так как при жертве материала futility срезает эти ветки - value + margine становится гораздо хуже alpha, так что-ж их продолжать. В реальности, конечно, Toga прекрасно видит комбинации, несмотря на такой крутой futility pruning - но почему - я не смог понять.
  23. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    А у тебя какая программа?
    У меня на этой позиции Бренчинг фактор равен полтора (Null Move при таком материале у меня не используется) Решение находит за одну секунду, Футилити ни капельки не мешает.
    Футилити и Экстендед включено -
    Находит решение при depth=11, 281 тысяча позиций.
    Футилити у меня похож на Тогу, но немного другой.
    А увеличивать дистанцию с одной/трех пешек не имеет смысла, будет намного меньше резать, и Футилити абсолютно честен (вообще лишнего не отрезает), какую комбинации из-за него может пропустить, если после нетактического хода (и как мы поднимем пешку на нетактическом ходе???) противник в ФВ сразу ответит пустым? А тактические все смотрятся.
  24. WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Какой же вред может быть от футилити? Только если мы отказываемся снять фигуру, ценность которой намного превосходит материал. Такое бывает редко. К тому же отсрочка только на один ply.
    Если ОФ может давать большие бонусы, то можно увеличить margin на величину этого бонуса.
  25. Vlad_Imir Новичок

    • Новичок
    Рег.:
    12.11.2006
    Сообщения:
    77
    Симпатии:
    284
    Репутация:
    20
    Адрес:
    Россия
    Оффлайн
    <<А у тебя какая программа
    М... ну, не особенно хорошая ... моя.
    У меня конкретно для этой позиции при depth=9 находит (правда я в Quiescent search pv не отображаю, то есть точно не знаю на сколько он дополнительно углубляет).
    У меня не движок как таковой а программа написанная на VC c пользовательким интерфейсом. Есть как двумерная графика так и 3D на OpenGL. Отдельный модуль для решения задач.
    Для пешечного эндшпиля модуль отдельный. Есть методы для оценки возможности прохода пешек в ферзи. Не только правило квадрата, конечно, а с учетом своих и чужих пешек и битых полей (пешками и королями). Иногда это позволяет оценивать позицию до того как пешка прошла в ферзи, но в уверенности, что пройдет :).
    Так, вроде все методы использую. Если в ветке было много extensions я вызываю QuiescenSEE. - то есть возвращаю оценку + лучший SEE из всех взятий. Если в ветке мало расширений (углублений) вызываю обычный QS.
    Использую bitboard генератор ходов (с перспективой на 64 процессоры :))
  26. NS Нефёдов Сергей

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

    А глубина - у меня может быть больше из-за LMR, мне лень считать сколько без него должно получиться полуходов :)
  27. Vlad_Imir Новичок

    • Новичок
    Рег.:
    12.11.2006
    Сообщения:
    77
    Симпатии:
    284
    Репутация:
    20
    Адрес:
    Россия
    Оффлайн
    Да, много.
  28. WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    А у меня глубина 13 (около 0.2 сек). Т.к. отсекается все что только можно.
  29. NS Нефёдов Сергей

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

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