cost 377 ms
我的 negamax 实现中的转换表有什么问题? - What is wrong with my transition table in my negamax implementation?

我正在 TypeScript 中编写国际象棋 AI,它使用 negamax 和 alpha beta 修剪来搜索可能的动作。 它使用两种启发式算法:一种是主要启发式算法,用于评估负极大树遍历中的叶节点,另一种是简单廉价的启发式算法,用于对树遍历的移动进行排序,以期从搜索中消除节点。 我试图实现一个 ...

Minimax 算法仍然在井字游戏中发挥最佳移动 - Minimax algorithm still does play optimal moves in a tic-tac-toe game

我为井字游戏实现了带有 alpha-beta 修剪的 minimax。 这是代码: 如果还有更多的移动,这个 function 返回。 评估板并返回分数。 可能的结果:-10、0、+10。 带有 alpha-beta 修剪的实际极小极大算法: 返回最佳移动。 轮到对手的时候叫。 我还在计算分数时添加 ...

国际象棋 - 是否可以使用三角桌收集以将死结束的 pv 移动? - chess - Is it possible to collect pv moves ending with checkmate, using triangular tables?

我试图弄清楚传统国际象棋引擎(无 AI)是如何工作的,现在我试图使用三角表收集 pv(主要变化)移动。 所以我使用 NxN 表和一个非常简单的实现 我将提取的 pv 与转置表产生的 pv 进行比较。 如果 pv 不以将死结束,它会很好地工作。 如果它确实以将死结束,则三角形表仅返回第一个(正确的) ...

用愚蠢的举动进行 Alpha-Beta 修剪 - Alpha-beta pruning with a silly move

在学习了一段时间的 alpha-beta 剪枝算法后,我决定编写一个简单的国际象棋程序。 然而,当运行程序时,计算机决定做出一个愚蠢的举动。 不知道函数哪里写错了。 我必须解决什么问题才能使程序正常工作。 这是我的static评测function,其中m_turn是依次的一侧,而m_xturn是还没 ...

有没有办法在 alpha-beta 修剪后进一步优化 minimax 算法 - Is there a way to optimise the minimax algorithm further after alpha-beta pruning

我刚刚在 python 上完成了 connect 4 游戏的编码,并向其中添加了 minimax 算法,但是(我可能只是夸大了一点)它花了一百万年。 因此,我在其中添加了 Alpha-Beta 修剪。 但是,当我在 10 分钟后写这篇文章时,它仍在加载并寻找最佳移动。 可以提供任何帮助并尝试对其进 ...

如何解决具有重复位置的游戏 (Teeko) - How to solve a game with repeating positions (Teeko)

我一直在努力寻找一种算法来强烈解决游戏Teeko 。 游戏在 5x5 的棋盘上进行,每个玩家有 4 个棋子,并尝试将它们朝任何方向对齐或从中创建一个正方形。 (假设没有下降阶段) 我曾尝试通过使用带有 alpha beta 修剪和其他优化(如换位表)的 negamax 来解决游戏,但这似乎没有奏 ...

Minimax算法不适用于深度> 1 - Minimax algorithm not working with depth >1

我正在 python 上玩棋盘游戏,我需要在其中实现算法 minimax。 当我尝试增加搜索深度时,我的程序停止工作。 我还尝试实施 alpha beta 削减,但它似乎无法正常工作。 当我尝试其他深度值时,它开始进行无效播放并且还会出现此错误: 这是我的代码: Alpha Beta 剪枝: 辅 ...

如何编写多线程 Alpha-Beta 搜索算法? - How do I write a Multi threaded Alpha-Beta Search algorithm?

我正在尝试使用 alpha beta minimax 搜索算法创建一个国际象棋引擎,但代码太慢了。 我已经做了我能想到的所有优化,但它在单线程中仍然很慢。 我查看了其他一些引擎的源代码以了解它们是如何做到的以及国际象棋编程 wiki ( https://www.chessprogramming.o ...

具有 minimax 和 alpha-beta 修剪段错误的模块化 Connect4 游戏 - Modular Connect4 game with minimax and alpha-beta pruning seg fault

我正在努力使这个 connect 4 游戏模块化,具有从 3x3 到 10x10 的不同网格大小以及模块化数量的获胜“冰球”。 下面的程序通过传递 3 arguments 来工作,这是网格大小(网格是正方形)、获胜所需的连续冰球数量以及谁先开始(尚未实现)。 例如,运行它的命令是 connectM ...

我的 alpha-beta 修剪算法可能的优化? - Possible optimizations for my alpha-beta pruning algorithm?

我是一名新程序员,目前正在使用 Chess.js 和 Chessboard.js 为我的国际象棋引擎编写 javascript alpha-beta 修剪极小极大算法。 我已经实现了一个带有移动顺序的基本算法。 目前,它正在评估大约 14000 个节点 8 秒,这太慢了。 是我的算法有问题还是我没 ...

如何使国际象棋负最大算法更喜欢在决策树中较浅的捕获和其他好的移动? - How to make a chess negamax algorithm prefer captures and other good moves found shallower in the decision tree?

假设我们有以下 position (FEN 8/1K6/8/4q2P/8/8/5k2/8 b - - 3 2 ): 当搜索深度低于 3 时,我的国际象棋引擎会产生正确的 Qxh5 移动。之后,问题似乎是它认为可以稍后进行捕获(将 Qh2 视为最佳移动)。 我看不到任何明显的方法来偏爱在评估算法中 ...

赋值前引用的局部变量“beta” - local Variable 'beta' referenced before assignment

我的程序使用极小极大算法在井字游戏中选择最适合人类玩家的动作。 (这是工作) 之后,我尝试实施 alpha-beta-pruning 以优化算法所需的时间以获得最佳移动。 (这不起作用) 我知道为什么会引发错误,但我不明白为什么错误是由“alpha”和“beta”而不是“board”或“min ...

为什么我的国际象棋算法会产生看似随机的移动? - Why is my chess algorithm producing seemingly random moves?

我正在使用一个简单的 minimax/alpha-beta 修剪算法来创建一个国际象棋“AI”,但无论我采取什么行动,它都会不断产生相同的开始动作。 例如,白下e4,黑(AI)下a6,白下d4,黑下Ra7,然后不管我做什么来回移动车。 (目前深度为2) ...

python 国际象棋引擎的换位表 - Transposition tables for python chess engine

这是我上一篇文章的后续。 该代码可以正常工作,并且可以计算下一个最佳移动。 我一直在研究如何合并转置表并将排序移动到我的 negamax function 中,以使其运行得更快、更准确,但对于像我这样的初学者来说似乎有些困难和先进。 你可以在这里找到我的代码。 在研究国际象棋编程维基时,我发现了一些 ...

在我的代码中实现 Alpha 修剪的最佳方式? - Best way to implement Alpha Pruning in my code?

我目前正在通过井字游戏学习 Mini Max 和 AlphaBetaPruning。 我能够实现并理解 Mini max,但不确定如何将 alpha-beta 修剪与我当前的代码结合起来。 我必须完全重新启动吗? 或编码另一个项目? 此外,我很熟悉 Alpha-beta 只是基于使用树搜索最佳可能 ...

为什么我的 Alpha-Beta 修剪扩展了不必要的节点? - Why does my Alpha-Beta pruning expand more nodes than necessary?

我目前正在为 minimax function 实施 alpha-beta 修剪算法。 此练习对应于伯克利大学 PacMan 项目的多智能体部分。 我的实现: Output: 练习中有很多固有的功能已经给出并且我没有修改。 为练习目的而修改的唯一 function 就是上面提到的那个。 源码: ...

如何在 alpha-beta 算法中返回下一步? - How can I return the next move in the alpha-beta algorithm?

我正在实现一个人工智能来玩井字游戏,并且我正在使用 alpha-beta 算法来搜索最佳动作。 以下是我到目前为止的代码。 我设法使算法工作——状态的值似乎是正确的,但我无法返回正确的下一步移动/棋盘。 当我执行目标Board = ['-','-','-','o','-','-','-','-', ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM