Теория шахматного программирования

Тема в разделе "Машинное отделение", создана пользователем WildCat, 16 фев 2008.

  1. TopicStarter Overlay

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

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
  2. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
  3. TopicStarter Overlay

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

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Я предлагал давать ссылки на "хорошие" ресурсы. А там все в кучу свалено.
    Лучше достань оттуда все самое ценное и здесь дай прямые ссылки.
  4. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
  5. дуп Учаcтник

    • Участник
    Рег.:
    11.09.2007
    Сообщения:
    113
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Великий Новгород
    Оффлайн
    Чего то на первой ссылке (wikispaces.com) у меня dr Web сработал. Лицензионный, за два года ни разу не подвел. У других то как ?
  6. ShAV Зарегистрирован

    Рег.:
    04.10.2007
    Сообщения:
    6
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Отличная тема. Давно хотел сам ее создать. Только вот рускоязычных сайтов бы подкинули, а то в английском не все сильны. У меня с английским особых проблем нет, но приятнее читать на родном. :)
  7. TopicStarter Overlay

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

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
  8. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.490
    Симпатии:
    3.108
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
  9. Valergrad Учаcтник

    • Участник
    Рег.:
    18.05.2007
    Сообщения:
    14
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    А есть где-нибудь статьи про распараллеливание движков, или исходники какого-либо многопроцессорного движка?
  10. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
  11. dan77790 Учаcтник

    • Участник
    Рег.:
    06.03.2008
    Сообщения:
    3.792
    Симпатии:
    17
    Репутация:
    0
    Оффлайн
    а что, на русском языке ничего нет ?
  12. bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    dan77790 наши программисты не любят писать статьи на такие темы.:D
  13. дуп Учаcтник

    • Участник
    Рег.:
    11.09.2007
    Сообщения:
    113
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Великий Новгород
    Оффлайн
    Нет ли у кого чего-нибудь по теме "Альтернатива альфа-бете" ? Наверняка ведь пытались люди.
    Гуглой найти ничего не получилось. Попадаются в основном одни разговоры типа " даже и не дергайтесь". Хотелось бы чего-нибудь с кодом посмотреть.
  14. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
  15. дуп Учаcтник

    • Участник
    Рег.:
    11.09.2007
    Сообщения:
    113
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Великий Новгород
    Оффлайн
    Спасибо. Хотя я думаю, что и MTD(f) и NegaScout (NS :)) это просто модификации альфа-беты. Про SSS впервые слышу, пойду читать, спасибо.
  16. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    MTD(f) - принципиально другой алгоритм. SSS* очень похоже MTD(f), и "в среднем" хуже его. Есть еще DUAL*, и есть еще предшественники MTD(f)
  17. Марджорин Учаcтник

    • Участник
    Рег.:
    10.10.2011
    Сообщения:
    120
    Симпатии:
    3
    Репутация:
    0
    Оффлайн
    А нет ли чего-либо для начинающих програмистофф на русском?
  18. phisey Модератор

    • Команда форума
    Рег.:
    04.05.2007
    Сообщения:
    2.344
    Симпатии:
    7
    Репутация:
    0
    Оффлайн
    Есть такая книжка 'Программирование шахмат и других логических игр' Евгения Корнилова. Она именно для начинающих программистов в шахматах. То есть представление о программировании неприменительно к шахматам надо иметь.

    + сама шахматная программа там слабая, но про алгоритмы рассказывается.
  19. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    касательно этой книги - по моему личному мнению книга написана плохо. Приводятся алгоритмы, но не объясняется, почему эти алгоритмы работают. Автор скатывается на ту самую дорожку, а которой он упоминает в самом начале книги негативно.
  20. Марджорин Учаcтник

    • Участник
    Рег.:
    10.10.2011
    Сообщения:
    120
    Симпатии:
    3
    Репутация:
    0
    Оффлайн
    Тоесть,как я поняла,чтобы быть шах.программистом-нужно иметь образование программиста в частности?
  21. phisey Модератор

    • Команда форума
    Рег.:
    04.05.2007
    Сообщения:
    2.344
    Симпатии:
    7
    Репутация:
    0
    Оффлайн
    Да иметь навыки программирования.
  22. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    30.09.2006
    Сообщения:
    3.545
    Симпатии:
    1.265
    Репутация:
    36
    Адрес:
    Киев
    Оффлайн
    Надо уметь программировать
  23. bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    темы про программирование шахмат умерли? ))

    тогда вопрос, чтобы расшевелить...
    как сделать не сильно навороченный список фигур? я свой старый исходник поднял... ну там сканирование доски у меня. вроде как не по "феншую". типа лишние проверки идут, с другой стороны, экономия на обновлении списка фигур.
    в одном месте теряем, в другом находим. но все таки со списком удобней другие места программы реализовывать.

    и еще в дополнение, есть какая-нибудь циферка подсчитанных узлов для проверки генератора взятий? типа "perft capture".
  24. EvgeniyZh Учаcтник

    • Участник
    Рег.:
    07.02.2014
    Сообщения:
    487
    Симпатии:
    112
    Репутация:
    15
    Адрес:
    Ришон ле Цион, Израиль
    Оффлайн
    А почему список фигур а не битбоард?
  25. Осипов Юрий Учаcтник

    • Участник
    Рег.:
    18.06.2007
    Сообщения:
    399
    Симпатии:
    475
    Репутация:
    11
    Адрес:
    Правда
    Оффлайн
    Реализацию списков фигур можно посмотреть в исходниках Фрукта. Списки удобны, но лучше в сочетании с битбоардами. В генераторах ходов и оценке организуем цикл по списку фигур определенного типа, а дальше получаем битбоард возможных ходов для генерации ходов, оценки подвижности, атак на другие фигуры и на короля, всяких там xrays и взятий в see. Это - оптимальное решение, но только для 32-битного движка. Для 64 бит лучше оставить только битбоарды.
  26. bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    потому что движок старинный, и сделан на пробу, что смогу что-то сваять ))) никаких битбордов не использовал.
    переделывать на битборды - это тоже самое что с нуля писать. да и разбираться в них надо... я принцип знаю, как оно там работает, но свою реализацию делать - это изобретать велосипед.

    кстати скорость perft генератора у меня не такая уж и маленькая получилась. сравнивал с Греко, мой на глубину 6 считает за 8.9 сек. а битбордовый Греко 5.5 за 10 сек. (32 бит версии).

    по проверке взятий, я так понимаю инфы нет... ну ладно.
  27. bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн

    вот в такой позиции движок начинает чудить:
    [​IMG]
    не пойму как может в PV попадать ход с плохой оценкой (потеря материала). поиск - стандартная альфа-бета + ФВ.
    ФВ отключал - только оценку делал, тоже самое. уже не знаю куда и копать.... все перепроверил.
    может у кого встречалось такое на этапах тестирования ))
  28. Осипов Юрий Учаcтник

    • Участник
    Рег.:
    18.06.2007
    Сообщения:
    399
    Симпатии:
    475
    Репутация:
    11
    Адрес:
    Правда
    Оффлайн
    Проверьте сортировку ходов в корне поиска в случае шаха.
  29. bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    нашел в чем косяк был - маленькое значение константы infinity. увеличил в 3 раза - косяк исчез. )
  30. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.490
    Симпатии:
    3.108
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Раз победили Греку, попробуйте теперь сразиться с монстрами былых времён. Вам сюда: http://kasparovchess.crestbook.com/threads/1806/
  31. bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    неее... битбордовый движок все равно не обгонишь )
  32. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.490
    Симпатии:
    3.108
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    У Греки исполнитель ходов под perft не оптимизирован - там обновляется много дополнительной информации (хэш-код позиции, материал). Если эти обновления убрать, пару-другую лишних knps в perft можно получить.
    Кстати, моя лучшая считалка perft была на списках фигур, без битбордов. Плюс набор специальных таблиц для атак. Скорость была раза в два лучше, чем у обычной GreKo.
  33. Sashko Заблокирован

    • Заблокирован
    Рег.:
    07.07.2011
    Сообщения:
    2.795
    Симпатии:
    4.836
    Репутация:
    326
    Нарушения:
    31
    Оффлайн
  34. Zayats Без определенного статуса

    • Ветеран
    • Старожил
    Рег.:
    09.01.2007
    Сообщения:
    2.443
    Симпатии:
    1.648
    Репутация:
    156
    Оффлайн
    http://www.computerchess.org.uk/ccrl/4040/

    Не совсем топ-уровень. И не 72 часа. Также не может не удивлять стойкое мнение авторов, что все существующие программы анализируют варианты на одинаковую глубину, без раздачи приоритетов.
  35. bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    для такой позы какие эвристики более эффективны?
    8/7p/5k2/5p2/p1p2P2/Pr1pPK2/1P1R3P/8 b - - 0 1

    продления на шахах, и продления для проходных, я так понимаю, или что-то еще можно?
    никак не хочет движок кушать на b2 :chess:

    ну и хорошая глубина перебора нужна, чтобы досчитаться до нужных позиций, в статике такую позицию не решить.
    SDChess нравится это.

Поделиться этой страницей