我正在制作一个简单的人工智能,我对这个领域很陌生。我需要的是一种基于某些参数做出某种决策的算法;但有一点随机性。到目前为止,我一直在做的是生成一个随机数,并根据我得到的不同值;采取不同的执行路径。我不知何故认为有更好的方法来做这种事情。你能给我一些指示吗?
答案 0 :(得分:4)
我认为没有比你正在做的更好的方式,因为问题描述非常模糊,无论是人工智能问题还是模拟问题都不明确。
对于决策部分,通常可以使用简单的启发式系统(基于您对建模行为的直观理解),这是一系列条件语句,可能有一些随机因素可以稍微改变一下。你可以有一个加权平均系统,它可以选择几个选项,根据感知质量对它们进行排名,然后随机选择一个选项,同时偏向更好的值。 (这在遗传算法圈子中称为轮盘赌轮选择或fitness proportionate selection,但在GA之外也非常有用。)
对于模拟部分,您通常希望对流程建模,然后引入随机性来为流程中更细微的部分建模。这意味着清楚地定义你的输入(反手力量,球方向......)和你的输出(球行程矢量?),并考虑它们之间的相互关系。这意味着您将获得一些已知值的输出,然后您可以使用随机数生成器修改它们。如果你试图模拟人类的选择而不仅仅是物理模拟,事情会变得更加复杂,因为这通常优先于所有其他输入。
我可能开始的一个简单例子是玩家AI选择他们想要击球的地方。我将球的预期方向计算为一个矢量,将球精确地送到计划的位置。系统然后根据球的方向,速度,球员的能力等计算从0%到100%的难度分数。我生成一个'不准确'修饰符,它是0%和难度%之间的随机数,这意味着非常容易射击将是完全准确的,而半难射击将在0%和50%准确之间变化。然后我计算随机归一化单位长度3D矢量,按不准确度值进行缩放,并将其添加到预期方向。这意味着更难拍摄的照片会更偏离目标。
答案 1 :(得分:0)
与大多数关于随机性的问题一样,在询问你所寻找的是真正的随机性,即白噪声或湍流(又名Perlin Noise)时是值得的。通常在大多数领域,你更容易得到一些看似湍流的“自然”行为,而不是白噪声。
答案 2 :(得分:0)
根据结果与最佳“期望”状态或结果的接近程度,为每个执行路径提供分数。使您的算法根据前一个决策的平均得分选择其未来的执行路径,从而为得分最高的决策提供更大的结果概率。通过这种方式,您的算法不仅可以学习,而且可以随机探索其他可能性,但概率低于做最好的算法。当然,您可以通过不仅考虑每个决策路径的得分而且还考虑其增长率或收缩率来实现这种自适应性。如果一个决定开始好,但经过多次迭代后,得分越来越低,应该更频繁地避免另一个决定谁得分有增长趋势。