【问题标题】:Fitness Function altenatives in Genetic Algorithms for game AI游戏 AI 遗传算法中的适应度函数替代方案
【发布时间】:2018-05-12 02:42:29
【问题描述】:

我使用 Alpha-Beta 修剪创建了一个五子棋(连续 5 个)AI。它在不那么愚蠢的水平上采取行动。首先,让我模糊地描述一下Alpha-Beta算法的评分功能。

当它接收到一个棋盘作为输入时,它首先找到所有重复的棋子,并根据其作为威胁的有用性,从 4 个可能的值中给它一个分数,这取决于长度。它会返回所有重复分数的总和。

但是,问题是我明确决定了分数(总共 4 个),它们似乎不是最好的选择。所以我决定实现一个遗传算法来生成这些分数。每个基因将是 4 个分数之一。例如,硬编码分数的染色体将是:[5, 40000,10000000,50000]

但是,因为我使用遗传算法来创建评分函数的分数,所以我不确定应该如何实现遗传适应度函数。因此,我想到了以下几点:

我不会使用适应度函数,而是将选择过程合并在一起:如果我有 2 条染色体,A 和 B,并且需要选择一个,我将在每个中使用 A 和 B 染色体来模拟游戏AI,然后选择获胜的染色体。

1.这是健身功能的可行替代品吗?

2.由于Alpha-Beta算法的特点,我需要给获胜条件的最大分数,大多数情况下设置为无穷大。但是,因为我不能使用 Infinity,所以我只是使用了一个大得离谱的数字。我还需要将此分数添加到染色体吗?还是因为它无关紧要并且不会改变评分函数的值,所以将其保留为常数?

3.当最初创建染色体时,随机生成,遵循标准分布据说是最优化的。然而,就我而言,基因有很大的偏差。随机生成染色体还可以吗?

【问题讨论】:

    标签: artificial-intelligence genetic-algorithm minimax game-ai


    【解决方案1】:

    这是健身功能的可行替代品吗?

    是的,是的。这是为棋盘游戏定义适应度函数的一种相当常见的方法。可能一轮是不够的(但您必须进行实验)。

    一个轻微的变体是这样的:

    double fitness(Agent_k)
      fit = 0
    
      repeat M times
        randomly extract an individual Agent_i (i <> k)
    
        switch (result of Agent_k vs Agent_i)
          case Agent_k wins:   fit = fit + 1
          case Agent_i wins:   fit = fit - 2
          case draw:           fit doesn't change
    
      return fit
    

    即一个代理与M从人群中随机选择的对手比赛(替换但避免自我匹配)。

    增加M 噪声会降低,但需要更长的模拟时间(M=5 是一些国际象棋相关实验中使用的值)。

    2.由于Alpha-Beta算法的特点……

    不确定问题。一个非常大的值是表示获胜条件的静态评估函数的标准方法。

    确切的值不是很重要,也不应该进行优化。

    3.当最初创建染色体时,随机生成,遵循标准分布被认为是最优化的。然而,就我而言,基因有很大的偏差。随机生成染色体还可以吗?

    这与您要使用的特定遗传算法“风味”有些相关。

    标准遗传算法可以更好地使用不完全随机的初始值。

    其他变体(例如差异进化)可能对这方面不太敏感。

    也看看这个问题/答案:Getting started with machine learning a zero sum game?

    【讨论】:

    • 你怎么看,是否可以用 Monte-Carlo Tree Search 代替 Alpha-Beta Pruning?
    • @TodorBalabanov 很可能,是的。 GA 可用于优化 MCTS 启发式参数,方法与此处针对静态评估函数的参数提出的方式相同。实际上,我已经尝试过 Chess/Alpha-Beta/GAs,但我没有直接使用 MCTS 的经验,所以我可能会忽略一些重要方面。优化时间也可能是一个真正的问题。
    • MCTS 比 ABP 更容易实现,这就是我更喜欢它的原因。此外,当计算资源不足时,MCTS 可能会受到时间限制。
    猜你喜欢
    • 2020-05-12
    • 2011-04-23
    • 2023-02-20
    • 2011-04-07
    • 2011-10-07
    • 1970-01-01
    • 2011-08-03
    • 2011-12-21
    • 2017-09-26
    相关资源
    最近更新 更多