问题描述
对于给定的棋盘游戏,我使用 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 (将#修改为@)