「信頼性工学のはなし―信頼度99.9999…%をめざして」8~9章
大村平「信頼性工学のはなし―信頼度99.9999…%をめざして」日科技連 の読後行間補充メモ
同書籍は、印刷数表による信頼性工学の啓蒙書。
本稿では、同書籍の設例について、Python [Google Colaboratory]による演算処理例を示す。
8章 信頼性を評価する
p193 Fault tree analysis
OR計算を、以下の式により計算した場合の結果
\(P= 1-(1-p_1)(1-p_2)\)
(作業工程)
- 故障木の AND/OR 関係を設定する
- 末端葉の故障率を設定する
- AND関数、OR関数で樹木全体の故障率を計算する
def f_or(perlist): # OR計算 value = 1 for per in range(len(perlist)): value *= 1-perlist[per]/100 return (1-value)*100 def f_or2(perlist): # OR計算(近似値) value = 0 for per in range(len(perlist)): value += perlist[per]/100 return value*100 def f_and(perlist): # AND計算 value = 1 for per in range(len(perlist)): value *= perlist[per]/100 return value*100 # ツリー情報 a = f_or([0.1, 0.2]) b = f_or([0.1, 0.2]) c = f_and([1.0,1.0]) d = f_or([a,b]) e = f_or([0.5, 1.0]) f = f_or([c,d,e]) # 演算結果の表示 print(round(f,2),'%')
2.09 %
p194 近似値計算の場合
OR計算を、以下の近似式により計算した場合の結果
\(P\fallingdotseq p_1+p2\)
# コードは上記の続き # ツリー情報 a = f_or2([0.1, 0.2]) b = f_or2([0.1, 0.2]) c = f_and([1.0,1.0]) d = f_or2([a,b]) e = f_or2([0.5, 1.0]) f = f_or2([c,d,e]) # 演算結果の表示 print(round(f,2),'%')
2.11 %
9章 信頼性を総括する
p213 残り2個が全て良品である確率
(作業工程)
- 母集団個数\(N\)、標本中の不良品数\(r\)、納品数を設定
- 標本\(n\) 個中の不良品数が\(r\) 個である確率を求める
- 母集団内の不良品個数\(k\) 個の全ての場合について上記確率を計算する
- 上記全ての場合の確率を合算する(全確率)
- 納品数の良品確率を、ベイズの定理(1÷全確率)により求める
- 同様の作業を母集団個数\(N\)の各場合について繰り返して一覧表にする
import math import pandas as pd # 設定数値 N_list = [10, 20, 50,100] # 母集団の個数リスト deli = 2 # 納品数 defec = 0 # 標本中の不良品数 # 関数 超幾何分布(標本中の不良品数がr個である確率) def HGD(N,k,n,r): # k=母集団中の故障数 return math.comb(k,r)*math.comb(N-k,n-r)/math.comb(N,n) # 関数 N個からの標本n個にr個の不良品があるときの、残品の良品確率 def prob(N,n,r): Prob_values = [] # 合格確率のリスト for k in range(0,N+1): # 全てのkの場合について Prob_values.append(HGD(N,k,n,r)) # 超幾何分布の関数を使用 return 1/sum(Prob_values) # ベイズの定理 # 標本数のリスト sr_list = [Num-deli for Num in N_list] # 良品確率のリスト prob_list = [] for N in range(len(N_list)): probability = prob(N_list[N],N_list[N]-deli,defec) prob_list.append(probability*100) # DF化 DF = pd.DataFrame([N_list,sr_list,'',prob_list]).T DF.columns = ['全体個数','標本数(良品)','納品数','納品の良品確率[%]'] DF['納品数'] = DF['全体個数']-DF['標本数(良品)'] pd.options.display.precision = 1 # 桁数設定 DF
全体個数 標本数(良品) 納品数 納品の良品確率[%] 0 10.0 8.0 2.0 81.8 1 20.0 18.0 2.0 90.5 2 50.0 48.0 2.0 96.1 3 100.0 98.0 2.0 98.0