Новости GreKo

Discussion in 'Машинное отделение' started by WinPooh, 2 May 2006.

  1. NS
    Оффлайн

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

    Репутация:
    3
    А качество разве может стоить 3 пешки?
     
  2. WildCat
    Оффлайн

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

    Репутация:
    0
    Слон + Конь == Ладья + Пешка

    это плохо.
     
  3. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Так ведь на эти значения ещё куча всяких бонусов навешивается, и у слона с конём они в сумме обычно больше, чем у ладьи и пешки. Так же и с качеством.
     
  4. WildCat
    Оффлайн

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

    Репутация:
    0
    Я по игре заметил, что ГреКо как-то странно меняет метариал. А потом уже посмотрел в исходник.
     
  5. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Как предложишь откорректировать? Понизить ладью?
     
  6. NS
    Оффлайн

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

    Репутация:
    3
    6.5 для ладьи очень много. Нормально от 5 до 6.
    И легкая фигура при этом (Ладья=6) должна быть 4, а не 3.5
     
  7. WildCat
    Оффлайн

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

    Репутация:
    0
    100, 400, 400, 600, 1200
     
  8. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Т.е. конь равен слону?
     
  9. NS
    Оффлайн

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

    Репутация:
    3
    Почти равен - полпешки это слишком.
    Но может в других схемах это и будет работать, но у меня точно не работает...
    Лучше дать бонус за двух слонов.
     
  10. варяг
    Оффлайн

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

    Репутация:
    0
    Вот другая идея. После поиска, в корне дерева делаем поочередно все легальные ходы и вытаскиваем из хэша дальнейшую цепочку ходов (pv) с оценкой (для каждого из этих легальных ходов) и запоминаем все это. Затем сортируем pv в порядке убывания оценок и выводим заданное пользователем количество pv
     
  11. NS
    Оффлайн

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

    Репутация:
    3
    В корне дерева, в общем случае оценка есть только для одного хода :)
    У нас не Минимакс, а АльфаБета и её вариации.
     
  12. NS
    Оффлайн

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

    Репутация:
    3
    А реализации MultiPV проста донельзя.
    Например для чистой Альфа-Беты.
    При данной глубине, пока не получили MultiPV количества точных оценок - окно (-inf,+inf)
    после того как получили окно (Лучшая_оценка,+inf)
    Где лучшая_оценка - оценка MultiPV по счету хода в списке ходов.

    В списке ходов храним Ход, Оценку, PV, PonderMove.
    Каждый раз когда оценка больше Альфы - Вытягиваем Запись в списке на нужное место (наверх)
     
  13. варяг
    Оффлайн

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

    Репутация:
    0
    Вот я и предлагаю уйти из корня делая поочередно каждый из легальных ходов и уже из этой, не корневой позиции, вытаскивать из хэша pv и оценки.
     
  14. NS
    Оффлайн

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

    Репутация:
    3
    Я вообще не понимаю о чем речь... После каждого хода PV ветвь с полным окном?
    Ну... если есть лишнее время, то конечно падение быстродействия в 50 раз (увеличение количества узлов в дереве в десятки раз с тем-же результатом) абсолютно некритично :)
     
  15. NS
    Оффлайн

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

    Репутация:
    3
    Уйдя из корня, мы получим Оценку так-же только для первого хода. Для всех остальных сделанных ходов (из корня) в общем случае оценки нет!
     
  16. варяг
    Оффлайн

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

    Репутация:
    0
    Я про полное окно вообще ничего не говорил. Идея в том, что в хэше остается информация не только о pv и оценке для лучшего найденного хода, но и о pv и оценках альтенативных ветвей. Они же тоже просматриваются, хотя и в сильно урезанном виде. Т.е. если в хэше имеется некий pv и оценка для одного хода (например, лучшего) и при этом всю эту информацию легко можно вытащить, то почему нет такой же (ну, наверное усеченной) информации и для любого другого (не лучшего) хода? И что нам мешает эту информацию извлечь и напечатать?
     
  17. NS
    Оффлайн

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

    Репутация:
    3
    А я говорю о том что при Альфа-Бете нет оценки у альтернативных ветвей.

    Что мешает извлечь несуществующую информацию?
    Отсутствие этой информации!
    Для первого хода мы имеем оценку, а для всех остальных в общем случае мы знаем только что их оценка меньше оценки первого хода.
     
  18. варяг
    Оффлайн

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

    Репутация:
    0
    Интересно почему нет? Ты что, альтенативные ветви никак не оцениваешь? А оценки в хэше не сохраняешь? А если этих оценок нет, тогда откуда ты их берешь в твоем методе?
     
  19. NS
    Оффлайн

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

    Репутация:
    3
    Вы просто не знаете что такое Альфа-Бета!
    В какую-же силу играет ваша программа?!? :)
     
  20. варяг
    Оффлайн

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

    Репутация:
    0
    Мне кажется оценка все же есть, просто она сохраняется в хэше не с флагом hashfExact, а вероятно, с флагом hashfBeta. Это конечно нехорошо. Ну а другие методы что, дают точную оценку для не лучших ходов?
     
  21. NS
    Оффлайн

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

    Репутация:
    3
    Еще раз - Альфа-бета.
    Оценки ходов.
    1. =10
    2. <10
    3. <7
    4. <8
    5. <5

    Найдите два лучших хода :)
     
  22. варяг
    Оффлайн

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

    Репутация:
    0
    Ладно бестолку спорить, я вам про Фому, вы мне про Ерему. Руки дойдут до UCI, я просто попробую все три варианта (мой, ваш и Винни) и выберу лучший :)
     
  23. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Этот режим используется у меня только при включённом multi-pv, числе запрошенных вариантов >=2, и только в режиме анализа.
    Если пользователь включает Multi-pv, значит, он хочет знать насколько второй, третий и т.д. ходы отстают по оценке - причём точно. Тем самым он подписывается на некоторое падение быстродействия.

    Разумеется, в игровом режиме всё это отключается, и ходы кроме первого просчитываются не с полным окном, а с текущими корневыми альфа и бета.
     
  24. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Мне кажется, что проигрыш при моём методе имеет точную величину - один полуход, не больше и не меньше. В терминах эффективного быстродействия - количество раз, равное бранчинг-фактору. Можно провести эксперимент, за какое время программа досчитает, скажем, до 12-15 хода в какой-то позиции с включённым и выключенным Multi-PV.
     
  25. NS
    Оффлайн

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

    Репутация:
    3
    То что описал я - это стандартная MultiPV Альфа-Бета.
    Сильно никакие улучшения его не улучшат.
    Полное окно на всех ходах дает потерю не в один полуход, а значительно большую.

    То есть даже оптимальный Вариант MultiPV на все ходы даст падение больше чем один полуход.
     
  26. NS
    Оффлайн

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

    Репутация:
    3
    Простейший расчет - при MultiPV мы должны получить оценки всех ходов.
    Пусть время для получение оценки на глубину Depth равно единице.
    Тогда MultiPV на все ходы - Это получение КоличествоХодов оценок на глубину Depth-1, на что требуется времени КоличествоХодов/БренчингФактор. Вот это и есть значение падения быстродействия при MultiPV на все ходы.

    Падения нет только в случае минимакса (но это понятно и из определения минимакса), так как в случае минимакса БренчингФактор равен количеству возможных ходов.
     
  27. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Согласен. Падение равно бранчинг фактору в корне, т.е. порядка 20-30.
    Другое дело, что я решал задачу именно в такой постановке. Мне интересны точные оценки всех ходов из корня - в том числе и для отладки оценочной функции.
     
  28. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
  29. NS
    Оффлайн

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

    Репутация:
    3
    1. Помогает Греке окно в пешку/полпешки, правда не сильно.
    2. Условие на нематовую бету в пустом ходе прибавляет Греке больше 10 пунктов Эло (наиграно уже достаточное число партий) - попробуй добавить, хуже не будет.
     
  30. NS
    Оффлайн

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

    Репутация:
    3
    Например - MateScore максимальная нематовая оценка. (например 100 пешек)
    Доп. условие на метод пустого хода
    if (Beta>=-MateScore) and (Beta<=MateScore) then
    Begin
    Score:= (получаем оценку после пустого хода)
    if Score> MateScore Then Score:=MateScore;
    if Score>=Beta Then // получили отсечку, можем сохранять оценку в Хеше и обрывать перебор.
    // Матовую оценку (>MateScore) метод пустого хода не возвращает.
    End;
     
  31. WildCat
    Оффлайн

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

    Репутация:
    0
    Об этом поподробнее.
     
  32. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Ничего сверхъестественного - всего лишь верификация LMR (в 5.0 забыл вставить почему-то), плюс R=2/3 вместо R=3 (и это тоже уже было в 2.817). В результате на контроле 1+1 немного просели, зато в 5 на 40 прибавка уже ощутимая (в матчах с 5.0 перевес порядка 14:6).
     
  33. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Вообще, чувствую, что сейчас узкое место у Греки - это статическая оценка. Там есть ТАКИЕ плюхи... Над оценкой и буду в первую голову работать к следующему выпуску. Надеюсь, 2.817 смоет позор, нанесённый недотестированными 3.x, и выберется из пятого дивизиона WBEC - к тому времени надеюсь подготовить что-то вменяемое.
     
  34. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
  35. WildCat
    Оффлайн

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

    Репутация:
    0
    А Intel C++ поддерживает С90?