「信頼性工学のはなし―信頼度99.9999…%をめざして」8~9章

大村平「信頼性工学のはなし―信頼度99.9999…%をめざして」日科技連 の読後行間補充メモ

同書籍は、印刷数表による信頼性工学の啓蒙書。

本稿では、同書籍の設例について、Python [Google Colaboratory]による演算処理例を示す。




8章 信頼性を評価する


p193 Fault tree analysis

OR計算を、以下の式により計算した場合の結果

\(P= 1-(1-p_1)(1-p_2)\)

(作業工程)
  1. 故障木の AND/OR 関係を設定する
  2. 末端葉の故障率を設定する
  3. 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個が全て良品である確率

(作業工程)
  1. 母集団個数\(N\)、標本中の不良品数\(r\)、納品数を設定
  2. 標本\(n\) 個中の不良品数が\(r\) 個である確率を求める
  3. 母集団内の不良品個数\(k\) 個の全ての場合について上記確率を計算する
  4. 上記全ての場合の確率を合算する(全確率)
  5. 納品数の良品確率を、ベイズの定理(1÷全確率)により求める
  6. 同様の作業を母集団個数\(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