Posts Tagged with "PUA"

既に発行済みのブログであっても適宜修正・追加することがあります。
We may make changes and additions to blogs already published.

RAMS 2025へのマイルストーン (5)

posted by sakurai on July 2, 2024 #829

論文及びプレゼン資料の名前、所属無し版を作成し、RAMSサイトに登録しました。締め切りは7/15であるため、ブラッシュアップしたものを再登録する予定です。

表829.1 RAMS 2025へのマイルストーン
期限 マイルストーン 状態
2024/5/3 アブストラクト投稿締め切り(システム入力) 投稿済
2024/6/10 アブストラクト採択結果 採択済
2024/7/15 論文、プレゼン投稿締め切り(名前、所属無し版) 投稿済
2024/9/1 第1回論文、プレゼン資料査読コメント受領
2024/10/4 学会出席登録締め切り
2024/10/4 最終論文、プレゼン投稿締め切り(名前、所属有り版)


左矢前のブログ 次のブログ右矢

posted by sakurai on June 6, 2024 #811

昨日RAMS委員会からアブストラクトの採択の連絡がありました。ほぼ論文は完成してはいるものの、これから論文のブラッシュアップ及びプレゼンテーション原稿の作成を開始します。

表811.1 RAMS 2025へのマイルストーン
期限 マイルストーン 状態
2024/5/3 アブストラクト投稿締め切り(システム入力) 投稿済
2024/6/10 アブストラクト採択結果 採択済
2024/8/1 論文、プレゼン投稿締め切り(名前、所属無し版)
2024/9/1 第1回論文、プレゼン資料査読コメント受領
2024/10/9 改訂版論文、プレゼン投稿締め切り(名前、所属無し版)
2024/10/22 最終査読コメント受領
2024/10/10 学会出席登録締め切り
2024/10/10 最終論文、プレゼン投稿締め切り(名前、所属有り版)


左矢前のブログ 次のブログ右矢

RAMS 2025へのマイルストーン (3)

posted by sakurai on May 13, 2024 #795

RAMS 2025の締め切りが先週末5/10まで延長され、最終アブストラクトを投稿しました。

  • 題名:
    Point Unavailability Processes with Periodic Inspections in ISO 26262
    ISO26262における定期検査を伴う点不稼働度過程

  • 抄録概要:
    A study of the derivation and approximation of the exact point availability (PUA) and its derivative, the point unavailability density (PUD) processes, in deriving the probabilistic metric for random hardware failures (PMHF) formula under ISO 26262, aiming to refine automotive system design reliability by simplifying fault-tolerant subsystem development.
    耐故障サブシステム開発の簡素化による自動車システム設計の信頼性向上を目的とする、ISO26262に基づくランダムハードウェア故障の確率的指標(PMHF)式の導出における、厳密な点不稼働度(PUA)とその導関数である点不稼働度密度(PUD)過程の導出と近似に関する研究。

題名は本来「Point Unavailability and its Density Processes with Periodic Inspections in ISO 26262(ISO 26262における定期検査を伴う点不稼働度過程とその点不稼働度密度過程)」ですが、長すぎてシステムに入力できないため短くしました。これは査読により変更の可能性が十分にあります。後は6月初旬の採択通知を待つのみです。

表795.1 RAMS 2025へのマイルストーン
期限 マイルストーン 状態
2024/5/3 アブストラクト投稿締め切り(システム入力) 投稿済
2024/6/10 アブストラクト採択結果
2024/8/1 論文、プレゼン投稿締め切り(名前、所属無し版)
2024/9/1 第1回論文、プレゼン資料査読コメント受領
2024/10/9 改訂版論文、プレゼン投稿締め切り(名前、所属無し版)
2024/10/22 最終査読コメント受領
2024/10/10 学会出席登録締め切り
2024/10/10 最終論文、プレゼン投稿締め切り(名前、所属有り版)

本研究はブログ記事から始まったものですが、2020年の論文から導出し使用してきた不稼働度(PUA)の式が実は近似式であったということ、正確な式の導出及び誤差の評価を行ったものです。


左矢前のブログ 次のブログ右矢

新方式によるPUAの導出 (8)

posted by sakurai on March 26, 2024 #762

ChatGPTにより $Q_{\text{exact},n}(t)$と$Q_\text{approx}(t)$のグラフ作成プログラムを作成してもらいました。そのリストを示します。

import numpy as np
import matplotlib.pyplot as plt
from functools import lru_cache

plt.rcParams['font.family'] = 'serif'
plt.rcParams['mathtext.rm'] = 'Times New Roman'
plt.rcParams['mathtext.fontset'] = 'cm'

# パラメータ設定
lambdaVal = 0.1  # 故障率
tau = 2    # 点検期間
K = 0.5    # 修復率
epsilon = 0.00001  # 不連続点の直前を示すために使用する小さい値

# 関数定義
def R(t):
    """信頼度関数"""
    return np.exp(-lambdaVal * t)

def F(t):
    """故障関数"""
    return 1 - R(t)

@lru_cache(maxsize=None)
def Q_n(t, n):
    """Q_nの再帰関数。結果をキャッシュする。"""
    if n == 0:
        return F(t)
    else:
        return 

def Q_approx(t):
    """tにおけるQ(t)の近似値を計算する関数"""
    u = t % tau
    return (1 - K) * F(t) + K * F(u)

# グラフ描画
fontsize_axes_label = 24 * 1.8
fontsize_ticks = 16 * 1.8
fontsize_legend = 24 * 1.8

plt.figure(figsize=(18, 11))
# 軸(spines)の線幅を太くする
ax = plt.gca()  # 現在の軸を取得
spine_width = 2  # 軸の線幅
for spine in ax.spines.values():
    spine.set_linewidth(spine_width)
    
# 凡例用のダミープロット
plt.plot([], [], '-', label=f'$Q_{{\\text{{exact}},n}}(t)$ for $\\lambda = {lambdaVal}$', color='black')
plt.plot([], [], '--', label=f'$Q_{{\\text{{approx}}}}(t)$ for $\\lambda = {lambdaVal}$', color='black')

# 不連続性を示すために各区間を個別にプロット
for i in range(10):
    start = i * tau
    end = (i + 1) * tau -epsilon # epsilonを削除
    t_vals = np.linspace(start, end, 200)
    Q_exact_vals = [Q_n(t, i) for t in t_vals[:-1]]  # 区間の最後の点を除外してプロット
    Q_approx_vals = [Q_approx(t) for t in t_vals[:-1]]
    
    plt.plot(t_vals[:-1], Q_exact_vals, 'k-', lw=2.5)
    plt.plot(t_vals[:-1], Q_approx_vals, 'k--', lw=2.5)

    # 区間の終わりに白丸をプロット
    plt.plot(end, Q_n(end, i), 'o', mfc='white', mec='black', mew=2, markersize=8)
    plt.plot(end, Q_approx(end), 'o', mfc='white', mec='black', mew=2, markersize=8)

plt.xlabel('Time (t)', fontsize=fontsize_axes_label)
plt.ylabel('$Q(t)$', fontsize=fontsize_axes_label)
plt.xticks(np.arange(0, 11*tau, tau), fontsize=fontsize_ticks)
plt.yticks(fontsize=fontsize_ticks)
legend = plt.legend(fontsize=fontsize_legend)
for handle in legend.legendHandles:
    handle.set_linewidth(2.5)  # ここで線の太さを指定    
plt.grid(True, color='gray', linestyle='-', linewidth=1.4)
plt.ylim(bottom=0)
plt.xlim(0,10*tau)
plt.subplots_adjust(left=0.14, bottom=0.14) 
plt.show()

図762.1に実行結果を示します。これは論文に掲載したグラフの一部です。

図%%.1
図762.1 $Q_{\text{exact},n}(t)$と$Q_\text{approx}(t), \lambda=0.1$のグラフ

図%%.2
図762.2 $Q_{\text{exact},n}(t)$と$Q_\text{approx}(t), \lambda=0.01$のグラフ

図%%.3
図762.3 $Q_{\text{exact},n}(t)$と$Q_\text{approx}(t), \lambda=0.001$のグラフ

なお、

に掲載しています。さらに、

に続きます。

なお、本稿はRAMS 2025に投稿予定のため一部を秘匿しています。


左矢前のブログ 次のブログ右矢

新方式によるPUAの導出 (7)

posted by sakurai on March 25, 2024 #761

前項までで、正確な$Q_{\text{exact},n}(t)$と近似の$Q_\text{approx}(t)$が求められたので、誤差評価を行います。パラメータは$\lambda=100FIT$、$T_\text{lifetime}=$10万時間、$K=0.5$、$\tau=$1か月とします。すると、$T_\text{lifetime}=1.0\times10^5[H]$、$\tau=730[H]$であり、 $$ Q_n(t)=F(t)-\img[-1.35em]{/images/withinseminar.png}\ n=\lfloor t/\tau\rfloor\ge1\tag{761.1} $$ これより、正確な車両寿命での不稼働確率は、 $$ Q_{\text{exact},136}(T_\text{lifetime})=0.005023250473883639 $$

一方近似式では、 $$ Q_\text{approx}(t)=(1-K_\text{MPF})F(t)+K_\text{MPF}F(u),\ u=\bmod\tau\tag{761.2} $$ これより、 $$ Q_\text{approx}(T_\text{lifetime})=0.005011081829447039 $$

両方の値から誤差は車両寿命において相対誤差は、 $$ \frac{Q_{\text{exact},136}(T_\text{lifetime})-Q_\text{approx}(T_\text{lifetime})}{Q_\text{approx}(T_\text{lifetime})}=\frac{0.005023250473883639-0.005011081829447039}{0.005023250473883639}\\=\img[-1.35em]{/images/withinseminar.png}[\%] $$ と計算され、PMHFの計算上では問題にならないレベルだと判明しました。

ちなみに、前項のChatGPTの作成したグラフ描画ソフトのパラメータを上記のパラメータに置き換え、グラフを車両寿命まで作成しました。次にChatGPTにプログラムを渡して、グラフは不要だからPUAの車両寿命における値を$Q_\text{exact}$と$Q_\text{approx}$の2つを求めて、誤差評価をしてと依頼したところ、修正されたプログラムにより上記の値が算出できました。

ChatGPTにプログラムを書いてもらうのはかなり実施して来ましたが、プログラムを渡してこんな風に改造してというのは新しい試みです。なぜなら、他人のプログラムの改造は人間は嫌がるからです。機械は嫌がらずに素直に実行すると言うのは新しい経験でした。

なお、本稿はRAMS 2025に投稿予定のため一部を秘匿しています。


左矢前のブログ 次のブログ右矢

posted by sakurai on March 22, 2024 #760

論文のアブストラクトをAJEに提出しましたが、「全体感が見たいので全体を出してくれ」とのご要望で、原稿全体を提出しました。前回までは冠詞の誤り等の文法ミスの修正が中心で、せいぜいが「意味が同じか確認してくれ」というメッセージ付きで文章を修正してきたことはありました。

ところが今回はVIPコースを選択したためか「この間に話題を繋げるような短い段落があると良い」「パラメータを選択した理由があると理解しやすい」「結論はまとめではないから、新規性のあることを書くべきである」等の内容に踏み込んだ示唆を貰い、大変にありがたく感じています。

図%%.1
図760.1 一旦完成した論文6ページの原稿

原稿全体は修正中ですが、一旦アブストラクトを投稿し、No.9のIDを受領しました。後は6月初旬の採択通知を待つのみです。

表760.1 RAMS 2025へのマイルストーン
期限 マイルストーン 状態
2024/5/3 アブストラクト投稿締め切り(システム入力) 投稿済
2024/6/10 アブストラクト採択結果
2024/8/1 論文、プレゼン投稿締め切り(名前、所属無し版)
2024/9/1 第1回論文、プレゼン資料査読コメント受領
2024/10/9 改訂版論文、プレゼン投稿締め切り(名前、所属無し版)
2024/10/22 最終査読コメント受領
2024/10/10 学会出席登録締め切り
2024/10/10 最終論文、プレゼン投稿締め切り(名前、所属有り版)


左矢前のブログ 次のブログ右矢

新方式によるPUAの導出 (6)

posted by sakurai on March 21, 2024 #759

前項までで、正確な$Q_{\text{exact},n}(t)$(758.4)を以下のように求めることができました(再掲)。 $$ Q_{\text{exact},n}(t)=F(t)-\img[-1.35em]{/images/withinseminar.png}\ n=\lfloor t/\tau\rfloor\ge1\tag{759.1} $$ 一方で、近似式は、 $$ Q_\text{approx}(t)=(1-K_\text{MPF})F(t)+K_\text{MPF}F(u),\ u=t\bmod\tau\tag{759.2} $$ でした。この2種類の関数が$\lambda$の変化でどのように変わるかを見てみます。図759.1はそれぞれ2つのグラフが$\lambda=0.1$(パープル)及び$\lambda=0.01$((ブルー)の2種類を描いたものです。

図%%.1
図759.1 正確な$Q_{\text{exact},n}(t)$と近似式$Q_\text{approx}(t)$のグラフ

図759.1のブルーに示すように、$\lambda$が小さければカーブは直線に近づき、誤差が少なくなります。

なお、本稿はRAMS 2025に投稿予定のため一部を秘匿しています。


左矢前のブログ 次のブログ右矢

新方式によるPUAの導出 (5)

posted by sakurai on March 20, 2024 #758

以下の記事中、ピンクは誤りグリーンは正解を意味しています。

過去記事ではまずPUDを導出し、途中の検出分が全て修理される前提で、最終の検出かつ未修理分のみを不検出に加えてPUAを導出しました。

一方、過去記事において不稼働度(Point Unavailability; PUA)を新方式$\dagger$で求めました。ところが導出の際に式の誤りがあったため再度同じ方法で不稼働度(PUA)を求めてみます。

SMのフォールトが生起したとき、それがレイテントフォールトとなるかならないかは2nd SMの故障検出率で決定されます。これを$K_\text{MPF}$とすると、 $$ K_\text{MPF}=\Pr\{\text{detected }|\text{ failed at }t\}\tag{758.1} $$ ここでは式(758.1)に基づいてPUAを導出します。これは、修理が完全に確率的に行われることを意味し、検出されるされないは故障の原因によらずにSMの能力のみに依存することになります。これは従来の仮定を根本から変更するものであるため、本稿では「新方式」としています。

不稼働度$Q(t)$の一般式

稼働度(Point Availability; PA)の公式から不稼働度は以下のように表せます。 $$ \begin{eqnarray} Q_n(t)&=&F(t)-\int_0^{T_\text{lifetime}}m(x)R(t-x)dx\\ &=&F(t)-\sum_{i=1}^nM(i\tau)R(t-i\tau)\tag{758.2} \end{eqnarray} $$ 定期修理であるため、$\tau_i=i\tau,\ i=1,2,...$が修理時点であり、$M(i\tau)$は修理時点$i\tau$における修理率です。不稼働度はフォールトが起きて累積する検出率に応じた一部の故障が修理され、かつ現在まで生き残っている分を引いたものとなります。

さて、修理時点$i\tau$における修理率$M(i\tau)$はその検査区間内での不信頼度の増加分に故障検出率である(758.1)の$K_\text{MPF}$をかけたものとなることから、 $$ \begin{eqnarray} M(i\tau)&=&K_\text{MPF}\int_{i-1}^iq(x)dx\\ &=&\img[-1.35em]{/images/withinseminar.png} \tag{758.3} \end{eqnarray} $$ なぜその検査区間内かといえば、その前までの故障は全て検査され、不検出分は全てレイテントフォールトとなり不信頼度に加えられるからです。

従って、(758.2), (758.3)より、 $$ Q_n(t)=F(t)-\img[-1.35em]{/images/withinseminar.png}\ n=\lfloor t/\tau\rfloor\ge1\tag{758.4} $$ しかしながら、PUAは求めるべき関数が右辺にあるため陽には求められず、数値計算することになります。図758.1は$\lambda$=0.001, $\tau$=100のときのグラフです。

  • $F(t)$ --- 紫
  • $Q_\text{exact}(t)$ --- 赤
  • $Q_\text{approx}(t)=(1-K)F(t)+KF(u)$ --- 青
  • $Q_\text{approx}(t)$のベースライン$(1-K)F(t)$ --- 緑

図%%.1
図758.1 $Q(t)$のグラフ

従来論文ではPUAとしての$Q_\text{approx}(t)=(1-K)F(t)+KF(u)$を用いていますが、本来は毎回の修理量は徐々に減少していき、不信頼度が増大するための$Q_\text{exact}(t)$のように上振れとなります。

今までの記事は区間修理量一定という、厳密な議論に立てば正しくない仮定の下にPUA及びPUDを導出してきましたが、正しくは本記事のように区間修理量は漸減するとすべきでした。

なお、本稿はRAMS 2025に投稿予定のため一部を秘匿しています。


$\dagger$2nd SMのDCである$K_\text{MPF}$を条件付き確率と変更する方式


左矢前のブログ 次のブログ右矢

新方式によるPUAの導出 (4)

posted by sakurai on March 19, 2024 #757

ここまで見たように、PMHFの正確な議論のためには論文のロジックをPUA起点からPUD起点に組みかえる必要があります。 $$ M_\text{PMHF}=\frac{1}{T_\text{lifetime}}\int_0^{T_\text{lifetime}}q(t)dt=\frac{1}{T_\text{lifetime}}Q(T_\text{lifetime}) $$

現在までの流れ:

  • Kパラメータは条件付き確率ではないと仮定する
  • PUA $Q(t)$を導出する。その前提は「周期間での修理量は常に$KF(\tau)$に等しい」⇒これより $$ Q(t)=(1-K)F(t)+KF(u), u=t\bmod\tau $$
  • PUD $q(t)$はPUA $Q(t)$を時間微分したもの
  • PMHFは平均PUD、すなわちPUA $Q(t)$を車両寿命で割ったものとして導出する

改訂版の流れ:

  • Kパラメータは条件付き確率と仮定(変更)する
  • Kパラメータから微分方程式PUD $q(t)$を導出する $$ q(t)dt=R(t)\lambda dt=f(t)dt $$
  • 「周期の最後で検出し修理する」のと「瞬間瞬間で検出し色付けしておき最後で修理する」のとが等価であることを示す
  • 修理すればそれは良品となるため、周期の最後では不良品のみがLFとして残ることを示す
  • PUDの積分方程式$\int q(t)$を解いて正確なPUA $Q(t)$を導出する $$ Q(t)=K_\text{MPF}R(n\tau)F(u) ,\ \ s.t.\ n=\lfloor \frac{t}{\tau}\rfloor, u=t\bmod\tau\tag{5} $$
  • $R(n\tau)\approx1$の議論を行い、近似PUA(現行のPUA)を導出⇒ここから現在までの流れに合流する
  • PMHFは平均PUD、すなわちPUA $Q(t)$を車両寿命で割ったものとして導出する

こうすることで今までの議論が全て成立することになります。

一例をあげると、 $$ \begin{eqnarray} \begin{cases} \lambda&=10FIT=1.0\times10^{-8}\\ n\tau&\approx T_\text{lifetime}=1.0\times10^{5} \end{cases} \end{eqnarray} $$ これらの数値を用いれば、 $$ R(n\tau)=0.999 $$ となり、ほぼ1であることからこの項は無視できることがわかります。逆に$\lambda$が513[FIT]未満であれば1とみなしても5%程度の誤差で収まります。

注意:
Kパラメータを条件付き確率と仮定することには特に問題は有りません。一方で本記事も、上記のこのマーカーの箇所が誤りのようです。上記は修理可能部分の不信頼度は累積されないとして計算しましたが、実際には不信頼度は累積され、区間の最後で修理されます。従って、不信頼度の累積は高い不稼働度に繋がり、本計算では実際より低く見積もることになります。

なお、本稿はRAMS 2025に投稿予定のため一部を秘匿しています。


左矢前のブログ 次のブログ右矢

新方式によるPUAの導出 (3)

posted by sakurai on March 18, 2024 #756

さて、微小時間間隔$(t, t+dt)$における不検出部分の微小確率$q_\text{undet}(t)$は、 $$ q_\text{undet}(t)=\Pr\{\text{undetected}\cap\text{failed in }(t, t+dt)\cap\text{up at }t\}\\ =\Pr\{\text{undetected}\hspace{1pt}|\hspace{1pt}\text{failed in }(t, t+dt)\cap\text{up at }t\}\\ \cdot\Pr\{\text{failed in }(t, t+dt)\cap\text{up at }t\}\\ =(1-K_\text{MPF})\cdot\Pr\{\text{failed in }(t, t+dt)\hspace{1pt}|\hspace{1pt}\text{up at }t\}\cdot\Pr\{\text{up at }t\}\\ =(1-K_\text{MPF})\lambda dt R(t)=(1-K_\text{MPF})f(t)dt\tag{756.1} $$ でした。不検出部分は修理の影響を全く受けないため、$Q(t)$は $$ Q_\text{undet}(t)=\int_0^t q_\text{undet}(s)ds=(1-K_\text{MPF})\int_0^tf(s)ds=(1-K_\text{MPF})F(t)\tag{756.2} $$ 他方、検出部分の微小確率$q_\text{det}(t)$は $$ q_\text{det}(t)=\Pr\{\text{detected}\cap\text{failed in }(t, t+dt)\cap\text{up at }t\}\\ =\Pr\{\text{detected}\hspace{1pt}|\hspace{1pt}\text{failed in }(t, t+dt)\cap\text{up at }t\}\\ \cdot\Pr\{\text{failed in }(t, t+dt)\cap\text{up at }t\}\\ =K_\text{MPF}\cdot\Pr\{\text{failed in }(t, t+dt)\hspace{1pt}|\hspace{1pt}\text{up at }t\}\cdot\Pr\{\text{up at }t\}\\ =K_\text{MPF}\lambda dt R(t)=K_\text{MPF}f(t)dt\tag{756.3} $$ この微小確率は累積せずに区間毎に修理され、最後の区間のみ累積されるため、$Q(t)$は $$ \require{cancel} Q_\text{det}(t)=\int_0^t q_\text{det}(s)ds=K_\text{MPF}\int_{n\tau}^t f(s)ds=K_\text{MPF}\left[F(t)-F(n\tau)\right]\\ =K_\text{MPF}\left((\bcancel{1}-e^{-\lambda t})-(\bcancel{1}-e^{-\lambda n\tau})\right)=K_\text{MPF}e^{-\lambda n\tau}\left(1-e^{-\lambda(t-n\tau)}\right)\\ =K_\text{MPF}R(n\tau)F(u) ,\ \ s.t.\ n=\lfloor \frac{t}{\tau}\rfloor,\ u=t\bmod\tau\tag{756.4} $$ 式(756.2)及び (756.4)を加えて、 $$ Q(t)=(1-K_\text{MPF})F(t)+K_\text{MPF}R(n\tau)F(u) ,\ \ s.t.\ n=\lfloor \frac{t}{\tau}\rfloor,\ u=t\bmod\tau\tag{756.5} $$

図756.1に、 $$ \begin{eqnarray} \begin{cases} Q_1(t)&=(1-K_\text{MPF})F(t)+K_\text{MPF}F(u)\\ Q_2(t)&=(1-K_\text{MPF})F(t)+K_\text{MPF}R(n\tau)F(u) ,\ \ s.t.\ n=\lfloor t/\tau\rfloor,\ u=t\bmod\tau\tag{756.6} \end{cases} \end{eqnarray} $$ のグラフを示します。が$Q_1(t)$、が$Q_2(t)$です。

図%%.1
図756.1 $Q_1(t)$と$Q_2(t)$のグラフ

本来なら$Q_2(t)$を使用すべきですが、$Q_1(t)$を近似式として使用します。

注意:
本記事は上記のこのマーカーの箇所が誤りのようです。上記は修理可能部分の不信頼度は累積されないとして計算しましたが、実際には不信頼度は累積され、区間の最後で修理されます。従って、本来不信頼度の累積は高い不稼働度になるところが、本計算ではより低く見積もることになります。

なお、本稿はRAMS 2025に投稿予定のため一部を秘匿しています。


左矢前のブログ 次のブログ右矢


ページ: