强化学习模型设计-最多加5

时间:2018-09-23 00:52:00

标签: reinforcement-learning

我正在尝试使用Keras在python中进行强化学习。可用的大多数教程都使用OpenAI Gym库来创建环境,状态和操作集。

在练习了很多别人写的好例子之后,我决定要创建自己的强化学习环境,状态和动作集。

这是我认为教机器做的事情会很有趣。

  1. 一个从1到4的整数数组。我将这些目标称为
  

目标= [[1、2、3、4]]

  1. 从1到4的其他数字列表(随机)。我称这些为项目符号。
  

项目符号= [1、2、3、4]

  1. 当我向目标发射子弹时,目标的编号将是原始目标编号+项目编号的总和。
  2. 我想向一个目标射击子弹(一次发射一次)
  3. 例如,给定目标[1 2 3 4]和项目符号1,我希望机器预测正确的射向。
  4. 在这种情况下,它应该是索引3,因为4 +1 = 5

      

    curr_state = [[1、2、3、4]]

         

    项目符号= 1

         

    action = 3(<-curr_state的索引)

         

    next_state = [[1、2、3、5]]

我一直在绞尽脑汁思考将其构建为钢筋设计的最佳方法。我尝试了一些,但是模型结果不是很好(意味着,它很可能无法排第5位)。

主要是因为状态是2D:(1)目标; (2)当时的子弹。到目前为止,我采用的方法是将状态转换为以下形式:

  

状态= 5-目标-项目符号

我想知道是否有人可以想到一种更好的方法来设计此模型? 预先感谢!

1 个答案:

答案 0 :(得分:1)

好的,看来没有人在帮助您,所以我只是按照您的描述为您编写了一个Python环境文件。我还为您制作了尽可能多的OpenAI样式,这是它的链接,它在我的GitHub存储库中。您可以复制代码或将其派生。我将在下面进行解释:

https://github.com/RuiNian7319/Miscellaneous/blob/master/ShootingRange.py

状态= [0、1、2,...,10]

动作= [-2,-1、0、1、2]

因此,游戏从0到10之间的随机数开始(您可以根据需要轻松更改此值),并且随机数就是您上述的“目标”。在达到此目标后,您的AI代理可以开火,并且会发射与上述数字相对应的子弹。目标是您的子弹和目标总计为5。如果您的AI代理超过5,或者目标是大于5的数字,则为负。

要获得肯定的奖励,座席必须获得5。因此,如果当前值为3,并且座席射击2,则座席将获得1的奖励,因为他的总价值为5,并且情节将结束。

游戏结束的方式有3种:

1)特工获得5

2)代理尝试15次失败5次

3)数字大于10。在这种情况下,我们说目标太远了

有时候,您需要多次射击才能获得5。因此,如果您的特工射击,它的当前项目符号将被添加到该州,而特工将从该新状态再次尝试。

示例:

当前状态=2。代理射击2.新状态为4。代理在下一个时间步从4开始。这种“顺序决策”创造了强化的学习环境,而不是情境强盗。

我希望这是有道理的,如果您有任何疑问,请告诉我。

相关问题