Artificial intelligence 游戏中的软编码AI

Artificial intelligence 游戏中的软编码AI,artificial-intelligence,Artificial Intelligence,我正在开发一个游戏,在概念上类似于风险或垄断(基本上是一个棋盘游戏,尽管我的问题可以外推)。因此,假设我想要电脑对手,我需要写一个人工智能 现在,我的问题是,我是否需要直接在程序中对人工智能进行编程(硬编码),或者我编写的程序是否有某种方式可以读取方向和行为规则列表,对人工智能进行软编码 我假设,如果我要像前面描述的那样编写软代码,我将需要对AI可以使用的所有可能的操作进行编程。我还假设我不能告诉一个软模式的AI做任何事情,除非编程(例如,一些依赖于多种因素的决策行为)。与特定于硬编码的人工智能

我正在开发一个游戏,在概念上类似于风险或垄断(基本上是一个棋盘游戏,尽管我的问题可以外推)。因此,假设我想要电脑对手,我需要写一个人工智能

现在,我的问题是,我是否需要直接在程序中对人工智能进行编程(硬编码),或者我编写的程序是否有某种方式可以读取方向和行为规则列表,对人工智能进行软编码


我假设,如果我要像前面描述的那样编写软代码,我将需要对AI可以使用的所有可能的操作进行编程。我还假设我不能告诉一个软模式的AI做任何事情,除非编程(例如,一些依赖于多种因素的决策行为)。与特定于硬编码的人工智能相比,软编码的彻底改变(优势/劣势)是什么?

一些人工智能技术非常占用CPU,例如基于启发式的广度优先或深度优先搜索,适用于许多策略游戏

这样的搜索需要您建立API,以便能够检索当前“状态”(游戏状态的完整表示),以及该状态(或任何状态)的所有可能移动/更改列表,以及这些移动/更改将导致的新状态

完成此操作后,任何算法都可以进行适当的API调用,以查看可以移动到哪些状态,以及可以从这些状态移动到哪些状态,等等。您尝试向前看的移动次数越多,可以达到的状态将呈指数级增长,因此即使是两次移动,对计算机来说都可能是一项可怕的任务

由于这一困难,启发式分数用于评估跟随某些分支的可能有用性,因此搜索算法可能会立即放弃当前状态中90%的第一个可能移动

如果一个AI遵循这种获取状态、评估状态并查看从状态到后续状态的可能移动/变化的模式,那么很明显,你可以对AI进行软编码,但是AI为了试探性地对状态进行评分所做的事情可以是任何事,而你的软代码就像一种微型语言。就我个人而言,除非你想实现一个迷你语言,否则这是一个相当困难的工作方式。此外,您的软代码将需要某种解释,这可能使其速度比代码慢一倍,或慢10或100倍。。。任何指数级困难的技术都意味着性能非常重要。如果所选择的人工智能方法不是指数级的困难,或者不是简单的困难,那么可以使用软代码,但仍然需要实现一种微型语言

当然,您可以将AI作为一个单独的程序来实现,该程序通过网络与您的游戏程序进行通信。这可能只是localhost对localhost,但当然不必如此。这项技术的性能在某种程度上取决于网络延迟和带宽,但这可能是一个重大问题,也可能不是


您还可以将AIs实现为可动态加载的库(例如,您的游戏可能会在某个文件夹中查找,看到一堆库文件,并尝试在运行时加载它们(例如,使用dlopen()for UNIX)。然后,您可以随时输入新的AIs,而不必触碰游戏本身。如果您的主要要求是拥有插件AIs并在性能重要的地方保持性能,这可能是一条出路。

看起来您正在寻找一个引擎。@tobias_k这与我的想法不完全相同,尽管类似。我想问是否可以编写一个ser不同人工智能(如智能计算机、复仇计算机、扩展计算机、哑计算机等)的ies,而不将它们集成到源代码中,而是将它们保存在文件(如.txt)中如果可能的话,这样做的开销是多少。对于不同的难度级别,你可以简单地让AI有点马虎,例如,探索搜索树的深度是多少?关于文本文件,我仍然认为GGP是相关的,你可能可以使用现有的GGP引擎,并将游戏规则反馈给它这是一个文本文件或类似文件。请注意,coursera很快就要开始了!感谢您的输入(以及coursera链接)。我必须更深入地研究整个主题。我的具体问题在某种程度上局限于我自己的程序中,我试图简化问题。“作为一项规则,您将为此目的实施的AI类型是基于启发式的广度优先或深度优先搜索。"。对于非常有限的设置来说,这是绝对正确的,对于许多其他类型的游戏来说,这是完全错误的。那么机会呢?隐藏元素呢?我同意,你的评论是有用的,而且做得很好,尽管“非常有限”可能是玩得过火。op在这两款游戏中,机会的主要来源当然是骰子,但在这两种情况下,都是不同的在一定程度上,搜索策略仍然是有效的。对于风险而言,掷骰子是一种影响对某一领土进行攻击的结果概率的偏差,但这只是统计数据,军队规模也是一个因素,因此启发式算法可以根据概率计算分数,事实上掷骰子与决策过程基本无关s、 由于op不是问人工智能技术,而是问人工智能的模块化实现,集成与否,我的回答可能过分强调了搜索技术是一条发展之路。它引入了一个重要的场景,即大量CPU使用,这可能与此相关,也可能与此无关,因为它可能不仅与此相关,而且与cr相关关于OP问的选择的执行,我认为这很重要。不过,我会把答案稍加修改,以考虑到你的评论。公平地说,这个问题根本不考虑CPU的性能,主要是因为它不是一个问题。例如,当前的象棋引擎在几秒钟内计算出最好的移动。我正在开发的游戏没有我想象的那么多选择