Сортировка корня дерева

Тема в разделе "Машинное отделение", создана пользователем bankuss, 7 дек 2006.

  1. bankuss
    Оффлайн

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

    Репутация:
    6
    Как оптимально сортировать корень? Лучший ход предыдущих итераций ставить первым?
    Использовать оценку после хода?
     
  2. WinPooh
    Оффлайн

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

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

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

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

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

    Репутация:
    3
    То есть если в PV лучшим стал другой ход - то он попадает наверх списка ходов.
     
  5. WinPooh
    Оффлайн

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

    Репутация:
    95
    У меня лучший ход в корне, как и в любом другом узле, попадает в хэш и на следующей итерации сразу оттуда берётся (с гарантией, что он не будет перезаписан - т.к. это делается до новых обращений к хэшу). Никаких специальных телодвижений по вытаскиванию первого хода из текущего PV не требуется...
     
  6. WildCat
    Оффлайн

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

    Репутация:
    0
    У меня лучший ход вытаскивается вверх. Больше ничего.
    Но мне еще нравится случайная сортировка в самом начале перебора.
     
  7. NS
    Оффлайн

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

    Репутация:
    3
    У меня рандомность делается при помощи Randomize() перд заполнением таблиц для Зобриста.
    В шахматах на 1С криво, но использовался метод случайной корректировки оценки в корне - дает достаточно хорошую рандомность без видимого ослабления силы движка.
    Начальное перемешивание - при достаточной глубине перебора не дает нормальной рандомности...
     
  8. bankuss
    Оффлайн

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

    Репутация:
    6
    А что дает случайная сортировка?
     
  9. NS
    Оффлайн

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

    Репутация:
    3
    Рандомность игры она дает :)
    Я в своей первой программе, когда была очень маленькая дебютная - на Рандомность игры положил просто кучу сил!
     
  10. WildCat
    Оффлайн

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

    Репутация:
    0
    Все же лучше, чем ничего.
     
  11. NS
    Оффлайн

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

    Репутация:
    3
    У меня есть алгоритм очень хорошей рандомности с просто минимальным падением силы (пара пунктов)
    Не знаю насколько он нов, но он очень прост, и при этом никаких рандомных сортировок :)
     
  12. NS
    Оффлайн

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

    Репутация:
    3
    Суть алгоритма -
    Делаем полную сортировку ходов (никакого рандома)
    Лучший всегда вытягиваем наверх.
    Negascout, в корне
    Каждый ход кроме первого проверяем при помощи
    Search(BestScore,BestScore+1)
    Но!!!
    Search(BestScore+Delta,BestScore+Delta+1)
    Не уменьшает силу программы, например при Delta в интервале [0,0.03]
    (в некоторых программах намертво зашита Дельта, например равная 0.03 пешки)

    Алгоритм Рандомности - в корне, каждый раз при нулевом окне выбираем случайную Дельту в интервале, например [0,0.03] - падения силы практически нет, а рандомность есть при любой глубине перебора.
     
  13. варяг
    Оффлайн

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

    Репутация:
    0
    А не проще в ОФ добавить небольшой случайный вес (те же 0.03 пешки) на первые несколько ходов? Это кажется попроще будет. Я пробовал и особого падения силы не заметил
     
  14. NS
    Оффлайн

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

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

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

    Репутация:
    0
    А разве оценка плюс-минус 0,03 пешки (или меньше) так принципиальна? Она же все равно не точная - веса позиционных признаков далеки от идеала
     
  16. NS
    Оффлайн

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

    Репутация:
    3
    У тебя одни и те-же признаки в разных ветвях дерева дают разную оценку. А это уже плохо.
    Плюс ты добавляешь нестабильности перебору, что еще хуже...
     
  17. WildCat
    Оффлайн

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

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

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

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

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

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