差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン次のリビジョン両方とも次のリビジョン | ||
r:maintenance:hard_time_maintenance_on_mdp [2019/01/07 04:55] – watalu | r:maintenance:hard_time_maintenance_on_mdp [2019/01/07 09:56] – watalu | ||
---|---|---|---|
行 3: | 行 3: | ||
==== 年齢取替の行動の状態遷移行列 ==== | ==== 年齢取替の行動の状態遷移行列 ==== | ||
+ | 次の関数は1期間ごとに1ずつ年齢を重ねる、という状態遷移を表す行列を生成する。ここでのSは状態空間だが、年齢の範囲を表す集合でもある。 | ||
< | < | ||
行 20: | 行 21: | ||
</ | </ | ||
- | 故障状態になったら強制的に緊急取替を行う状態遷移行列。 | + | 次のコードは年齢を0から20までに設定する。 |
+ | |||
+ | < | ||
+ | mmdp_create.ageing.matrix(c(0: | ||
+ | </ | ||
+ | |||
+ | 次の関数は状態を年齢に取り、指定した年齢で取替を行い、他の年齢では何もしないという行動を表す状態遷移行列を生成する。 | ||
+ | |||
+ | < | ||
+ | mmdp_create.age.replacement.matrix = function(S, | ||
+ | R.S = max(S)-min(S) | ||
+ | n.S = length(S) | ||
+ | if( R.S != n.S-1 ) { | ||
+ | stop(" | ||
+ | } | ||
+ | P = diag(rep(1, | ||
+ | P[T.ast+1, | ||
+ | P[T.ast+1, | ||
+ | rownames(P) = S | ||
+ | colnames(P) = S | ||
+ | return(P) | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | 次の実行例は、年齢が0から4まで推移する対象に、年齢2で取替を行う行列を生成する。 | ||
+ | |||
+ | < | ||
+ | mmdp_create.age.replacement.matrix(c(0: | ||
+ | </ | ||
+ | |||
+ | 時間計画保全では、予防取替と事後取替がある。 | ||
+ | ここでは故障状態になったら強制的に緊急取替を行うように状態遷移行列を変更している。 | ||
+ | 最後の一行に注目して欲しい。 | ||
< | < | ||
行 76: | 行 109: | ||
</ | </ | ||
- | 反復によって総機体割引き費用を求める。 | + | 反復によって総期待割引き費用を求める。 |
< | < | ||
行 82: | 行 115: | ||
</ | </ | ||
- | 一方で、価値反復法によって、故障したら事後取替、そして予防取替、の2つの最適な方策を求めてみると。 | + | 一方で、価値反復法によって、故障したら事後取替、そして年齢による予防取替、の2つの最適な方策を求めてみると。 |
< | < | ||
mdp_value_iteration(P, | mdp_value_iteration(P, | ||
</ | </ | ||
+ | |||
+ | 年齢による予防取替は、年齢に達しない限り、そのまま放置をするのだが、それが1年間放置する、という結果になってしまう。 | ||
+ | |||
+ | 同じ設定での状態監視保全は、前回の内容そのままなので省略する。 | ||