[[::r:maintenance:condition_monitoring|状態監視保全]]と同じ状況を想定して、時間計画保全を計画してみる。予防取替の費用を150、故障後の事後取替の費用を2000にとる。
Cc = 150
Cp = 2000
故障までの時間の分布は、推定したマルコフ連鎖から求めることができる。
mc <- new("markovchain", states = c("1","2","3"), byrow = byRow,
transitionMatrix = P[,,1], name = "Example")
firstPassage(object = mc, state = "1",n = 100)
関数firstPassageは、stateで指定した状態から出発し、n時点経過後までに最初に各状態に辿り着く期間の長さの確率分布を算出する。一番右側の列が、故障状態なので、一番右側だけを見ればいい。
mc.first = firstPassage(object = mc, state = "1",n = 500)
mc.first.d = mc.first[,dim(mc.first)[2]]
累積分布関数は、これの累積和を求めて得る。
mc.first.p = cumsum(mc.first.d)
これらがあれば、コストレートは次のように算出できる。
mc.hardtime.cost.rate = (mc.first.p*Cc+(1-mc.first.p)*Cp) / (cumsum(mc.first.p))
グラフを描く。
plot(mc.hardtime.cost.rate, xlab="Time", ylab="Cost Rate"))
最小値と、その時の保全間隔を求める。
min(mc.hardtime.cost.rate)
c(1:500)[mc.hardtime.cost.rate==min(mc.hardtime.cost.rate]
ついでに前後20ぐらいのコストレートも見ておく。
mc.hardtime.cycle = c(1:500)[mc.hardtime.cost.rate==min(mc.hardtime.cost.rate]
max(1,mc.hardtime.cycle-20):min(500,mc.hardtime.cycle+20)
mc.hardtime.cost.rate[max(1,mc.hardtime.cycle-20):min(500,mc.hardtime.cycle+20)]
これらの結果と、状態監視保全の最適方策とを比較する。
- 目的関数が異なることには注意を要する。