如何在Haskell中创建两个具有内部状态的相互生产者/消费者?

我有一个智能体,它接收状态并返回动作,同时保持状态/动作对的效用的内部表示。我还有一个环境,它接收动作并返回状态/奖励对。

我需要能够使用一个起始状态来设置智能体,然后不断地从智能体 -(动作)-> 环境 -(状态,奖励)-> 智能体 -(动作)->…
但是,内部状态(需要在每次迭代中更新)需要保持私有(即,在智能体或环境内部)。这意味着我不能简单地在智能体中使用状态和动作作为参数来调用环境作为函数。

我是Haskell新手,所以我不确定这是否可能。


回答:

两个问题:

  • 如果智能体必须使用状态来计算动作,那么您如何期望对智能体保密状态的表示?

  • 如果环境期望根据动作产生状态(和奖励),那么您如何期望对环境保密状态的表示?

这两种情况都是可能的,但每一种都必须涉及某种查询状态或创建状态的抽象。我对这个设计没有好的感觉。

通过以下方式澄清问题会有帮助:

  • 提供感兴趣的函数的类型签名

  • 确定您希望状态的表示暴露给哪些函数。

附:这些困难与Haskell完全分离,并且无论选择哪种实现语言,都会出现问题(前提是该实现语言支持某种形式的隐私)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注