迷你最大游戏搜索树给出错误:TypeError:'>'实例之间不支持

时间:2018-04-19 15:38:35

标签: 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.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 of Actions是在游戏中创建额外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))

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

0 个答案:

没有答案