以下是多智能體pacman的minimax算法的代碼片段,其中存在多個重影(最小參與者)。針對具有多重分層的多智能體pacman的minimax算法的實現問題
def min_max(self, gamestate, current_depth, min_count):
if current_depth == 1:
return (self.evaluationFunction(gamestate),None)
# if max node
if min_count == 0:
min_count = gamestate.getNumAgents() - 1
legal_actions = gamestate.getLegalActions(0)
max_list = []
for action in legal_actions:
max_list.append((self.min_max(gamestate.generateSuccessor(0, action), current_depth - 1, min_count), action))
return max(max_list, key = itemgetter(0))
# if min nodes...
else:
legal_actions = gamestate.getLegalActions(min_count)
min_list = []
for action in legal_actions:
min_list.append((self.min_max(gamestate.generateSuccessor(min_count, action),current_depth - 1, min_count - 1), action))
print(current_depth,min_count)
return min(min_list, key = itemgetter(0))
pacman_move = self.min_max(gameState, self.depth * (no_of_ghosts + 1) + 1, 0)[1]
但我發現了以下錯誤: ValueError異常:MIN()arg是空序列。
任何幫助表示讚賞
該錯誤消息似乎非常清楚之前
,所以儘量爲什麼'min'被傳遞一個空序列弄清楚:
這樣處理的情況。爲了調試,在調用'min'之前添加一個'print min_list'。由於'min_list'被附加到迭代'legal_actions'的for循環中,所以您可能還想添加一些調試打印,並嘗試理解爲什麼它是空的,而您認爲它是非空的。從那裏開始工作,直到你理解了這個問題。 – 2015-03-08 16:51:50