Example 8.2 Mountain–Car Task
来源:互联网 发布:优化后人员配制方案 编辑:程序博客网 时间:2024/06/07 02:40
前面讲过coarse coding,Tile Coding是Coarse Coding的一种,特别适合用于多维连续空间。之前降到Coarse Coding,多个特征,特征与特征之间存在互相覆盖。而在Tile Coding中,特征的receptive field(感受野)作为输入空间的一个分区。每个分区称为tiling,分区里面的元素称为tile。如下图所示,是一个二维状态空间的最简单的分区,有4个分区。每个分区通过一定的位移形成新的分区。这四个分区对应4个特征。状态空间中的每个点在每个tiling中都能找到对应的tile,有且只有一个tile,每个点的特征数都是一样的——4个。
假设有m个tiling,则某状态由m个tile组成。状态之间的tile可能是相同的。当某一状态更新,则另一状态也可能发生变化。
接下来举个例子。
sutton的rl第一版本的8.2案例,第二版本的10.1。
如图,有一辆小车,通过向左,
小车的发动机能给一个向前或向后的动力,小车的发动机有三个选择:向前(+1)、向后(-1)和不发动(0)。小车根据简单化的物理规则行动,它的位置
其中bound规定
另外,如果
我们使用的tile-coding是网上公开的python3代码。使用下面两行代码就行了:
iht = IHT(2048)features = tiles(iht, 8, [8*x/(0.5+1.2), 8*xdot/(0.07+0.07)], A)
IHT是处理特征的结构,tiles (ihtORsize, numtilings, floats, ints=[], readonly=False)根据floats和ints返回特征tile。返回的特征tile维数为numtilings。floats为当前状态,ints为采取的行动。
根据rl第二版本的伪代码(Episodic Semi-gradient Sarsa for Control)跑了一下:
其实和Sarsa差不多,除了
根据rl第一版本的伪代码:
这里多了eligibility trace。对比两个实验,发现并无多大差别,所以我还是搞不清eligibility trace的作用。。
实验代码:https://github.com/Mandalalala/Reinforcement-Learning-an-introduction/blob/master/Chapter%208/Example_8_2_Mountain_Car_Task.ipynb
- Example 8.2 Mountain–Car Task
- task divide example
- 5.7 - Simple Car Example Using Functions
- Car
- Car
- Car
- Example 6.7 An Access-Control Queuing Task
- Beacon Mountain 测试版 – 常见问题解答
- iPhone – UIActionSheet Example
- Struts – Wildcards example
- Struts – MappingDispatchAction Example
- MATLAB – TreeBagger example
- example
- example
- Example
- example
- Example
- Example
- 如何减小与“大牛”的差距
- 20招让你的Python飞起来!
- quartz详解1:初步了解quartz
- spring,springmvc,mybatis集成实例--增删查改
- Java 逆变与协变
- Example 8.2 Mountain–Car Task
- markdown练习
- SELECT DISTINCT 语句
- properties.getPropety
- 多线程并发控制CountDownLatch和CyclicBarrier和Semaphore
- Java设计模式学习笔记3
- springMVC中ajax数组传值报400或者415错误
- quartz详解2:quartz由浅入深
- hdu 1517 A Multiplication Game(规律)