一种求解有限水平、有限状态随机动力程序的逆向归纳法的简单实现。
stochasticdp的Python项目详细描述
逆向归纳求解的一种简单实现 有限视界,有限空间随机动力程序。
安装
stochasticdp在pypi上可用:
pip install stochasticdp
用法
初始化随机动态程序:
dp=StochasticDP(number_of_stages,states,decisions,minimize)
其中
- number_of_stages是一个整数
- states是一个列表
- decisions是一个列表
- minimize是布尔值
这就产生了一个阶段编号的随机动态程序 0, ..., number_of_stages - 1,并初始化以下内容 词典:
- dp.probability,其中dp.probability[m, n, t, x]是 在阶段^{tt11}中从状态n移动到状态m的概率$ 根据决定x
- dp.contribution,其中dp.contribution[m, n, t, x]是 从状态n移动到 状态m处于阶段t处于决策x
- dp.boundary,其中dp.boundary[n]是边界条件 对于状态为n 的值go函数
您只需要定义转换的概率和贡献 以正概率发生。
您可以使用下面的helper函数来填充这些 词典:
# This sets dp.probability[m, n, t, x] = p and dp.contribution[m, n, t, x] = cdp.add_transition(stage=t,from_state=n,decision=x,to_state=m,probability=p,contribution=c)# This sets dp.boundary[n] = vdp.boundary(state=n,value=v)
求解随机动态程序:
value,policy=dp.solve()
其中
- value是字典:value[t, n]是要去的值 阶段t和状态n 的函数
- policy是字典:policy[t, n]是一组优化器 第value[t, n] 页