Шахматный алгоритм MiniMax возвращает плохие ходы

Если вы не хотите использовать какой-либо объект, вы можете использовать setattr() внутри вашего текущего модуля:

import sys
current_module = module = sys.modules[__name__]  # i.e the "file" where your code is written
setattr(current_module, 'variable_name', 15)  # 15 is the value you assign to the var
print(variable_name)  # >>> 15, created from a string
0
задан Sletten 24 March 2019 в 16:43
поделиться

1 ответ

Вы не поделились реализацией MovePiece и основным игровым циклом, но я обнаружил две возможные проблемы внутри метода MiniMax.execute:

currentValue = tempBoard.getTurnIsWhite() ? min(tempBoard, depth -1) : max(tempBoard, depth -1)

Согласно приведенному выше коду, вы предполагаете, что игрок MinMax всегда будет черным, поскольку он оценивает min для белых и max для черных. Для общего алгоритма это неверное предположение, хотя не знаю, работает ли он для вас.

Во-вторых, после вызова mp.execute() и присвоения bestMove = mp, который вы называете mp.unexecute(), так эффективно вызывайте bestMove.unexecute(), поскольку переменные указывают на один и тот же объект.

Пожалуйста, рассмотрите предложения выше, и если это не решит проблему, поделитесь вышеупомянутыми частями реализации.

0
ответ дан Jakub Licznerski 24 March 2019 в 16:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: