我有一个模拟,每5秒计时一次。我想在这个环境中使用OpenAI及其基线算法来执行学习。为此,我想通过编写一些与OpenAI环境API相对应的适配器代码来调整模拟。但是有一个问题:控制流是由代理在OpenAI设置中定义的。但在我的世界里,环境是独立的,独立于智能体。如果智能体没有做出决定,或者速度不够快,世界就会在没有他的情况下继续运行。如何实现触发下一步的逆转?
简而言之: OpenAI环境被代理单步执行。我的环境给了我的代理大约2-3秒的时间来决定,然后告诉它什么是新的,再次提出选择是否采取行动。
举个例子:我的环境非常类似于一个真实的股票交易市场。代理获得24次以某一限制价格购买/销售产品的机会,以累积该目标时间的某一数量,并且在时间步骤24,奖励给予该代理,并完成该槽。奖励是根据每件商品支付的平均价格与所有市场参与者的平均价格进行比较得出的。
在任何给定的时刻,24个插槽被并行交易(期货的24倍并行交易)。我相信为此我需要创建24个环境,这让我相信A3C将是一个很好的选择。
发布于 2018-05-19 23:50:24
重新阅读这个问题后,似乎OpenAI健身房不太适合你正在尝试做的事情。它是为运行快速实验而设计的,如果您正在等待实时事件的发生,则无法有效地完成这些实验。如果您没有历史数据,并且只能根据传入的实时数据进行训练,那么使用OpenAI健身房就没有意义了。您可以根据这些数据编写自己的代码来表示环境,这比尝试将其转换为另一个框架要容易得多,尽管OpenAI gym的API确实为您的环境应该如何工作提供了一个很好的模型。
https://stackoverflow.com/questions/50426041
复制相似问题