Новости GreKo

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

  1. WildCat
    Оффлайн

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

    Репутация:
    0
    Хотел скомпилить Греку, да, видимо, не судьба.
    Очень много ошибок приведения типов. Мои компиляторы сами отказываются приводить типы.

    Code:
    for (piece = 0; piece < 14; piece++)
    Вместо нуля пришлось написать PIECE(0), но все равно:

    VC++:
    error C2676: binary '++' : 'PIECE' does not define this operator or a conversion to a type acceptable to the predefined operator

    Intel C++:
    error: enumerated type is not allowed


    Проходит только так:
    Code:
    for (piece = PIECE(0); piece < 14; piece = PIECE(piece + 1))
     
  2. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Программа написана на Standard С 99.
    Надо использовать опцию -std=c99, как и написано в Makefile. И компилятор gcc (под другими собирать не пробовал).

    Я использовал компилятор из пакета MinGW (как отдельно, так и из-под среды CodeBlocks).
     
  3. WildCat
    Оффлайн

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

    Репутация:
    0
    Все типы перечисления переделал в int.
    Кое-где приведения сделал вручную.
    Объявления двух массивов вынес из заголовочного файла.

    Теперь все скомпилилось. Щас буду проверять насколько хорошо все получилось :)
     
  4. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    А что, явное указание компилятору версии использованного стандарта - не помогает?
    К чему эти взмахи, к чему этот плеск через борт?
     
  5. Kirr
    Оффлайн

    Kirr Staff Member Команда форума

    Репутация:
    8
    :D
    Нельзя, по-моему, доверять авторам тестирование собственных движков...

    На этот счёт у нас было даже правило в CEGT, когда там участвовал Alessandro (автор Kiwi). (в 2005 году, когда я там тоже участвовал). Не потому мы ему не доверяли, но просто на всякий случай.
     
  6. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Да нет, тут всё верно. NS совершенно правильно заметил - на больших контролях 5.0 подглючивает, у меня это тоже подтверждается.
    Скоро выложу исправленную версию.
     
  7. WildCat
    Оффлайн

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

    Репутация:
    0
    Просто не знаю через какую опцию можно указывать стандарт.

    Приделал Греке PVS. Сделаю турнирчик трех Грек + Анечка. Интересно, что получится.
     
  8. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Ну и ладно, думаю, что замена enum на int ровным счётом ни на что не влияет.
    Что до PVS, в моих тестах от него существенной пользы не обнаружилось. Но и вреда тоже :)
     
  9. NS
    Оффлайн

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

    Репутация:
    3
    По минуте (60 ходов за 60 секунд) на небольшом тесте (пара сотен партий) Анечка показала перевес в 50 пунктов. На длинных контролях разница в силе немного возрастает (около 5-10 пунктов на каждом удвоении)
    Было несколько зависаний Греки с просрочкой времени (под UCI)
     
  10. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Вроде в VC++ есть боооольшие проблемы с C99. Они просто его не поддерживают.

    И вообще, не пользуйте компиляторы от M$!
     
  11. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Да, есть такой баг. Связан с некорректной обработкой некоторых команд в режиме размышления. Уже исправлен, ждите обновлённую версию.
     
  12. NS
    Оффлайн

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

    Репутация:
    3
    Еще что было замечено. Король + Легкая фигура не может иметь положительной оценки, независимо от материала у соперника, и тем более Слон против пешки это не +3 пешки :)
     
  13. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Да, эндшпильная оценка там сейчас совсем примитивная, нет много чего даже из 2.817 - например, ладейной пешки со слоном неправильного цвета, ничейных тенденций в разноцвете, простых эвристик для KP-K... Дойдём и до этого, со временем...
     
  14. WildCat
    Оффлайн

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

    Репутация:
    0
    Code:
    1. GreKo 5.0      15.0 / 27
    2. GreKo 5.0.0 IK 13.5 / 27
    3. GreKo 2.817    13.0 / 27
    4. Anechka 0.08   12.5 / 27
    Что-то, действительно PVS ничего хорошего не показывает. Хотя моя компиляция и работает примерно на 15% быстрее.

    Результаты perft 6 тоже неожиданные.
    Скорость оригинальной версии: 4674 kNps.
    Моя компиляция: 7751 kNps.

    При этом скорость реального перебора всего на 15% больше.
     
  15. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Ты, наверное, assert-ы отключил. Плюс интеловский компайлер всегда самым быстрым считался...
     
  16. WildCat
    Оффлайн

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

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

    У меня хоть и интеловский, но старый. Всего лишь 6.0.
     
  17. NS
    Оффлайн

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

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

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

    Репутация:
    0
    Code:
    1. GreKo 5.0.0 IK 52.5 / 97
    2. Anechka 0.08   51.5 / 97
    3. GreKo 2.817    45.5 / 97
    4. GreKo 5.0      44.5 / 97
    Трохи получше стало. На длинных контролях еще лучше должно быть.

    Если интересно, вот как я сделал:
    Code:
    if (legal_moves == 1)
    {
        e = -alpha_beta(pos, -beta, -alpha, new_depth, ply + 1, 0);
    }
    else 
    {
        e = -alpha_beta(pos, -(alpha + 1), -alpha, new_depth, ply + 1, 0);
        if (e > alpha && e < beta) e = -alpha_beta(pos, -beta, -alpha, new_depth, ply + 1, 0);
    }
    И в корне тоже нечто похожее.
     
  19. NS
    Оффлайн

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

    Репутация:
    3
    А точно PVS дает преимущество на длинных контролях?

    При идеальной Сортировке PVS не лучше Альфа-Беты.
    в Альфа-Бете, чем дальше от корня, тем меньше средний размер окна.
    Чем длиннее контроль, тем лучше отсортированы ходы в корне и т.д.

    По моим тестам PVS (тесты без отсечений) не дает заявленного преимущества (40-60%) над чистой Альфа-бетой с одним размером окна в корне [-inf,+inf]
     
  20. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    У меня в корне окно не бесконечное, оно размеров в плюс-минус пешку от предыдущей оценки.
    Кстати, Игорь, обрати внимание - там есть проверка на режим Multi-PV, если он включён, то я увеличиваю размер окна - чтобы у всех вариантов после первого были содержательные оценки, а не отсечения по альфа...
     
  21. NS
    Оффлайн

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

    Репутация:
    3
    Это окно дает копейки...
    У меня окно -0.3 +0.3, затем расширяется, но особой прибавки оно не дает (у меня PVS)
     
  22. WildCat
    Оффлайн

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

    Репутация:
    0
    У меня размер окна существенно влияет на размер дерева. Правда, реальных матчей для сравнения я не проводил.

    не заметил вот эту штуку:
    Code:
          if (e > alpha && e < beta)
          {
             strcpy(comment, "");
             alpha = e - ROOT_WINDOW / 2;
             beta = e + ROOT_WINDOW / 2;
          }
    Я думал, что окно без ограничений. Теперь понятно почему PVS не дает особой прибавки. Но мне такое окно все равно не особо нравится.

    Кстати, у тебя иногда отступы тремя пробелами сделаны. Если поставить табуляцию в редакторе отличную от трех сразу видно как форматирование нарушается.
     
  23. WildCat
    Оффлайн

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

    Репутация:
    0
    Меня режим мульти совсем не интересует.
     
  24. NS
    Оффлайн

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

    Репутация:
    3
    Я проводил тесты:
    PVS c окном против PVS без окна - примерно одно и тоже,
    и PVS с окном против Альфа-Беты с окном - тоже примерно одно и тоже.
    Альфа-бету с окном и без тестировал на уголках - но там получается очень хорошее упорядочивание ходов, нужно попробовать на шахматах - но если упорядочивание хорошее то особой разницы быть не должно.
     
  25. WildCat
    Оффлайн

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

    Репутация:
    0
    Здесь разницы и быть не может.
    А здесь у меня PVS похуже, т.к. ему нужна стабильность перебора.
     
  26. NS
    Оффлайн

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

    Репутация:
    3
    Имеется в виду окно в корне.
    Разница минимальна, но Тога, Крафти совместно с PVS окно используют...
     
  27. NS
    Оффлайн

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

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

    WinPooh В.М. Staff Member

    Репутация:
    95
    Я придерживаюсь именно такого стиля форматирования. Он 1) мне нравится 2) совпадает с корпоративным стандартом организации, где я работаю :)

    Если очень захочется переформатировать, всегда есть под рукой автоматические форматтеры а-ля Artistic Style и т.п. Замену пробелов на табуляцию, и обратно, делает на раз. Плюс корректирует фигурные скобки, отступы в блоках, пробелы в аргументах фукнций и пр. Есть много пред-определённых стилей. Рекомендую: http://astyle.sourceforge.net/
     
  29. WildCat
    Оффлайн

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

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

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

    Репутация:
    0
    PV-узлы у меня не определяются. Все узлы дерева равноправны.
     
  31. WildCat
    Оффлайн

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

    Репутация:
    0
    Мне тоже захотелось чего-нибудь с нуля переписать :)
    На всю прогу решительности не хватает. Но до ОФ я уже давно мечтаю добраться :)

    Начну с самого простого (и более менее важного): централизация (таблицами), безопасность короля (пешечный щит). Думаю, что этого хватит, чтобы быть на уровне ГреКо и Анечки.
    И потихоньку буду добавлять всякие фишки.
     
  32. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Не понимаю, зачем WildCat-у быть на уровне Греко и Анечки, когда он играет на пару-тройку сотен пунктов сильнее?
     
  33. WildCat
    Оффлайн

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

    Репутация:
    0
    Хочется сделать новую ОФ. И делать ее постепенно.
    Старая написана очень криво.
     
  34. WildCat
    Оффлайн

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

    Репутация:
    0
    Не нравится мне вот это:
    Code:
    #define  VAL_PAWN    (100)
    #define  VAL_KNIGHT  (350)
    #define  VAL_BISHOP  (400)
    #define  VAL_ROOK    (650)
    #define  VAL_QUEEN   (1100)
    Ладья получается слишком дорогой. Она не может быть больше, чем половина ферзя.
     
  35. WinPooh
    Оффлайн

    WinPooh В.М. Staff Member

    Репутация:
    95
    Я это уже заметил, поправил ферзя до 1300.