|
||
13.4.2008 Ifrit_b1_8Подправил нулевой ход. Редукция 3. Подправил оценочную функцию. Добавил мобильность ладей и слонов. Исходники Ifrit_b1_8(94Kb) Ifrit_b1_8(116Kb) 19.4.2008 Ifrit_b1_9Реализатор ходов разбил на функции для черных и белых. В итоге перебор слегка ускорился (5-10%). Исправил нулевой ход. В предыдущей версии забыл пропустить ход. В результате получал отсечение просмотром на меньшей глубине :) Редукция 3. Исходники Ifrit_b1_9(94Kb) Ifrit_b1_9(116Kb) 20.4.2008 Ifrit_b1_9Нулевой ход жестко глючит на глубинах 8-9 полуходов. Поэтому Ifrit_b1_9 перезалил с отключенным нулевых ходом. 22.4.2008 Ifrit_b1_10Нулевой ход подключил. Без проверки на шах нулевой ход бил короля, а мой генератор не верит в позиции без короля, отсюда и глюки. Так же учел ситуацию с взятием на проходе. Исходники Ifrit_b1_10(95Kb) Ifrit_b1_10(116Kb) 27.4.2008 Ifrit_b1_11Подправил оценку. Исходники Ifrit_b1_11(95Kb) Ifrit_b1_11(116Kb) 17.5.2008 Ifrit_b1_12Перешел на новые списки ходов. Пришлось перелопатить всю программу. Теперь вся информация упакована в одно целое(int) число. Списки остались глобальными. Слегка причесал генератор ходов. Исходники Ifrit_b1_12(95Kb) Ifrit_b1_12(116Kb) 18.5.2008 Ifrit_b2Перешел на стековые списки. Это стало возможным благодаря упаковке информации в одно число. По скорости то же, а программа несколько упростилась, да и в отладке проще. Усложнил оценку позиции, что несколько замедлило перебор. Исходники Ifrit_b2(93Kb) Ifrit_b2(116Kb) 25.5.2008 Ifrit_b2_1Исправил ошибку инициализации в оценочной функции. Закончил перевод всех функций на новые списки ходов. Исходники Ifrit_b2_1(92Kb) Ifrit_b2_1(116Kb) 15.6.2008 Ifrit_b2_2Исправил взятие на проходе в генераторе. Ошибка проявлялась в редком случае когда брать можно двумя пешками. Включил продление на взятиях. 5.7.2008 Ifrit_b2_3Сделал регулируемую хеш таблицу. Теперь пользователь сам определяет сколько памяти выделить под хеш. Перешел на 64 битный хеш ключ. До этого был тестовый 32 битный. 12.7.2008 Ifrit_b2_4Доделал регулируемую хеш таблицу. Добавил второго киллера. 2.9.2008 Ifrit_b2_5Дописал комментарии и привел их в соответствие с последней редакцией кода. Перехожу на библиотеки "Си ++". Размер "exe" увеличился где-то раза в два, поэтому решил "ехе" тоже сжимать в архив. Исправил таймер. Исправил вставку второго киллера. Слегка изменил сортировку: 1) ход из хеша; 2) лучшее взятие по mvv/lva; 3) киллер 1; 4) киллер 2; 5) упорядочение по централизации фигур. В целях ввода упорядочения по истории в список ходов добавил оценку для сортировки. Пока использую ее для упорядочения ходов по централизации фигур. 6.9.2008 Выложил "Ifrit история разработки часть 4".Начал описание алогритмов Ifrit_b. 15.9.2008 Ifrit_b2_6Продолжил описание алогритмов Ifrit_b. Слегка причесал код. Поправил оценочную функцию. Добавил futility pruning. 17.9.2008 Ifrit_b2_7Поправил оценочную функцию. Поправил futility pruning. Добавил late move reductions. 21.9.2008 Ifrit_b2_8Переписал форсированный поиск. Добавил internal iterative deepening. 12.10.2008 Ifrit_b2_9Добавил history heuristic(эвристику истории). Исправил тестовый модуль(после добавления динамического хеша выдавал ошибку инициализации хеш-таблицы) Исправил баг в генераторе ходов(при возврате пешки на два поля всегда писал взятие на проходе = 0) Интересно что этот баг никак не отражался на трех известных тестовых позициях! 8.11.2008 Ifrit_b2_10Перешел к бета-версии. Теперь буду тестировать и оптимизировать код. Новые методы добавлять не планирую. Сделал пошаговое вычисление оценки материала, т.е. в корне считаем материал, а потом только корректируем оценку при разменах. В генераторе ходов убрал лишние условия и причесал код. Причесал код в реализаторе ходов. В разделе "Ifrit_b - основные алгоритмы" выложил описание генератора ходов. 17.11.2008 Ifrit_b2_11Нашел и исправил баг в реализаторе ходов. Баг связан с флагами рокировки. Подправил форсированный поиск. 29.11.2008 Ifrit_b2_12Подправил форсированный поиск. 14.12.2008 Ifrit_b3Подправил оценку, форсированный поиск, null move, futility pruning. LMR пока использую как PVS. 21.12.2008 Ifrit_b3_1Подправил futility pruning, LMR. Изменил запись лучшего варианта в узле. 3.1.2009 Ifrit_b3_2Подправил детектор шахов, форсированный поиск, хеш-таблицу, историю, IID. В форсированный поиск добавил delta pruning. У Стрелки давно уже свой сайт, поэтому убираю с главной страницы исходники Стрелки в виде html-страниц. 6.1.2009 Ifrit_b3_3В оценку добавил мобильность ферзя, коня, ладьи, учет атаки окрестности короля. 10.1.2009 Ifrit_b3_4Перешел к сокращенному поиску всех неглавных(не pv) вариантов. 17.1.2009 Ifrit_b3_5В главном варианте(pv variant) LMR не применяем. В главном варианте(pv variant) применяем продления на разменах. 28.1.2009 Ifrit_b3_5commentДобавил еще комментариев. Прокомментировал параметры всех функций. 15.2.2009 Ifrit_j1Перешел на классы. Потеря в скорости перебора ~10% 27.2.2009 Ifrit_j1_refactoringРасчистил пространство глобальных имен. Указателям присвоил префикс р_. Скрыл внутренние методы классов. 9.3.2009 Ifrit_j1_1Всем флагам присвоил логический тип и префикс flag_ В классе FULLSEARCH модернизировал режимы компиляции. В классе BITBOARDGENERATOR добавил именованных констант. Структуры текущего и лучшего варианта переместил в класс PVSAVE. Проверку трехкратного повторения позиции переместил в класс HASHM. Добавил распознавание трехкратного повторения позиции в рассчитываемом варианте. 11.4.2009 Ifrit_j1_1(comment)Добавил описания классов. Подредактировал код. 13.6.2009 Ifrit_j1_2Выход версии задержал, так как перебрал и протестировал весь поиск. К следующей версии планирую переписать оценку. Отключил внутренние итерации(internal iterative deepening) так как в моей реализации они неэффективны. Отключил delta pruning в форсированном поиске. Добавил комментариев. Сделал остановку поиска, если найден мат. Переделал продления на шахах. Переделал продления на разменах. В нулевом ходе редукцию снизил с 3 до 2. Сделал отключение нулевого хода, когда материала мало и вероятность цугцванга повышается. 28.7.2009 Добавил "Дневник разработчика шахматной программы часть 5".18.8.2009 Ifrit_j1_3Исправил ошибку для случая, когда задаем время на ход. Независимо от времени поиск велся на глубине один полуход. Функцию оценки разбил на несколько функций. Параметры оценки вынес во внешний файл. Теперь желающие могут настроить оценку. Сделал экстренный ход, если поиск слишком задержался на глубине. В нулевом ходе редукцию поднял с 2 до 3. 29.8.2009 Ifrit_j1_4Отключил futility pruning. В некоторых задачах решение отодвигает на полуход вглубь. Отключил сортировку по истории. Включил delta pruning. 9.9.2009 Ifrit_j1_5Переписал и протестировал хеш-таблицу. Добавил использование оценки из хеш-таблицы. 29.9.2009 Ifrit_j1_6Исправил и протестировал использование оценки из хеш-таблицы. Отключил delta pruning. Отключил продление на разменах в главном варианте. Полностью удалил internal iterative deepening. 18.10.2009 Ifrit_j1_7Доработал и протестировал использование оценки из хеш-таблицы. Добавил сортировку корневого списка ходов. Сортируем по оценкам из предыдущих итераций. Оценка позиции примитивная. Материал + pst. Внешний файл не используем. 25.10.2009 Ifrit_j1_8В нулевой ход добавил динамическую редукцию. В нулевой ход добавил проверку на цугцванг. Линию варианта пишем только в главном(pv) поиске. Включил продление на разменах в главном(pv) поиске. Ifrit_j1_7 64 bit компиляция от Dann Corbit 2.11.2009 Ifrit_j1_9Подправил нулевой ход. Переписал детектор трехкратного повтора позиций. 14.11.2009 Ifrit_j2_0Почистил код. Удалил сортировку по истории. Отключил продление на разменах в главном варианте. Подправил оценку позиции. 15.11.2008 Выложил "Ifrit. История разработки. Часть 6".17.11.2009 Ifrit_j2_1Вернул постоянную редукцию нулевого хода 4. Включил продления на разменах в главном варианте. Доработал мобильность фигур и атаку на короля. Подправил оценку позиции. 20.11.2009 Ifrit_j2_2Доработал delta pruning. Продление на размене заменил на продление побеждающего взятия. Подправил оценку позиции. 28.11.2009 Ifrit_j2_3Переписал LMR. Отключил мобильность. Подправил оценку позиции. 13.12.2009 Ifrit_j2_4Подправил таймер. Переписал распределение времени на ход. Маленькое изменение в кэшировании хода. 17.12.2009 Добавил ссылку на турнир.Ифрит играет в турнире 17th Amateur Series Division 8, который проводит Graham Banks Подробности смотрите на форуме. Ifrit j2.4 is playing in tournament: 17th Amateur Series Division 8 20.12.2009 Ifrit_j2_5Переписал LMR. Добавил возраст записи в хеш-таблицу. 26.12.2009 Ifrit_j2_6Подправил запись в хеш-таблицу. Подправил использование оценки из хеш-таблицы. 10.1.2010 Ifrit_j2_7Попытался оптимизировать код. Уменьшил размер записи хеш-таблицы. Оптимизировал переменные. 28.1.2010 Ifrit_j2_8В очередной раз переписал запись в хеш-таблицу. Теперь в одной ячейке таблицы храню две позиции - первая для сортировки ходов, а вторая для отсечки по оценке . По совету Dann Corbit убрал избыточный вывод из UCI. Кстати, именно по совету Dann Corbit в свое время я начал переход на чистый C++. Исходники Ifrit_j2_8(135Kb) Ifrit_j2_8(97Kb) 15.2.2010 Ifrit_j2_9Немного изменил запись в хеш-таблицу. Исходники Ifrit_j2_9(135Kb) Ifrit_j2_9(99Kb) 17.2.2010 Ifrit_j2_9Заменил exe файл. Вернул статическую линковку библиотек. 25.4.2010 Ifrit_j3Отключил два предупреждения компилятора. Подробности в файле a_Structure.h Константы в генераторе вынес в отдельный файл d_Bitboard_const.h. Косметическая правка кода генератора. Заменил классы пространствами имен(namespace). Переименовал некоторые модули. Исходники Ifrit_j3(133Kb) Ifrit_j3(96Kb) 3.5.2010 Ifrit_j3_1Привел в порядок пространства имен(namespace). Заменил макроопределения(macros) константами. Добавил модуль j_ZObrist. Подправил код. Заменил ник(nickname) на имя. Исходники Ifrit_j3_1(134Kb) Ifrit_j3_1(96Kb) 29.5.2010 Ifrit_j3_2Отформатировал в новом стиле весь код программы. (Около 30 часов непрерывного щелканья по клавишам tab и enter :) Добавил модуль g_Search_root. Отключил продления на разменах. Исходники Ifrit_j3_2(136Kb) Ifrit_j3_2(96Kb) 3.7.2010 Ifrit_j3_3Удалил продления на разменах. Удалил futility pruning. Выделил PVS в функцию. Выделил LMR в функцию. Переписал оценку(evaluate). Исправил ошибку в LMR(lmr_reduction была глобальной). Поправил delta pruning. Исходники Ifrit_j3_3(137Kb) Ifrit_j3_3(95Kb) 11.7.2010 Ifrit_j3_4Переписал контроль времени. Исходники Ifrit_j3_4(138Kb) Ifrit_j3_4(96Kb) 14.7.2010 Выложил "Ifrit. История разработки. Часть 7".25.7.2010 Ifrit_j3_5Добавил Futility pruning. Добавил Razoring. Подправил оценку. Вроде прирост есть. Но есть ли 100 пунктов затрудняюсь сказать. Слишком неровная игра. Исходники Ifrit_j3_5(139Kb) Ifrit_j3_5(96Kb) 8.8.2010 Ifrit_j3_6Подправил Futility pruning. Подправил Razoring. Исходники Ifrit_j3_6(139Kb) Ifrit_j3_6(98Kb)
|