Ifrit logos by Graham Banks

Шахматная программа Ифрит (Ifrit)

Ссылки

История версий

Ifrit
История разработки.
Часть 8.

Исходники Ifrit_m1_8
(163Kb)

Ifrit_m1_8
(100Kb)

Ifrit_b - описание алгоритмов

Структура программы Ifrit_C

Логика работы программы Ifrit_C

Некоторые мысли

License

Последнее обновление 2 January 2014


Добавил код Ифрита в репозиторий bitbucket.org
Ifrit source add to bitbucket.org

Ифрит (Ifrit) - шахматный UCI движок написанный на языке С++.

Ifrit m1.8 компиляция от Jim Ablett (Jim Ablett compiles: Ifrit m1.8-JA)
Windows/Linux/Android 64/32


Rating in CCRL 40/40(June 23, 2012):
        Ifrit j2.9              2084   (+37   -37)
        Ifrit j3.6 64-bit     2211   (+32   -32)
        Ifrit j3.8 64-bit     2161   (+39   -39)
        Ifrit j4.2              2115   (+34   -34)
        Ifrit j4.3              2156   (+33   -33)
        Ifrit m1.5            2375   (+28   -28)
        Ifrit m1.6            2328   (+40   -40)
        Ifrit m1.7            2429   (+68   -67)
        Ifrit m1.8            2386   (+80   -82)
       
Rating in CCRL 40/4(May 14, 2012):
        Ifrit m1.5 64-bit     2369   (+30   -30)
       

Ифрит представлен на сайтах:

SDchess - бесплатные шахматные программы (Free Chess)

WBEC Newspage

CCRL 40/40 Complete rating list

CEGT 40/4

RWBC-chess Ratings


Ифрит участвует в битве движков ChessWar, который проводит Olivier Deville
на сайте ChessWar
WinBoard forum

Ifrit m1_5 in OpenWar

Games group G(completed)
Final standings after round 11

Games group F
Final standings after round 11


Ifrit j4-3_x64_ja - OpenWar 08(completed)
Crosstable OpenWar 8th


Ifrit m1-5_x64_ja - OpenWar 9th Edition
OpenWar 9th Edition starts 15.11.2011 at 10:00 french time.
List of participants
Pairings
Crosstable OpenWar 9th


Ифрит играет в турнирах которые проводит Graham Banks

Ifrit j2.6 - 17th Amateur Series Division 8(completed)
17th Amateur Series Division 8

Ifrit j3.5 - 21th Amateur Series Division 7(completed)
21th Amateur Series Division 7

Ifrit j3.6 - 22nd Amateur Series Division 7(completed)
22nd Amateur Series Division 7

Ifrit j3.9 - 24th Amateur Series Division 6(completed)
24th Amateur Series Division 6

Ifrit j4.2 - 25th Amateur Series Division 6(completed)
25th Amateur Series Division 6

Ifrit j4.3 - 26th Amateur Series Division 6(completed)
26th Amateur Series Division 6

Ifrit j4.3 - 27th Amateur Series Division 6(completed)
27th Amateur Series Division 6

Ifrit m1.5 - 31st Amateur Series Division 5(completed)
31st Amateur Series Division 5

Ifrit m1.5 - REDSHIFT MYSTERY(completed)
REDSHIFT MYSTERY

Ifrit m1.8 - INFESTATION OF THE NANOBYTES(completed)
INFESTATION OF THE NANOBYTES

Ifrit m1.8 64-bit - 39th Amateur Series Division 6(completed)
39th Amateur Series Division 6


UCI движок Ifrit

В серии "с" используется 0х88 генератор ходов.
В серии "b" используется bitboard генератор ходов.
В серии "j" используется bitboard генератор ходов + объектно-ориентированное программирование (object-oriented programming).
(объектно-ориентированное программирование до версии j3 и начиная с версии j3.8)
В серии "m" используется magic-bitboards генератор ходов.


Типы игры:
При игре обычно использую 256 Мб хеш-таблицу.
1. Фиксированная глубина. (Fixed depth)
Возможность задавать фиксированную глубину поиска в полуходах.
2. Блиц партии.(Blitz game)
Тестируем с контролем 1 мин + 1 сек и 5 мин + 1 сек на партию.
3. Бесконечный анализ.(Infinite analysis)
Работа в режиме анализа позиции. Вы делаете ходы, а движок оценивает позицию.

Алгоритм:
1. MiniMax. Основной перебор оптимизирован альфа-бета отсечением. При правильной реализации он не вносит дополнительной погрешности.
2. Late move reductions.
3. Hash-table(хеш-таблица).
4. Mvv/lva(most valuable victim / least valuable aggressor). Сортировка взятий наиболее ценная жертва/наименее ценный агрессор.
5. Killer heuristic(эвристика убийцы). Это просто использование лучшего хода для данной глубины.
6. Quiescence search (форсированный перебор).
    На максимальной глубине основного перебора мы продолжаем цепочку взятий, либо начинаем, если фигура под боем.
    Взятия считаются до конца.
7. Extensions(продления).
    В случае шахов глубина этой ветки увеличивается на полуход.
8. Null move(нулевой ход). Редукция 4.
9. Delta pruning используем в quiescence search.
10. Futility pruning.
11. Razoring.
12. History heuristic.

В графической оболочке Арена (автор Martin Blume)  можно поиграть с Ифритом.


Программа находится в процессе разработки.
Программу тестируют: Dragon777, Сергей Зеркалов, Anechka008.exe, GreKo.exe, Murka_2_w32.exe, fruit_21.exe.

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

Дневник писал для себя, но так как он получился забавным, то решил его выложить.

Пишите по нижеуказанному адресу.
С уважением Бренкман Андрей(Brenkman Andrey)
Мой ник(nickname) ChessTerminator75

E-mail: Andchess2006@yandex.ru