首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最佳练习A.I. -检查所有可能的动作还是选择一个目标?

最佳练习A.I. -检查所有可能的动作还是选择一个目标?
EN

Software Engineering用户
提问于 2015-03-03 02:47:13
回答 2查看 1K关注 0票数 3

我正在寻找一些关于如何产生最佳实践A.I的一般指导。

根据我的理解,人工智能对围棋、国际象棋等游戏的工作方式是考虑所有可能的动作(多个动作的组合,提前几个回合),并决定哪一个可能的移动最大限度地提高了一些给定的分数/效用。

然而,我很怀疑这不是星际争霸的工作方式。我假设这里的人工智能对于代码的每一次迭代,都不会有一个给定的工作人员/无人驾驶飞机可以指向的数百个可能的方向(并计算出从更接近资源、受到保护、增加了对每一个可能的移动的侦察等等中得到的效用)。

我假设,游戏将无人机的选项抽象成特定的目标,比如:收集资源X,收集资源Y,侦察,战斗,逃离并确定每一个目标的预期效用,一旦目标被选择,游戏就会计算出一个简单的规则来实现目标,在大多数情况下,这个规则只是移到最接近的资源来源,远离最接近的敌人等等。

那么,问题是:

( 1)以上基本正确吗?或者还有其他方法可以让人工智能的最佳实践发挥作用。

2)采用抽象的主要原因是什么,而不是考虑所有可能的动作的效用?即计算量,易于编程,传统等。

3)一个人如何决定是建立国际象棋风格的人工智能还是星际争霸风格的人工智能,以达到特定的目的?你会想到什么样的考虑?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2015-03-03 03:07:19

人工智能中没有“最佳实践”这样的东西。有起作用的,也有不起作用的。有些技巧可能适用于某项任务,你在问题中总结得很好。

以StarCraft 2这样的RTS为例,不同的单元具有不同的功能。收集资源:他们被指派去收集其他地方花费的资源。人工智能只需要弄清楚“如果我现在的资源是繁忙的还是耗尽的,附近还有其他资源吗?”这是一个相当简单的任务。

军事单位可能有命令排队:移动到这里,攻击这里,站着攻击附近的任何东西,等等。这些类型的最大的挑战是:如何到达某个地方,而不是做些什么。

最后是人工智能,它可以控制多个单位,这就是当你在自由游戏或战役中与电脑对手对战时所发挥的作用。这些认可机构往往是预先分配的命令(战役)、构建命令(免费发挥)的组合,而独立于单个单位的AI则会像玩家一样向多个单位发出命令。这是其中最有趣的,但不幸的是,这些认可机构大多是专有的,我们可能不知道它们是如何运作的。

实时仿真当然有时间限制,人工智能算法必须足够强大,以“足够聪明”,同时足够快,以不影响游戏的性能。

对于你的第一点,是的,你把事情总结得相当好。对于接下来的两点,权衡就是我上面描述的:计算机是否有时间考虑所有的移动,或者至少有大量的移动?在速度和智力之间有一个可以接受的权衡吗?是否存在有助于此的约束,例如,特定的游戏实体只执行某些操作?玩家是否可以通过向单位发出指令和允许有限的自治权来影响这一点?

票数 5
EN

Software Engineering用户

发布于 2015-03-03 11:38:23

我不是人工智能专家,但我确实知道一些关于人工智能的知识,还有关于国际象棋的知识。

首先,让我们注意到,对于认可机构来说,没有“最佳做法”,它们可以以许多不同的方式发挥作用。有些方法更适合于某些问题,有些问题有许多可行的方法。

现在,不,像国际象棋这样的游戏绝对不是通过考虑到一定深度的每一个可能的移动来进行的。问题是指数增长很容易被低估,但仓位数量太大,无法计算。下棋两次全速移动(白棋和黑棋)之后,可能有9000多个可能的位置,6次棋后超过900万。考虑到所有可能的移动,即使达到相当小的深度也是不可行的。

国际象棋

因此,国际象棋人工智能中的主要问题其实是棋动不考虑的问题。对于这个问题,有许多不同的方法,其中一个非常值得注意的方法是将minimax和alpha-beta剪枝结合起来。你可以在维基百科上阅读这些内容,以获得一个简单的介绍或其他来源,以获得更深入的考虑。minimax本质上是一种考虑移动到一定深度,然后在当前情况下选择最佳移动的算法,而α-β剪枝是一种从极小极大中去除某些路径的算法。然后,还有进一步的智能改进,例如考虑移动的特定顺序,以便一些路径可能会被从评估更早地被切断。在实践中,使用了这些技术的高级改进。

近年来,这些启发方法的进步使得国际象棋比以前更加强大。想想看,就在不久前,一台超级计算机才能打败顶尖的人类。1996年,深蓝打败了卡斯帕罗夫,这是一台专门制造的电脑.但是十年后,在2006年,Kramnik在玩对战Deep,它运行在一台功能强大的基于Xeon的计算机上,但它不是超级计算机或任何特殊的构建,它是一台典型的高性能计算机,就像服务器可能使用的那样。自2009年以来,HIARCS国际象棋引擎已经能够提供强大的结果运行在移动设备上,几乎完全是由于更聪明的算法-所考虑的位置数量非常低。到目前为止,只有顶级棋手才有机会击败Android最好的程序。在一台像样的台式电脑上,即使是顶级的爷爷也没有机会。

最近这种巨大优势的一个例子就是零移动启发式。它允许国际象棋AI考虑零移动(也就是说,不移动任何东西,这在国际象棋中是非法的)。基本的想法是,如果你可以做一个空的移动,仍然有一个强大的立场,那么移动可能会提供一个更好的位置。

注:游戏结束时,棋牌局确实会使用。对于剩馀几个棋子的终局位置,它们已经被彻底解决了,因此可以找到最优的发挥。当前的国际象棋AI将总是在六或七人的终局位置上发挥最佳。

On StarCraft

所有这些都与StarCraft这样的东西的工作方式完全不同。StarCraft AI在很大程度上是关于寻路的(这是一个非常具有挑战性的问题,任何玩过RTS游戏的人都可能见过人工智能“失火”,比如单位卡住或绕圈跑),以及对情况的一些实时估计。RTS游戏的本质迫使AI能够快速思考。因此AI将使用各种公式进行粗略估计。例如,考虑到它的军队对抗对方的军队,它会有某种公式,可以快速地用来计算预期的结果,然后AI根据这个公式做出战斗或撤退的决定。与此同时,人工智能的目标是,只要没有最大限度地利用资源,就会继续培训员工。

当然,StarCraft AI也可以遵循不同的策略。它的目标可以是最大限度地利用资源,这将导致类似于快速扩张的结果,或者它可以将攻击的时间最小化,这将是一种匆忙。此外,还有其他技术,例如计算“危险区域”。AI同意一些地区处于危险中,而另一些地区则被保护。例如,这将指导它建造防空炮塔。

国际象棋和StarCraft提供了一个非常好的例子,说明人工智能是如何与众不同的。一个国际象棋AI会牺牲速度来换取智力--在比赛条件下考虑几分钟的移动是正常的。一个StarCraft AI将牺牲智力的速度-它必须想得足够快,以提供一个愉快的实时游戏体验。一个国际象棋AI在评估位置上付出了很大的努力,一个StarCraft AI会对哪个力量更强做一个更粗略的估计。在国际象棋中,棋盘上的整个位置都是已知的,在StarCraft中有未知的元素。

StarCraft (两款游戏)对人工智能来说都很有趣。从研究的角度来看,2010年获得AIIDE大奖的人工智能公司( AIs )很有趣。你可以在谷歌上搜索“斯坦福星际争霸人工智能”,为Starcraft和续集找到一些有趣的人工智能项目。

票数 6
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/275041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档