【问题标题】:Allowing agents to have their internal state允许代理拥有其内部状态
【发布时间】:2017-02-20 04:34:28
【问题描述】:

我正在用 Haskell 编写一个游戏,其中玩家和 AI 轮流采取一些行动。到目前为止,AI 的工作方式是使用游戏的所有信息生成动作,即它们是 GameHistory -> GameState -> Action 形式的函数。

这样,这些函数每次被调用时都会从历史记录中生成一些他们需要的信息。如果 AI 可以有某种“内部状态”并在轮次之间持续存在(即调用相应的函数),那么编写 AI 会容易得多。一个人怎么能实现这样的东西? (顺便说一句,我还应该考虑到不同类型的 AI 的内部状态可能有不同的类型。)

【问题讨论】:

  • 我觉得这个问题太宽泛了,我真的不能给你一个比“使用状态单子”更具体的答案。如果您可以edit您的问题提供一些实际代码,那么我们可能会更有帮助。
  • @danidiaz 谢谢,这看起来像我要找的。我会试试看。

标签: haskell state


【解决方案1】:

您正在寻找的内容可能类似于:

newtype AI = AI { runAI :: GameState -> (AI, Action) }

即您将与动作一起返回您的演员的新状态。你可以在这里使用State monad。您可能也有兴趣阅读有关自动机的信息。如果您需要序列化您的 AI(例如将其存储在数据库中),那么您可能需要做一些不同的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多