首页 文章
  • 17 votes
     answers
     views

    Java Minimax Alpha-Beta修剪递归返回

    我正在尝试使用alpha-beta修剪为Java中的跳棋游戏实现minimax . 我的minimax算法运行得很好 . 我的代码运行时使用了alpha-beta代码 . 不幸的是,当我使用标准的极小极大算法玩1000场比赛时,alpha-beta算法总是落后50场左右 . 由于alpha-beta修剪不应该降低移动的质量,只需要实现它们所需的时间,因此必定是错误的 . 但是,我已经拿出笔和纸并绘...
  • 2 votes
     answers
     views

    蒙特卡洛树搜索:两个玩家游戏的树策略

    我对MCTS "Tree Policy"的实现方式感到有些困惑 . 我读过的每篇论文或文章都谈到了从当前游戏状态走下树(在MCTS teminology中:玩家即将采取行动的根源) . 我的问题是,即使我处于MIN玩家级别(假设我是MAX玩家),我如何选择最好的孩子 . 即使我选择MIN可能采取的某些特定动作,并且我的搜索树在该节点中越来越深,但是在转弯时MIN玩家也可以选择一...
  • 4 votes
     answers
     views

    如何使用alpha beta修剪实现迭代深化

    我正在编写一个程序来播放Dots和Boxes,我希望通过在迭代深化方案中根据他们的启发式值在alphaBeta中考虑我考虑的移动来提高我的时间效率 . 基本上,我想进入搜索树,每次迭代都会增加深度,并使用alphaBeta评估每个节点 . 在每次连续迭代中,我考虑节点的顺序将由来自前一次迭代的节点的启发式值决定 . 但是,我无法理解如何实现这一点 . 有人可以为标准alphaBeta程序如何使用迭...
  • 1 votes
     answers
     views

    并行化检查器游戏树生成和使用MPI搜索

    我正试图在C中实现最佳的跳棋游戏 . 为了找到可以由机器制作的棋盘格的最佳移动,我通过固定深度,基于棋盘格的当前状态在C中生成了一个 n-ary game tree 使用(GLib) . 并且, heuristic value 是针对游戏树中存在的所有叶节点计算的,其被定义为在棋盘中留下的机器棋子的数量减去玩家对手棋子的数量,因为国王比棋子具有更强大的能力,启发式计数每个作为两个普通棋子的国王,使...
  • 12 votes
     answers
     views

    Minimax的Alpha-beta修剪

    我花了一整天的时间试图在没有真正了解它的情况下实现minimax . 现在,我想我理解minimax是如何工作的,但不是alpha-beta修剪 . 这是我对minimax的理解: 生成所有可能移动的列表,直到深度限制 . 评估底部每个节点的游戏区域有多优惠 . 对于每个节点(从底部开始),如果图层为最大,则该节点的得分是其子节点的最高得分 . 如果图层是min,则该节点的得分是其子项...
  • 0 votes
     answers
     views

    Alpha-beta修剪同一玩家的连续动作

    我已经为Checkers实现了alpha-beta修剪,并认为我有它工作,但发现计算机不会连续多次跳转(必须时) . 例如: AI确实: O _ _ _ _ _ _ _ _ _ _ X _ X _ -> _ _ _ X _ (misses a jump because it only does a single move) _ _ _ _ _ _ _ O _ _...
  • 1 votes
     answers
     views

    带有Alpha Beta Pruning的MiniMax让Othello无法正常工作

    我有一个用于othello(reversi)游戏的alpha beta minimax的以下实现 . 不知何故,这从未真正回归正确的行动 . 它似乎返回我在函数(0,0)中放置的默认操作和辅助值-32768,这意味着它在MAX子例程中被修剪 . 关于我可以通过这些改进以及如何解决这个问题的任何提示? 注意:我已经确定了大部分时间正确返回的后继者 . 现在的最大深度为8.计算机播放器的pn(播放器编...
  • 19 votes
     answers
     views

    如何为游戏创建良好的评估功能?

    我有时会编写程序来玩棋盘游戏 . 基本策略是标准的alpha-beta修剪或类似的搜索,有时通过终结游戏或开放的常用方法来增强 . 我主要使用国际象棋变体,所以当需要选择我的评估功能时,我会使用基本的国际象棋评估功能 . 但是,现在我正在编写一个程序来玩一个全新的棋盘游戏 . 我如何选择一个好的甚至是体面的评估函数? 主要的挑战是相同的棋子总是在棋盘上,因此通常的材料功能不会根据位置而改变,并且游...
  • 2 votes
     answers
     views

    击败极小极大的对手

    我必须创建一个必须与其他AI竞争的AI . 两个AI都将在相同的硬件上运行,具有相同的处理时间和内存 . 我知道对手AI将使用带有alpha beta修剪的minimax算法 . 现在我的问题是 - 打败这样一个对手有哪些方法?如果我自己使用minimax - 那么AI完全预测对方的动作,游戏根据游戏的固有属性(首先获胜等)来解决 . 显而易见的解决方案是以某种方式进一步看到可能的移动,这将允许...
  • 1 votes
     answers
     views

    Minimax alpha-beta修剪深度

    我已经实现了一个连接4 AI,可以在我的课程中参加锦标赛 . 我用alpha-beta修剪实现了深度限制的极小极大值 . 我们被允许给出一个深度作为比赛的参数 . 我的计划将采取行动,然后另一名学生将采取行动,这将一直持续到有赢家为止 . 它也是一个改进的连接4,其中6×7游戏板中的整个42个点被填充,并且每个4-a-row是一个点,并且最多的点获胜 . 我的问题是关于alpha-beta修剪 ....
  • 0 votes
     answers
     views

    Minimax vs Alpha Beta修剪算法

    我最近实现了Minimax和Alpha Beta修剪算法,我100%肯定(自动编程器)我正确实现了它们 . 但是当我执行我的程序时,他们的行为却不同 . 我确定minimax和Alpha beta的最终状态应该相同 . 我对吗?他们在实现结果的道路上有所不同吗?因为我们忽略了一些值,所以min将选择哪个不会被max选择,反之亦然 .

热门问题