Автоматический подбор параметров движка

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

  1. NS
    Оффлайн

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

    Репутация:
    3
    Насчет скорости, не будет ли медленно смотреть во время оценки двухшашечные комбинации (Две простые одного цвета). При наличии всех 12-ти простых у одной стороны на доске - всего 66 признаков на доске :)
    При 10-ти шашках на доске уже всего 45 - так что просмотр двухшашечных комбинаций весьма быстр.
     
  2. NS
    Оффлайн

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

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

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

    Репутация:
    0
    Все равно они будут взаимозависимы и зависимы от размерности ЭБ.
     
  4. NS
    Оффлайн

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

    Репутация:
    3
    Думаю что зависимость будет очень слабая...
    Прикинул потери силы против сильных соперников от умения выигрывать у слабых... Нет никаких потерь.
    Если мы отсекаем при достижении ЭБ5, а сокращаем и корректируем оценку при достижении ЭБ6 - то кикие могут быть потери? Неужели ЭБ5 намного слабее ЭБ6?
    Тем более что дерево увеличивается в размерах по сравнению с использованием ЭБ6 на сущие копейки.
     
  5. NS
    Оффлайн

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

    Репутация:
    3
    E5 опять очень резко падает, в прошлый раз упала до отрицательных значений!!!
    сейчас уже в районе 100, привязка к c1 (200), несколько полей дороже двухсот...
     
  6. WildCat
    Оффлайн

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

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

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

    Репутация:
    3
    По нескольким алгоритмам - часть порожденных - случайное изменение случайного параметра (одного) Random(41)-20 То есть +-20, часть - группы параметров
    Random(21)-10.
    Колебания как раз нерезкие. За последние два дня изменения просто копеечные.
     
  8. NS
    Оффлайн

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

    Репутация:
    3
    Текущая таблица оценки простой -

    161 200 167 214
    117 181 157 153
    145 188 163 165
    197 121 163 182
    183 218 111 134
    170 196 183 182
    156 118 165 164


    a1 опять в верхнем левом углу :)
     
  9. WildCat
    Оффлайн

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

    Репутация:
    0
    Как оно туда все время попадает? :)

    Ладно, на этих выходных тоже займусь генной модификацией своей проги :)
     
  10. NS
    Оффлайн

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

    Репутация:
    3
    Да вот так вышло... Исторически сложилось :)
     
  11. Fruit
    Оффлайн

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

    Репутация:
    3
    В связи с этим, хочу предложить лозунг:
    Остановим отток программистов в шашки! :rolleyes:
     
  12. WildCat
    Оффлайн

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

    Репутация:
    0
    Я буду сперва на шахматной программе экспериментировать.
     
  13. Fruit
    Оффлайн

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

    Репутация:
    3
    Вот это я понимаю!..... А как будут проходить эксперименты? И как будут реализоваваться результаты оных? В виде таблиц, как у рыбки?
     
  14. WildCat
    Оффлайн

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

    Репутация:
    0
    Пока в виде того, как у NS :)
     
  15. NS
    Оффлайн

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

    Репутация:
    3
    У меня уже вид просто монстрообразный...
    Уже под двести параметров (увеличил количество параметров, так как скорость роста силы резко упала)
    Я завтра добавляю еще больше 1000 параметров.

    Типа a1 тоже в левом верхнем углу? :)
     
  16. Fruit
    Оффлайн

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

    Репутация:
    3
    А что за параметры? Столько и не придумаешь. :)
     
  17. Fruit
    Оффлайн

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

    Репутация:
    3
    Получается, куча новых параметров и настройка их весов?
     
  18. NS
    Оффлайн

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

    Репутация:
    3
    Как это не придумаешь? Все двухфигурные сочетания. Чего тут выдумывать...
     
  19. WildCat
    Оффлайн

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

    Репутация:
    0
    Зачем новые? Хотя бы со старыми разобраться, для начала.
     
  20. Fruit
    Оффлайн

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

    Репутация:
    3
    Сергей Марков, когда проверял настройку весов (правда, другим способом - по базе), говорил, что интуитивно правильно всё настроил. Не думаю, что у WildCat c этим хуже!
     
  21. NS
    Оффлайн

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

    Репутация:
    3
    Он говорил что интуитивно достаточно хорошо настроил, а потом уже доводил по базе.
    Правильно и "достаточно хорошо" - это всё-таки разные вещи :)
     
  22. Fruit
    Оффлайн

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

    Репутация:
    3
    Мож я неправильно варазился? :rolleyes: Дались ему эти +5 пунктов, которые не столько трудно получить, сколько трудно подсчитать. :D
     
  23. NS
    Оффлайн

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

    Репутация:
    3
    Цифры назывались не в 5 пунктов, а значительно больше :)

    Посчитать ничего не трудно, программа сама считает. У меня на её написание ушло всего несколько часов, и теперь этот стенд можно использовать для настройки любого набора признаков. Сколько времени он хорошо настраивал вручную? Вот как раз ручная настройка - значительно менее точна, и намного более ресурсоемка...


    Представляю себе математика находящего экстремум плохой функции от сотни парметров вручную :)
     
  24. WildCat
    Оффлайн

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

    Репутация:
    0
    Я надеюсь получить не меньше 100 пунктов.
     
  25. WildCat
    Оффлайн

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

    Репутация:
    0
    Сделал поддержку персоналитей. Причем добавление нового параметра к персоналити всего-лишь одна строчка. Вот как оно выглядит для моей упрощенной ОФ:
    Code:
    Personality::Personality(char *name)
    {
        strcpy(file, name);
    
        RegisterArray("PieceValue", 5, 20, PieceValue);
        RegisterArray("Bonus_Passer", 6, 10, BONUS_PASSER + 2); // два первых значения не используются
    
        RegisterSingle("BishopPair", 10, &BONUS_BISHOP_PAIR);
        RegisterSingle("Penalty_Shield_Missing_Two", 3, &PENALTY_SHIELD_MISSING_TWO);
        RegisterSingle("Penalty_Shield_Missing_One", 3, &PENALTY_SHIELD_MISSING_ONE);
    
        RegisterMap("Pawn_PST", 64, 5, Map64, PST_PAWN);
        RegisterMap("Knight_PST", 64, 5, Map64, PST_KNIGHT);
        RegisterMap("Bishop_PST", 64, 5, Map64, PST_BISHOP);
        RegisterMap("King_Hide_PST", 64, 5, Map64, PST_KING_HIDE);
        RegisterMap("King_Center_PST", 64, 5, Map64, PST_KING_CENTER);
    }
    Теперь буду генетику делать (спаривание уже готово).
     
  26. NS
    Оффлайн

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

    Репутация:
    3
    Проверил спаривание - Спаривание в моем случае хороших особей не дает вообще!!!
    То есть получается - сохраняем несколько лучших, порождаем особи, а спаривание (двух особей) бесполезно...

    То есть например в моем случае - спуск с случайными выбором направления...
     
  27. Fruit
    Оффлайн

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

    Репутация:
    3
    Да, я шучу! Удачи, в этом интересном деле! Для затравки вот: http://www.vrichey.de/cct6/index_table.htm
    Начало 2004г, Рыбка на предпоследнем 53-м месте, WildCat на 22-м. Пора восстановить историческую сложившуюся традицию. ;)
     
  28. WildCat
    Оффлайн

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

    Репутация:
    0
    Похоже все сделал.
    Провел одну тестовую итерацию -> подфиксил парочку мелких багов.
    Теперь буду эту хрень запускать по ночам :)
    Посмотрим, что из этого выйдет.

    Контроль будет 0.1 сек на ход.
     
  29. NS
    Оффлайн

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

    Репутация:
    3
    Блин, а я второй день никак запустить не могу с новыми параметрами в ОФ.
    Сделал последний укол, и голова перестала соображать напрочь, такое впечатление что мозг отключили :(

    Ну ничего - теперь потихоньку вся эта дрянь из организма выйдет, мозг и нервная система восстановятся - всех побью :) Во все игры :)
     
  30. Orlov
    Оффлайн

    Orlov Учаcтник

    Репутация:
    0
    вопрос по поводу автоматического подбора параметров, если не очень надоел :) Параметры ОФ выставляются руками или это делает спецоболочка ? :)
     
  31. NS
    Оффлайн

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

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

    Сейчас таким способом настраивается ОФ в русских шашках, в скором времени запущу и для шахматной программы (отлаживать алгоритмы проще как раз на шашках)
     
  32. NS
    Оффлайн

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

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

    Orlov Учаcтник

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

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

    Репутация:
    3
    Так движки же написаны мной!!! Есно веса переменные значения, и оболочка может их менять.
     
  35. Orlov
    Оффлайн

    Orlov Учаcтник

    Репутация:
    0
    Вроде бы въехал. Какое значение берешь за отправную точку? Каков шаг (inc/dec) если не секрет ?
    Кол-во партий для одной итерации ?
    В принципе такую оболочку написать наверное не очень сложно ? (графикой и прочими делами в данном случае думаю необходимо пренебречь) Так ?