差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| r:maintenance:condition_monitoring [2019/12/16 16:51] – [費用関数の設定] watalu | r:maintenance:condition_monitoring [2019/12/16 16:57] (現在) – [費用関数の設定] watalu | ||
|---|---|---|---|
| 行 578: | 行 578: | ||
| * 行動と状態ごとの費用行列R | * 行動と状態ごとの費用行列R | ||
| - | Rは手作業での設定になるので、ついでにPもこのページの上の方で用いた状態が3種類、行動が3種類ある場合の例を設定してみる。この遷移行列は3×3×3の3次元配列となる。 | + | Rは手作業での設定になる。 |
| - | + | ||
| - | < | + | |
| - | n.status = 3 | + | |
| - | n.action = 3 | + | |
| - | P = array(dim=c(n.status, | + | |
| - | </ | + | |
| - | + | ||
| - | 配列Pに行動ごとの遷移行列を代入していく。 | + | |
| - | + | ||
| - | < | + | |
| - | P[,,1] = matrix(c( | + | |
| - | 9/ | + | |
| - | 0, | + | |
| - | 0, | + | |
| - | P[,,2] = matrix(c( | + | |
| - | 1,0,0, | + | |
| - | 1,0,0, | + | |
| - | 0, | + | |
| - | P[,,3] = matrix(c( | + | |
| - | 1,0,0, | + | |
| - | 1,0,0, | + | |
| - | 1, | + | |
| - | </ | + | |
| - | + | ||
| - | 上の方に記したコードを実行してあれば、次のように代入してもいい。 | + | |
| - | + | ||
| - | < | + | |
| - | P[,,1] = P.Dgr | + | |
| - | P[,,2] = P.Rpr | + | |
| - | P[,,3] = P.Rpl | + | |
| - | </ | + | |
| - | + | ||
| - | できあがった配列Pの中身を確認してみる。 | + | |
| - | + | ||
| - | < | + | |
| - | P | + | |
| - | </ | + | |
| - | + | ||
| - | 次に費用関数を定義する。 | + | |
| - | + | ||
| - | < | + | |
| - | R = matrix(c( | + | |
| - | 0,10,150, | + | |
| - | 0,50,150, | + | |
| - | 2000, | + | |
| - | colnames(R) = c(" | + | |
| - | rownames(R) = c(1:3) | + | |
| - | R = -R | + | |
| - | </ | + | |
| - | + | ||
| - | これも先ほどのコードを実行してあれば、次のようにしてもいい。 | + | |
| - | < | + | |
| - | C.Dgr = c(0, | + | |
| - | C.Rpr = c(10, | + | |
| - | C.Rpl = c(150, | + | |
| - | Cost = cbind(C.Dgr, | + | |
| - | colnames(Cost) = c(" | + | |
| - | rownames(Cost) = c(" | + | |
| - | R = -Cost | + | |
| - | </ | + | |
| - | + | ||
| - | できあがった配列Rの中身を確認してみる。 | + | |
| - | + | ||
| - | < | + | |
| - | R | + | |
| - | </ | + | |
| ===== 遷移行列の配列の設定 ===== | ===== 遷移行列の配列の設定 ===== | ||
| 行 658: | 行 592: | ||
| P[,,3] = P.Rpl | P[,,3] = P.Rpl | ||
| </ | </ | ||
| + | |||
| + | P.Dgrを正しく推定できていれば、Pはn.status×n.status×n.actionの3次元配列になる。 | ||
| ===== 費用関数の設定 ===== | ===== 費用関数の設定 ===== | ||
| - | 同じく、MDPtoolboxパッケージのために費用関数を設定する。 | + | 同じく、MDPtoolboxパッケージのために費用関数を設定する。ここは、以下のコードをそのまま貼るのではなく、数字の数を状態数に合わせて適宜変更する必要がある。行動の数n.actionは3としている。また行動の順序は、上の遷移行列の配列と同じにする必要がある。 |
| - | 行動の順序は、上の遷移行列の配列と同じにする必要がある。 | + | |
| < | < | ||
| 行 674: | 行 609: | ||
| </ | </ | ||
| - | 5状態であれば次のようにする。 | + | 6状態であれば次のようにする。 |
| < | < | ||
| - | C.Dgr = c(0, | + | C.Dgr = c(0,0, |
| - | C.Rpr = c(10, | + | C.Rpr = c(10, |
| - | C.Rpl = c(150, | + | C.Rpl = c(150,150, |
| Cost = cbind(C.Dgr, | Cost = cbind(C.Dgr, | ||
| colnames(Cost) = c(" | colnames(Cost) = c(" | ||
| - | rownames(Cost) = as.character(1: | + | rownames(Cost) = as.character(1: |
| R = -Cost | R = -Cost | ||
| </ | </ | ||