文書の過去の版を表示しています。
MDPtoolbox
MDPtoolboxは、RだけでなくMatlab、Python、Cの各言語でも利用可能なマルコフ決定過程のためのパッケージである。
マルコフ決定過程の定義に必要なもの
- 行動ごとの遷移行列(推移確率行列)P
- 行動と状態ごとの費用行列R
状態監視保全の説明で用いた状態が3種類、行動が3種類ある場合を例に取る。
遷移行列は3×3×3の3次元配列となる。
n.status = 3 n.action = 3 P = array(dim=c(n.status,n.status,n.action))
配列Pに行動ごとの遷移行列を代入していく。
P[,,1] = matrix(c( 9/10,1/10,0, 0,9/10,1/10, 0,0,1),nrow=3,ncol=3,byrow=TRUE) P[,,2] = matrix(c( 1,0,0, 1,0,0, 0,1,0),nrow=3,ncol=3,byrow=TRUE) P[,,3] = matrix(c( 1,0,0, 1,0,0, 1,0,0),nrow=3,ncol=3,byrow=TRUE)
状態監視保全のコードを実行してあれば、次のように代入してもいい。
P[,,1] = P.Dgr P[,,2] = P.Rpr P[,,3] = P.Rpl
できあがった配列Pの中身を確認してみる。
P
次に費用関数を定義する。
R = matrix(c(
0,10,150,
0,50,150,
2000,250,150),nrow=n.status, ncol=n.action, byrow=TRUE)
colnames(R) = c("keep","repair","replace")
rownames(R) = c(1:3)
R = -R
これも先ほどのコードを実行してあれば、次のようにしてもいい。
C.Opr = c(0,0,2000)
C.Rpr = c(10,50,250)
C.Rpl = c(150,150,150)
Cost = cbind(C.Opr, C.Rpr, C.Rpl)
colnames(Cost) = c("Keep","Repair","Replace")
rownames(Cost) = c("1","2","3")
R = -Cost
できあがった配列Pの中身を確認してみる。
R
価値反復法
mdp_value_iteration(P, R, 0.9)
方策反復法
mdp_policy_iteration(P, R, 0.9)