微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 alpha beta 剪枝根据极小极大中的节点值找出方向

如何解决使用 alpha beta 剪枝根据极小极大中的节点值找出方向

对于给定的棋盘游戏,我使用 alpha beta 修剪编写了以下 minimax search algorithm

class AlphaBeta(SearchAlgos):
    iter_time = timelib()
    if self.goal(state):
        return self.utility(state),state.move
    if depth == 0:
        return self.heuristicFunc(state),state.move
    children = self.succ(state)
    agent_to_move = self.turn(state)
    if agent_to_move == maximizing_player:
        cur_max = -np.inf
        direction = None
        for child in children:
            if timelib() - iter_time > sent_time:
                raise TimeoutError()
            val = self.search(child,depth - 1,maximizing_player,sent_time - (timelib() - iter_time,alpha,beta ))
            if val[0] > cur_max :
                cur_max = val[0]
                direction = child.move
            alpha = max(cur_max,alpha)
            if cur_max >= beta:
                return (np.inf,direction)
        to_ret =  (cur_max,direction)
    else:
        cur_min = np.inf
        direction = None
        for child in children:
            if timelib() - iter_time > sent_time:
                raise TimeoutError()
            val = self.search(child,beta ))
            if val[0] < cur_min:
                cur_min = val[0]
                direction = child.move
            beta = min(cur_min,beta)
            if cur_min <= alpha:
                return (-np.inf,direction)
        to_ret = (cur_min,direction)
    return to_ret

该算法同时返回极大极小值和最佳方向。我现在想弄清楚以下几点:

成功运行后,返回的方向被移除(不小心),我现在只有返回值。 这给我留下了我的问题:在再次运行以找到方向之前,我可以对算法进行哪些更改以改进它,因为我已经有了返回值?

我想过在 alpha-beta 参数中发送返回值,这样只会达到相关的最终动作,但是这似乎不起作用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。