【问题标题】:Bayesian Stochastic Optimal Control, MCMC贝叶斯随机最优控制,MCMC
【发布时间】:2015-11-26 05:23:13
【问题描述】:

我有一个希望使用某种基于贝叶斯模拟的框架来解决的随机最优控制问题。我的问题有以下一般结构:

s_t+1 = r*s_t(1 - s_t) - x_t+1 + epsilon_t+1
x_t+1 ~ Beta(u_t+1, w_t+1)
u_t+1 = f_1(u_t,w_t, s_t, x_t)
w_t+1 = f_2(u_t,w_t, s_t, x_t)
epsilon_t ~ Normal(0,sigma)
objective function: max_{x_t} E(Sigma_{t=0}^{T} V(s_t,x_t,c) * rho^t)

我的目标是探索 f_1、f_2 和 V 的不同函数形式,以确定该模型与非随机模型和另一个更简单的随机模型有何不同。

状态变量是 s_t,控制变量是 x_t,u_t 和 w_t 代表对当前状态的某种信念。目标函数是时间段 t=0 到 t=T 内增益(函数 V)的折现最大值。

我正在考虑使用 Python,特别是 PyMC 来解决这个问题,虽然我不确定如何进行,特别是如何优化控制变量。我找到了一本书,出版于 1967 年,Masanao Aoki 的随机系统优化,其中引用了一些可能有用的贝叶斯技术,是否有当前的 Python 实现可能会有所帮助?或者有没有更好的方法来模拟最佳路径,使用 Python?

【问题讨论】:

    标签: python optimization pymc mcmc stochastic-process


    【解决方案1】:

    我想到的第一个猜测是尝试像chainertheano 这样的神经网络包,它们可以跟踪成本函数相对于控制函数参数的导数;他们还有一堆优化插件例程。您可以使用numpy.random 生成样本(粒子),从库组件中组合您的控制函数,并通过显式欧拉方案运行它们以进行首次尝试。这将为您提供粒子的成本函数及其相对于参数的导数,可以将其提供给优化器。

    这里可能出现的问题是求解器的迭代将创建大量衍生跟踪对象。

    更新:请看this example on Github

    在 Github 上也有很多点击关键字 particle filter python:

    https://github.com/strohel/PyBayes

    https://github.com/jerkern/pyParticleEst

    还有a manuscript around 提到作者在 Python 中实现了过滤器,所以你可能想联系他们。

    【讨论】:

    • 循环神经网络似乎是一种非常好的方法,但是如何将随机性融入模型中?另外,我希望估计/改变的变量是 x_t,这样目标函数就得到了优化,在这种情况下,我的输入状态和输出(观察状态)是什么?我对神经网络相当陌生,因此非常感谢任何建议。
    • 我在 Github 上发布了一个示例。请看上面的链接
    • 感谢您的信息,我最终使用了在 PyMC 中实现的非常大的联合概率模型。由于随机部分相当关键,我无法理解如何将其合并到现有框架中。但是,肯定会再调查一下!再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多