ОФ Стрелки

Discussion in 'Машинное отделение' started by WildCat, 12 Oct 2007.

  1. WildCat
    Оффлайн

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

    Репутация:
    0
    Здесь обсуждаем ОФ Стрелки.

    Вот из чего она состоит:

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

    Короче, Стрелка ужасно простой движок. Если не считать того, что все коэфициенты (особенно матрицы коэфициентов) выглядят довольно жутко. И вся силушка видимо в их очень удачном балансе.
     
  2. NS
    Оффлайн

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

    Репутация:
    3
    Что-то мне это напоминает...
     
  3. WildCat
    Оффлайн

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

    Репутация:
    0
    Что же?
     
  4. syrdon
    Оффлайн

    syrdon Учаcтник

    Репутация:
    0
    По чем пешка?

    Только не отвечайте "100 сантипешек".
     
  5. Fruit
    Оффлайн

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

    Репутация:
    3
    1/3 часть сантиконей:)
     
  6. syrdon
    Оффлайн

    syrdon Учаcтник

    Репутация:
    0
    Т.е. супер конь стоит 300 пешек? Где такие кони?
     
  7. NS
    Оффлайн

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

    Репутация:
    3
    Скифи. Похожий подход - минимальная ОФ с хорошими коэффициентами, простые переборные алгоритмы.
     
  8. WildCat
    Оффлайн

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

    Репутация:
    0
    Да у тебя просто мания величия. :D
     
  9. Fruit
    Оффлайн

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

    Репутация:
    3
    300 сантипешек!!:)
     
  10. NS
    Оффлайн

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

    Репутация:
    3
    Она самая. :p

    Просто моя теория подтверждается - чем брать кучу признаков с весами "от балды", лучше взять минимум признаков и хорошо рассчитать веса.
     
  11. WildCat
    Оффлайн

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

    Репутация:
    0
    Если одна пешка стоит 1/3 сантиконей, то 100/3 пешек стоит один конь, т.е. примерно где-то 33 пешки. Вроде как-то так.
     
  12. WildCat
    Оффлайн

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

    Репутация:
    0
    На самом деле, у Стрелки ОФ на порядки сложнее, чем у наших шашечных программ. :p
     
  13. NS
    Оффлайн

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

    Репутация:
    3
    Это потому что шахматы сложнее - вот и ОФ сложнее. Она проще чем большинство шахматных ОФ.
    Так же как и у меня проще большинства шашечных ОФ.

    Я попробую корреляцию (у меня теперь есть огромная база шашечных позиций, и свой сильный движок при помощи которого можно получить оценки) - попытаюсь посчитать ОФ параметров так на 1000... Если сила заметно вырастет - значит возможно авторы сильнейших движков именно с её помощью настраивают ОФ.
     
  14. WildCat
    Оффлайн

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

    Репутация:
    0
    Сделай специальную ветку и рассказывай все подробно, т.к. это должно быть интересно.
     
  15. NS
    Оффлайн

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

    Репутация:
    3
    Я пока письмо отправил. У меня пара недель уйдет на получение оценок. До этого еще нужно написать парсер pdn и получить набор позиций.

    Ветка вроде есть, или она только для расчета ОФ при помощи тестовых матчей?
     
  16. WildCat
    Оффлайн

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

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

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

    Репутация:
    0
    Значения материала: (1, 3, 3, 5, 10, 0) * 3399 / 32.
     
  18. Orlov
    Оффлайн

    Orlov Учаcтник

    Репутация:
    0
    Пешка 106, конь и слон по 318, ладья 531, ферзь 1062. А почему просто не записать в виде констант? К чему эти вычисления?
     
  19. WildCat
    Оффлайн

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

    Репутация:
    0
    Видимо автору так удобнее.
     
  20. WildCat
    Оффлайн

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

    Репутация:
    0
    Упс! Все не так просто, как казалось.
    В Стрелке нет фиксированных материальных весов!

    Все считается по формуле:
    Материал = БазовыйМатериал * 3299 * (ЗначимостьДебютныхПризнаков[стадия] + ЗначимостьЭндшпильныхПризнаков[стадия]) / 8192;

    БазовыйМатериал - это классика 1, 3, 3, 5, 10.
    стадия развития партии определяется по количеству оставшихся на доске фигур (всего 24 стадии).
    Я предположил (не глядя в код), что ЗначимостьДебютныхПризнаков[стадия] + ЗначимостьЭндшпильныхПризнаков[стадия] всегда в сумме дают 256.
    На самом деле нет!

    Например, в самом начале стоимость пешки равна 24 (!!!). На некоторых стадиях достигает 145. И в самом конце (пешечнике) - 100.

    Очень интересный подход.
     
  21. NS
    Оффлайн

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

    Репутация:
    3
    То есть соотношение весов между фигурами/пешками от стадии партии не зависит?
     
  22. WildCat
    Оффлайн

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

    Репутация:
    0
    Соотношение всегда постоянно, но есть еще и бонус за материальное соотношение.
     
  23. Counter
    Оффлайн

    Counter Учаcтник

    Репутация:
    0
    А преимущество двух слонов есть?
     
  24. Сергей С. Питер
    Оффлайн

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

    Репутация:
    11
    Как, интересно, в пешечнике стоимость пешки может быть 100 ( или 1 ) ? Ведь лишняя пешка там в большинстве случаев победа. У Рыбки забавная оценка стоимости фигур в дебюте. Если снять пешку у одной из сторон, то оценка почти не изменится ( без пешки и легче играть ). Отсутствие фигуры означает небольшой перевес типа 1,5 , даже ладью можно снять оценка изменится отнюдь не на классические 5, а гораздо меньше. Точную цифру не помню, но она любого удивит! Хотя без чистой ладьи в дебюте оченнка должна быть более 5, это же чистая победа?!!?)))
     
  25. Booot
    Оффлайн

    Booot Учаcтник

    Репутация:
    0
    Интересная идея (это я про разную стоимость пешки в разной стадии партии). У меня у самого были мысли реализовать это (правда в эндшпиле). Например в ферзевом эндшпиле количество лишних пешек может не быть столь значимым, как в пешечном. Сколько партий видел, где сильная проходная в ферзевом эндшпиле выигрывала против одной, а то и двух лишних (но не проходных) пешек противника. Посему вполне логично в таком эндшпиле снизить стоимость пешки (хоть до 24) - все равно позиционные факторы типа оценки проходной могут быть важнее.
     
  26. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    C другой стороны, в окончании обычно очень велика стоимость последней пешки. Очень часто с её исчезновением с доски сторона теряет шансы на выигрыш или ничью.
     
  27. NS
    Оффлайн

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

    Репутация:
    3
    Случаи когда у одной из сторон не осталось пешек наверно нужно разбирать отдельно...
     
  28. варяг
    Оффлайн

    варяг Учаcтник

    Репутация:
    0
    Учитывается мобильность всех фигур? Если да, то у ладьи смотрят только мобильность по горизонтали или по вертикалям тоже?
     
  29. WildCat
    Оффлайн

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

    Репутация:
    0
    Такого отдельного признака нет. Но есть таблица бонусов за материальное соотношение - такие бонусы должны быть там.
    Учитываются все возможные ходы. И горизонтальные и вертикальные - одинаково.
    Я думаю здесь помогают бонусы за материальное соотношение. Никакой специальной обработки таких случаев вроде нет.
    Ты не понял. Это не стоимость пешки разная, а вся ОФ домножается на определенные коэфициенты. Мне мотивы такого не совсем очевидны.
    Это как раз из-за домнажения в дебюте всей ОФ на малые коэфициенты.
     
  30. Booot
    Оффлайн

    Booot Учаcтник

    Репутация:
    0
    "Ты не понял. Это не стоимость пешки разная, а вся ОФ домножается на определенные коэфициенты. Мне мотивы такого не совсем очевидны."

    То есть подсчитали оценки типа openingscore и endgamescore и все оптом домножили на коэффициент, зависящий от стадии партии?
     
  31. WildCat
    Оффлайн

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

    Репутация:
    0
    Нет, формула такая: Материал = (ЗначимостьДебютныхПризнаков[стадия]*opening + ЗначимостьЭндшпильныхПризнаков[стадия]*endgame) / 8192;
    Просто в дебюте ЗначимостьЭндшпильныхПризнаков[стадия] естественно близок к нулю. А ЗначимостьДебютныхПризнаков[стадия] в разы меньше чем обычно.
     
  32. Booot
    Оффлайн

    Booot Учаcтник

    Репутация:
    0
    Что значит Материал=...? Только материальная оценка по такой формуле преобразуется? А все остальные (пешки, мобильность) постоянны?
     
  33. WildCat
    Оффлайн

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

    Репутация:
    0
    Забыл подправить. :/
    Нужно читать так:
    ОФ =
     
  34. Booot
    Оффлайн

    Booot Учаcтник

    Репутация:
    0
    А-а! Ну так бы и сказал :). Простое масштабирование ВСЕЙ оценочной функции. Какая в принципе разница сколько стоит пешка: 100 попугаев или 20 если все остальные признаки в пропорциональное количество раз уменьшаются. А вот зачем сделано - вопрос интересный. Могу предположить лишь следующее: в позициях с определенным соотношением материала в принципе один хрен сколько полей доступно фигурам и насколько конь на одном поле лучше коня на другом поле. Куда важнее более крупные позиционные признаки , такие как разность материала или продвинутость проходных. Видимо в этом случае, чтобы всякая позиционная мелочь (типа мобильности и PST) под ногами не путалась и не создавала люфт в виде единиц или десятков сантипешек ее убирают таким масштабированием. Очевидно на большую глубину перебор ведется поскольку теперь нулевое окно из-за всякого чиха лишний раз альфу не превысит :).
     
  35. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Очень даже существенная разница, если попугаи целые.
    Как известно, в языке Си деление целочисленное: 5/3 == 1, a 3/5 == 0.

    Так что было у нас в позиции, например: бонус в 3 сантипешки за коня на скаку, и 10 сантипешек за горящую избу. А теперь делим на 5. Лошадка-то из рассмотрения и выпадает...

    В общем, пора на double переходить. При нынешних скоростях CPU разница в скорости неощутима.