【问题标题】:What are some games with fairly simple heuristics to evaluate positions? [closed]有哪些游戏具有相当简单的启发式来评估位置? [关闭]
【发布时间】:2010-09-09 17:26:06
【问题描述】:

我正在教一个孩子编程,目前正在介绍一些基本的人工智能概念。首先,我们将实现一个井字游戏,它会搜索整个游戏树并因此完美地进行游戏。完成后,我想将相同的概念应用到有太多位置无法评估每个位置的游戏中,因此我们需要实施启发式方法来评估中间位置。

我能想到的最好的事情是Dots and Boxes。它的优点是我可以将棋盘大小设置为任意大以阻止他搜索整个树,并且我可以将一个非常基本的评分函数设为我的盒子数减去对手盒子的数量。不幸的是,这意味着在游戏开始的大部分时间里,每个位置都将被等同地评估为 0 分,因为在玩家真正开始制作盒子之前需要走很多步。

有人对游戏有更好的想法吗? (或者对点和框有更好的评分功能)?

【问题讨论】:

  • 这个问题似乎离题了,因为它不在帮助中心所述的讨论范围内。

标签: language-agnostic artificial-intelligence heuristics


【解决方案1】:

Reversi 怎么样?它有一个非常好的启发式空间,基于件数、边缘件数和角件数。

【讨论】:

    【解决方案2】:

    如何使用已经添加的随机线开始您的点与盒游戏。这可以让你快速投入行动。只需要确保你没有用任何盒子开始游戏。

    【讨论】:

      【解决方案3】:

      另一个游戏选择可能是Reversi aka Othello。

      一个简单的启发式方法是简单地计算每个有效移动获得的瓷砖数量并选择最大的。从那里您可以考虑棋盘位置并最大限度地减少对手的脆弱性。

      【讨论】:

        【解决方案4】:

        看看围棋。

        • 足够简单,适合小板上的孩子。
        • 复杂性无限扩展。
        • 有大量可用的论文、算法和程序可用作量表或基础。

        更新:提到了黑白棋,它是围棋的简化变体。可能是更好的选择。

        【讨论】:

          【解决方案5】:

          您可以考虑的一个游戏是Connect Four。规则简单的简单游戏,但比井字游戏更复杂。

          【讨论】:

            【解决方案6】:

            Four in a line 够难,但也很容易想出一个简单的评估函数,例如,(从我最长的线到四点的距离 - 从我对手最长的线到四点的距离)

            【讨论】:

              【解决方案7】:

              Mancala 怎么样?每回合只有 6 种可能的移动,并且很容易计算每个移动的结果分数,但重要的是要考虑对手的反应,并且游戏树会很快变大。

              【讨论】:

              • 嗯,mancala 看起来很简单......我不知道为什么我没有想到那个。谢谢。
              【解决方案8】:

              Gomoku 是一款漂亮、简单且有趣的 AI 游戏。

              【讨论】:

              • 我也喜欢这个,看起来几乎一样,但比之前推荐的 Connect 4 有趣一点。
              【解决方案9】:

              跳棋可让您教授多种方法。简单的前瞻,对最佳情况最坏情况决策的深度搜索,短期和长期收益之间的差异,以及他们在学习了你想教给他们的东西后可以继续努力的东西。

              我个人认为最后一点是最关键的——人工智能发展中有一些自然的点很容易停下来,看看你能不能打败它,然后深入研究更深层次的人工智能机制。它可以让您的学生保持兴趣,而不会感到非常沮丧,并且如果他们想继续该项目,可以让他们自己做更多的事情。

              【讨论】:

                【解决方案10】:

                Rubik's Infinity 很有趣,有点像 Connect Four,但又略有不同。评估职位非常容易。

                前段时间我拼凑了一个 Perl 脚本来播放它,实际上不得不减少它看起来前面的移动次数,或者它每次都击败我,通常使用非常令人惊讶的策略。

                【讨论】:

                  【解决方案11】:

                  关于点和框的更好启发式方法,我建议查看游戏的在线策略指南。 Google 上的 first result“点和框策略”非常有用。

                  知道如何使用链式法则将优秀的玩家与优秀的玩家区分开来。知道什么时候链式法则会对你不利,这是区分优秀玩家和优秀玩家的关键。

                  【讨论】:

                    【解决方案12】:

                    我真的很喜欢连接四。使用 Minimax 算法非常容易编程。一个好的评价函数可以是:

                    eval_score = 0
                    for all possible rows/lines/diagonals of length 4 on the board:
                        if (#player_pieces = 0) // possible to connect four here?
                            if (#computer_pieces = 4)
                                eval_score = 10000
                                break for loop
                            else
                                eval_score = eval_score + #computer_pieces
                                (less pieces to go -> higher score)
                            end if
                        else if (#player_pieces = 4)
                            eval_score = -10000
                            break for loop
                        end if
                    end for
                    

                    要改进程序,您可以添加:

                    1. 如果计算机先移动,则在中间列播放(这已被证明是最佳的)
                    2. Alpha-Beta 修剪
                    3. 移动订购
                    4. Zobrist 哈希

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2016-02-10
                      • 2012-10-25
                      • 1970-01-01
                      • 2010-10-26
                      • 2011-07-18
                      • 1970-01-01
                      • 2014-07-21
                      相关资源
                      最近更新 更多