差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
次のリビジョン両方とも次のリビジョン
r:maintenance:hard_time_maintenance_on_mdp [2019/01/07 04:55] watalur:maintenance:hard_time_maintenance_on_mdp [2019/01/07 10:04] watalu
行 1: 行 1:
-===== 時間計画保全のマルコフ決定過程による表現 ====+===== 時間計画保全のマルコフ決定過程による表現 =====
  
 ==== 年齢取替の行動の状態遷移行列 ==== ==== 年齢取替の行動の状態遷移行列 ====
  
 +次の関数は1期間ごとに1ずつ年齢を重ねる、という状態遷移を表す行列を生成する。ここでのSは状態空間だが、年齢の範囲を表す集合でもある。
  
 <code> <code>
行 20: 行 21:
 </code> </code>
  
-故障状態になったら強制的に緊急取替を行う状態遷移行列。+次のコードは年齢を0から20までに設定する。 
 + 
 +<code> 
 +mmdp_create.ageing.matrix(c(0:20)) 
 +</code> 
 + 
 +=== 状態指定取替 P.Age === 
 + 
 +ある状態でのみ取替を実行し、他の状態では何もしない行動を状態指定取替として定義しておく。 
 +次の関数は状態を年齢に取り、指定した年齢で取替を行い、他の年齢では何もしないという行動を表す状態遷移行列を生成する。 
 + 
 +<code> 
 +mmdp_create.age.replacement.matrix = function(S,T.ast) { 
 +  R.S = max(S)-min(S) 
 +  n.S = length(S) 
 +  if( R.S != n.S-1 ) { 
 +    stop("state space is not regular and/or does not begin with 0.") 
 +  } 
 +  P = diag(rep(1,n.S)) 
 +  P[T.ast+1,1] = 1 
 +  P[T.ast+1,T.ast+1] = 0 
 +  rownames(P) = S 
 +  colnames(P) = S 
 +  return(P) 
 +
 +</code> 
 + 
 +これも状態空間が0から4の場合に実行してみておく。 
 + 
 +次の実行例は、年齢が0から4まで推移する対象に、年齢2で取替を行う行列を生成する。 
 + 
 +<code> 
 +mmdp_create.age.replacement.matrix(c(0:4),2) 
 +</code> 
 + 
 +状態指定取替は年齢取替のマルコフ決定過程における表現を与える。 
 + 
 +<code> 
 +> mmdp_create.age.replacement.matrix(c(0:4),3) 
 +  0 1 2 3 4 
 +0 1 0 0 0 0 
 +1 0 1 0 0 0 
 +2 0 0 1 0 0 
 +3 1 0 0 0 0 
 +4 0 0 0 0 1 
 +</code> 
 + 
 +この行動は、通常の状態監視保全では現れないことを注意しておく。 
 + 
 +=== 劣化の状態遷移行列に故障時の取替を加える === 
 + 
 +時間計画保全では、予防取替と事後取替がある。 
 +ここでは故障状態になったら強制的に緊急取替を行うように状態遷移行列を変更している。 
 +最後の一行に注目して欲しい
  
 <code> <code>
行 76: 行 130:
 </code> </code>
  
-反復によって総機体割引き費用を求める。+反復によって総期待割引き費用を求める。
  
 <code> <code>
行 82: 行 136:
 </code> </code>
  
-一方で、価値反復法によって、故障したら事後取替、そして予防取替、の2つの最適な方策を求めてみると。+一方で、価値反復法によって、故障したら事後取替、そして年齢による予防取替、の2つの最適な方策を求めてみると。
  
 <code> <code>
行 88: 行 142:
 </code> </code>
  
 +年齢による予防取替は、年齢に達しない限り、そのまま放置をするのだが、それが1年間放置する、という結果になってしまう。
 +
 +同じ設定での状態監視保全は、前回の内容そのままなので省略する。