我是RL的新手,我参考了几本书和教程,但我有一个基本的问题,我希望在这里找到基本的答案。
参考的主要书籍:Sutton & Barto 2nd edition和blog
问题描述(仅Q学习方法):智能体必须从A点到达B点,它是一条直线,B点是静态的,只有智能体的初始位置总是随机的。-----------A(60,0)----------------------------------B(100,0)------------->
保持它的简单性Agent总是向前移动。B始终位于X轴位置100,这也是目标状态,并且在第一次迭代中A位于60 X轴位置。因此,操作将只是“前进”和“停止”。奖励结构是当A到达点B时奖励智能体100,否则只保持0,当A超过B时,它得到-500。因此,智能体的目标是到达并停在位置B。
1)在这种情况下,从点A到点B需要多少个状态?如何定义Q和R矩阵?2)如果发现新的状态,如何添加新的列和行?
任何帮助都将不胜感激。
Q_matrix实现:
Q_matrix((find(List_Ego_pos_temp == current_state)) ,
possible_actions) = Q_matrix(find(List_Ego_pos_temp == current_state),possible_actions) + this.learning_rate * (Store_reward(this.Ego_pos_counter) + ...
this.discount * max(Q_matrix(find(List_Ego_pos_temp == List_Ego_pos_temp(find(current_state)+1))),possible_actions) - Q_matrix((find(List_Ego_pos_temp == current_state)) , possible_actions));
这个实现是在matlab中实现的。List_Ego_pos_temp是一个临时列表,存储了智能体的所有位置。
此外,假设有10个状态1到10,我们还知道智能体在每个状态中移动到状态10的速度和距离,并且智能体始终只能按顺序移动,这意味着智能体可以从s1到s2到s3到s4直到10,而不是s1到s4或s10。假设在s8是目标状态,奖励= 10,s10是终端状态,奖励是-10,从s1到s7,它收到的奖励是0。那么,如果当前状态被视为state1,下一状态被视为state2,并且在下一次迭代中,当前状态被视为state2,下一状态被视为state3,那么计算Q表是否是一种正确的方法?这会正确地计算Q表吗,因为下一个状态已经被馈送了,并且没有任何预测?
发布于 2018-08-02 01:50:20
由于您在本例中定义了问题,因此许多变量都依赖于您。
祝你好运。
https://stackoverflow.com/questions/51571375
复制相似问题