amori's blog

よろず技術系と趣味関係の雑記です。アニメの比重が高くなってます・・

冗長構成の信頼性(2):M out of N

さて、先のN重冗長構成でふれました、M out of N つまりN個の装置のうちM個が稼働しているならば正常であるという構成の信頼性についてまとめます。

 

まずN out of Nようするに冗長性がない場合はの信頼性は簡単で1/Nλですね。先に説明した非保守N重系は、要するに 1 out of Nでこれは 1 + 1/2 +・・・+1/Nの調和級数の和でした。

 

では試しに 2 out of 3を計算してみましょう。

3個中2個または3個の装置が稼働していればよく、3個稼働は1/3λ、3個中2個稼働は以下となり、

 \begin{align}\int_0^{\infty}(3e^{-2\lambda t} (1-e^{\-lambda t}))dt &= \int_0^{infty}(3e^{-2\lambda t}-3e^{-3|lambda t})dt &= left[-frac{3}{2lambda} e^{-lambda t} + rac{3}{3lambda} e^{-3lambda t}   ight_0^{infty}  &= rac{1}{2lambda}end{align} ]

となります。ということは、

3個中3個稼働:1/3λ

3個中2個稼働:1/2λ

3個中1個稼働:1/1λ

ということで、先に求めたN out of Nが調和級数の和になるという結論はすなわち、N個中1個以上稼働で1、2,3・・・N個稼働の和であったということです。

 

例えば、先のジャンボジェットのエンジンの例で4機中2機のエンジンが稼働していれば正常運用が可能であるという場合は2 out of 4 ですので、そのMTBF/MTTFは、

1/4 + 1/3 + 1/2 = 13/12 

となり実はエンジン1機の値とあまりかわりません。もちろんこれは「ならばエンジン1機でもいい」ということではありません。あくまで正常運用を実施できる信頼性ということです。エンジン1機だけでそれが止まったらそれはもう正常運用ではなく最悪の事態ですから。

これは逆に「正常運用の必要条件がエンジン2機以上の運用であり、その信頼性をエンジン1機のMTBF/MTTF以上とするためには、4機以上のエンジンが必要である」と考えるべき、ということです。

(ちなみに5機にしても1/5=0.2しか増えません)

 

N個中M個稼働のMTBF/MTTF

ここで面白いのはN個中m個稼働のMTBFは「Nに関係なく1/mλ」となるというところですね。直感的には自然と言えば自然なのですが、MTBFの計算式からするとちょっと意外です。

 

 では、計算で確認してみましょう。

 

故障率λの装置がN個中m個稼働する場合の信頼度関数は、

[egin{align} R(t) &= {}_N C_m (e^{-lambda t})^m (1-e^{-lambda t})^{N-m} end{align}]

なのでこれを積分します。 

[egin{align} R(t) &= {}_N C_m int_0^{infty}(e^{-mlambda t} (1-e^{-lambda t})^{N-m})dt end{align}]

積分部分を部分積分すると、

[egin{align} int_0^{infty}(e^{-mlambda t} (1-e^{-lambda t})^{N-m})dt &= left[ -rac{1}{mlambda}e^{-mlambda t}(1-e^{-lambda t})^{N-m} ight]_0^{infty} -  int_0^{infty}( -rac{(N-m)}{mlambda}e^{-mlambda t} (1-e^{-lambda t})^{N-(m+1)}lambda e^{-lambda t})dt  &=  rac{(N-m)}{m}int_0^{infty}( e^{-(m+1)lambda t} (1-e^{-lambda t})^{N-(m+1)})dtend{align}] 

積分の項に注目すると、mがm+1になっているだけなので、

[ f(N,m) = rac{N-m}{m} f(N,m+1)]

となり、これを繰り返すと、

[egin{align} f(N,m) &= rac{N-m}{m}rac{N-(m+1)}{m+1} f(N,m+2) &= rac{N-m}{m}  rac{N-(m+1)}{m+1} rac{N-(m+2)}{m+2} cdots rac{N-(N-2)}{N-2} f(N,N-1) end{align} ]

最後のf(N,N-1)を元の積分で計算すると、 [egin{align} f(N,N-1) &= int_0^{infty}( e^{-(N-1)lambda t} (1-e^{-lambda t}))dt &= left[-rac{1}{(N-1)lambda}e^{-(N-1)lambda t} + rac{1}{Nlambda}e^{-Nlambda t} ight]_0^{infty} &= rac{1}{(N-1)N} rac{1}{lambda} end{align}]

よって、f(N,m)は、

[egin{align} f(N,m) &=  rac{N-m}{m}  rac{N-(m+1)}{m+1} rac{N-(m+2)}{m+2} cdots rac{2}{N-2}rac{1}{N-1}rac{1}{N} rac{1}{lambda} &= rac{(N-m)!}{N!/(m - 1)!} rac{1}{lambda} end{align}]

これを元の式に戻すと、 [egin{align} R(t) &= {}_N C_m f(N,m) &= rac{N!}{(N - m)! m!} rac{(N-m)!}{N!/(m - 1)!}rac{1}{lambda} &= rac{1}{m} rac{1}{lambda}end{align}]

でけた(^^) ・・・・しかし、これほどシンプルな答えになるってことは、きっと計算の大前提からしてもっと単純にに1/mλを導出できる考え方があると思うんですが、まあとりあえずMTBF/MTTFの定義から高校数学の範囲でストレートフォワードに導出できるということで。 もし、「こんなのもっとシンプルな考え方あるよ」というかたがいらっしゃいましたら是非教えてください。