*** OBender ***
chess-engine for WinBoard(XBoard)
copyrigh(c) Korniloff E,
mail: evgeniy-korniloff@yandex.ru
Last modified: 8.10.2022
modified version 2.09.x
compile:
Visual C 2010, (create empty console project and add all *.c files,
set build Release )
or gcc gnu compiler
!WARNING obender.exe most be old, recompile!
cd to obender_dir and type
gcc *.c -O3 -o bender // LINUX
gcc *.c -O3 -o obender.exe //WINDOWS
*** Run the program with WinBoard ***
http://www.tim-mann.org
1. open teminal cmd.exe
2. cd obender_dir
3. enter command
winboard.exe /fcp obender.exe
or
click on start.cmd
or on linux
xboard -fcp ./obender &
}
//////////////////////
or from command line:
//////////////////////
text encoding russia utf8
Добрый день!
Хочу представить свой стародавний движок, который я немного
модифицировал, так как у меня возникли некоторые идеи.
Программа является чисто учебной и служит для демонстрации
некоторых идей а также получения удовольствия от игры.
1. Поиск alpha-beta+hash+null+futility prun
2. Таблица самообучения, запоминает позиции, просчитанные функцией поиска
и использует их в последующих поисках. Из за нестабильности
поиска и эвристики пропуска хода, самообучение не является полным
Теоретически, надо заставить программу в быстром режиме проиграть
все классические дебюты и исключения из них, но мне лень
этим заниматься
3. Дебютный справочник и выставление приоритетов разных вариантов
для равновесной игры
Это похоже на !!?? нейронную сеть и на то что сейчас модно
называть Монте-Карло (хорошо не Папа КАрло, отец биржевого
Пиннокио).
Считается что оценка в игре растет если скользящее среднее
((интегральная сумма)/период) с периодом 5 больше аналогичной
с периодом 10. Это хорошо работает для анализа биржевых
графиков только там используется 10 и 20 или 12 и 26(MACD)
Также там используется корреляция скорости и ускорения (Элдер),
но я поленился это делать.
Вроде это работает, но добавил недавно и не тестировал.
Также увеличил в эвристике истории приоритет матовых фигурных
расстановок (это все что могу взять от альфаноль по природной лени :))
4. Аналог биржевого индикатора Моментум для определения хороших
взятий, разменов и подрезки тихих ходов
5. В программе используется классическая вероятностная оценочная
функция(подобная первой GNU CHESS, она написана 15 лет назад и
я ее даже не проверял, надо бы добавить определения характерных эндшпилей и
корректировать материал, например если пешка+король против короля и пешка
не боковая и свой король перед пешкой, до добавить к материалу ферзя - 2 пешки)
и неявно, для подрезки тихих ходов, итоговая
оценка для шахмат, как некоторый предел, к которому
оценка стремится (это просто суммарный индекс массива 0..63! для черных фигур
минус инвертированный индекс для белых)
Надо бы изобразить оценочную функцию в виде перцептрона и обучать коэф. градиентным спуском,
потом как нибудь соберусь
6.
Я добавил диагностику хороших взятий, разменов, и
тихих ходов, которые предположительно не растут
Для этого я использовал аналог биржевого индикатора моментум с периодом
2 и 5 :))
Например, если ход взятие и оценка материала более чем оценка 5 полуходов
назад, то это хорошее взятие. Такое взятие дает примерно 30% вероятности что
далее будет растущая последовательность.
Кроме того программа запоминает позиции и их оценки и должны самообучаться
но из за нестабильности поиска и эвристики недействительного перемещения, самообучение
может идти медленно, так как программа может и не увидеть лучшую оценку из за подрезки поиска.
7. Так как сейчас популярен Монте Карло алгоритм выставления рандомизированных приоритетов
для ветвей заканчивающихся матом, я прикрутил некготорый грубый аналог,
заключающийся в добавление в таблицу истории ходов рандомного бонуса для
матовых оценок. Не знаю, дало ли это что на практике, но теоретически, если
у двух лучших ходов близкая оценка, то поиск вернет тот где мат
более вероятен :))
///////////////
Возможные неточности и ошибки:
Программа может терять файл самообучения если:
1. запущена не в консоли а под WinBoard, так как WinBoard посылает команду
quit и не дает достаточно времени чтобы записать файл (может, в системе тормозит антивирус) и выбрасывает программу из памяти (может это сигнал SIGINT, я не проверял)
2. В Windows консоли нажать Cntrl-C. Файл самообучения обнуляется.
Это загадка, так как файл открывается для чтения в начале и закрывается.
Не начать в WinBoard новую игру. Надо нажать в меню New,
потом сделать ход, Game->pause, потом Game->machine black :((