python版本代码来源:https://github.com/MorvanZhou/Reinforcement-learning-with-tensorflow
我自己给自己注释的版本:
python版本:
Q_learning2.zip
matlab版本:
qlearning.zip
总结:
两者相似点都在于先编写环境。
python编程模板要记住,三个文件分别编写环境、table和主循环。思路是编写环境,到编写agent(table),再写算法的主循环 。我只能做到看懂每块的含义,细化到具体语句大部分能看懂含义,但是如果自己从0到1的把整个算法转化成代码语言只能单纯地写出Qlearning的循环更新部分,面向对象编程的思维还没有。
matlab更加模块化,全程面向对象。先加载环境,然后利用rlTable的属性建立Qtable,利用Q table和rlQValueRepresentation的属性建立Q value function;再利用Q value function和rlQAgentOptions的属性定义参数一起创建Q agent;最后用trainOpts = rlTrainingOptions进行训练。
差别:
一是终止训练的条件,算法中是s'趋近于s,python是这么编写的,而matlab把终止条件放进rlTrainingOptions的属性中,定义了不同的条件,要自己去设置,而怎么设置我还没完全搞清楚,目前猜测是手动调;
二是python这份源码中有 check_state,即检查是否有状态是Table中没有的,而matlab则没体现出来。
文章评论