Python mini-max游戏搜索树给出错误:TypeError:'&燃气轮机';实例之间不支持

Python mini-max游戏搜索树给出错误:TypeError:'&燃气轮机';实例之间不支持,python,artificial-intelligence,minimax,Python,Artificial Intelligence,Minimax,我想在2048游戏上执行Mini-Max算法。为此,我首先创建了一棵树 class Tree(object): def __init__(self, num_sons, data, parent=None): self.data = [None, data] self.sons = [] self.index_son = 0 self.parent = parent for i in range(num_sons): self.sons.

我想在2048游戏上执行Mini-Max算法。为此,我首先创建了一棵树

class Tree(object):
def __init__(self, num_sons, data,  parent=None):
    self.data = [None, data]
    self.sons = []
    self.index_son = 0
    self.parent = parent
    for i in range(num_sons):
        self.sons.append(None)

def add_son(self, son):
    self.sons[self.index_son] = son
    self.index_son += 1

def get_son(self, index):
    return self.sons[index]

def is_terminal(self):
    return self.index_son == 0
基本上,每个节点对于每个可能的操作都有不同数量的子节点。Max的动作是2048游戏中常见的动作,向右上下移动或向左移动,Min的动作是在游戏中创建额外的2块的动作(当你在2048年没有取得进展时,会在边缘创建额外的2块)

我已经创建了树,以便终端保存这些值。 现在我想使用MiniMax算法在树的每个节点中初始化数据

试图做到这一点:

    def minimax(self, root, player_turn):
    if root.is_terminal():
        return root.data[1]
    else:
        if player_turn % 2 == 0:
            for i in range(root.index_son):
                root.data[1] = max(root.data[1], self.minimax(root.get_son(i), 1))
        if player_turn % 2 == 1:
            for i in range(root.index_son):
                root.data[1] = min(root.data[1], self.minimax(root.get_son(i), 0))
我得到一个错误

TypeError: '>' not supported between instances of 'NoneType' and 'float'
在这一行:

root.data[1] = max(root.data[1], self.minimax(root.get_son(i), 1))

我知道,如果节点不是终端,我不会返回任何内容,但我不知道在这些情况下要添加什么。

是的,如果节点不是终端,你不会返回任何内容。我知道,但我不知道如何修复它。只需从函数返回一些内容。将返回root.data[1]如果你想让它回来的话,那么是的。