【问题标题】:Random Decision Algorithm随机决策算法
【发布时间】:2009-12-02 19:26:54
【问题描述】:

我正在制作一个简单的 AI,我对这个领域真的很陌生。我需要的是一种算法,可以根据一些参数做出某种决定;但带有一点随机性。到目前为止,我一直在做的是根据我得到的不同值生成一个随机数;采取不同的执行路径。我不知何故认为有一种更好的方法来做这种事情。可以指点一下吗?

【问题讨论】:

  • 你能多说一些关于你想要做出什么样的决定吗?它纯粹是在许多不相关的决定之间进行选择,并且您正在使用一个不错的随机数生成器,那么您正在做的事情听起来还不错。
  • 这是一个运动模拟器;让我们说网球。基于一些参数,如球员的反手力量、球的进入方向等;我想模拟一个镜头;为其添加一些随机性;但还是基于上面的参数。

标签: algorithm artificial-intelligence


【解决方案1】:

我认为没有比你正在做的更好的方法了,因为问题描述相当模糊,具体是人工智能问题还是模拟问题也不清楚。

对于决策部分,通常最好有一个简单的启发式系统(基于您对被建模行为的直观理解),该系统是一系列条件语句,可能带有一些随机因素来稍微改变它。你可以有一个加权平均系统,它选择几个选项,根据感知质量对它们进行排名,然后随机选择一个选项,同时偏向更好的值。 (这在遗传算法界称为轮盘赌选择或fitness proportionate selection,但在 GA 之外也非常有用。)

对于模拟部分,您通常希望对过程进行建模,然后引入随机性来对过程中更微妙的部分进行建模。这意味着明确定义您的输入(反手力量、球方向……)和输出(球的移动矢量?),并考虑它们之间的关系。这意味着您会得到一些已知值的输出,然后您可以使用随机数生成器对其进行修改。如果您尝试模拟人类的选择而不仅仅是物理模拟,事情会变得更加复杂,因为这通常优先于所有其他输入。

我可能会从一个简化的例子开始,即玩家 AI 选择他们想要将球击到的位置。我将球的预期方向计算为一个矢量,该矢量将球准确地发送到计划的位置。然后系统根据球的方向、速度、球员的能力等计算从 0% 到 100% 的难度分数。我生成一个“不准确”修饰符,它是一个介于 0% 和难度% 之间的随机数,这意味着非常容易射击将是完全准确的,而半难度射击将在 0% 和 50% 之间变化。然后我计算一个随机归一化的单位长度 3D 向量,按不准确值对其进行缩放,并将其添加到预期方向。这意味着更困难的射击往往会飞得更远。

【讨论】:

  • 虽然你说问题描述很模糊;这是很多有价值的信息。我想的正是我想要的;多谢。您是否知道任何处理此类事情的网站 - 特别是关于模拟的?
  • 很遗憾没有。我的专业领域是游戏和人工智能。大多数现代游戏本质上都是低保真软实时模拟,因此原理相似。几本书很好地介绍了游戏中的决策(至少,就没有明确解决方案的问题而言),但我喜欢 AI Game Programming Wisdom 系列,因为它展示了多种替代方法。
【解决方案2】:

与大多数关于随机性的问题一样,有必要询问您正在寻找的是真正的随机性,即白噪声还是湍流(又名Perlin Noise)。通常,在大多数领域中,相比白噪声,您更有可能从湍流中获得看起来更“自然”的行为。

【讨论】:

    【解决方案3】:

    根据结果与最佳“期望”状态或结果的接近程度,为每个执行路径打分。让您的算法根据先前决策的平均分数来选择其未来的执行路径,从而为得分最高的决策提供更大的结果概率。这样一来,您的算法似乎不仅在学习,而且还在随机探索其他可能性,但概率比做看起来最好的事情要低。当然,您可以通过不仅考虑每条决策路径的得分,还考虑其增长或收缩率来进行自适应。如果一个决策开始是好的,但经过多次迭代,它的分数越来越低,应该更频繁地避免它,而支持另一个分数有增长趋势的决策。

    【讨论】:

      猜你喜欢
      • 2015-09-30
      • 2021-02-26
      • 2017-08-05
      • 2017-03-15
      • 2012-12-10
      • 2014-07-15
      • 2011-05-06
      • 2018-12-12
      相关资源
      最近更新 更多