algorithm - 随机决策算法

标签 algorithm artificial-intelligence

我正在制作一个简单的人工智能,我对这个领域真的很陌生。我需要的是一种根据某些参数做出某种决策的算法;但有一点随机性。到目前为止我一直在做的是生成一个随机数并基于我得到的不同值;采取不同的执行路径。不知怎的,我认为有更好的方法来做这类事情。你能给我一些指点吗?

最佳答案

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

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

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

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

关于algorithm - 随机决策算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1827993/

相关文章:

algorithm - 在短文本中查找一组匹配的有效算法

algorithm - 创建BST的时间复杂度

algorithm - TSP的GA算法方法

numbers - 遗传编程中的实数(常数)

statistics - AI/确定颜色名称的统计方法

java - 算法 - 查找循环世界中重叠间隔的持续时间(24 小时)

algorithm - 在 O(1) 中设计一个支持 min、getLast、append、deleteLast 的数据结构,内存受限 n(不是 O(n))+ O(1)

C# : Fastest way to remove duplicates point3D linked to indices

artificial-intelligence - 游戏中的 Q-learning 没有按预期工作

facebook - 基于他们的 Facebook 个人资料的用户分析?