Optimization 什么模型最适合实时战略游戏的优化?

Optimization 什么模型最适合实时战略游戏的优化?,optimization,artificial-intelligence,genetic-algorithm,Optimization,Artificial Intelligence,Genetic Algorithm,最近有一篇文章讨论了在星际争霸II中使用遗传算法优化“建造顺序” 星际争霸比赛的初始状态是预先确定的且恒定的。和国际象棋一样,在比赛的早期阶段做出的决定会对玩家在比赛中后期的表现产生长期影响。因此,各种开放的可能性或“建设订单”都在认真研究和审查之中。在上述文章发行之前,计算机辅助构建订单创建可能不像最近那么流行 我的问题是遗传算法真的是建模优化构建订单的最佳方法吗? 构建顺序是一系列操作。有些操作有一些先决条件,比如,“在创建建筑C之前,您需要建筑B,但您可以随时创建建筑A。”因此染色体可能

最近有一篇文章讨论了在星际争霸II中使用遗传算法优化“建造顺序”

星际争霸比赛的初始状态是预先确定的且恒定的。和国际象棋一样,在比赛的早期阶段做出的决定会对玩家在比赛中后期的表现产生长期影响。因此,各种开放的可能性或“建设订单”都在认真研究和审查之中。在上述文章发行之前,计算机辅助构建订单创建可能不像最近那么流行

我的问题是遗传算法真的是建模优化构建订单的最佳方法吗?

构建顺序是一系列操作。有些操作有一些先决条件,比如,“在创建建筑C之前,您需要建筑B,但您可以随时创建建筑A。”因此染色体可能看起来像AABAC

我想知道遗传算法是否真的是解决这个问题的最好方法。虽然我对这个领域不太熟悉,但我很难将基因的概念转换成一个数据结构,即一系列的动作。这些都不是可以像头和脚一样混合搭配的独立选择。那么,像复制和交叉这样的东西有什么价值呢


我认为国际象棋人工智能使用的任何一种方法都更合适,因为在任何给定的时间,选择的数组都可以在某种程度上被视为树状的。

有一些研究使用分层强化学习来建立一个行动的分层顺序,从而有效地最大化奖励。我还没有找到太多实现这一想法的代码,但有几篇文章描述了基于MAXQ的算法,这些算法已被用于明确处理实时策略游戏领域,例如and。

遗传算法可以是,有时也可能不是,最优或非最优解。基于遗传算法的复杂性,有多少变异,组合的形式,以及遗传算法的染色体是如何解释的

因此,根据人工智能的实现方式,遗传算法可能是最好的

您正在寻找一种实现遗传算法的单一方法,但却忘记了遗传编程、数学的使用、高阶函数等。遗传算法可能非常复杂,通过使用聪明的杂交组合系统,非常智能。
例如,神经网络经常使用遗传算法进行优化



查找“遗传编程”,它类似,但使用树结构而不是字符行,这允许更复杂的交互,从而繁殖更好。对于更复杂的东西,它们通常工作得更好。

正如塔斯勒姆盖指出的那样,遗传算法并不能保证是最优的,即使它们通常会给出很好的结果

要获得最佳结果,您必须搜索所有可能的操作组合,直到通过树状表示找到最佳路径。然而,为星际争霸做到这一点是很困难的,因为有太多不同的途径来达到一个目标。在国际象棋中,你将一个棋子从e2移动到e4,然后对手移动。在星际争霸中,你可以在瞬间x或x+1或x+10或

国际象棋引擎可以查看棋盘的许多不同方面(例如,它有多少棋子,对手有多少棋子),以指导其搜索。如果它知道大多数可用的操作严格地比其他操作更糟糕,那么它可以忽略这些操作

对于构建订单创建者来说,只有时间才是真正重要的。建造另一架无人机以更快地获取矿物是更好,还是立即启动产卵池更快?不像下棋那么简单

这类决策很早就发生了,所以在做出更好的决策之前,你必须搜索每个备选方案,这需要很长时间。 如果我要自己编写一个构建顺序优化器,我可能会尝试制定一个启发式方法来估计当前状态的好坏(接近目标状态),就像国际象棋引擎所做的那样:

Score = a*(Buildings_and_units_done/Buildings_and_units_required) - b*Time_elapsed - c*Minerals - d*Gas + e*Drone_count - f*Supply_left
这试图将分数与完成百分比以及星际争霸常识联系起来(保持低资源,制造无人机,不要制造超出需要的补给)。当然,变量a到f需要调整

在你有了一个启发式算法,可以在某种程度上估计一种情况的价值之后,我会使用,或者可能会搜索可能性树

编辑


我最近发现了一个可以实时描述星际争霸中构建顺序优化的工具。作者使用with和启发法,根据技术树估计达到目标所需的最小工作量(例如,小狗需要产卵池)以及收集所需矿物质所需的时间。

此遗传算法仅优化游戏中一个非常特定部分的策略:游戏前几个构建动作的顺序。它也有一个非常明确的目标:尽快拥有尽可能多的蟑螂

影响这个系统的唯一因素似乎是(我不是星际争霸玩家):

  • 各单元的构建时间和 建筑物
  • 给定可用单位和建筑物,允许的单位和建筑物
  • 幼虫再生率
这是一个相对有限、定义相对明确、搜索空间较大的问题。因此,它非常适合于遗传算法(以及许多其他优化算法)。完整基因是一组特定的构建顺序,以第七只蟑螂结束。据我所知,你可以“玩”这个特定的基因,看看它完成的有多快,所以你有一个非常明确的健康测试。 您在bu上也有一些很好的限制