Я пытался провести поиск с глубины 3 на глубину 4 и далее, а время поиска программы составляет около 1,5 секунды за ход для шахмат. Я пишу это на Python, используя библиотеку Python-Chess, и после добавления таблицы транспонирования начали происходить странные вещи, поэтому мне нужна помощь в поиске ошибки или просто объяснение, почему она не работает.
Код: Выделить всё
def minimax(self, state:chess.Board, depth, agent, a, b, startTime, maxTime):
if t.time()-startTime > maxTime:
# if we have exceeded the time given, raise an error
1/0
origAlpha = a
ttEntry = self.transpositionTable.lookup(state)
if ttEntry != None and ttEntry.depth >= depth:
self.transpositionMatches += 1
if ttEntry.flag == self.EXACT:
return ttEntry.value
elif ttEntry.flag == self.LOWERBOUND:
a = max(a, ttEntry.value)
elif ttEntry.flag == self.UPPERBOUND:
b = min(b, ttEntry.value)
if a >= b:
return ttEntry.value
это код для него, и когда он у меня есть как ttEntry.глубина >= глубина, в журналах я получаю 0 совпадений транспозиции, что означает, что сложение не работает. Обратите внимание, что когда я вызываю функцию, я начинаю, скажем, с глубины 3, затем в рекурсивной природе минимакса я выполняю глубину - 1 для следующего вызова. Когда я попытался сделать ttEntry.глубину
Подробнее здесь:
https://stackoverflow.com/questions/781 ... ta-pruning