差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン両方とも次のリビジョン
r:mdptoolbox [2018/12/11 23:25] – created watalur:mdptoolbox [2018/12/16 16:30] watalu
行 2: 行 2:
  
 MDPtoolboxは、RだけでなくMatlab、Python、Cの各言語でも利用可能なマルコフ決定過程のためのパッケージである。 MDPtoolboxは、RだけでなくMatlab、Python、Cの各言語でも利用可能なマルコフ決定過程のためのパッケージである。
 +
 +=== マルコフ決定過程の定義に必要なもの ===
 +
 +  * 行動ごとの遷移行列(推移確率行列)P
 +  * 行動と状態ごとの費用行列R
 +
 +[[::r:maintenance:condition_monitoring|状態監視保全]]の説明で用いた状態が3種類、行動が3種類ある場合を例に取る。
 +
 +遷移行列は3×3×3の3次元配列となる。
 +
 +<code>
 +n.status = 3
 +n.action = 3
 +P = array(dim(n.status,n.status,n.action))
 +</code>
 +
 +配列Pに行動ごとの遷移行列を代入していく。
 +
 +<code>
 +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)
 +</code>
 +
 +[[::r:maintenance:condition_monitoring|状態監視保全]]のコードを実行してあれば、次のように代入してもいい。
 +
 +<code>
 +P[,,1] = P.Dgr
 +P[,,2] = P.Rpr
 +P[,,3] = P.Rpl
 +</code>
 +
 +できあがった配列Pの中身を確認してみる。
 +
 +<code>
 +P
 +</code>
 +
 +次に費用関数を定義する。
 +
 +<code>
 +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
 +</code>
 +
 +これも先ほどのコードを実行してあれば、次のようにしてもいい。
 +<code>
 +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
 +</code>
 +
 +できあがった配列Pの中身を確認してみる。
 +
 +<code>
 +R
 +</code>