前段时间用Julia把Reinforcement Learning: An Introduction 这本书中的例子都复现了下,虽然已经有Python版了,不过其实那个代码缺少抽象,初学的时候看起来还是挺难受的。
我把核心的代码逻辑单独抽出来了,放在
代码本身没有做速度上的优化,毕竟现在都是些traditional rl的算法,速度不是特别重要。接下来的几个月会重点把一些DRL相关的算法加上去(零零散散做了些尝试,还是有许多工作量的,特别是并行的部分)。
谈谈感受:
- multiple dispatch 用起来很爽!写代码的时候,只需要首先关注如何实现核心的算法逻辑,剩下的就只是根据不同的环境做适配即可。
- Design先行,各种AbstractType和接口函数一开始尽量抽象一些,脑海中得先有一个基本成熟的big picture。
- 变量名用utf8很有意思,写出来的代码可以跟书上的算法逻辑基本无缝对应上,对初学者很友好
槽点:
- 画图真的很难用
自我感觉写出来的代码风格有点杂,比如命名习惯就一直改不过来,还有些代码优化的方法不怎么会用。有兴趣的话,可以看看源码提点建议,多多交流(提前感谢!)。