首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多最小层多智能体pacman的极大极小算法实现问题

多最小层多智能体pacman的极大极小算法实现问题
EN

Stack Overflow用户
提问于 2015-03-09 00:46:49
回答 1查看 2.6K关注 0票数 0

以下是多智能体pacman的minimax算法的代码片段,其中有多个幽灵(最小玩家)。

代码语言:javascript
复制
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是一个空序列。

任何帮助我们都将不胜感激

EN

回答 1

Stack Overflow用户

发布于 2015-03-09 00:52:26

你在min-step没有任何合法的动作--这就是为什么min_list是空的。

代码语言:javascript
复制
>>> min([])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: min() arg is an empty sequence

因此,处理以下情况:

代码语言:javascript
复制
if not legal_actions:
    # pass? win? lose?

在做min()之前

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28929093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档