English 中文(简体)
如何根据百分比管理人工智能操作
原标题:
  • 时间:2009-03-23 14:22:09
  •  标签:

我现在想了解一段时间,程序员如何根据最终幻想战术类游戏(策略游戏)的动作百分比来模拟人工智能决策。

例如,假设AI角色具有以下动作:

Attack 1: 10%
Attack 2: 9%
Magic : 4%
Move : 1%

所有这些都远远不能达到100%

现在,一开始我想拥有一个有100个空插槽的阵列,攻击将有10个插槽,攻击阵列上的2个9个插槽。随机组合,我就可以完成动作了。我在这里的问题是它不是真的有效,或者看起来不是。同样重要的是,如果我上了一个空槽该怎么办。我是否必须为每个角色计算100%的所有动作,或者为每个角色定义一个“默认”动作?

或者,也许有一种更有效的方法可以看到这一切?我认为百分比是实现人工智能的最简单方法。

最佳回答

我能想到的最好答案是列出你希望角色拥有的所有可能的动作,给每个动作一个相对值,然后将所有动作缩放到100%。

编辑:

例如,以下是我的三个动作。我希望攻击和魔法的可能性相等,逃跑的可能性是攻击或使用魔法的一半:

  • attack = 20
  • magic = 20
  • flee = 10

这加起来就是50,所以每个除以这个总数得到一个分数值(乘以100表示百分比):

  • attack = 0.4
  • magic = 0.4
  • flee = 0.2

然后,我会从中列出累积值(即,每个条目都是该条目及其之前所有条目的总和):

  • attack = 0.4
  • magic = 0.8
  • flee = 1

现在,生成一个介于0和1之间的随机数,并找到列表中大于或等于该数的第一个条目。这就是你的行动。

问题回答

不,你只是创造阈值。一种简单的方法是:

0-9->;攻击1

10-18->;攻击2

19-22->;魔术

23->;移动

其他内容->;24-99(最多需要加100)

现在创建一个随机数,并将其修改100(所以num=randomNumber%100)以定义您的操作。随机数越接近一个适当的分布,你会得到更好的结果。因此,您可以获取结果,看看它属于哪一类。实际上,你可以让这件事更有效率,但这是一个良好的开端。

好吧,如果它们加起来不到100,它们就不是真正的百分比。不过这并不重要。你只需要计算出每个动作的相对概率。要做到这一点,请使用以下公式。。。

prob = value_of_action / total_value_of_all_actions

这会给你一个介于0和1之间的数字。如果你真的想要一个百分比而不是一个分数,那就把它乘以100。

下面是一个例子:

prob_attack = 10 / (10 + 9 + 4 + 1)
            = 10 / 24
            = 0.4167

这相当于41.67%的时间选择攻击。

然后,您可以生成其他答案中提到的阈值。并使用0到1之间的随机数来选择您的操作。





相关问题
热门标签