Python mini-max游戏搜索树给出错误:TypeError:'&燃气轮机';实例之间不支持
我想在2048游戏上执行Mini-Max算法。为此,我首先创建了一棵树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.
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]如果你想让它回来的话,那么是的。