2015-11-26 36 views
0

我有一個隨機最優控制問題,我想解決,使用某種類型的貝葉斯模擬爲基礎的框架。我的問題有以下一般結構:貝葉斯隨機最優控制,MCMC

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的不同功能,以此來判定該模型的不同之處w.r.t非隨機模型,另一個更簡單的隨機模型。

狀態變量是s_t,控制變量是x_t,其中u_t和w_t表示當前狀態的一些信念。目標函數是從時間段t = 0到t = T的增益(函數V)的折扣最大值。

我正在考慮使用Python,特別是PyMC來解決這個問題,儘管我不知道如何繼續,特別是如何優化控制變量。我發現了一本書,1967年出版,由Masanao Aoki撰寫的隨機系統優化,它引用了一些可能有用的貝葉斯技術,是否有當前的Python實現可能有所幫助?還是有更好的方法來模擬一個最佳路徑,使用Python?

回答

0

我想到的第一個猜測是試用神經網絡軟件包,如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中過濾,所以你可能想聯繫他們。

+0

遞歸神經網絡似乎是一個非常好的方法,但是如何將隨機性納入模型?另外,我希望估計/變化的變量是x_t,這樣目標函數就會優化,在這種情況下,我的輸入狀態和輸出(觀察狀態)是什麼?我對神經網絡相當陌生,所以任何建議都非常感謝。 –

+0

我在Github上發佈了一個例子。請參閱上面的鏈接 –

+0

感謝您的信息,我最終使用了PyMC中實現的非常大的聯合概率模型。隨機部分是相當重要的,無法讓我的頭腦如何將其納入現有框架。但是,絕對要多看看這個!再次感謝! –