模型同上一篇文章 https://docle.github.io/2017/10/27/Model-based-value-iteration-algorithm/
策略迭代
确定情况下的策略迭代(Q值策略评估)
代码实现
1 | # -*- coding: UTF-8 -*- |
随机情况下的策略迭代(Q值策略评估)
代码实现
1 | # -*- coding: UTF-8 -*- |
note
Python 3.X对于浮点数默认的是提供17位数字的精度。
从很大程度上说,使用浮点数时都无需考虑其行为。你只需输入要使用的数字,Python通常都会按你期望的方式处理它们:1
2
3
4
5
6
7>>> 0.1 + 0.1
0.2
>>> 0.2 + 0.2 9 0.4
>>>2 * 0.1
0.2
>>>2 * 0.2
0.4但需要注意的是,结果包含的小数位可能是不确定的:
1
2
3
4>>> 0.2 + 0.1
0.30000000000000004
>>> 3 * 0.1
0.30000000000000004所有语言都存在这种问题,没有什么可担心的。Python会尽力找到一种方式,以尽可能精确地表示结果,但鉴于计算机内部表示数字的方式,这在有些情况下很难。
可以使用round() 函数取小数位。
这次的代码实现时利用了一个临时的字典 tp,这个字典保存着 (x,u) 的最新值,因此在异步算法中计算时可以使用该字典中的值而不必分太多情况,使得计算过程更加简洁易懂。可以看出上一遍文章中的方法比这里的要复杂。