我已经得到了一剂,需要在国家和返回的行动,同时保持内部表示的实用工具的国家行动对。我还有一个环境,需要在行动和返回国家/奖励对。

我需要能够设定剂一开始的状态,然后连续从剂(行动)->环境(国家、奖励)->剂(行动)->...然而,内部国家(其需要更新,每次迭代)需要保持私人(即,内的代理或环境)。这意味着我不能简单地把环境作为内的功能剂的使用状态和行动的参数。

我有点Haskell noobie,所以我甚至不知道如果这是可能的。

有帮助吗?

解决方案

两个问题:

  • 如果代理人必须使用一个状态来计算一个行动,那么你怎么能指望保持代表性的国家秘密的代理人?

  • 如果环境预计将产生一个国家(和一个奖励)给出一个动作时,你怎么能指望保持代表性的国家秘密的环境?

这些都是可能的,但是每个人都必须涉及某种抽象的用于查询的国家或创建国家。我不觉得这个设计。

这将有助于澄清这个问题通过

  • 提供种类型的签名功能的兴趣

  • 标识到其职能你想要的代表性的国家 被暴露。

P.S.这些困难是相当可分离Haskell,并将问题在于不管选择实现语言(提供,执行语言支持 一些 形式的私隐).

其他提示

您将需要决定哪些代理和环境坐镇“上面” - 让我们假设这个答案的其余部分,它的顶部调用到代理,因为这通常最有意义的环境

您可以保留代理私有的数据表示使用模块系统 - 只导出数据类型名称,没有任何其内部的。

module Agent (AgentState, other_stuff) where

如opposd到

module Agent (AgentState(..), other_stuff) where

如果代理也需要通过环境状态(虽然我看不到任何理由,这将是必要的,因为环境可以跟踪它本身),然后再进行代理功能多态,使他们能通过任何状态类型 - 那么环境可以通过不管它喜欢在没有其表示暴露

这也应该是可以使用的状态单子来实现对所发生的国家,例如防止环境从复制的状态代理给它,并使用相同的状态一边喊代理更多的控制权,但如果你”再新的哈斯克尔它可能是最好先得到一点经验没有单子。 (这并不是说单子是特别可怕的或任何东西,但他们隐藏的细节,从你所以这是很难看到发生了什么事情。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top