(57)【特許請求の範囲】
【請求項１】
管理対象の複数の装置と前記複数の装置の種別との対応関係を定義したインスタンス定義を格納するインスタンス定義データベースと、
前記複数の装置で発生し得る複数の障害と前記複数の装置の種別との対応関係を定義した障害発生箇所種別定義を格納する障害発生箇所種別定義データベースと、
監視中の前記複数の装置において発生した複数のイベントが発生時刻順に並んだ障害原因推定用イベント列を格納するイベント列データベースと、
前記複数の装置の種別と前記複数の装置の種別での障害との組み合わせに関する障害推移確率を示す障害派生モデルを記憶する第１記憶部と、
前記複数の装置での障害と前記複数の装置の障害から派生するイベントとの組み合わせに関するイベント推移確率を示すイベント派生モデルを記憶する第２記憶部と、
前記複数の装置のうちの障害の発生した発生装置に関する発生装置推移確率を示すインスタンス派生モデルを記憶する第３記憶部と、
前記インスタンス定義及び前記障害発生箇所種別定義と、前記障害派生モデル、前記イベント派生モデル及び前記インスタンス派生モデルと、前記障害原因推定用イベント列とに基づいて、前記複数の装置の種別における前記複数の障害間の第１遷移確率と、前記複数の装置間の第２遷移確率とを独立に求め、両者を掛け合わせることで、前記障害原因推定用イベント列に対する障害の遷移列及び遷移確率を示す障害状態推移列及び障害状態遷移確率を推測する拡張Ｖｉｔｅｒｂｉ計算部と、
前記障害状態遷移列及び障害状態遷移確率に基づいて、前記管理対象で発生した前記イベントの根源的な原因となる障害を推定するフィルタリングモジュールと
を具備する
障害原因推定システム。
【請求項２】
請求項１に記載の障害原因推定システムにおいて、
前記拡張Ｖｉｔｅｒｂｉ計算部は、前記障害原因推定用イベント列に含まれる第１時刻での第１発生装置での第１障害から第２時刻での第２発生装置での第２障害への遷移確率としての前記障害状態遷移確率を、
前記第１時刻での前記第１発生装置の第１種別に対応する前記障害状態遷移確率と、前記第１障害から前記第２障害への前記障害推移確率と、前記第２障害での前記イベント推移確率とに基づいて算出される前記第１遷移確率と、
前記第１発生装置から前記第２発生装置への前記発生装置推移確率である前記第２遷移確率と
に基づいて算出する
障害原因推定システム。
【請求項３】
請求項１又は２に記載の障害原因推定システムにおいて、
前記複数の装置で発生し得る複数のイベントと、前記複数のイベントを引き起こす複数の障害との対応関係を定義した基本モデル定義を格納する障害定義データベースと、
前記基本モデル定義に基づいて、前記複数の障害同士の推移関係を示す初期障害派生モデル、及び、前記複数の障害と前記複数のイベントとの間の推移関係を示す初期イベント派生モデルを予め設定された条件で生成する初期モデル生成部と、
前記インスタンス定義及び前記障害発生箇所種別定義と、前記初期障害派生モデル及び前記初期イベント派生モデルと、複数の装置において発生した複数のイベントが発生時刻順に並んだ学習用イベント列とに基づいて、前記学習イベント列に含まれる開始時刻から開始状態を出発して所定時刻で所定障害に至る前向き確率と、前記学習イベント列に含まれる終了時刻から終了状態を出発して所定時刻で所定障害に至る後向き確率とを前記複数の装置の種別で障害を絞り込んで算出し、前記前向き確率と前記後向き確率とに基づいて、前記障害派生モデル及び前記イベント派生モデルを生成する拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部と、
前記学習用イベント列における前記発生装置から次の前記発生装置への遷移確率を算出することにより前記インスタンス派生モデルを生成するインスタンス派生確率計算部と
を更に具備する
障害原因推定システム。
【請求項４】
請求項３に記載の障害原因推定システムにおいて、
前記拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部は、
前記学習用のイベント列に含まれる第３時刻での第３発生装置において第３障害から第４時刻での第４発生装置での第４障害への前記前向き確率を、前記第３時刻での前記第３発生装置の第３種別に対応する前記前向き確率と、前記第３障害から前記第４障害への前記障害遷移確率と、前記第４障害での前記イベント推移確率とに基づいて算出し、
前記学習用のイベント列に含まれる第６時刻での第６発生装置において第６障害から第５時刻での第５発生装置での第５障害への前記後向き確率を、前記第６時刻での前記第６発生装置の第６種別に対応する前記後向き確率と、前記第６障害から前記第５障害への前記障害遷移確率と、前記第５障害での前記イベント推移確率とに基づいて算出し、
前記イベント派生モデルを、前記前向き確率と前記後向き確率とに基づいて計算し、
前記障害派生モデルを、前記前向き確率と前記後向き確率と各時点での前記イベント推移確率とに基づいて計算し、
上記計算を、前記イベント推移確率と前記障害推移確率とが収束するまで繰り返して、前記障害派生モデル、及び、前記イベント派生モデルを生成する
障害原因推定システム。
【請求項５】
請求項１乃至３のいずれか一項に記載の障害原因推定システムにおいて、
拡張Ｂａｕｍ−Ｗｅｌｐｈ計算部の代わりに、Ｂａｕｍ−Ｗｅｌｐｈアルゴリズムを実行するＢａｕｍ−Ｗｅｌｐｈ計算部を用いる
障害原因推定システム。
【請求項６】
請求項１乃至５のいずれか一項に記載の障害原因推定システムにおいて、
前記フィルタリングモジュールは、
前記障害状態遷移列において、二つの障害間の遷移確率が、所定の確率よりも低い場合、前記障害状態遷移列を、当該二つの障害間で分割し、
前記分割された障害状態推移列の各々の先頭の障害を、前記根源的な原因となる障害と推定する
障害原因推定システム。
【請求項７】
請求項１乃至６のいずれか一項に記載の障害原因推定システムにおいて、
前記学習用イベント列及び前記障害原因推定用イベント列の各々における隣接する２つのイベントの発生時間間隔は所定の値以下である
障害原因推定システム。
【請求項８】
管理対象の複数の装置と前記複数の装置の種別との対応関係を定義したインスタンス定義と、前記複数の装置で発生し得る複数の障害と前記複数の装置の種別との対応関係を定義した障害発生箇所種別定義と、前記複数の装置の種別と前記複数の装置の種別での障害との組み合わせに関する障害推移確率を示す障害派生モデルと、前記複数の装置での障害と前記複数の装置の障害から派生するイベントとの組み合わせに関するイベント推移確率を示すイベント派生モデルと、前記複数の装置のうちの障害の発生した発生装置に関する発生装置推移確率を示すインスタンス派生モデルと、監視中の前記複数の装置において発生した複数のイベントが発生時刻順に並んだ障害原因推定用イベント列とに基づいて、前記複数の装置の種別における前記複数の障害間の第１遷移確率と、前記複数の装置間の第２遷移確率とを独立に求め、両者を掛け合わせることで、前記障害原因推定用イベント列に対する障害の遷移列及び遷移確率を示す障害状態推移列及び障害状態遷移確率を推測するステップと、
前記障害状態遷移列及び障害状態遷移確率に基づいて、前記管理対象で発生した前記イベントの根源的な原因となる障害を推定するステップと
を具備する
障害原因推定方法。
【請求項９】
請求項８に記載の障害原因推定方法において、
障害状態推移列及び障害状態遷移確率を推測するステップは、
前記障害原因推定用イベント列に含まれる第１時刻での第１発生装置での第１障害から第２時刻での第２発生装置での第２障害への遷移確率としての前記障害状態遷移確率を、
前記第１時刻での前記第１発生装置の第１種別に対応する前記障害状態遷移確率と、前記第１障害から前記第２障害への前記障害推移確率と、前記第２障害での前記イベント推移確率とに基づいて算出される前記第１遷移確率と、
前記第１発生装置から前記第２発生装置への前記発生装置推移確率である前記第２遷移確率と
に基づいて算出するステップを含む
障害原因推定方法。
【請求項１０】
請求項８又は９に記載の障害原因推定方法において、
前記複数の装置で発生し得る複数のイベントと、前記複数のイベントを引き起こす複数の障害との対応関係を定義した基本モデル定義に基づいて、前記複数の障害同士の推移関係を示す初期障害派生モデル、及び、前記複数の障害と前記複数のイベントとの間の推移関係を示す初期イベント派生モデルを予め設定された条件で生成するステップと、
前記インスタンス定義及び前記障害発生箇所種別定義と、前記初期障害派生モデル及び前記初期イベント派生モデルと、複数の装置において発生した複数のイベントが発生時刻順に並んだ学習用イベント列とに基づいて、前記学習イベント列に含まれる開始時刻から開始状態を出発して所定時刻で所定障害に至る前向き確率と、前記学習イベント列に含まれる終了時刻から終了状態を出発して所定時刻で所定障害に至る後向き確率とを前記複数の装置の種別で障害を絞り込んで算出し、前記前向き確率と前記後向き確率とに基づいて、前記障害派生モデル及び前記イベント派生モデルを生成するステップと、
前記学習用イベント列における前記発生装置から次の前記発生装置への遷移確率を算出することにより前記インスタンス派生モデルを生成するステップと
を更に具備する
障害原因推定方法。
【請求項１１】
請求項１０に記載の障害原因推定方法において、
前記障害派生モデル及び前記イベント派生モデルを生成するステップは、
前記学習用のイベント列に含まれる第３時刻での第３発生装置において第３障害から第４時刻での第４発生装置での第４障害への前記前向き確率を、前記第３時刻での前記第３発生装置の第３種別に対応する前記前向き確率と、前記第３障害から前記第４障害への前記障害遷移確率と、前記第４障害での前記イベント推移確率とに基づいて算出するステップと、
前記学習用のイベント列に含まれる第６時刻での第６発生装置において第６障害から第５時刻での第５発生装置での第５障害への前記後向き確率を、前記第６時刻での前記第６発生装置の第６種別に対応する前記後向き確率と、前記第６障害から前記第５障害への前記障害遷移確率と、前記第５障害での前記イベント推移確率とに基づいて算出するステップと、
前記イベント派生モデルを、前記前向き確率と前記後向き確率とに基づいて計算するステップと、
前記障害派生モデルを、前記前向き確率と前記後向き確率と各時点での前記イベント推移確率とに基づいて計算するステップと、
上記計算を、前記イベント推移確率と前記障害推移確率とが収束するまで繰り返して、前記障害派生モデル及び前記イベント派生モデルを生成するステップと
を含む
障害原因推定方法。
【請求項１２】
請求項８乃至１１のいずれか一項に記載の障害原因推定方法において、
前記障害派生モデル及び前記イベント派生モデルを生成するステップの代わりに、Ｂａｕｍ−Ｗｅｌｐｈアルゴリズムを実行するステップを具備する
障害原因推定方法。
【請求項１３】
請求項８乃至１２のいずれか一項に記載の障害原因推定方法において、
前記根源的な原因となる障害を推定するステップは、
前記障害状態遷移列において、二つの障害間の遷移確率が、所定の確率よりも低い場合、前記障害状態遷移列を、当該二つの障害間で分割するステップと、
前記分割された障害状態推移列の各々の先頭の障害を、前記根源的な原因となる障害と推定するステップと
を含む
障害原因推定方法。
【請求項１４】
請求項８乃至１３のいずれか一項に記載の障害原因推定方法において、
前記学習用イベント列及び前記障害原因推定用イベント列の各々における隣接する２つのイベントの発生時間間隔は所定の値以下である
障害原因推定方法。
【請求項１５】
インスタンス定義データベースから、管理対象の複数の装置と前記複数の装置の種別との対応関係を定義したインスタンス定義を読み出すステップと、
障害発生箇所種別定義データベースから、前記複数の装置で発生し得る複数の障害と前記複数の装置の種別との対応関係を定義した障害発生箇所種別定義を読み出すステップと、
イベント列データベースから、監視中の前記複数の装置において発生した複数のイベントが発生時刻順に並んだ障害原因推定用イベント列を読み出すステップと、
第１記憶部から、前記複数の装置の種別と前記複数の装置の種別での障害との組み合わせに関する障害推移確率を示す障害派生モデルを読み出すステップと、
第２記憶部から、前記複数の装置での障害と前記複数の装置の障害から派生するイベントとの組み合わせに関するイベント推移確率を示すイベント派生モデルを読み出すステップと、
第３記憶部から、前記複数の装置のうちの障害の発生した発生装置に関する発生装置推移確率を示すインスタンス派生モデルを読み出すステップと、
拡張Ｖｉｔｅｒｂｉ計算部が、読み出された前記インスタンス定義及び前記障害発生箇所種別定義と、前記障害派生モデル、前記イベント派生モデル及び前記インスタンス派生モデルと、前記障害原因推定用イベント列とに基づいて、前記複数の装置の種別における前記複数の障害間の第１遷移確率と、前記複数の装置間の第２遷移確率とを独立に求め、両者を掛け合わせることで、前記障害原因推定用イベント列に対する障害の遷移列及び遷移確率を示す障害状態推移列及び障害状態遷移確率を推測するステップと、
フィルタリングモジュールが、前記障害状態遷移列及び障害状態遷移確率に基づいて、前記管理対象で発生した前記イベントの根源的な原因となる障害を推定するステップと
を具備する障害原因推定方法をコンピュータに実行させるプログラム。
【請求項１６】
請求項１５に記載のプログラムにおいて、
障害状態推移列及び障害状態遷移確率を推測するステップは、
前記拡張Ｖｉｔｅｒｂｉ計算部が、前記障害原因推定用イベント列に含まれる第１時刻での第１発生装置での第１障害から第２時刻での第２発生装置での第２障害への遷移確率としての前記障害状態遷移確率を、
前記第１時刻での前記第１発生装置の第１種別に対応する前記障害状態遷移確率と、前記第１障害から前記第２障害への前記障害推移確率と、前記第２障害での前記イベント推移確率とに基づいて算出される前記第１遷移確率と、
前記第１発生装置から前記第２発生装置への前記発生装置推移確率である前記第２遷移確率と
に基づいて算出するステップを含む
プログラム。
【請求項１７】
請求項１５又は１６に記載のプログラムにおいて、
障害定義データベースから、前記複数の装置で発生し得る複数のイベントと、前記複数のイベントを引き起こす複数の障害との対応関係を定義した基本モデル定義を読み出すステップと、
初期モデル生成部が、前記複数の装置で発生し得る複数のイベントと、前記複数のイベントを引き起こす複数の障害との対応関係を定義した基本モデル定義に基づいて、前記複数の障害同士の推移関係を示す初期障害派生モデル、及び、前記複数の障害と前記複数のイベントとの間の推移関係を示す初期イベント派生モデルを予め設定された条件で生成するステップと、
拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部が、前記インスタンス定義及び前記障害発生箇所種別定義と、前記初期障害派生モデル及び前記初期イベント派生モデルと、複数の装置において発生した複数のイベントが発生時刻順に並んだ学習用イベント列とに基づいて、前記学習イベント列に含まれる開始時刻から開始状態を出発して所定時刻で所定障害に至る前向き確率と、前記学習イベント列に含まれる終了時刻から終了状態を出発して所定時刻で所定障害に至る後向き確率とを前記複数の装置の種別で障害を絞り込んで算出し、前記前向き確率と前記後向き確率とに基づいて、前記障害派生モデル及び前記イベント派生モデルを生成するステップと、
インスタンス派生確率計算部が、前記学習用イベント列における前記発生装置から次の前記発生装置への遷移確率を算出することにより前記インスタンス派生モデルを生成するステップと
を更に具備する
プログラム。
【請求項１８】
請求項１７に記載のプログラムにおいて、
前記障害派生モデル及び前記イベント派生モデルを生成するステップは、
前記拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部が、前記学習用のイベント列に含まれる第３時刻での第３発生装置において第３障害から第４時刻での第４発生装置での第４障害への前記前向き確率を、前記第３時刻での前記第３発生装置の第３種別に対応する前記前向き確率と、前記第３障害から前記第４障害への前記障害遷移確率と、前記第４障害での前記イベント推移確率とに基づいて算出するステップと、
前記拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部が、前記学習用のイベント列に含まれる第６時刻での第６発生装置において第６障害から第５時刻での第５発生装置での第５障害への前記後向き確率を、前記第６時刻での前記第６発生装置の第６種別に対応する前記後向き確率と、前記第６障害から前記第５障害への前記障害遷移確率と、前記第５障害での前記イベント推移確率とに基づいて算出するステップと、
前記拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部が、前記イベント派生モデルを、前記前向き確率と前記後向き確率とに基づいて計算するステップと、
前記拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部が、前記障害派生モデルを、前記前向き確率と前記後向き確率と各時点での前記イベント推移確率とに基づいて計算するステップと、
前記拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部が、上記計算を、前記イベント推移確率と前記障害推移確率とが収束するまで繰り返して、前記障害派生モデル及び前記イベント派生モデルを生成するステップと
を含む
プログラム。
【請求項１９】
請求項１５乃至１８のいずれか一項に記載のプログラムにおいて、
前記障害派生モデル及び前記イベント派生モデルを生成するステップの代わりに、Ｂａｕｍ−Ｗｅｌｃｈ計算部が、Ｂａｕｍ−Ｗｅｌｐｈアルゴリズムを実行するステップを具備する
プログラム。
【請求項２０】
請求項１５乃至１９のいずれか一項に記載のプログラムにおいて、
前記根源的な原因となる障害を推定するステップは、
フィルタリングモジュールが、前記障害状態遷移列において、二つの障害間の遷移確率が、所定の確率よりも低い場合、前記障害状態遷移列を、当該二つの障害間で分割するステップと、
フィルタリングモジュールが、前記分割された障害状態推移列の各々の先頭の障害を、前記根源的な原因となる障害と推定するステップと
を含む
プログラム。
【請求項２１】
請求項１５乃至２０のいずれか一項に記載のプログラムにおいて、
前記学習用イベント列及び前記障害原因推定用イベント列の各々における隣接する２つのイベントの発生時間間隔は所定の値以下である
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、障害原因推定システム、障害原因推定方法、及び障害原因推定プログラムに関し、特に計算機システムで推移的に発生する障害の原因を推定する障害原因推定システム、障害原因推定方法、及び障害原因推定プログラムに関する。
【背景技術】
【０００２】
計算機システムにおいて発生した障害の原因を推定する障害原因推定システムが知られている。例えば、特開平８−２５５０９３号公報（特許文献１）に障害原因発見装置及びその方法が開示されている。図３２は、特許文献１の障害原因発見装置の構成を示すブロック図である。この障害原因発見装置では、各部は以下のように動作する。プロセス情報獲得部２１０１は計算機システムで実行されているプロセス情報を獲得する。環境ファイル情報獲得部２１０２は計算機システムの動作に必要なシステム環境ファイル情報を獲得する。デバイス情報獲得部２１０３は計算機システムに組み込まれているデバイスドライバーの情報を獲得する。基準環境情報獲得部２１０４は計算機システムが正常に動作している時に、プロセス情報獲得部２１０１、環境ファイル情報獲得部２１０２、およびデバイス情報獲得部２１０３から環境情報を取り出す。基準環境情報記憶部２１０５は基準環境情報獲得部２１０４が取り出した環境情報を記憶する。検査環境情報獲得部２１０６は計算機システムに異常が発生したか否かを検出するために、プロセス情報獲得部２１０１、環境ファイル情報獲得部２１０２、およびデバイス情報獲得部２１０３から環境情報を取り出す。検査環境情報記憶部２１０７は検査環境情報獲得部２１０６が取り出した環境情報を記憶する。環境情報比較判定部２１０９は基準環境情報記憶部２１０５と検査環境情報記憶部２１０７の内容を比較して状態変化内容を見つけ出す。許容範囲情報記憶部２１０８は環境情報比較判定部２１０９において状態変化内容が許容範囲を越えるか否かの判定基準となる情報を記憶する。基準環境情報補正部２１１０は環境情報比較判定部２１０９が見つけ出した状態変化内容から基準環境情報記憶部２１０５の内容を補正する。異常原因特定部２１１１は状態変化内容から計算機システムの異常発生原因を特定する。【０００３】
このような構成を有する障害原因発見装置（障害原因推定システム）は次のように動作する。例えば、基準環境情報記憶部２１０５が、基準環境として「実行中のプロセスは、ｎｆｓが１個」を記憶しているとする。また、許容範囲情報記憶部２０８が、「マウントデバイスの追加が許可される状況」に対応して、許容値として「実行中のプロセスは、ｎｆｓが最大１２個」を記憶し、「マウントデバイスの追加が許可されない状況」に対応して許容値として「実行中のプロセスは、ｎｆｓが最大１２個」を記憶しているとする。そして、あるとき、システムが「マウントデバイスの追加が許可される状況」にあり、検査環境情報獲得部２１０６が、「実行中のプロセスは、ｎｆｓが１１個」という状態を検出したとする。この場合、ｎｆｓプロセス数は許容値である最大値「１２」を超えない状態であるため、環境情報比較判定部２１０９は正常であると判断する。【０００４】
その後、「ＳＣＳＩボートの故障」に起因して、「マウントデバイスの追加が許可されない」状況になったとする。ｎｆｓプロセス数が変化せずに１２個のままであったとすると、「マウントデバイスの追加が許可されない状況」におけるｎｆｓプロセスの許容値の最大値は「８」であるため、ｎｆｓプロセス数は最大値を超える。従って、異常原因特定部２１１１は、ｎｆｓプロセス数が許容値を超えたことを、障害原因として特定する。すなわち、異常原因特定部２１１１は、本来の故障原因が「ＳＣＳＩボードの故障」であるにもかかわらず、デバイスが追加されたことが原因と推定する。しかし、上記の場合、ｎｆｓプロセスの数が正常値を逸脱しているということの原因が、「ＳＣＳＩボードの故障」であると認識して対応しないと、正しい障害対応はできない。【０００５】
また、特開２００４−１２６６４１号公報（特許文献２）に因果関係モデル生成装置、原因推定装置等が開示されている。図３３Ａ及び図３３Ｂはそれぞれ特許文献２の因果関係モデル生成装置及び原因推定装置を示すブロック図であり、図３３Ｃは因果システムモデルを示す模式図である。図３３Ａに示される因果関係モデル生成装置では、因果データ生成記憶部２２１１は、因果関係をあらわすデータのデータベースである。果因データ生成記憶部２２１２は、因果関係をあらわすデータの逆マッピングであるデータのデータベースである。同一結果データ集合データ集合生成部２２１３は、複数の事象を一つの事象グループに対応させる関係や、複数の原因を一つの原因グループに対応させる関係を記録する。部分因果システムモデル構成部２２１４は、原因グループと事象グループの関係をマッピングする因果システムモデルを構築する。【０００６】
因果システムモデル構築装置は、構築した因果システムモデルを因果システムモデル記憶部２２２４に格納する。図３３Ｂに示される果因推定装置では、観測データ認識部２２２１は、観測データから障害を認識し、因果システムモデル記憶部２２２４に格納された因果システムモデルの事象から原因のマッピングを適用し、障害の原因を求める。逆サブシステム検索部２２２２及び対応同一結果データ集合検索部２２２３は、更に原因から事象へのマッピングを適用することでその原因から発生しうる事象を求める。このように事象から原因へのマッピング及び原因から事象へのマッピングを推移的に適用し、推移的閉包を求めることで、起こりうる根本原因を含む原因を推移的に求める。しかし、特許文献２では、このようなマッピングを人間が記述することがあり、その処理が困難である。また、特許文献２は、マッピングを容易にするためにすべての事象・原因に対してマッピングを定義するのではなく、同一結果データ集合データ集合生成部２２１３に格納したグループごとのマッピングを定義する。【０００７】
また、特開２００７−２５７１８４号公報（特許文献３）に障害原因推定システム、方法及びプログラムが開示されている。図３４は、特許文献３の障害原因推定システムの構成を示すブロック図である。この障害原因推定システムでは、初期モデルパーザａ３０は、システムが発生するイベントとその原因との対応関係を記録した基本モデル定義ファイルａ２０を読み込む。初期モデル生成部ａ４０は、初期モデルパーザａ３０から取得した構文情報に基づき、状態遷移モデルの初期モデルを生成し、モデル格納データベースａ１２０に格納する。Ｂａｕｍ−Ｗｅｌｃｈ計算部ａ５０は、イベントモニタａ９０がイベント列データベースａ１４０に格納した学習イベント列ａ１００を入力し、モデル格納データベースａ１２０に格納された状態遷移モデルの遷移確率を学習する。Ｖｉｔｅｒｂｉ計算部ａ６０は、イベント列データベースａ１４０に蓄積された管理対象イベント列を、状態遷移モデルに適用し最も発生確率の高い状態遷移シーケンスを得る。フィルタリングモジュールａ７０は、最も発生確率の高い状態遷移シーケンスの中から尤もらしい遷移シーケンスを発見して、その遷移シーケンスの開始状態を根本的な原因と推定し、原因推定結果データベースａ１５０に格納する。このように、装置開発者が与えたイベントと障害を表す状態との対応関係のみの比較的簡潔な基本モデル定義ファイルから、障害を表す原因間の因果関係を実適用システムで学習することで、推移的な原因発生の根本的な原因を発見するよう動作する。このような構成を採用し、簡潔な基本モデル定義と、イベント列を与えることからイベントを発生する状態遷移列を学習することにより、人手でも簡単なイベント発生原因の定義ができ、かつ、システム構成・設定による差分や人手で記述しきれない原因間の推移関係は学習することで、管理者は障害推移の規則を記述することなく、障害の根本原因を推定することができる。【０００８】
その他、関連する技術として、特開２００７−０７８９４３号公報（音響スコア計算プログラム：特許文献４）、特開２００６−２９３０３３号公報（混合分布ＨＭＭの状態の出力確率計算方法、ＵＳ２００６２２９８７１（Ａ１）：特許文献５）、特開２００３−０３６０９２号公報（ＨＭＭの出力確率演算方法、ＵＳ７０５８５７６（Ｂ２）：特許文献６）、特開２００３−０２２０９３号公報（音声認識方法：特許文献７）、特開２００２−０９１４８０号公報（音響モデル生成装置：特許文献８）、特開２００１−１２５５９３号公報（音声認識装置：特許文献９）、特開２０００−１２２６９０号公報（パターン認識方法：特許文献１０）、及び、特開平１０−１４３１９０号公報（音声認識装置：特許文献１１）が開示されている。【０００９】
発明者は、今回、研究の結果以下の知見を新たに発見した。
上記の各障害原因推定システムには、以下のような問題点がある。
第１の問題点は、障害の推移関係が不明な障害には対応が困難ということである。その理由は、特許文献１では、前提条件とその場合の許容値とを記述する必要があるためである。しかし、障害の推移の中では、その関係が予め分からないことが多い。そのような場合、規則の記述が難しい。たとえば、アプリケーションを構成するソフトウェアモジュール間の関係を、システム管理者が把握することは一般に困難である。そのため、ある障害イベントがあるソフトウェアモジュールから発生した障害に、そのソフトウェアモジュールでの障害が推移した場合、その発見が困難である。たとえば、あるモジュールが、例外的な入力をもとに、ワーニングを出力しつつ、データを出力する場合を考える。このデータの値範囲は、当初想定の入力とは異なるため、例外的な値を持つとする。データベース書き込みモジュールがそのデータをデータベースに書き込む際、値範囲が異なるため、データベース書き込みエラーが発生することがある。このような派生関係では、データベース書き込みエラーと、データを作成したモジュールでのワーニングとが関係があり、後者が根本原因になっていることを事前に規則化することは困難である。【００１０】
第２の問題点は、障害の推移関係を記述することが困難ということである。その理由は、一般事象における原因と障害との関係は複雑であることによる。例えば、先の特許文献２の方法では、原因と障害との対応関係を事前登録し、障害の原因を推移的に求める。しかし、障害や状態の種類が多いため、その対応関係を記述することが困難である。このような記述の困難性を軽減するため、上記の特許文献２では、障害原因をグループ化し、その間のマッピングを記載する。しかし、グループごとにマッピングを定義する場合であっても、マッピングの定義は必要である。しかもグループを定義するのに手間がかかる上に、上手にグループ化しないと、原因と障害とのマッピングの精度が落ちる可能性がある。例えば、特許文献２には、図３３Ｃのような因果システムモデルの事例が開示されている。この図の例では、因果関係が矢印で示されている。しかし、マッピングｇ１の場合、ｇ１の定義域はＸ１でよいかもしれないが、事象ｘ３「変動幅増大」の原因として、他にも事象がある可能性がある。その原因を事象ｙ’（図示されず）とする。この事象ｘ３からこの原因（事象ｙ’）へのマッピングをｈ（図示されず）とすると、ｈの定義域はＸ１全体でない可能性がある。例えば、事象ｘ２「減圧設定不良（低）」をもたらすとは限らない。しかし、特許文献２の発明では、マッピングの定義を容易にするため、事象ｘ３を定義域Ｘ１と同一視し、ｈを、ｈ（Ｘ１）＝ｙ’と定義する。そのため、事象ｘ２に対してもｈを適用し、関係ない原因ｙ’が原因と見なされる危険性がある。【００１１】
第１の問題点や第２の問題点は、特許文献３の障害原因推定システムにより解決される。すなわち、既存の障害イベントを学習ログとして事前に特許文献３の障害原因推定システムに入力しておく。これにより、障害原因推定システムは、障害の推移モデルである状態遷移モデルを自動生成し、モデル格納データベースａ１２０に格納する。その状態遷移モデルを用いることで、障害原因推定システムは、推移規則を人手で書くことなく推移的な障害の原因分析を可能にする。また、障害原因推定システムは、管理者が把握していない障害の推移関係も学習ログから学習することで、暗黙的な障害派生関係も分析することができる。【００１２】
しかし、特許文献３の障害原因推定システムは、障害の種類が増えると、その二乗に比例して障害学習時間や分析時間が延びる。すなわち、第３の問題点は、大規模なシステムを管理対象とする場合に、分析処理に要する時間が長大になるということである。その理由は、特許文献３で利用しているＶｉｔｅｒｂｉアルゴリズムやＢａｕｍ−Ｗｅｌｃｈアルゴリズムは隠れ状態の二乗に比例して障害学習時間や分析時間が延びるためである。特許文献３では、障害を隠れ状態に対応させて障害の推移関係を学習している。一方、システムでは、装置ごとに障害が発生する。そこで、装置とその装置で発生する障害との組を隠れ状態に対応させると、装置の数が増加したときその組も増加するので、組の増加数の二乗に比例して、計算時間が延びることになる。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開平８−２５５０９３号公報
【特許文献２】特開２００４−１２６６４１号公報
【特許文献３】特開２００７−２５７１８４号公報
【特許文献４】特開２００７−０７８９４３号公報
【特許文献５】特開２００６−２９３０３３号公報
【特許文献６】特開２００３−０３６０９２号公報
【特許文献７】特開２００３−０２２０９３号公報
【特許文献８】特開２００２−０９１４８０号公報
【特許文献９】特開２００１−１２５５９３号公報
【特許文献１０】特開２０００−１２２６９０号公報
【特許文献１１】特開平１０−１４３１９０号公報
【発明の概要】
【００１４】
本発明の目的は、障害の推移関係が不明な障害にでも、推移する障害に関して原因分析ができる障害原因推定システムを提供することにある。
【００１５】
本発明の障害原因推定システムは、インスタンス定義データベースと、障害発生箇所種別定義データベースと、イベント列データベースと、第１記憶部と、第２記憶部と、第３記憶部と、拡張Ｖｉｔｅｒｂｉ計算部と、フィルタリングモジュールとを具備する。インスタンス定義データベースは、管理対象の複数の装置と複数の装置の種別との対応関係を定義したインスタンス定義を格納する。障害発生箇所種別定義データベースは、複数の装置で発生し得る複数の障害と複数の装置の種別との対応関係を定義した障害発生箇所種別定義を格納する。イベント列データベースは、監視中の複数の装置において発生した複数のイベントが発生時刻順に並んだ障害原因推定用イベント列を格納する。第１記憶部は、複数の装置の種別と複数の装置の種別での障害との組み合わせに関する障害推移確率を示す障害派生モデルを記憶する。第２記憶部は、複数の装置での障害と複数の装置の障害から派生するイベントとの組み合わせに関するイベント推移確率（ＡＳ→Ｅ）を示すイベント派生モデルを記憶する。第３記憶部は、複数の装置のうちの障害の発生した発生装置に関する発生装置推移確率（ＡＭ→Ｍ）を示すインスタンス派生モデルを記憶する。拡張Ｖｉｔｅｒｂｉ計算部は、インスタンス定義及び障害発生箇所種別定義と、障害派生モデル、イベント派生モデル及びインスタンス派生モデルと、障害原因推定用イベント列とに基づいて、複数の装置の種別における複数の障害間の第１遷移確率と、複数の装置間の第２遷移確率とを独立に求め、両者を掛け合わせることで、障害原因推定用イベント列に対する障害の遷移列及び遷移確率を示す障害状態推移列及び障害状態遷移確率を推測する。フィルタリングモジュールは、障害状態遷移列及び障害状態遷移確率に基づいて、管理対象で発生したイベントの根源的な原因となる障害を推定する。
【００１６】
本発明の障害原因推定方法は、以下の第１及び第２のステップを具備する。第１のステップは、管理対象の複数の装置と複数の装置の種別との対応関係を定義したインスタンス定義と、複数の装置で発生し得る複数の障害と複数の装置の種別との対応関係を定義した障害発生箇所種別定義と、複数の装置の種別と複数の装置の種別での障害との組み合わせに関する障害推移確率を示す障害派生モデルと、複数の装置での障害と複数の装置の障害から派生するイベントとの組み合わせに関するイベント推移確率を示すイベント派生モデルと、複数の装置のうちの障害の発生した発生装置に関する発生装置推移確率を示すインスタンス派生モデルと、監視中の複数の装置において発生した複数のイベントが発生時刻順に並んだ障害原因推定用イベント列とに基づいて、複数の装置の種別における複数の障害間の第１遷移確率と、複数の装置間の第２遷移確率とを独立に求め、両者を掛け合わせることで、障害原因推定用イベント列に対する障害の遷移列及び遷移確率を示す障害状態推移列及び障害状態遷移確率を推測するステップである。第２のステップは、障害状態遷移列及び障害状態遷移確率に基づいて、管理対象で発生したイベントの根源的な原因となる障害を推定するステップである。
【００１７】
本発明のプログラムは、以下の第１乃至第８のステップを具備する。
第１のステップは、インスタンス定義データベースから、管理対象の複数の装置と複数の装置の種別との対応関係を定義したインスタンス定義を読み出すステップである。第２のステップは、障害発生箇所種別定義データベースから、複数の装置で発生し得る複数の障害と複数の装置の種別との対応関係を定義した障害発生箇所種別定義を読み出すステップである。第３のステップは、イベント列データベースから、監視中の複数の装置において発生した複数のイベントが発生時刻順に並んだ障害原因推定用イベント列を読み出すステップである。第４のステップは、第１記憶部から、複数の装置の種別と複数の装置の種別での障害との組み合わせに関する障害推移確率を示す障害派生モデルを読み出すステップである。第５のステップは、第２記憶部から、複数の装置での障害と複数の装置の障害から派生するイベントとの組み合わせに関するイベント推移確率を示すイベント派生モデルを読み出すステップである。第６のステップは、第３記憶部から、複数の装置のうちの障害の発生した発生装置に関する発生装置推移確率を示すインスタンス派生モデルを読み出すステップである。第７のステップは、拡張Ｖｉｔｅｒｂｉ計算部が、読み出されたインスタンス定義及び障害発生箇所種別定義と、障害派生モデル、イベント派生モデル及びインスタンス派生モデルと、障害原因推定用イベント列とに基づいて、複数の装置の種別における複数の障害間の第１遷移確率と、複数の装置間の第２遷移確率とを独立に求め、両者を掛け合わせることで、障害原因推定用イベント列に対する障害の遷移列及び遷移確率を示す障害状態推移列及び障害状態遷移確率を推測するステップである。第８のステップは、フィルタリングモジュールが、障害状態遷移列及び障害状態遷移確率に基づいて、管理対象で発生したイベントの根源的な原因となる障害を推定するステップである。
【００１８】
本発明により、障害の推移関係が不明な障害にでも、推移する障害に関して原因分析ができる障害原因推定システムを提供することができる。
【図面の簡単な説明】
【００１９】
【図１】図１は、本発明の実施の形態に係る障害原因推定システムの構成を示すブロック図である。
【図２】図２は、本発明の実施の形態に係る拡張Ｖｉｔｅｒｂｉ計算部の構成を示すブロック図である。
【図３】図３は、本発明の実施の形態に係る拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部の構成を示すブロック図である。
【図４】図４は、本発明の実施の形態に係る拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュールの集合の構成を示すブロック図である。
【図５】図５は、本発明の実施の形態に係る拡張前向き計算部の構成を示すブロック図である。
【図６】図６は、本発明の実施の形態に係る拡張後向き計算部の構成を示すブロック図である。
【図７】図７は、本発明の実施の形態に係るインスタンス派生確率計算部の構成を示すブロック図である。
【図８】図８は、本発明の実施の形態に係る障害原因推定システムの動作を示すフローチャートである。
【図９】図９は、本発明の実施の形態に係る障害原因推定システムの動作のうち障害派生学習に関する動作を示すフローチャートである。
【図１０】図１０は、本発明の実施の形態に係る障害原因推定システムの動作のうちインスタンス派生学習に関する動作を示すフローチャートである。
【図１１】図１１は、本発明の実施の形態に係る障害原因推定システムの動作のうちイベント読み込みに関する動作を示すフローチャートである。
【図１２】図１２は、本発明の実施の形態に係る障害原因推定システムの動作のうち障害派生分析に関する動作を示すフローチャートである。
【図１３】図１３は、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張Ｖｉｔｅｒｂｉ計算部に関する動作を示すフローチャートである。
【図１４Ａ】図１４Ａは、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部に関する動作を示すフローチャートである。
【図１４Ｂ】図１４Ｂは、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部に関する動作を示すフローチャートである。
【図１５Ａ】図１５Ａは、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュールに関する動作を示すフローチャートである。
【図１５Ｂ】図１５Ｂは、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュールに関する動作を示すフローチャートである。
【図１６】図１６は、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張前向き計算部に関する動作を示すフローチャートである。
【図１７】図１７は、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張後向き計算部に関する動作を示すフローチャートである。
【図１８】図１８は、本発明の実施の形態に係る障害原因推定システムのイベント列パーザの動作を示す図である。
【図１９】図１９は、本発明の実施の形態に係る障害原因推定システムのフィルタリングモジュールの動作を示す図である。
【図２０】図２０は、本発明の実施例に係る障害原因推定システムの管理対称装置の構成を示すブロック図である。
【図２１】図２１は、本発明の実施の形態に係る障害原因推定システムの基本モデル定義を示す図である。
【図２２】図２２は、本発明の実施例に係る障害原因推定システムの初期障害派生モデルを示す図である。
【図２３】図２３は、本発明の実施例に係る障害原因推定システムの初期イベント派生モデルを示す図である。
【図２４】図２４は、本発明の実施例に係る障害原因推定システムの障害派生モデルを示す図である。
【図２５】図２５は、本発明の実施例に係る障害原因推定システムのイベント派生モデルを示す図である。
【図２６】図２６は、本発明の実施例に係る障害原因推定システムのインスタンス派生モデルを示す図である。
【図２７】図２７は、本発明の実施例に係る障害原因推定システムの障害定義ＤＢを示す図である。
【図２８】図２８は、本発明の実施例に係る障害原因推定システムの障害発生個所種別定義ＤＢを示す図である。
【図２９】図２９は、本発明の実施例に係る障害原因推定システムのインスタンス定義ＤＢを示す図である。
【図３０】図３０は、本発明の実施例に係る障害原因推定システムの障害学習の結果を示す図である。
【図３１】図３１は、本発明の実施例に係る障害原因推定システムの表示結果部での表示結果例を示す図である。
【図３２】図３２は特許文献１の障害原因発見装置の構成を示すブロック図である。
【図３３Ａ】図３３Ａは特許文献２の因果関係モデル生成装置を示すブロック図である。
【図３３Ｂ】図３３Ｂは特許文献２の原因推定装置を示すブロック図である。
【図３３Ｃ】図３３Ｃは特許文献２の因果システムモデルを示す模式図である。
【図３４】図３４は、特許文献３の障害原因推定システムの構成を示すブロック図である。
【発明を実施するための形態】
【００２０】
以下、本発明の障害原因推定システム、障害原因推定方法、及び障害原因推定プログラムの実施の形態に関して、添付図面を参照して説明する。
【００２１】
本発明の障害原因推定システム、障害原因推定方法、及び障害原因推定プログラムは、隠れマルコフモデル（Ｈｉｄｄｅｎ  Ｍｏｒｋｏｖ  Ｍｏｄｅｌ：ＨＭＭ）を拡張させた、拡張ＨＭＭを用いて管理対象装置の障害原因を分析する。すなわち、まず、基本モデルから初期モデル（初期障害派生モデル、初期イベント派生モデル）を生成する。次に、それら初期モデルと学習用のイベント列（出力系列）とに、本発明に係る拡張Ｂａｕｍ−Ｗｅｌｃｈアルゴリズムを適用して、拡張ＨＭＭ（障害派生モデル、イベント派生モデル）を推定する。併せて、学習用のイベント列に、本発明に係る前向きアルゴリズムを適用して、装置の種別に関する拡張ＨＭＭ（インスタンス派生モデル）を推定する。そして、それら拡張ＨＭＭ（障害派生モデル、イベント派生モデル、インスタンス派生モデル）と観測されたイベント列（出力系列）とに、本発明に係る拡張Ｖｉｔｅｒｂｉアルゴリズムを適用して、障害系列（状態系列）の最尤パスを推定し、そこから障害原因を推定する。ただし、イベント発生元の装置の種別により、隠れ状態（障害）が絞り込めること、障害派生の確率は、装置ごとのイベント派生確率に比例することを仮定している。以下、詳細に説明する。
【００２２】
１．障害原因推定システムの構成
まず、本発明の実施の形態に係る障害原因推定システムの構成について説明する。図１は、本発明の実施の形態に係る障害原因推定システムの構成を示すブロック図である。この障害原因推定システムは、初期モデルパーザ１４０と、障害定義データベース（ＤＢ）１５０と、障害発生個別種別定義データベース（ＤＢ）３７０、初期モデル生成部１６０と、初期障害派生モデル格納領域１７０と、初期イベント派生モデル格納領域１８０と、拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部１９０と、障害派生モデル格納領域２００と、イベント派生モデル格納領域２１０と、構成データベース（ＤＢ）読み取り部３６０と、インスタンス定義データベース（ＤＢ）２２０と、インスタンス派生確率計算部２３０と、インスタンス派生モデル格納領域２５０と、イベント列パーザ３００と、イベント列データベース（ＤＢ）３１０と、拡張Ｖｉｔｅｒｂｉ計算部３２０と、原因推定結果データベース（ＤＢ）３３０と、フィルタリングモジュール３３５とを具備する。
【００２３】
障害原因推定システムは、パーソナルコンピュータやワークステーションに例示される情報処理装置（ハードウェア）に、本発明の障害原因推定ログラム（ソフトウェア）がインストールされたものである。障害原因推定システムの各部や各領域などの機能は、これらソフトウェアとハードウェアとが協働することにより実現することが可能である。
【００２４】
初期モデルパーザ１４０は、システム開発者に属するコンピュータ１１０から、基本モデルを示す基本モデル定義１３０を入力として受け付ける。基本モデル定義１３０は、監視対象装置２８０で発生し得るイベントと、それを引き起こす障害とを対応付けて定義している。すなわち、その基本モデル定義１３０は、イベントの集合Ｅと、障害の集合Ｓと、装置種別Ｃと、イベントと障害との対応関係の関数ｈＥ→Ｓ：Ｅ→Ｓと、障害と装置種別との対応関係を示す関数ｈＳ→Ｃ：Ｓ→Ｃとで定義される。関数ｈは全域関数であるが、部分関数であってもよい。基本モデル定義１３０の具体例については、後述される（図２１）。そして、初期モデルパーザ１４０は、その基本モデル定義１３０を構文解釈し、その結果を障害定義ＤＢ１５０に格納する。障害定義ＤＢ１５０の具体例については、後述される（図２７）。それともに、初期モデルパーザ１４０は、障害と、その障害の発生装置（発生箇所）の種別とを対応付けて定義（障害発生個所種別定義）し、障害発生個所種別定義ＤＢ３７０に格納する。すなわち、障害の集合Ｓと、障害発生装置の種別の集合Ｃと、両者の対応関係を示す関数ｈＳ→Ｃ：Ｓ→Ｃとを格納する。障害発生個所種別定義ＤＢ３７０の具体例については、後述される（図２８）。
【００２５】
初期モデル生成部１６０は、障害定義ＤＢ１５０を参照し、初期障害派生モデルＡＳ→Ｓ、及び初期イベント派生モデルＡＳ→Ｅを生成する。そして、それぞれ、初期障害派生モデル格納領域１７０、及び初期イベント派生モデル格納領域１８０に格納する。ここで、本明細書では、ＡＸ→Ｙを、ｘ∈Ｘ、ｙ∈Ｙ、のときに、ｘの条件下でｙが発生する確率Ｐｒ（ｙ｜ｘ）を行列の要素Ａ［ｙ、ｘ］とする遷移行列と定義する。ただし、Ｘ、Ｙは有限集合とし、その要素ｘ、ｙにはそれぞれ０から始まる整数がＮ（ｘ）、Ｎ（ｙ）が割り当てられているとする。Ａ［ｙ、ｘ］は、Ａ［Ｎ（ｙ）、Ｎ（ｘ）］の省略形である。
【００２６】
このとき、初期障害派生モデルＡＳ→Ｓ及び初期イベント派生モデルＡＳ→Ｅは、以下の式（１）及び式（２）で表現される。
【数１】
0005489085.tif 000002
ただし、ｓｉ，ｓｊ∈Ｓ、ｅｉ，ｅｊ∈Ｅ、である。また、｜Ｓ｜は障害の集合Ｓの要素数を示す。｜｛ｅ∈Ｅ｜ｈＥ→Ｓ（ｅ）＝ｓｊ｝｜は、集合Ｅのうち、障害ｓｊにより発生するイベントｅの要素数を示す。
【００２７】
すなわち、初期障害派生モデルＡＳ→Ｓは、障害ｓｊから他の障害ｓｉが派生する障害の推移するモデルを示している。具体的には、障害ｓｊの状態から障害ｓｉの状態へ遷移する確率（状態遷移確率）を行列要素Ａ［ｓｉ，ｓｊ］とする遷移行列である。ただし、初期設定（初期モデル）では、全ての行列要素（発生確率）は、１／｜Ｓ｜で一定としている。一方、初期イベント派生モデルＡＳ→Ｅは、障害ｓｊからイベントｅｉが派生するイベントの推移するモデルを示している。具体的には、障害ｓｊの状態でイベントｅｉが出力される確率（出力確率）を行列要素Ａ［ｅｉ，ｓｊ］とする遷移行列である。ただし、初期設定（初期モデル）では、基本モデル定義１３０で定義されたｆＥ→Ｓについて、ｄｏｍ（ｈＥ→Ｓ）∋ｅｉならば（何らかの障害ｓｊでイベントｅｉが起きる場合）、その行列要素Ａ［ｅｉ，ｓｊ］は上記式の値を有するが、他の場合には行列要素Ａ［ｅｉ，ｓｊ］は０であるとしている。ただし、ｄｏｍ（ｈＥ→Ｓ）は関数ｈＥ→Ｓの定義域である。
【００２８】
構成データベース（ＤＢ）３５０は、管理対象装置２６０内の複数の装置（障害発生装置となり得る）の各々と、その種別との対応関係（インスタンス定義）を格納している。すなわち、装置（障害発生装置）の集合Ｍと、装置の種別の集合Ｃと、両者の対応関係を示す関数ｇＭ→Ｃ：Ｍ→Ｃとを格納している。構成ＤＢ読み取り部３６０は、構成ＤＢ３５０の情報を取得し、障害原因推定システム１２０内のインスタンス定義ＤＢ２２０に書き込む。インスタンス定義ＤＢ２２０の具体例については、後述される（図２８）。
【００２９】
イベント列パーザ３００は、イベントモニタ２７０が取得した、発生時刻順に並んだ複数のイベントとしてのイベント列（ｅ（ｔ），ｔ＝０，…，Ｔ）を取得する。イベント列には、イベントｅ（ｔ）（∈Ｅ）と、そのイベントｅ（ｔ）が発生した発生装置ｍ（ｔ）（∈Ｍ）とが含まれている。イベント列は、例えば管理対象装置２６０を試運転中に取得した学習用のイベント列と、管理対象装置２６０を実際に監視中にイベントモニタ２７０が取得するイベント列とを含む。イベント列パーザ３００は、取得したイベント列を分割し、イベント列ＤＢ３１０に格納する。すなわち、イベント列ＤＢ３１０は、所定の分割方法で分割された複数のイベント列を格納している。分割方法は、例えば、イベントが一定時間Ｔ発生しないとき、その時点でイベント列を分割する方法である。分割されたイベント列又はその範囲をイベントリージョンとも言う。詳細は後述される（図１８）。
【００３０】
拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部１９０は、イベント列ＤＢ３１０のイベント列（ｅ（ｔ），ｔ＝０，…，Ｔ）を入力とし、インスタンス定義ＤＢ２２０、障害発生箇所種別定義ＤＢ３７０、初期障害派生モデル格納領域１７０、及び初期イベント派生モデル格納領域１８０を参照して、本発明に係る拡張Ｂａｕｍ−Ｗｅｌｃｈアルゴリズムを適用して、障害派生モデルＡＳ→Ｓ及びイベント派生モデルＡＳ→Ｅを計算する。計算方法については後述される。計算された、障害派生モデルＡＳ→Ｓ及びイベント派生モデルＡＳ→Ｅを、それぞれ障害派生モデル格納領域２００、イベント派生モデル格納領域２１０に格納する。
【００３１】
ここで、障害派生モデルＡＳ→Ｓは、複数の装置の種別とそれら複数の装置の種別での障害との組み合わせに関する障害推移モデルを示す。すなわち、ある装置の種別において発生する障害（装置の種別、障害）の状態から、他の装置の種別において発生する他の障害（他の装置の種別、他の障害）の状態へ遷移する確率（状態遷移確率）を示している。また、イベント派生モデルＡＳ→Ｅは、複数の装置の種別とそれら複数の装置の種別でのイベントとの組み合わせに関するイベント推移モデルを示す。すなわち、ある装置の種別において発生する障害（装置の種別、障害）の状態から、その装置の種別において発生するイベント（その装置の種別、イベント）が出力される確率（出力確率）を示している。ただし、上記説明において、他の障害、他の装置の種別は、同じ障害、同じ装置の種別であってもよい。拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部１９０の詳細は後述される。
【００３２】
インスタンス派生確率計算部２３０は、イベント列ＤＢ３１０のイベント列（ｅ（ｔ），ｔ＝０，…，Ｔ）を入力とし、本発明に係る前向きアルゴリズムを適用して、インスタンス派生モデルＡＭ→Ｍを算出する。算出されたインスタンス派生モデルＡＭ→Ｍを、インスタンス派生モデル格納領域２５０に格納する。
ここで、インスタンス派生モデルＡＭ→Ｍは、イベントの発生装置に関する推移関係を示す。すなわち、ある時刻にある装置でイベントが発生した状態から、次の時刻で他の装置で何らかのイベントが発生する状態へ遷移する確率（状態遷移確率）を示す、イベント発生装置の推移を示すモデルを示している。ただし、上記説明において、他の装置は、同じ装置であってもよい。
【００３３】
拡張Ｖｉｔｅｒｂｉ計算部３２０は、イベント列ＤＢ３１０のイベント列（ｅ（ｔ），ｔ＝０，…，Ｔ）を入力とし、インスタンス定義ＤＢ２２０、障害発生箇所種別定義ＤＢ３７０、障害派生モデル格納領域２００、イベント派生モデル格納領域２１０、インスタンス派生モデル格納領域２５０を参照して、本発明に係る拡張Ｖｉｔｅｒｂｉアルゴリズムを適用して、障害の推移列（ｓ（ｔ），（ｔ＝０，…，Ｔ））と、装置ｍ（ｔ）で障害ｓ（ｔ）が発生した確率ｖｓ（ｔ），ｍ（ｔ）（ｔ）を時刻ｔごとに算出する。そして、算出結果を原因推定結果ＤＢ３３０に格納する。その障害の推移列（又は派生列）は、状態遷移列と見ることができる。拡張Ｖｉｔｅｒｂｉ計算部３２０は、この障害の推移列（又は派生列）の開始状態を根源的な原因と推定する。原因推定結果ＤＢ３３０は、推定された障害の派生列（ｓ（ｔ），（ｔ＝０，…，Ｔ））と、イベント列（ｅ（ｔ），（ｔ＝０，…，Ｔ））と、その発生確率（ｖｓ（ｔ），ｍ（ｔ）（ｔ），（ｔ＝０，…，Ｔ））とを関連付けて格納する。原因推定結果ＤＢ３３０の具体例は、後述される（図２４、図２５）。また、拡張Ｖｉｔｅｒｂｉ計算部３２０の詳細は後述される。
【００３４】
フィルタリングモジュール３３５は、原因推定結果ＤＢ３３０の結果を読み込み、結果表示部３４０に表示する。また、フィルタリングモジュール３３５は、推定された障害の派生列（ｓ（ｔ），（ｔ＝０，…，Ｔ））のうちで確率的に低い推移（状態遷移）、例えば、ある閾値Ｐ０より低いｖｓ（ｔ’），ｍ（ｔ’）（ｔ’）（＜Ｐ０）なるｔ’が存在した場合、この障害ｓ（ｔ’）からｓ（ｔ’＋１）への推移を誤差とする。そして、派生列（ｓ（ｔ），（ｔ＝０，…，Ｔ））をｔ’で分割して、それぞれ他の障害の派生列と考える。すなわち、この例では、ｓ（ｔ）は、ｓ１（ｔ）（ｔ＝０，…，ｔ’）と、ｓ２（ｔ）（ｔ＝ｔ’＋１，…，Ｔ）とに分割される。
また、フィルタリングモジュール３３５は、原因推定結果ＤＢ３３０格納の障害から発生したイベントｅ（ｔ）のうちで確率的に低いイベント発生確率（出力確率）、例えば、ある閾値Ｐ１より低いイベント発生確率のものは誤差として、そのイベントを削除する。
そして、分割された複数の障害の派生列の中から、確率ｖｓ（ｔ），ｍ（ｔ）（ｔ）の総和の高い障害ｓの列を尤もらしい派生列として抽出して、その派生列の開始状態を根源的な原因（障害原因）と推定する。また、削除されずに残されたイベントをその障害原因から派生したイベントとみなす。そして、これら分析の結果を、更に結果表示部３４０に表示する。表示内容の具体例は、後述される（図３１）。
【００３５】
２．拡張Ｖｉｔｅｒｂｉ計算部の構成
次に、本発明の実施の形態に係る拡張Ｖｉｔｅｒｂｉ計算部の構成について説明する。図２は、本発明の実施の形態に係る拡張Ｖｉｔｅｒｂｉ計算部の構成を示すブロック図である。この拡張Ｖｉｔｅｒｂｉ計算部３２０は、読み出し部５０５と、イベント作業領域５１０と、セレクタ５４０と、遷移確率計算部５３０と、発生元確率乗算部５７０と、時刻加算部５８０と、時刻カウンタ５９０と、セレクタ６００とを備える。
【００３６】
イベント作業領域５１０は、分析用のイベントｅ（ｔ）を格納する領域ｅａ、イベントの発生する装置としてのイベント発生装置ｍ（ｔ）の情報を格納する領域Ｍ、イベント発生装置の種別ｃ（ｔ）を格納する領域Ｃ、障害原因ｓ（ｔ）を格納する領域ｓ、及び、確率ｖｓ（ｔ），ｍ（ｔ）（ｔ）を格納する領域ｖｓ，ｍ（ｔ）を、それぞれ時間ｔごとに有している。なお、領域ｅａに格納されたイベントをｅａとも記す。後述されるように、各領域には、拡張Ｖｉｔｅｒｂｉ計算部３２０の動作に伴い情報が格納される。
【００３７】
ここで、ｖ０、ｍ（ｔ）〜ｖ｜Ｓ｜−１、ｍ（ｔ）において、０〜｜Ｓ｜−１は、障害（状態）ｓ０〜ｓ｜Ｓ｜−１を示している。これらの障害（状態）ｓ０〜ｓ｜Ｓ｜−１は、障害派生モデルＡＳ→Ｓで与えられている。また、ｍは、ｓ０〜ｓ｜Ｓ｜−１に対応するイベント発生装置ｍを示している。初期設定として、ｓ（０）＝ｓ０、ｖ０，ｍ（０）＝１、ｖ１，ｍ（０）〜ｖ｜Ｓ｜−１，ｍ（０）＝０、が格納されていてもよい。
【００３８】
読み出し部５０５は、イベント列ＤＢ３１０からイベント列（ｅ（ｔ），ｔ＝０，…，Ｔ）を読み出して、イベント作業領域５１０内の所定の領域に格納する。すなわち、イベント列の情報のうち、分析用イベントを格納する領域ｅａにイベントｅ（ｔ）を、イベント発生装置の情報を格納する領域Ｍにイベント発生装置情報ｍ（ｔ）を、それぞれ時間ｔごとに格納する。また、読み出し部５０５は、インスタンス定義ＤＢ２２０の値を参照し、イベント発生装置ｍ（ｔ）の種別ｃ（ｔ）を求めて、イベント発生装置の種別を格納する領域Ｃに時間ｔごとに格納する。
【００３９】
セレクタ５４０は、イベント作業領域５１０のうち、時刻カウンタ５９０で示された時刻ｔに基づいて、ｅａ（ｔ＋１）、ｍ（ｔ）、ｍ（ｔ＋１）、ｃ（ｔ）、ｃ（ｔ＋１）、ｖｓ、ｍ（ｔ）を抽出し、出力する。時刻カウンタ５９０は、初期設定値として例えばｔ＝０が格納されている。ただし、ｖｓ、ｍ（ｔ）は、時刻ｔにおけるｖ０、ｍ（ｔ）〜ｖ｜Ｓ｜−１、ｍ（ｔ）の｜Ｓ｜個の要素を有する（要素数｜Ｓ｜のベクトル）。ｖｓ、ｍ（ｔ）は、イベント発生装置ｍ（ｔ）の種別ｃ（ｔ）に基づいて、ｖ０，ｍ（ｔ）〜ｖ｜Ｓ｜−１，ｍ（ｔ）の中から、同一の種別ｃ（ｔ）のイベント発生装置ｍ（ｔ）のｖｓ、ｍ（ｔ）のみ、その数値を抽出し、残りの数値を“０”とする。それによりｖ０，ｍ（ｔ）〜ｖ｜Ｓ｜−１，ｍ（ｔ）の中から可能性の極めて高いｖｓ、ｍ（ｔ）のみを実質的に絞り込むことができる。それにより、ｖ０，ｍ（ｔ）〜ｖ｜Ｓ｜−１，ｍ（ｔ）の全ての数値を抽出して、後述の計算をする場合に比較して、その計算量を大幅に削減できる。
【００４０】
遷移確率計算部５３０は、ｅａ（ｔ＋１）、ｍ（ｔ）、ｍ（ｔ＋１）、ｃ（ｔ）、ｃ（ｔ＋１）、ｖｓ、ｍ（ｔ）を入力とし、障害発生個別種別定義ｈＳ→Ｃ：Ｓ→Ｃ、障害派生モデルＡＳ→Ｓ、イベント派生モデルＡＳ→Ｅを参照し、以下の漸化式（３）の計算を行う。
種別ｃ（ｔ）の装置ｍ（ｔ）において時刻ｔで障害ｓが発生したとき、種別ｃ（ｔ＋１）の装置ｍ（ｔ＋１）において時刻（ｔ＋１）で障害ｕへ派生する確率Ｐ（ｕ｜ｓ）を計算する。ただし、障害ｕは、ｕ∈｛ｓ∈Ｓ｜ｈＳ→Ｃ（ｓ）＝ｃ（ｔ＋１）｝である。すなわち、障害ｕは、装置ｍ（ｔ＋１）の種別ｃ（ｔ＋１）に対応関係ｈＳ→Ｃ：Ｓ→Ｃで対応付けられた複数の障害ｓ（装置種別ｃ（ｔ＋１）の取り得る障害）から選択される。
確率Ｐ（ｕ｜ｓ）は、以下の式（３）で、上記複数の障害ｓについて計算される。
Ｐ（ｕ｜ｓ）＝ＡＳ→Ｅ［ｅａ（ｔ＋１），ｕ］・ｍａｘｓ｛ＡＳ→Ｓ［ｕ，ｓ］・ｖｓ、ｍ（ｔ）｝・・・（３）
ただし、ＡＳ→Ｓ［ｕ，ｓ］は、障害派生モデルである（｜Ｓ｜行｜Ｓ｜列の行列）。ｍａｘｓ｛ＡＳ→Ｓ［ｕ，ｓ］・ｖｓ、ｍ（ｔ）｝は、ＡＳ→Ｓ［ｕ，ｓ］・ｖｓ、ｍ（ｔ）の結果（要素数｜Ｓ｜のベクトル）の要素の最大値を求める。ＡＳ→Ｅ［ｅａ（ｔ＋１），ｕ］はイベント派生モデルのｅａ（ｔ＋１）行目である（要素数｜Ｓ｜のベクトル）。これにより、α（定数）×ＡＳ→Ｅ［ｅａ（ｔ＋１），ｕ］の形（要素数｜Ｓ｜のベクトル）で、Ｐ（ｕ｜ｓ）が求まる。
【００４１】
発生元確率乗算部５７０は、Ｐ（ｕ｜ｓ）を入力とし、インスタンス派生モデルＡＭ→Ｍを参照し、種別ｃ（ｔ）の装置ｍ（ｔ）で障害ｓが発生したとき、種別ｃ（ｔ＋１）の装置ｍ（ｔ＋１）で障害ｕへ発生（派生）する確率ｖｕ，ｍ（ｔ＋１）（ｔ＋１）を求める。
ここでは、ある種別ｃの装置ｍの任意の障害ｓから派生したイベントｅが、他の種別ｃ’の他の装置ｍ’の任意の障害ｓ’から派生する可能性のある複数のイベントのうちの任意のイベントｅ’へ派生する確率Ｐ（ｍ（ｔ＋１）｜ｍ（ｔ））（装置ごとの障害遷移確率）と、障害の種類ごとに派生する上記確率Ｐ（ｕ｜ｓ）（障害遷移確率）とは独立と仮定している。それにより、監視の対象となるシステム内の装置が増加しても、装置の種別が増加しない限り、計算量が大幅に増加（二乗に比例して増加）することがなくなる。
この場合、ｖｕ，ｍ（ｔ＋１）（ｔ＋１）は、以下の漸化式（４）となる。
ｖｕ，ｍ（ｔ＋１）（ｔ＋１）＝Ｐ（ｍ（ｔ＋１）∩ｕ｜ｍ（ｔ）∩ｓ）
＝Ｐ（ｍ（ｔ＋１）｜ｍ（ｔ））・Ｐ（ｕ｜ｓ）
＝ＡＭ→Ｍ［ｍ（ｔ＋１），ｍ（ｔ）］・Ｐ（ｕ｜ｓ）・・・（４）
ただし、ＡＭ→Ｍ［ｍ（ｔ＋１），ｍ（ｔ）］は、インスタンス派生モデルにおける行列要素［ｍ（ｔ＋１）、ｍ（ｔ）］（定数）である。これにより、β（定数）×Ｐ（ｕ｜ｓ）の形（要素数｜Ｓ｜のベクトル）で、ｖｕ，ｍ（ｔ＋１）（ｔ＋１）が求まる。
発生元確率乗算部５７０は、ｖｓ，ｍ（ｔ＋１）（ｔ＋１）、及び、その最大値をとる障害ｓを、イベント作業領域５１０におけるセレクタ６００が指す領域５３５（ｖｓ，ｍ（ｔ＋１））、及び、領域５３６（ｓ（ｔ））に格納する。
【００４２】
時刻加算部５８０は、カウンタ５９０の値をひとつ進めるとともに、カウンタがイベント作業領域５１０の時刻の最大値Ｔ以上になったら処理を終了する。そして、原因推定結果ＤＢ３３０に、イベント作業領域５１０におけるｔ＝０〜Ｔについて、ｅａ、ｓ、ｖｓ，ｍ（ｔ）の結果を互いに関連付けて書き込む。この結果、推移列は、ｔ＝０〜Ｔにおいて、各ｔにおいて最大値となるｖｕ，ｍ（ｔ）（ｔ）を並べたものとして得ることができる。
【００４３】
３（１）．拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部の構成
次に、本発明の実施の形態に係る拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部の構成について説明する。図３は、本発明の実施の形態に係る拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部の構成を示すブロック図である。この拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部１９０は、複製部７１０と、複製部７２０と、障害派生モデル作業領域７４０と、イベント派生モデル作業領域７５０と、拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュールの集合７７０と、障害派生モデル作業領域７８０と、割り算計算部７９０と、障害派生モデル作業領域８００と、差分検査・複製部８１０と、イベント派生モデル作業領域８４０と、割り算部８５０と、イベント派生モデル作業領域８６０と、拡張前向き計算部８２０と、拡張後向き計算部８３０とを備える。
【００４４】
複製部７１０は、初期障害派生モデル格納部１７０に格納されている初期障害派生モデルＡＳ→Ｓを、障害派生モデル作業領域７４０にコピーする。複製部７２０は、初期イベント派生モデル格納部２４０に格納されている初期障害派生モデルＡＳ→Ｅを、障害派生モデル作業領域７５０にコピーする。
【００４５】
拡張前向き計算部８２０は、イベント列ＤＢ３１０に格納されたイベント列（ｅ（ｔ），ｔ＝０，…，Ｔ）を入力とし、インスタンス定義ＤＢ２２０、障害発生箇所種別定義ＤＢ３７０、障害派生モデル作業領域７４０、イベント派生モデル作業領域７５０を参照し、イベントｅ（０），…，ｅ（Ｔ）が与えられたとき、時刻ｔにおいて障害の状態がｓになる確率ｆｓ（ｔ）（時刻ｔ＝０（開始時刻、開始状態）から順に計算して得られた時刻ｔでの障害ｓの発生確率）をすべてのｓ∈Ｓ、すべての時間範囲ｔ＝０，…，Ｔについて求める。確率ｆｓ（ｔ）は、ｆｓｉ（ｔ）として、拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュールの集合７７０へ出力される。拡張前向き計算部８２０の詳細は後述される。
【００４６】
拡張後向き計算部８３０は、イベント列ＤＢ３１０に格納されたイベント列（ｅ（ｔ），ｔ＝０，…，Ｔ）を入力とし、インスタンス定義ＤＢ２２０、障害発生箇所種別定義ＤＢ３７０、障害派生モデル作業領域７４０、イベント派生モデル作業領域７５０を参照し、イベントｅ（ｔ），…，ｅ（Ｔ）が与えられたとき、時刻ｔにおいて障害の状態がｓである確率ｂｓ（ｔ）（時間ｔ＝Ｔ（最終時刻、開始状態）から逆順に計算して得られた時間ｔでの障害ｓの発生確率）をすべてのｓ∈Ｓ、すべての時間範囲ｔ＝０，…，Ｔについて求める。確率ｂｓ（ｔ）は、ｂｓｊ（ｔ）として、拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュールの集合７７０へ出力される。拡張後向き計算部８３０の詳細は後述される。
【００４７】
拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュールの集合７７０を構成するＢａｕｍ−ＷｅｌｃｈサブモジュールＢ［ｊ、ｉ］は、拡張前向き計算部８２０に格納されたｆｓｉ（ｔ）をとし、拡張後向き計算部８３０に格納されたｂｓｊ（ｔ）を入力とし、障害派生モデル作業領域７４０と、イベント派生モデル作業領域７５０を参照しつつ、障害ｓｉから障害ｓｊへの推移確率ＡＳ→Ｓ［ｊ，ｉ］を求める。また、対角成分に相当するＢａｕｍ−ＷｅｌｃｈサブモジュールＢ［ｉ、ｉ］は、障害ｓｉからイベントｅｊへの発生確率ＡＳ→Ｅ［ｊ，ｉ］を求める。そして、拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュールの集合７７０は、推移確率ＡＳ→Ｓ［ｊ，ｉ］を障害派生モデルＡＳ→Ｓとして障害派生モデル作業領域７８０に格納し、発生確率ＡＳ→Ｅ［ｊ，ｉ］をイベント派生モデルＡＳ→Ｅとしてイベント派生モデル作業領域８４０に格納する。拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュールの集合７７０の詳細は後述される。
【００４８】
割り算計算部７９０は、障害派生モデル作業領域７８０に格納された障害派生モデルＡＳ→Ｓを入力として、すべてのｓｉ，ｓｊ∈Ｓに対して、以下の式（５）を計算し、障害派生モデルＡＳ→Ｓの正規化を行う。そして、正規化された障害派生モデルＡＳ→Ｓを障害派生モデル作業領域８００に格納する。
【数２】
0005489085.tif 000003
【００４９】
同様に、割り算計算部８５０は、イベント派生モデル作業領域８４０に格納されたイベント派生モデルＡＳ→Ｅを入力として、すべてのｓｊ∈Ｓ、ｅｊ∈Ｅ対して、以下の式（６）を計算し、イベント派生モデルＡＳ→Ｅの正規化を行う。そして、正規化されたイベント派生モデルＡＳ→Ｅをイベント派生モデル作業領域８６０に格納する。
【数３】
0005489085.tif 000004
差分検査・複製部８１０は、障害派生モデル作業領域８００に格納された障害派生モデルＡＳ→Ｓを、障害派生モデル作業領域７４０に格納された障害派生モデルＡＳ→Ｓと比較する。同様に、イベント派生モデル作業領域８６０に格納されたイベント派生モデルＡＳ→Ｅを、イベント派生モデル作業領域７５０に格納されたイベント派生モデルＡＳ→Ｅと比較する。そして、障害派生モデルＡＳ→Ｓ及びイベント派生モデルＡＳ→Ｅの両方について、両者の差が十分に小さい（所定の許容範囲以内）の場合、求める解に収束したと判断し、障害派生モデル作業領域８００に格納された障害派生モデルＡＳ→Ｓとイベント派生モデル作業領域８６０に格納されたイベント派生モデルＡＳ→Ｅを、障害派生モデル格納領域２００とイベント派生モデル格納領域２１０に格納する。障害派生モデルＡＳ→Ｓ及びイベント派生モデルＡＳ→Ｅのうちの少なくとも一方について、両者の差が大きい（所定の許容範囲を超える）の場合、障害派生モデル作業領域８００に格納された障害派生モデルＡＳ→Ｓとイベント派生モデル作業領域８６０に格納されたイベント派生モデルＡＳ→Ｅを、障害派生モデル作業領域７４０及びイベント派生モデル作業領域７５０に格納する。
【００５０】
３（２）．拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュールの集合の構成
次に、本発明の実施の形態に係る拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュールの集合の構成について説明する。図４は、本発明の実施の形態に係る拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュールの集合の構成を示すブロック図である。この、図７を参照すると、拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュールの集合７７０の一つの要素である拡張Ｂａｕｍ−ＷｅｌｃｈサブモジュールＢ［ｉ、ｊ］は、読み出し部９００と、イベント作業領域９１０と、遷移行列掛け算部９２０と、加算部９３０と、作業領域９３５と、平均計算部９４０と、イベント遷移計算部９５０と、作業領域９５５と、平均計算部９６０とを備える。
【００５１】
イベント作業領域９１０は、分析用のイベントｅ（ｔ）を格納する領域ｅａ、イベント発生装置（発生箇所）ｍ（ｔ）を格納する領域Ｍ、イベントｅ（ｔ）が与えられたとき時刻ｔにおいて障害の状態がｓｉになる確率ｆｓｉ（ｔ）を格納する領域ｆｓｉ（ｔ）、イベントｅ（ｔ）が与えられたとき時刻ｔにおいて障害の状態がｓｊである確率ｂｓｊ（ｔ）を格納する領域ｂｓｊ（ｔ）を、それぞれ時間ｔごとに有している。なお、領域ｅａに格納された情報をｅａとも記す。
【００５２】
読み出し部９００は、イベント列ＤＢ３１０からイベント列（ｅ（ｔ），ｔ＝０，…，Ｔ）を読み込み、イベント作業領域９１０内の領域ｅａに、時間ｔごとに格納する。また、拡張前向き計算部８２０から、ｆｓｉ（ｔ）（ｔ＝０，…，Ｔ−１）を読み込み、イベント作業領域９１０内の領域ｆｓｉ（ｔ）に、時間ｔごとに格納する。同様に、拡張後向き計算部８３０から、ｂｓｊ（ｔ＋１）（ｔ＝０，…，Ｔ−１）を読み込み、イベント作業領域９１０内の領域ｂｓｊ（ｔ＋１）に、時間ｔごとに格納する。
【００５３】
遷移行列掛け算部９２０は、イベント作業領域９１０のｆｓｉ（ｔ）及びｂｓｊ（ｔ＋１）を入力として、障害派生モデル作業領域７４０に格納されている障害派生モデルＡＳ→Ｓ［ｊ，ｉ］、及び、イベント派生モデル作業領域７５０に格納されているイベント派生モデルＡＳ→Ｅ［ｅａ（ｔ），ｉ］を参照し、すべてのｔ＝０，…，Ｔ−１に関して、時刻ｔにおいて状態ｓｉでありイベントｅａ（ｔ）を発生し、時刻ｔ＋１において状態ｓｊである確率を、以下の式（７）により求める。
ＡＳ→Ｓ［ｊ，ｉ］（ｔ）
＝ｂｓｊ（ｔ＋１）・ＡＳ→Ｅ［ｅａ（ｔ），ｉ］・ＡＳ→Ｅ［ｅａ（ｔ），ｉ］・ｆｓｉ（ｔ）・・・（７）
【００５４】
加算部９３０は、掛け算部９２５が式（７）で求めたすべてのｔ＝０、…、Ｔ−１におけるＡＳ→Ｓ［ｊ，ｉ］（ｔ）を、以下の式（８）のように時間ですべて足し合わせる。そして、計算結果ＡＳ→Ｓ［ｊ，ｉ］を計算し、格納部９３５に追加格納する。
【数４】
0005489085.tif 000005
【００５５】
格納部９３５に格納されているＡＳ→Ｓ［ｊ，ｉ］は、イベント列（イベントリージョン）ごとに計算される。したがって、格納部９３５には複数のＡＳ→Ｓ［ｊ，ｉ］が存在することになる。
平均計算部９４０は、格納部９３５に格納されているイベント列ごとに計算さた複数のＡＳ→Ｓ［ｊ，ｉ］をすべて足し合わせ、イベント列の数で割って平均化する。そして、平均化されたＡＳ→Ｓ［ｊ，ｉ］を、障害派生モデル作業領域７８０のうち、ＡＳ→Ｓ［ｊ，ｉ］に相当する領域に格納する。
【００５６】
イベント遷移計算部９５０は、拡張Ｂａｕｍ−ＷｅｌｃｈサブモジュールＢ［ｉ、ｉ］の対角成分のみ稼働する。イベント遷移計算部９５０は、Ｂ［ｉ、ｉ］において、ｊ＝＝ｊの場合、イベント作業領域９１０を参照し、障害ｓｉでイベントｅｊが発生する確率を計算する。すなわち、以下の式（９）を計算する。そして、格納部９５５に追加格納する。
【数５】
0005489085.tif 000006
【００５７】
平均計算部９６０は、格納部９５５に格納されているＡＳ→Ｅ［ｊ，ｉ］は、イベント列（イベントリージョン）ごとに計算される。したがって、格納部９５５には複数のＡＳ→Ｅ［ｊ，ｉ］が存在することになる。
平均計算部９６０は、格納部９５５に格納されているイベント列ごとに計算されたＡＳ→Ｅ［ｊ，ｉ］をすべて足し合わせ、イベント列の数で割って平均化する。そして、平均化されたＡＳ→Ｅ［ｊ，ｉ］を、イベント派生モデル作業領域８４０のうち、ＡＳ→Ｅ［ｊ，ｉ］に相当する領域に格納する。
【００５８】
３（３）．拡張前向き計算部の構成
次に、本発明の実施の形態に係る拡張前向き計算部の構成について説明する。図５は、本発明の実施の形態に係る拡張前向き計算部の構成を示すブロック図である。この拡張前向き計算部８２０は、読み出し部１１１０と、イベント作業領域１１２０と、セレクタ１０３０と、遷移確率計算部１０４０と、掛け算部１０６０と、時刻加算部１０７０と、時刻カウンタ１０８０と、セレクタ１０９０とを備える。
【００５９】
イベント作業領域１１２０は、分析用のイベントｅ（ｔ）を格納する領域ｅａ、イベント発生装置の種別ｃ（ｔ）を格納する領域Ｃ、イベントｅ（ｔ）が与えられたとき時刻ｔにおいて障害の状態がｓになる確率ｆｓ（ｔ）を格納する領域ｆｓ（ｔ）を、それぞれ時間ｔごとに有している。なお、領域ｅａに格納された情報をｅａとも記す。後述されるように、各領域には、拡張前向き計算部８２０の動作に伴い情報が格納される。
【００６０】
ここで、ｆｓ（ｔ）であるｆｓ０（ｔ）〜ｆ｜Ｓ｜−１（ｔ）において、ｓ０〜｜Ｓ｜−１は、障害（状態）ｓ０〜ｓ｜Ｓ｜−１を示している。これらの障害（状態）ｓ０〜ｓ｜Ｓ｜−１は、障害派生モデルＡＳ→Ｓで与えられている。初期設定として、例えば、ｆｓ０（０）＝１、ｆｓ１（０）〜ｆ｜Ｓ｜−１（０）＝０、が格納されている。
【００６１】
読み出し部１１１０は、イベント列ＤＢ３１０からイベント列（ｅ（ｔ），ｔ＝０，…，Ｔ）を読み出し、イベント情報ｅ（ｔ）をイベント作業領域１１２０内の領域ｅａに、時間ｔごとに格納する。また、読み出し部１１１０は、インスタンス定義ＤＢ２２０の値を参照し、イベント発生装置ｍ（ｔ）の種別ｃ（ｔ）を求めて、イベント作業領域１１２０内の領域Ｃに、時間ｔごとに格納する。
【００６２】
セレクタ１０３０は、イベント作業領域１１２０のうち、時刻カウンタ１０８０で示された時刻ｔに基づいて、ｆｓ（ｔ）、ｅａ（ｔ＋１）、ｃ（ｔ）、ｃ（ｔ＋１）を抽出し、出力する。時刻カウンタ１０８０は、初期設定値として、例えば、ｔ＝０、が格納されている。ただし、ｆｓ（ｔ）は、時刻ｔにおけるｆｓ０（ｔ）〜ｆ｜Ｓ｜−１（ｔ）（｜Ｓ｜個の要素を有するベクトル）から、イベント発生装置の種別ｃ（ｔ）に基づいて、同一の種別ｃ（ｔ）のｆｓ（ｔ）のみ、その数値を抽出したものである。すなわち、ｓ∈Ｓ｜ｈＳ→Ｃ（ｓ）＝ｃ（ｔ）を満たす障害ｓのｆｓ（ｔ）である。これによりｆｓ９（ｔ）〜ｆ｜Ｓ｜−１（ｔ）の中から可能性の極めて高いｆｓ（ｔ）のみを実質的に絞り込むことができる。それにより、ｆｓ０（ｔ）〜ｆ｜Ｓ｜−１（ｔ）の全ての数値を抽出して、後述の計算をする場合に比較して、その計算量を大幅に削減できる。
【００６３】
遷移確率計算部１０４０は、ｆｓ（ｔ）と、ｅａ（ｔ＋１）と、ｃ（ｔ）と、ｃ（ｔ＋１）とを入力とし、障害発生個別種別定義（障害発生個別種別定義ＤＢ３７０）、障害派生モデルＡＳ→Ｓ（障害派生モデル作業領域７４０）及びイベント派生モデルＡＳ→Ｅ（イベント派生モデル作業領域７５０）を参照し、障害ｕ∈｛ｓ∈Ｓ｜ｈＳ→Ｃ（ｓ）＝ｃ（ｔ＋１）｝ごとに、以下の式（１０）を計算する。ここで、障害ｕは、装置ｍ（ｔ＋１）の種別ｃ（ｔ＋１）に対応関係ｈＳ→Ｃ：Ｓ→Ｃで対応付けられた複数の障害ｓ（装置種別ｃ（ｔ＋１）の取り得る障害）から選択される。そして、式（１０）は上記複数の障害ｓについて計算される。
【数６】
0005489085.tif 000007
この値は、時刻ｔ＝０から順に計算して得られた時間ｔ＋１での障害ｕの発生確率ｆｕ（ｔ＋１）を示している。ただし、ＡＳ→Ｓ［ｕ，ｓ］は、障害派生モデル（｜Ｓ｜行｜Ｓ｜列の行列）であるが、ｕごと（行ごと）に計算するので、行ごとに１行｜Ｓ｜列の行列として取り扱う。ｆｓ（ｔ）は、数値である。Σは、ｆｓ（ｔ）ごとに、ＡＳ→Ｓ［ｕ，ｓ］（この場合、前述のように１行｜Ｓ｜列の行列）の対応するｓ列の値とそのｆｓ（ｔ）を掛けた値を求め、それをすべてのｆｓ（ｔ）について加算したものである。これにより、ｕごとに数値の形で式（１０）の解が求まる。
【００６４】
掛け算部１０６０は、遷移確率計算部１０４０の計算結果を入力とし、イベント派生モデルＡＳ→Ｅ（イベント派生モデル作業領域７５０）を参照し、上記ｕごとに、ｆｕ（ｔ＋１）を以下の漸化式（１１）のように計算する。
【数７】
0005489085.tif 000008
この確率ｆｕ（ｔ＋１）は、イベントｅ（ｔ）が与えられ、時刻ｔ＝０から順に計算して得られた時刻ｔ＋１での障害ｕの発生確率である。ただし、ＡＳ→Ｅ［ｅａ（ｔ＋１），ｕ］は、イベント派生モデルであるが、行と列がｅａ（ｔ＋１）とｕのように指定されているので数値である。これにより、ｕごとに、数値の形で、ｆｕ（ｔ＋１）が求まる。
【００６５】
掛け算部１０６０は、セレクタ１０９０が指すｆｓ（ｔ）の領域に計算結果を格納する。ただし、｛ｓ∈Ｓ｜ｆＳ→Ｃ（ｓ）＝ｃ（ｔ＋１）｝のみに値を格納する。他の領域は“０”とする。
時刻加算部１０７０は、掛け算部１０６０の出力に応答して、時刻カウンタ１０８０の値をひとつ進めるとともに、時刻カウンタ１０８０がイベント作業領域１１２０の時刻の最大値Ｔ以上になったら処理を終了する。
【００６６】
３（４）．拡張後向き計算部の構成
次に、本発明の実施の形態に係る拡張後向き計算部の構成について説明する。図６は、本発明の実施の形態に係る拡張後向き計算部の構成を示すブロック図である。この拡張後向き計算部８３０は、読み出し部１３１０と、イベント作業領域１３２０と、セレクタ１２３０と、遷移確率計算部１２４０と、掛け算部１２６０と、時刻減算部１２７０と、カウンタ１２８０と、セレクタ１２９０とを備える。
【００６７】
イベント作業領域１３２０は、分析用のイベントｅ（ｔ）を格納する領域ｅａ、イベント発生装置の種別ｃ（ｔ）を格納する領域Ｃ、イベントｅ（ｔ）が与えられたとき時刻ｔにおいて障害の状態がｓである確率ｂｓ（ｔ）を格納する領域ｂｓ（ｔ）を、それぞれ時間ｔごとに有している。なお、領域ｅａに格納された情報をｅａとも記す。後述されるように、各領域には、拡張後向き計算部８３０の動作に伴い情報が格納される。
【００６８】
ここで、ｂｓ（ｔ）であるｂｓ０（ｔ）〜ｂ｜Ｓ｜−１（ｔ）において、ｓ０〜｜Ｓ｜−１は、障害（状態）ｓ０〜ｓ｜Ｓ｜−１を示している。これらの障害（状態）ｓ０〜ｓ｜Ｓ｜−１は、障害派生モデルＡＳ→Ｓで与えられている。初期設定として、例えば、ｂｓ０（Ｔ）〜ｂ｜Ｓ｜−１（Ｔ）＝１、が格納されている。
【００６９】
読み出し部１３１０は、イベント列ＤＢ３１０からイベント列（ｅ（ｔ），ｔ＝０，…，Ｔ）を読み出し、イベント情報ｅ（ｔ）をイベント作業領域１３２０内の領域ｅａに、時間ｔごとに格納する。また、読み出し部１３１０は、インスタンス定義ＤＢ２２０の値を参照し、イベント発生装置ｍ（ｔ）の種別ｃ（ｔ）を求めて、イベント作業領域１３２０内の領域Ｃに、時間ｔごとに格納する。
【００７０】
セレクタ１２３０は、イベント作業領域１３２０のうち、時刻カウンタ１２８０で示された時刻ｔに基づいて、ｂｓ（ｔ）と、ｅａ（ｔ−１）と、ｃ（ｔ）、ｃ（ｔ−１）を出力する。時刻カウンタ１０８０は、初期設定値として、例えば、ｔ＝Ｔ、が格納されている。ただし、ｂｓ（ｔ）は、時刻ｔにおけるｂｓ０（ｔ）〜ｂ｜Ｓ｜−１（ｔ）（｜Ｓ｜個の要素を有するベクトル）から、イベント発生装置の種別ｃ（ｔ）に基づいて、同一の種別ｃ（ｔ）のｂｓ（ｔ）のみ、その数値を抽出したものである。すなわち、ｓ∈Ｓ｜ｈＳ→Ｃ（ｓ）＝ｃ（ｔ）を満たす障害ｓのｂｓ（ｔ）である。これによりｂｓ９（ｔ）〜ｂ｜Ｓ｜−１（ｔ）の中から可能性の極めて高いｂｓ（ｔ）のみを実質的に絞り込むことができる。それにより、ｂｓ０（ｔ）〜ｂ｜Ｓ｜−１（ｔ）の全ての数値を抽出して、後述の計算をする場合に比較して、その計算量を大幅に削減できる。
【００７１】
遷移確率計算部１２４０は、ｂｓ（ｔ）と、ｅａ（ｔ−１）と、ｃ（ｔ）、ｃ（ｔ−１）を入力とし、障害発生個別種別定義（障害発生個別種別定義ＤＢ３７０）、障害派生モデルＡＳ→Ｓ（障害派生モデル作業領域７４０）及びイベント派生モデルＡＳ→Ｅ（イベント派生モデル作業領域７５０）を参照し、障害ｕ∈｛ｓ∈Ｓ｜ｈＳ→Ｃ（ｓ）＝ｃ（ｔ−１）｝ごとに、以下の式（１２）を計算する。ここで、障害ｕは、装置ｍ（ｔ−１）の種別ｃ（ｔ−１）に対応関係ｈＳ→Ｃ：Ｓ→Ｃで対応付けられた複数の障害ｓ（装置種別ｃ（ｔ−１）の取り得る障害）から選択される。そして、式（１２）は上記複数の障害ｓについて計算される。
【００７２】
【数８】
0005489085.tif 000009
この値は、時間ｔ＝Ｔ（最終時刻）から逆順に計算して得られた時間ｔ−１での障害ｕの発生確率ｂｕ（ｔ−１）を示している。ただし、ＡＳ→Ｓ［ｓ，ｕ］は、障害派生モデル（｜Ｓ｜行｜Ｓ｜列の行列）であるが、ｕごと（列ごと）に計算するので、列ごとに｜Ｓ｜行１列の行列として取り扱う。ｂｓ（ｔ）は、数値である。Σは、ｂｓ（ｔ）ごとに、ＡＳ→Ｓ［ｓ，ｕ］（この場合、前述のように｜Ｓ｜行１列の行列）の対応するｓ行の値とそのｂｓ（ｔ）を掛けた値を求め、それをすべてのｂｓ（ｔ）について加算したものである。これにより、ｕごとに数値の形で式（１２）の解が求まる。
【００７３】
掛け算部１２６０は、遷移確率計算部１２４０の計算結果を入力とし、イベント派生モデルＡＳ→Ｅ（イベント派生モデル作業領域７５０）を参照し、上記ｕごとに、ｂｕ（ｔ−１）を以下の式（１３）のように計算する。
【００７４】
【数９】
0005489085.tif 000010
この確率ｂｕ（ｔ−１）は、イベントｅ（ｔ）が与えられ、時間ｔ＝Ｔ（最終時刻）から逆順に計算して得られた時間ｔ−１での障害ｕの発生確率である。ただし、ＡＳ→Ｅ［ｅａ（ｔ−１），ｕ］は、イベント派生モデルであるが、行と列がｅａ（ｔ−１）とｕのように指定されているので数値である。これにより、ｕごとに、数値の形で、ｂｕ（ｔ−１）が求まる。
【００７５】
そして、掛け算部１２６０は、セレクタ１２９０が指すｂｓ（ｔ）の領域に計算結果を格納する。ただし、｛ｓ∈Ｓ｜ｆＳ→Ｃ（ｓ）＝ｃ（ｔ−１）｝のみに値を格納する。他の領域は“０”とする。
時刻減算部１２７０は、掛け算部１２６０の出力に応答して、カウンタ１２８０の値をひとつ進めるとともに、カウンタが０以下になったら処理を終了する。
【００７６】
４．インスタンス派生確率計算部の構成
次に、本発明の実施の形態に係るインスタンス派生確率計算部の構成について説明する。図７は、本発明の実施の形態に係るインスタンス派生確率計算部の構成を示すブロック図である。このインスタンス派生確率計算部２３０は、読み出し部１４００イベント列作業領域１４０５と、イベント発生時刻順抽出部１４１０と、イベント作業領域１４２０と、転送部１４３０と、イベント作業領域１４４０と、イベントカウント表１４５０と、計算部１４６０とを備える。
【００７７】
読み出し部１４００は、イベント列ＤＢ３１０に格納されているイベント列（ｅ（ｔ），ｔ＝０，…，Ｔ）を取り出し、イベント列作業領域１４０５に格納する。
【００７８】
イベント発生時刻順抽出部１４１０は、イベント列作業領域１４０５に格納されているイベントｅ（ｔ）のうち指定時間範囲のイベントを発生時刻順に取り出し、イベント作業領域（ｔ−１）１４２０に格納する。
【００７９】
転送部１４３０は、イベント作業領域（ｔ−１）１４２０に格納されているイベントｅ（ｔ）をイベント作業領域（ｔ）１４４０に移動する。
【００８０】
イベント加算部１４４５は、イベント作業領域（ｔ）１４４０とイベント作業領域（ｔ−１）１４２０に格納されたそれぞれのイベントｅｔ（＝ｅ（ｔ））、ｅｔ−１（＝ｅ（ｔ−１））の発生箇所Ｍｔ（＝ｍ（ｔ））、Ｍｔ−１（＝ｍ（ｔ−１））を取得し、イベントカウント表１４５０の該当エントリのカウンタを増やす。各エントリは、時刻ｔ−１で発生箇所Ｍｔ−１にイベントが発生したとき、時刻ｔで発生箇所Ｍｔに何らかのイベントが発生した場合、当該箇所（Ｍｔ、Ｍｔ−１）に１をカウントする。また、その際、イベントカウント表１４５０の、Ｍｔ−１列側の合計欄を必要に応じて計算する。
【００８１】
計算部１４６０は、イベントカウント表１４５０のエントリ（Ｍｉ、Ｍｊ）が示す発生回数をｃ（Ｍｉ、Ｍｊ）とするとき、以下の計算を行う。すなわち、Ｍｉでイベントが発生した状況でのＭｊの発生確率として、ｃ（Ｍｉ、Ｍｊ）を合計Σｉｃ（Ｍｉ、Ｍｊ）（Ｍｔ−１列側の合計欄）で割った値を計算する。そして、計算部１４６０は、インスタンス派生モデル格納領域２５０のインスタンス派生モデルの（Ｍｉ、Ｍｊ）に格納する。
【００８２】
５．障害原因推定システムの動作（障害原因推定方法及び障害原因推定プログラム）
次に、本発明の実施の形態に係る障害原因推定システムの動作（障害原因推定方法及び障害原因推定プログラム）について図８を参照して説明する。図８は、本発明の実施の形態に係る障害原因推定システムの動作（障害原因推定方法及び障害原因推定プログラム）を示すフローチャートである。
【００８３】
まず、ユーザの入力に基づいて、障害原因推定システムはどの機能を起動するか選択する（ステップＡ１１０）。すなわち、障害派生学習の機能を起動するか（ステップＡ１２０）、インスタンス派生学習の機能を起動するか（ステップＡ１５０）、構成ＤＢ読み取り部３６０の機能を起動するか（ステップＡ１３０）、障害派生分析の機能を起動するか（ステップＡ１４０）、又は、イベント読み込みの機能を起動するか（ステップＡ１６０）、を選択する。その後、選択された処理を実行して動作が終了する。必要に応じて、続けて他の機能を選択し、実行してもよい。
【００８４】
ここで、障害派生学習の機能（ステップＡ１２０）は、障害派生モデルＡＳ→Ｓ及びイベント派生モデルＡＳ→Ｅを生成する処理である。インスタンス派生確率計算部２３０の機能（ステップＡ１５０）は、インスタンス派生モデルＡＭ→Ｍを生成する処理である。構成ＤＢ読み取り部３６０の機能（ステップＡ１３０）は、インスタンス定義を生成する処理である。障害派生分析の機能（ステップＡ１４０）は、読み込まれたイベント列の派生関係を分析し、イベントの原因を推定する処理である。イベント読み込みの機能（ステップＡ１６０）は、管理対象装置２６０の発生したイベント列を読み込む処理である。
【００８５】
典型的には、まず、構成ＤＢ読み取り部３６０の機能（ステップＡ１３０）及び障害派生学習の機能（ステップＡ１２０）のいずれか一方を実行し、続いて、インスタンス派生確率計算部２３０の機能（ステップＡ１５０）、イベント読み込みの機能（ステップＡ１６０）、及び障害派生分析の機能（ステップＡ１４０）をこの順番で実行することが考えられる。このような場合、既に終了しているステップや、行う必要のないステップは、実行せずにスキップしてもよい。例えば、構成ＤＢ読み取り部３６０の機能（ステップＡ１３０）が既に済んでいる場合や、インスタンス定義ＤＢ２２０が既に与えられている場合には、ステップＡ１３０をスキップして、障害派生学習の機能（ステップＡ１２０）から実行することができる。又は、更に障害派生モデルＡＳ→Ｓ、イベント派生モデルＡＳ→Ｅ及びインスタンス派生モデルＡＭ→Ｍが既に生成されている場合、イベント読み込みの機能（ステップＡ１６０）から実行することが考えられる。なお、各ステップを実行する順番は、上記例に限定されず、技術的な矛盾が発生しない限り、適宜変更可能である。
【００８６】
６．障害派生学習に関する動作（ステップＡ１２０）
次に、本発明の実施の形態に係る障害原因推定システムの動作のうち障害派生学習に関する動作について、図１及び図９を参照して説明する。図９は、本発明の実施の形態に係る障害原因推定システムの動作のうち障害派生学習に関する動作を示すフローチャートである。
【００８７】
まず、初期モデルパーサ１４０は、基本モデル定義１３０を構文解釈し、その結果を障害定義ＤＢ１５０に格納する（ステップＢ１１０）。次に、初期モデル生成部１６０が、障害定義ＤＢ１５０からデータを読み込み、上記式（１）及び式（２）を用いて初期障害派生モデルＡＳ→Ｓ及び初期イベント派生モデルＡＳ→Ｅを生成する。そして、それぞれ、初期障害派生モデル格納領域１７０、及び初期イベント派生モデル格納領域１８０に格納する（ステップＢ１２０）。
その後、拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部１９０が、初期障害派生モデル格納領域１７０及び初期イベント派生モデル格納領域１８０からそれぞれ初期障害派生モデルＡＳ→Ｓ及び初期イベント派生モデルＡＳ→Ｅを読み込み、インスタンス定義ＤＢ２２０からインスタンス定義を読み込み、障害発生個別種別定義ＤＢから障害発生個別種別定義を読み込み、イベント列ＤＢ３１０から学習用のイベント列を読み込む。そして、本発明に係る拡張Ｂａｕｍ−Ｗｅｌｃｈアルゴリズムを用いて、障害派生モデルＡＳ→Ｓ及びイベント派生モデルＡＳ→Ｅを計算する（ステップＢ１３０）。計算方法については後述される。計算された、障害派生モデルＡＳ→Ｓ及びイベント派生モデルＡＳ→Ｅを、それぞれ障害派生モデル格納領域２００、イベント派生モデル格納領域２１０に格納する（ステップＢ１４０）。上記処理を実行して動作が終了する。
【００８８】
本障害派生学習により、基本モデルから生成した初期障害派生モデルＡＳ→Ｓ、初期イベント派生モデルＳ→Ｅと学習用のイベント列とに、本発明に係る拡張Ｂａｕｍ−Ｗｅｌｃｈアルゴリズムを適用して、障害派生モデルＡＳ→Ｓ及びイベント派生モデルＡＳ→Ｅを生成（推定）することができる。これら拡張障害派生モデルＡＳ→Ｓ及びイベント派生モデルＡＳ→Ｅは、本発明に係る拡張ＨＭＭの一部として、後述される拡張Ｖｉｔｅｒｂｉ計算部３２０での本発明に係る拡張Ｖｉｔｅｒｂｉアルゴリズムに用いられる。
【００８９】
７．インスタンス派生学習に関する動作（ステップＡ１５０）
次に、本発明の実施の形態に係る障害原因推定システムの動作のうちインスタンス派生学習に関する動作について、図１及び図１０を参照して説明する。図１０は、本発明の実施の形態に係る障害原因推定システムの動作のうちインスタンス派生学習に関する動作を示すフローチャートである。
【００９０】
まず、インスタンス派生確率計算部２３０は、本発明に係る前向きアルゴリズムを用いてインスタンス派生モデルＡＭ→Ｍを生成する。具体的には、まず、読み込み部１４００が、イベント列ＤＢ３１０に格納されているイベント列を取り出し、イベント列作業領域１４０５に格納する（ステップＣ１００）。そのとき、読み込み部１４００は、イベント列ＤＢ３１０にまだイベント列があるかチェックする（ステップＣ１０５）。
【００９１】
イベント列ＤＢ３１０にまだイベント列がある場合（ステップＣ１０５：Ｙｅｓ）、以下の処理を行う。
まず、転送部１４３０が、イベント作業領域（ｔ−１）１４２０に格納されているイベントをイベント作業領域（ｔ）１４４０に移動する（ステップＣ１１０）。次に、イベント発生時刻順抽出部１４１０が、イベント列作業領域１４０５に格納されているイベントのうち指定時間範囲のイベントを発生時刻順に取り出す。イベント作業領域（ｔ−１）１４２０に格納する（ステップＣ１２０）。
そのとき、イベント発生時刻順抽出部１４１０が、イベント列作業領域１４０５にまだイベント列があるかチェックする（ステップＣ１３０）。
イベント列作業領域１４０５にまだイベントがある場合（ステップＣ１３０：Ｙｅｓ）、以下の処理を行う。
まず、イベント加算部１４４５が、イベント作業領域（ｔ）１４４０とイベント作業領域（ｔ−１）１４２０のそれぞれの発生箇所（Ｍｔ、Ｍｔ−１）を取得、イベントカウント表１４５０の該当エントリのカウンタを増やす。また、その際、イベントカウント表１４５０の合計欄を必要に応じて計算する（ステップＣ１４０）。
イベント列作業領域１４０５にもうイベントがない場合（ステップＣ１３０：Ｎｏ）、新たなイベント列を得るために、ステップＣ１１０に戻る。
【００９２】
ステップＣ１０５でイベント列ＤＢ３１０にイベント列がなくなった場合（ステップＣ１０５：Ｎｏ）、以下の処理を行う。
計算部１４６０が、イベントカウント表１４５０のエントリ（Ｍｉ、Ｍｊ）で示されている発生回数を合計欄Ｍｊで示す合計値で割った値をＭｉでイベントが発生した状況でのＭｊが発生する発生確率とし、インスタンス派生モデル格納領域２５０のインスタンス派生モデルの（Ｍｉ、Ｍｊ）の欄に格納する（ステップＣ１５０）。上記処理を実行して動作が終了する。
【００９３】
本インスタンス派生学習により、学習用のイベント列に、本発明に係る前向きアルゴリズムを適用して、インスタンス派生モデルＡＭ→Ｍを生成（推定）することができる。このインスタンス派生モデルＡＭ→Ｍは、本発明に係る拡張ＨＭＭの一部として、拡張Ｖｉｔｅｒｂｉ計算部３２０での本発明に係る拡張Ｖｉｔｅｒｂｉアルゴリズムに用いられる。
【００９４】
８．イベント読み込みに関する動作（ステップＡ１６０）
次に、本発明の実施の形態に係る障害原因推定システムの動作のうちイベント読み込みに関する動作について、図１及び図１１を参照して説明する。図１１は、本発明の実施の形態に係る障害原因推定システムの動作のうちイベント読み込みに関する動作を示すフローチャートである。
【００９５】
まず、イベントモニタ２７０が、管理対象装置２６０の発生したイベントを取得し、イベント列パーザ３００に受け渡す（ステップＤ１１０）。イベント列は、例えば管理対象装置２６０を試運転中に取得した学習用のイベント列や、管理対象装置２６０を実際に監視中にイベントモニタ２７０が取得するイベント列である。次に、イベント列パーザ３００は、イベントモニタが取得したイベント列を、後述されるように（図１８）、イベントが一定時間Ｔ発生しない時点で、イベントリージョンと呼ぶイベント列に切り分け、イベント列ＤＢ３１０に格納する（ステップＤ１２０）。上記処理を実行して処理を終了する。
【００９６】
本イベント読み込み動作により、学習用のイベント列を読み込んだ場合には、上記障害派生学習やインスタンス派生学習のための学習用のイベント列を準備することができる。また、監視中のイベント列を読み込んだ場合には、後述される障害派生分析を行うことができる。
【００９７】
９．障害派生分析に関する動作（ステップＡ１４０）
次に、本発明の実施の形態に係る障害原因推定システムの動作のうち障害派生分析に関する動作について、図１及び図１２を参照して説明する。図１２は、本発明の実施の形態に係る障害原因推定システムの動作のうち障害派生分析に関する動作を示すフローチャートである。
【００９８】
まず、拡張Ｖｉｔｅｒｂｉ計算部３２０は、障害派生モデル格納領域２００の障害派生モデルＡＳ→Ｓ、イベント派生モデル格納領域２１０のイベント派生モデルＡＳ→Ｅ、インスタンス派生モデル格納領域２５０のインスタンス派生モデルＡＭ→Ｍを読み込み、インスタンス定義ＤＢ２２０からインスタンス定義を読み込み、障害発生個別種別定義ＤＢから障害発生個別種別定義を読み込み、イベント列ＤＢ３１０から指定された時間範囲のイベント列ｅ（ｔ）を読み込み、派生関係を分析し、障害の推移列（ｓ（ｔ），（ｔ＝０，…，Ｔ））と、装置ｍ（ｔ）で障害ｓ（ｔ）が発生した確率ｖｓ（ｔ），ｍ（ｔ）（ｔ）を時刻ｔごとに算出する。原因推定結果ＤＢ３３０に格納する（ステップＥ１１０）。
つぎに、フィルタリングモジュール３３５は、原因推定結果ＤＢ３３０に格納された分析結果を、結果表示３４０に表示する。また、所定の条件（例示：所定の確率よりも低い状態遷移の箇所で分割）で派生列（ｓ（ｔ），（ｔ＝０，…，Ｔ））を分割する。そして、分割された複数の障害の派生列の中から、確率ｖｓ（ｔ），ｍ（ｔ）（ｔ）の総和の高い障害ｓの列を尤もらしい派生列として抽出して、その派生列の開始状態を根源的な原因（障害原因）と推定する。そして、これら分析の結果を、更に結果表示部３４０に表示する（ステップＥ１２０）。これら計算方法については後述される。上記処理を実行して動作が終了する。
【００９９】
本障害派生分析により、障害派生モデルＡＳ→Ｓ、イベント派生モデルＡＳ→Ｅ、インスタンス派生モデルＡＭ→Ｍと観測されたイベント列（出力系列）とに、本発明に係る拡張Ｖｉｔｅｒｂｉアルゴリズムを適用して、障害系列（状態系列）の最尤パスを推定する。それにより、管理対象装置２６０における障害原因を推定することが可能となる。
【０１００】
１０．拡張Ｖｉｔｅｒｂｉ計算部に関する動作（障害派生分析に関する詳細）
次に、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張Ｖｉｔｅｒｂｉ計算部に関する動作について図２及び図１３を参照して説明する。図１３は、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張Ｖｉｔｅｒｂｉ計算部に関する動作を示すフローチャートである。
【０１０１】
まず、初期設定として、イベント作業領域５１０のｓ（０）＝ｓ０、ｖｓ０、ｍ（０）＝１、ｖ１、ｍ（０）〜ｖ｜Ｓ｜−１、ｍ（０）＝０と設定する（ステップＦ１１０）。ただし、ｓ０は正常状態を表す。また、ｓｉ！＝ｓ０である。
つぎに、読み出し部５０５は、インスタンス定義２２０を参照しつつ、イベント列ＤＢ３１０の指定された発生時間範囲のイベントの集合を、イベント作業領域５１０のイベント（ｅａ）、発生箇所（Ｍ）、そして、発生箇所の装置種別（Ｃ）に、時間ｔごとに格納する（ステップＦ１２０）。
つぎに、セレクタ５４０は、イベント作業領域５１０のうち、時刻カウンタ５９０の値ｔで指定されたイベント領域を選択し、遷移確率計算部５３０へ出力する（ステップＦ１３０）。具体的には、時刻ｔに基づいて、ｖｓ、ｍ（ｔ）、ｅａ（ｔ＋１）、ｍ（ｔ）、ｍ（ｔ＋１）、ｃ（ｔ）、ｃ（ｔ＋１）の値を出力する。図２の例では、時刻ｔ＝２で指定された領域５２０及び領域５２５、すなわち、ｅａ（３）＝ｅ５、ｍ（２）＝ｍ２、ｍ（３）＝ｍ３、ｃ（２）＝ｃ３、ｃ（３）＝ｃ５、ｖｓ、ｍ（２）＝ｖ｜Ｓ｜−２，ｍ（２）＝０．４、及びｖ｜Ｓ｜−１，ｍ（２）＝０．８の値を出力する。ただし、ｖｓ、ｍ（２）は、ｅａ（２）＝ｅ３の発生装置ｍ（２）＝ｍ２の種別ｃ（２）＝ｃ３により、ｖ０，ｍ（２）〜ｖ｜Ｓ｜−１，ｍ（２）の中から、可能性のあるｖｓ、ｍ（２）としてｖ｜Ｓ｜−２，ｍ（２）及びｖ｜Ｓ｜−１，ｍ（２）を抽出して、出力している。他のｖｓ、ｍ（２）は“０”とする。それにより、ｖ０，ｍ（ｔ）〜Ｖ｜Ｓ｜−１，ｍ（ｔ）の全ての数値を抽出して、後述の計算をする場合に比較して、その計算量を大幅に削減できる。
【０１０２】
時刻カウンタ５９０の値ｔがイベント作業領域５１０の最大時刻Ｔより小さい場合（ステップＦ１４０：Ｙｅｓ）、以下の処理を実行する。
遷移確率計算部５３０は、障害発生個別種別定義と、障害派生モデルＡＳ→Ｓと、イベント派生モデルＡＳ→Ｅとを参照して、ｅａ（ｔ＋１）、ｍ（ｔ）、ｍ（ｔ＋１）、ｃ（ｔ）、ｃ（ｔ＋１）、ｖｓ、ｍ（ｔ）を入力とし、イベントの発生箇所の装置種別に応じた隠れ状態のみに関して、時刻（ｔ＋１）で障害ｕが発生する確率Ｐ（ｕ｜ｓ）を上記（３）式により計算する（ステップＦ１５０）。図２の例では、ｕ＝ｓ（３）、ｓ＝ｓ（２）、ｖｓ、ｍ（２）＝（０、０、・・・、０．４、０．８）である。式（３）は、
Ｐ（ｓ（３）｜ｓ（２））
＝ＡＳ→Ｅ［ｅａ（３），ｓ（３）］ｍａｘｓ｛ＡＳ→Ｓ［ｓ（３），ｓ（２）］・ｖｓ、ｍ（２）｝
＝ＡＳ→Ｅ［ｅ５，ｓ（３）］ｍａｘｓ｛ＡＳ→Ｓ［ｓ（３），ｓ（２）］・（０、０、・・・、０．４、０．８）｝
＝α×ＡＳ→Ｅ［ｅ５，ｓ（３）］
となる。ただし、ｓ（３）、ｓ（２）は未定とし、ここではｓ０〜ｓ｜Ｓ｜−１である。
これにより、α（定数）×ＡＳ→Ｅ［ｅａ（ｔ＋１），ｕ］＝α×ＡＳ→Ｅ［ｅ５，ｓ（３）］の形（要素数｜Ｓ｜のベクトル）で、Ｐ（ｕ｜ｓ）が求まる。
つぎに、発生元確率乗算部５７０は、インスタンス生成モデルＡＭ→Ｍを参照して、Ｐ（ｕ｜ｓ）を入力とし、装置ｍ（ｔ＋１）で障害ｕが発生する確率ｖｕ，ｍ（ｔ＋１）（ｔ＋１）を上記式（４）により計算する。ただし、装置ごとの障害遷移確率と、障害種類ごとの障害遷移確率は独立とする。図２の例では、ｍ（２）＝ｍ２、ｍ（３）＝ｍ３である。式（４）は、
ｖｕ，ｍ（３）（３）
＝ＡＭ→Ｍ［ｍ（３），ｍ（２）］・Ｐ（ｓ（３）｜ｓ（２））
＝ＡＭ→Ｍ［ｍ３，ｍ２］・α×ＡＳ→Ｅ［ｅ５，ｓ（３）］
＝β×α×ＡＳ→Ｅ［ｅ５，ｓ（３）］
となる。ただし、ｓ（３）は上記のとおりである。これにより、β（定数）×Ｐ（ｕ｜ｓ）の形（要素数｜Ｓ｜のベクトル）で、ｖｕ，ｍ（３）（３）が求まる。
そして、発生元確率乗算部５７０は、ｖｓ，ｍ（ｔ＋１）（ｔ＋１）、及び、その最大値をとる障害ｓ（ｔ）を検出する。そして、イベント作業領域５１０のうち、セレクタ６００が指す領域にそれぞれの値を格納する（ステップＦ１６０）。ただし、ｕは、ｃ（ｔ＋１）で示されている装置種別が取りうる障害のみでよい。図２の例では、イベント作業領域５１０のうち、セレクタ６００が指す領域５３５に（ｖｓ，ｍ（３）（３））を、領域５３６にｖｓ，ｍ（３）（３）のうちの最大値をとるｓをｓ（２）としてそれぞれ格納する。
つぎに、時刻加算部５８０は、時刻カウンタ５９０を１増加させる（ステップＦ１７０）。そして、ステップＦ１３０に戻る。このように、漸化式（３）、（４）を順次と解くことで、ｔ＝０〜Ｔについて、ｅａ、ｓ、ｖｓ，ｍ（ｔ）を得ることができる。
【０１０３】
時刻カウンタ５９０の値ｔがイベント作業領域５１０の最大時刻Ｔ以上の場合（ステップＦ１４０：Ｎｏ）、イベント作業領域５１０におけるｔ＝０〜Ｔについて、ｅａ、ｓ、ｖｓ，ｍ（ｔ）の結果を分析結果として、互いに関連付けて、原因推定結果ＤＢ３３０に格納する（ステップＦ１８０）。上記処理を実行して動作が終了する。
【０１０４】
本拡張Ｖｉｔｅｒｂｉアルゴリズムに関する動作により、障害ｓの派生列（ｓ（ｔ），（ｔ＝０，…，Ｔ）；状態系列）、及び、各時刻ｔにおける各障害ｓ（ｔ）の発生確率（ｖｓ（ｔ），ｍ（ｔ）（ｔ），（ｔ＝０，…，Ｔ）；状態遷移確率）を推定することができる。それにより、管理対象装置２６０における障害原因を推定することが可能となる。
【０１０５】
１１（１）．拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部に関する動作（障害派生学習に関する）
次に、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部に関する動作について図３、図１４Ａ及び図１４Ｂを参照して説明する。図１４Ａ及び図１４Ｂは、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部に関する動作を示すフローチャートである。
【０１０６】
まず、初期設定として、複製部７１０、複製部７２０は、それぞれ、初期障害派生モデル作業領域１７０、初期イベント派生モデル格納領域１８０を障害派生モデル作業領域７４０、イベント派生モデル作業７５０にコピーする（ステップＧ１１０）。
次に、拡張前向き計算部８２０は、イベント列ＤＢ３１０の時刻ｔ＝０〜ｔ−１のイベント列が与えられたとき、インスタンス定義ＤＢ２２０、障害発生箇所種別定義ＤＢ３７０、障害派生モデル作業領域７４０、イベント派生モデル作業領域７５０を参照し、障害ｓの発生確率ｆｓ、ｍ（ｔ）を計算する。そして、計算された障害ｓの発生確率ｆｓ、ｍ（ｔ）を、内部のイベント作業領域１１２０に格納する（ステップＧ１２０）。
次に、拡張後向き計算部８３０は、イベント列ＤＢ３１０の時刻ｔ＝Ｔ〜ｔ−１のイベント列が与えられたとき、インスタンス定義ＤＢ２２０、障害発生箇所種別定義ＤＢ３７０、障害派生モデル作業領域７４０、イベント派生モデル作業領域７５０を参照し、障害ｓの発生確率ｂｓ、ｍ（ｔ）を計算する。そして、計算された発生確率ｂｓ、ｍ（ｔ）を、内部のイベント作業領域１３２０に格納する（ステップＧ１３０）。
次に、拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュール７７０は、拡張前向き計算部８２０に格納されたｆｓ（ｔ）と、拡張後向き計算部８３０に格納されたｂｓ（ｔ）を入力とし、障害派生モデル作業領域７４０、イベント派生モデル作業領域７５０、イベントＤＢ３１０を参照しつつ、上記の式（８）及び式（９）により障害派生モデルＡＳ→Ｓ［ｊ，ｉ］及びイベント派生モデルＡＳ→Ｅ［ｊ，ｉ］を計算する（ステップＧ１４０）。そして、それぞれ障害派生モデル作業領域７８０及びイベント派生モデル作業領域８４０に格納する。
【０１０７】
次に、障害派生モデル作業領域７８０の障害派生モデルＡＳ→Ｓ［ｊ，ｉ］をもとに、割り算計算部７９０は、上記式（５）により障害派生モデルＡＳ→Ｓを正規化して、障害派生モデル作業領域８００に格納する（ステップＧ１５０）。
また、並行して、イベント派生モデル作業領域８４０のイベント派生モデルＡＳ→Ｅ［ｊ，ｉ］をもとに、割り算計算部８５０は、上記式（６）によりイベント派生モデルＡＳ→Ｅを正規化して、イベント派生モデル作業領域８６０に格納する（ステップＧ１６０）。
【０１０８】
次に、差分検査・複製部８１０は、障害派生モデル作業領域８００に格納された障害派生モデルＡＳ→Ｓ、を、障害派生モデル作業領域７４０に格納された障害派生モデルＡＳ→Ｓと比較し、それらの差が少なく収束したか調べる。同様に、イベント派生モデル作業領域８６０に格納されたイベント派生モデルＡＳ→Ｅを、イベント派生モデル作業領域７５０に格納されたイベント派生モデルＡＳ→Ｅと比較し、それらの差が少なく収束したか調べる（ステップＧ１７０）。
障害派生モデルＡＳ→Ｓ及びイベント派生モデルＡＳ→Ｅのうちの少なくとも一方について、両者の差が大きい（所定の許容範囲を超える）場合（ステップＧ１８０：Ｎｏ）、障害派生モデル作業領域８００に格納された障害派生モデルＡＳ→Ｓとイベント派生モデル作業領域８６０に格納されたイベント派生モデルＡＳ→Ｅを、障害派生モデル作業領域７４０及びイベント派生モデル作業領域７５０に複製する（ステップＧ１９０）。そして、ステップＧ１２０に戻る。
【０１０９】
障害派生モデルＡＳ→Ｓ及びイベント派生モデルＡＳ→Ｅの両方について、両者の差が十分に小さい（所定の許容範囲以内）の場合（ステップＧ１８０：Ｙｅｓ）、求める解に収束したと判断し、障害派生モデル作業領域８００に格納された障害派生モデルＡＳ→Ｓとイベント派生モデル作業領域８６０に格納されたイベント派生モデルＡＳ→Ｅを、障害派生モデル格納領域２００とイベント派生モデル格納領域２１０に複製する（ステップＧ２００）。上記処理を実行して動作が終了する。
【０１１０】
本拡張Ｂａｕｍ−Ｗｅｌｃｈアルゴリズムに関する動作により、上記拡張Ｖｉｔｅｒｂｉアルゴリズムに用いる障害派生モデルＡＳ→Ｓ及びイベント派生モデルＡＳ→Ｅを生成することができる。
【０１１１】
１１（２）．拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュールに関する動作
次に、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張Ｂａｕｍ−ＷｅｌｃｈサブモジュールＢ［ｊ、ｉ］に関する動作について図４、図１５Ａ〜図１５Ｂを参照して説明する。図１５Ａ〜図１５Ｂは、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張Ｂａｕｍ−ＷｅｌｃｈサブモジュールＢ［ｊ、ｉ］に関する動作を示すフローチャートである。
【０１１２】
まず、読み出し部９００は、拡張前向き計算部８２０に格納された計算結果を、前向き格納結果ｆｓｉ（ｔ）に格納する（ステップＨ１１０）。
次に、読み出し部９００は、拡張後向き計算部８３０に格納された計算結果を、後向き格納結果ｂｓｊ（ｔ）に格納する（ステップＨ１２０）。
次に、読み出し部９００は、イベント列ＤＢ３１０の指定された発生時間範囲のイベントの集合を、イベント作業領域９１０のイベント（ｅａ）、発生箇所（Ｍ）に格納する（ステップＨ１３０）。
次に、読み出し部９００は、ステップＨ１３０で格納する際、まだイベント列ＤＢ３１０にイベント列があるか確認する（ステップＨ１３５）。
【０１１３】
イベント列がある場合（ステップＨ１３５：Ｙｅｓ）、以下の処理を行う。
遷移行列掛け算部９２０は、イベント作業領域９１０のｆｓｉ（ｔ）及びｂｓｊ（ｔ＋１）をイベント作業領域９１０から抽出する（ステップＨ１４０）。そして、ｆｓｉ（ｔ）及びｂｓｊ（ｔ＋１）を入力として、障害派生モデル作業領域７４０に格納されている障害派生モデルＡＳ→Ｓ［ｊ，ｉ］、及び、イベント派生モデル作業領域７５０に格納されているイベント派生モデルＡＳ→Ｅ［ｅａ（ｔ），ｉ］を参照し、全ての時刻ｔ＝０，…，Ｔ−１に関して、時刻ｔごとの障害ｓｉからｓｊへの派生確率ＡＳ→Ｓ［ｊ、ｉ］（ｔ）を上記式（７）により計算する（ステップＨ１５０）。
次に、加算部９３０は、遷移行列掛け算部９２０が求めたＡＳ→Ｓ［ｊ、ｉ］（ｔ）をｔ＝０、…、Ｔ−１で、上記の式（８）により全て足し合わせて格納部９３５に格納する（ステップＨ１６０）。
また、ステップＨ１５０やＨ１６０と並行して、以下のステップＨ１７５、Ｈ１８０を実行する。すなわち、まず、Ｂ［ｊ、ｉ］がｉ＝＝ｊか（Ｂ［ｉ、ｉ］の対角成分か）否かを調べる（ステップＨ１７５）。
ｉ！＝ｊ（対角成分でない）の場合（ステップＨ１７５：Ｎｏ）、ステップＨ１８０をスキップする。
ｉ＝＝ｊ（対角成分である）の場合（ステップＨ１７５：Ｙｅｓ）、ステップＨ１８０を実行する。ｉ＝＝ｊの場合、イベント遷移計算部９５０は、イベント作業領域９１０を参照し、障害ｓｉでイベントｅｊが発生する確率ＡＳ→Ｅ［ｊ、ｉ］を上記式（９）により計算し、格納部９５５に格納する（ステップＨ１８０）。そして、ステップＨ１６０、Ｈ１７５又はＨ１８０の終了後、ステップＨ１３０へ戻る。
【０１１４】
読み出し部９００は、ステップＨ１３０で格納する際、イベント列ＤＢ３１０にイベント列がすでにない場合（ステップＨ１３５：Ｎｏ）、まず、平均計算部９４０は、格納部９３５に格納されているイベント列ごとに計算したＡＳ→Ｓ［ｉ、ｊ］をすべて足し、イベント列の数で割って平均化し、障害派生モデル作業領域７８０に格納する（ステップＨ１７０）。
また、ステップＨ１７０と並行して、以下のステップＨ１８５を実行する。すなわち、まず、Ｂ［ｊ、ｉ］がｉ＝＝ｊか（Ｂ［ｉ、ｉ］の対角成分か）を調べる（ステップＨ１８５）。
ｉ！＝ｊ（対角成分でない）の場合（ステップＨ１８５：Ｎｏ）、ステップＨ１９０をスキップする。
ｉ＝＝ｊ（対角成分である）の場合（ステップＨ１８５：Ｙｅｓ）、ステップＨ１９０を実行する。すなわち、ｉ＝＝ｊの場合、平均計算部９６０は、格納部９５５に格納されているイベント列ごとに計算したＡＳ→Ｅ［ｊ、ｉ］をすべて足し、イベント列の数で割って平均化し、イベント派生モデル作業領域８４０に格納する（ステップＨ１９０）。上記処理を実行して動作が終了する。
【０１１５】
１１（３）．拡張前向き計算部に関する動作
次に、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張前向き計算部に関する動作について図５及び図１６を参照して説明する。図１６は、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張前向き計算部に関する動作を示すフローチャートである。
【０１１６】
まず、初期設定として、イベント作業領域１１２０にｆｓ０（０）＝１、ｆｓ１（０）〜ｆ｜Ｓ｜−１（０）＝０と代入する（ステップＩ１１０）。
次に、読み出し部１１１０は、イベント列ＤＢ３１０の指定された発生時間範囲のイベントの集合を読み出す。そして、読み出し部１１１０は、インスタンス定義ＤＢ２２０を参照しつつ、読み出したイベントの集合を、イベント作業領域１１２０のイベント（ｅａ）、そして、発生箇所（Ｍ）から求めた発生箇所の装置種別（Ｃ）に、時間（ｔ）ごとに格納する（ステップＩ１２０）。
次に、時刻カウンタ１０８０が、イベント列の最大時間Ｔより小さいかチェックする（ステップＩ１３０）。
【０１１７】
もし、時刻カウンタ１０８０が、イベント列の最大時間Ｔより小さい場合（ステップＩ１３０：Ｙｅｓ）、以下の処理を行う。
まず、セレクタ１０３０は、イベント作業領域１１１０のうち、時刻カウンタ１０８０の値で指されたイベント領域を選択し、遷移確率計算部１０４０に渡す（ステップＩ１４０）。具体的には、ｅａ（ｔ＋１）、ｃ（ｔ）、ｃ（ｔ＋１）、ｆｓ（ｔ）（ただし、ｆｓ０（ｔ）〜ｆ｜Ｓ｜−１（ｔ）のうちｃ（ｔ）と同一種別で発生する障害ｓに対応するもの）を選択して、遷移確率計算部１０４０へ出力する。図５の例では、時刻ｔ＝２で指定されたｅａ（３）＝ｅ３、ｃ（２）＝ｃ３、ｃ（３）＝ｃ３、ｆｓ（２）＝ｆ｜Ｓ｜−２（２）＝ｓ６及びｆ｜Ｓ｜−１（２）＝ｓ６の値を出力する。ただし、ｆｓ（２）は、ｅａ（２）＝ｅ３の発生装置の種別ｃ（２）＝ｃ３（領域１０２０）により、ｆｓ０（２）〜ｆ｜Ｓ｜−１（２）の中から、可能性のあるｆｓ（２）としてｆ｜Ｓ｜−２（２）及びｆ｜Ｓ｜−１（２）（領域１０１０）を抽出して、出力している。それにより、ｆｓ０（ｔ）〜ｆ｜Ｓ｜−１（ｔ）の全ての数値を抽出して、後述の計算をする場合に比較して、その計算量を大幅に削減できる。
【０１１８】
次に、遷移確率計算部１０４０は、障害発生個別種別定義（障害発生個別種別定義ＤＢ３７０）、障害派生モデルＡＳ→Ｓ（障害派生モデル作業領域７４０）、イベント派生モデルＡＳ→Ｅ（イベント派生モデル作業領域７５０）を参照し、イベントの発生箇所の装置種別に応じた隠れ状態ｕのみごとにΣＡＳ→Ｓ［ｕ、ｓ］ｆｓ（ｔ）を求める（ステップＩ１５０）。具体的には、障害ｕ∈｛ｓ∈Ｓ｜ｈＳ→Ｃ（ｓ）＝ｃ（ｔ＋１）｝ごとに、既述の式（１０）を計算する。図５の例では、ある障害ｕについて、ｃ（２）＝ｃ３の場合、それに関連する障害が｜Ｓ｜−２、｜Ｓ｜−１とすると、ｆ｜Ｓ｜−２（２）＝ｓ６、ｆ｜Ｓ｜−１（２）＝ｓ６なので、式（１０）は、
ΣｓＡＳ→Ｓ［ｕ、ｓ］ｆｓ（２）
＝［ｕ、｜Ｓ｜−２］×ｆ｜Ｓ｜−２（２）＋［ｕ、｜Ｓ｜−１］×ｆ｜Ｓ｜−１（２）
の数値となる。
【０１１９】
続いて、掛け算部１０６０は、イベント派生モデルＡＳ→Ｅ（イベント派生モデル作業領域７５０を参照し、遷移確率計算部１０４０が計算したΣＡＳ→Ｓ［ｕ、ｓ］ｆｓ（ｔ）にＡＳ→Ｅ［ｅａ（ｔ＋１），ｕ］をかけて、ｆｕ（ｔ＋１）を隠れ状態ｕごとに求める。ただし、Ｃ［ｔ＋１］にあてはまらない隠れ状態ｕに関しては計算不要である。具体的には、遷移確率計算部１０４０の計算結果を入力とし、イベント派生モデルＡＳ→Ｅを参照し、既述の漸化式（１１）を計算する。図５の例では、ある障害ｕについて、
ｆｕ（ｔ＋１）
＝ＡＳ→Ｅ［ｅ（３）、ｕ］・（［ｕ、｜Ｓ｜−２］×ｆ｜Ｓ｜−２（２）＋［ｕ、｜Ｓ｜−１］×ｆ｜Ｓ｜−１（２））
の数値となる。
そして、セレクタ１０９０が指すｔ＋１に関して、ｆｕ（ｔ＋１）の領域に格納する（ステップＩ１７０）。ただし、｛ｓ∈Ｓ｜ｈＳ→Ｃ（ｓ）＝ｃ（ｔ＋１）｝のみに値を格納する。具体的には、ｃ（３）＝ｃ３に関連する障害がｓ０、ｓ１の場合、セレクタ１０９０が指すｆｓ（３）の領域であって、関連するｆｓ０（３）、ｆｓ１（３）の格納する領域１２００のみに、計算結果ｆｓ０（３）、ｆｓ１（３）の値を格納する。
次に、時刻加算部１０６０は、掛け算部１０６０の出力に応答して、時刻カウンタ１０８０を１増加させる（ステップＩ１８０）。そして、ステップＩ１３０に戻る。
【０１２０】
もし、時刻カウンタ１０８０が、イベント列の最大時間Ｔより小さい場合（ステップＩ１３０：Ｎｏ）、本処理を終了する。このようにして得られるｆｓ（ｔ）（ｔ＝０〜Ｔ−１）、すなわち、ｆｓ０（ｔ）〜ｆ｜Ｓ｜−１（ｔ）（ｔ＝０〜Ｔ−１）の各々は、ｆｓｉ（ｔ）（ｔ＝０〜Ｔ−１、ｉ＝０〜｜Ｓ｜−１））として、拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュール７７０へ出力される。
【０１２１】
１１（４）．拡張後向き計算部に関する動作
次に、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張後向き計算部に関する動作について図６及び図１７を参照して説明する。図１７は、本発明の実施の形態に係る障害原因推定システムの動作のうち拡張後向き計算部に関する動作を示すフローチャートである。
【０１２２】
まず、初期設定として、イベント作業領域１３２０にｂｓ０（Ｔ）〜ｂ｜Ｓ｜−１（Ｔ）＝１と代入する（ステップＪ１１０）。
次に、読み出し部１３１０は、イベント列ＤＢ３１０の指定された発生時間範囲のイベントの集合を読み出す。そして、読み出し部１３１０は、インスタンス定義ＤＢ２２０を参照しつつ、読み出したイベント集合を、イベント作業領域１３２０のイベント種別（ｅａ）、そして、発生箇所（Ｍ）から求めた発生箇所の装置種別（Ｃ）に、時間（ｔ）ごとに格納する（ステップＪ１２０）。
次に、時刻カウンタ１２８０が、０より大きいかチェックする（ステップＪ１３０）。
【０１２３】
もし、時刻カウンタ１２８０が、０より大きい場合（ステップＪ１３０：Ｙｅｓ）、以下の処理を行う。
まず、セレクタ１２３０は、イベント作業領域１３１０のうち、時刻カウンタ１２８０の値で指されたイベント領域を選択し、遷移確率計算部１２４０に渡す（ステップＪ１４０）。具体的には、ｅａ（ｔ−１）、ｃ（ｔ）、ｃ（ｔ−１）、ｂｓ（ｔ）（ただし、ｂｓ０（ｔ）〜ｂ｜Ｓ｜−１（ｔ）のうちｃ（ｔ）と同一種別で発生する障害ｓに対応するもの）を選択し、遷移確率計算部１２４０へ出力する。図６の例では、時刻ｔ＝３で指定されたｅａ（２）＝ｅ３、ｃ（３）＝ｃ３、ｃ（２）＝ｃ３、ｂｓ（３）＝ｆ｜Ｓ｜−２（３）＝ｓ６及びｂ｜Ｓ｜−１（３）＝ｓ６の値を出力する。ただし、ｂｓ（２）は、ｅａ（３）＝ｅ３の発生装置の種別ｃ（３）＝ｃ３（領域１２２０）により、ｂｓ０（３）〜ｂ｜Ｓ｜−１（３）の中から、可能性のあるｂｓ（３）としてｂ｜Ｓ｜−２（３）及びｂ｜Ｓ｜−１（３）（領域１２１０）を抽出して、出力している。それにより、ｂｓ０（ｔ）〜ｂ｜Ｓ｜−１（ｔ）の全ての数値を抽出して、後述の計算をする場合に比較して、その計算量を大幅に削減できる。
【０１２４】
次に、遷移確率計算部１２４０は、障害発生個別種別定義（障害発生個別種別定義ＤＢ３７０）、障害派生モデルＡＳ→Ｓ（障害派生モデル作業領域７４０）及びイベント派生モデルＡＳ→Ｅ（イベント派生モデル作業領域７５０）を参照し、イベントの発生箇所の装置種別に応じた隠れ状態ｕのみごとにΣＡＳ→Ｓ［ｓ、ｕ］ｂｓ（ｔ）を求める（ステップＪ１５０）。具体的には、障害ｕ∈｛ｓ∈Ｓ｜ｈＳ→Ｃ（ｓ）＝ｃ（ｔ−１）｝ごとに、既述の式（１２）を計算する。図６の例では、ある障害ｕについて、ｃ（３）＝ｃ３の場合、それに関連する障害が｜Ｓ｜−２、｜Ｓ｜−１とすると、ｂ｜Ｓ｜−２（３）＝ｓ６、ｂ｜Ｓ｜−１（３）＝ｓ６なので、式（１２）は、
ΣｓＡＳ→Ｓ［ｓ、ｕ］ｂｓ（３）
＝［｜Ｓ｜−２、ｕ］×ｂ｜Ｓ｜−２（３）＋［｜Ｓ｜−１、ｕ］×ｂ｜Ｓ｜−１（３）
の数値となる。
【０１２５】
続いて、掛け算部１２６０は、イベント派生モデルＡＳ→Ｅ（イベント派生モデル作業領域７５０）を参照し、遷移確率計算部１２４０が計算したΣＡＳ→Ｓ［ｓ、ｕ］ｂｓ（ｔ）にＡＳ→Ｅ［ｅａ（ｔ−１）、ｕ］をかけて、ｂｕ（ｔ−１）を隠れ状態ｕごとに求める。ただし、Ｃ［ｔ−１］にあてはまらない隠れ状態ｕに関しては計算不要である。具体的には、遷移確率計算部１２４０の計算結果を入力として、イベント派生モデルＡＳ→Ｅを参照し、既述の漸化式（１３）を計算する。図６の例では、ある障害ｕについて、
ｂｕ（ｔ−１）
＝ＡＳ→Ｅ［ｅ（２）、ｕ］・（［｜Ｓ｜−２、ｕ］×ｂ｜Ｓ｜−２（３）＋［｜Ｓ｜−１、ｕ］×ｂ｜Ｓ｜−１（３））
の数値となる。
そして、セレクタ１２９０が指すｔ−１に関して、ｂｕ（ｔ−１）の領域に格納する（ステップＪ１７０）。ただし、｛ｓ∈Ｓ｜ｈＳ→Ｃ（ｓ）＝ｃ（ｔ−１）｝のみに値を格納する。具体的には、ｃ（２）＝ｃ３に関連する障害がｓ０、ｓ１の場合、セレクタ１２９０が指すｂｓ（２）の領域であって、関連するｆｓ０（２）、ｆｓ１（２）の格納する領域１３００のみに、計算結果ｂｓ０（２）、ｂｓ１（２）の値を格納する。
次に、時刻減算部１２７０は、掛け算部１２６０の出力に応答して、時刻カウンタ１２８０を１減少させる（ステップＪ１８０）。そして、ステップＪ１３０に戻る。
【０１２６】
もし、時刻カウンタ１２８０が、０以下の場合（ステップＪ１３０：Ｎｏ）、本処理を終了する。このようにして得られるｂｓ（ｔ）（ｔ＝１〜Ｔ）、すなわち、ｂｓ０（ｔ）〜ｆ｜Ｓ｜−１（ｔ）（ｔ＝１〜Ｔ）の各々は、ｂｓｊ（ｔ）（ｔ＝１〜Ｔ、ｊ＝０〜｜Ｓ｜−１））として、拡張Ｂａｕｍ−Ｗｅｌｃｈサブモジュール７７０へ出力される。
【０１２７】
なお、上記実施の形態では、拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部を用いているが、本発明はその例に限定されるものではない。例えば、拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部の代わりに、“Ｓｔａｔｉｓｔｉｃａｌ  Ｍｅｔｈｏｄｓ  ｆｏｒ  Ｓｐｅｅｃｈ  Ｒｅｃｏｇｎｉｔｉｏｎ  （Ｌａｎｇｕａｇｅ、  Ｓｐｅｅｃｈ、  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）”、Ｆｒｅｄｅｒｉｃｋ  Ｊｅｌｉｎｅｋ著、９．３節や、特許文献３などに記述されている一般のＢａｕｍ−Ｗｅｌｃｈ計算部を用いることも可能である。その場合にも、上記実施の形態と同様の効果を得ることが出来る。
【０１２８】
１２．イベント列パーザの動作
図１８は、本発明の実施の形態に係る障害原因推定システムのイベント列パーザの動作を示す図である。
イベント列パーザ３００は、取得したイベント列を、所定の条件で、複数のイベントの列に分割する。この図は、イベント列の分割の様子を示している。イベント列パーザ３００は、イベントの発生間隔が一定時間Ｔ０よりも大きいと、イベント列を分割する。具体的には、例えば、イベント列（ｅ（０），・・・，ｅ（ｔ））があるとき、イベントｅ（ｉ）の発生時刻と、ｅ（ｉ＋１）の発生時刻との間の時間が一定時間Ｔ０よりも長い場合、イベント列（ｅ（０），・・・，ｅ（ｔ））を、イベントリージョンＲ０：（ｅ（０），・・・，ｅ（ｉ））と、イベントリージョンＲ１：（ｅ（ｉ＋１），・・・，ｅ（ｊ））、イベントリージョンＲ２：（ｅ（ｊ＋１），・・・，ｅ（ｋ））、・・・のように分割する。このことは、イベントリージョン内では、イベント発生間隔がしきい値Ｔ０以下であり、イベントリージョン間のイベント発生間隔はしきい値Ｔ０よりも大きいことを意味している。なお、ここでのイベントｅ（ｉ）は、イベントタイプ（イベントの種別）ではなくイベントそのものである。学習用のイベント列では、１イベントリージョンを学習用のイベント列として、イベントリージョンの数だけ学習用に用いる。
【０１２９】
１３．拡張Ｖｉｔｅｒｂｉアルゴリズムでの原因推定の原理
図１９は、本発明の実施の形態に係る障害原因推定システムの拡張Ｖｉｔｅｒｂｉ計算部での原因推定の原理を示す図である。
管理対象装置２６０の実運用時で得られたイベント列から障害原因を推定するのは以下の原理による。
まず、イベント列をイベントリージョンＲｉに分割する（イベント列パーザ３００による）。
そして、学習により生成されたモデル（拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部１９０による）に対して、あるイベントリージョンＲｉを与えて、最も遷移確率の高い隠れ状態列Ｓｉ＝（ｓｉ）＝ａｒｇｍａｘ｛ｓｉ｝Ｐｒ（Ｒｉ）を得る（拡張Ｖｉｔｅｒｂｉ計算部３２０による）。
次に確率の低い（＜Ｐ０）遷移ｓの位置でＳｉを、Ｓｉ，ｊに分割する。すなわち、Ｓｉは、Ｓｉ，１、Ｓｉ，２，・・・，ｓｉ，ｊ，・・・に分割される。ただし、上記で求めたＳｉ，ｊ＝（ｓ０，・・・ｓｋ）に対して、Ｐｒ（ｓｋ＋１｜ｓｋ）＞Ｐ０、かつ、ｓｋ∈Ｓｉ，ｊ⇒ｓｋ＋１∈Ｓｉ，ｊ、である。
次に、Ｓｉ，ｊ＝（ｓ１，・・・ｓｎ）に対してイベント発生確率Ｐ１のみをイベントコリレーション対象Ｅｉ，ｊとする。ただし、ｅ∈Ｒｉ、かつ、ｓ∈Ｓｉ，ｊ、かつ、Ｐｒ（ｅ｜Ｓｉ，ｊ）＞Ｐ１⇒ｅ∈Ｒｉ，ｊ、である。このとき、集合Ｒｉ，ｊ，シーケンスＳｉ，ｊの集合が発生するが、シーケンスＳｉ，ｊ＝（ｓ０，・・・ｓｎ）のうち、ｓ０がルートコーズ（障害原因）、Ｒｉ，ｊがｓ０が派生して発生したイベント集合とみなす（フィルタリングモジュール３３５による）。
【０１３０】
１４．実施例
次に、具体的な実施例を用いて本発明の実施の形態を説明する。
１４（１）．構成
図２０は、本発明の実施例に係る障害原因推定システムの管理対称装置（システム）の構成を示すブロック図である。
ＬＢ１は、ロードバランサであり、クライアントからのリクエストをアプリケーションサーバＡＰａ１とＡＰａ２に振り分ける。
ＬＢ２は、ロードバランサであり、アプリケーションサーバＡＰａ１とＡＰａ２の要求を、副処理をおこなうアプリケーションサーバＡＰｂ１とＡＰｂ２に振り分ける。
アプリケーションサーバＡＰａ１とＡＰａ２は、ユーザの要求に応じたサービスを提供する。
アプリケーションサーバＡＰｂ１とＡＰｂ２は、ユーザの要求に応じたサービスを提供する。
ＤＢ１、ＤＢ２はＲＡＩＤ０など二重化されたデータベースであり、アプリケーションサーバＡＰｂ１とＡＰｂ２、ＡＰｂ１とＡＰｂ２からの読み書き要求に応える。
【０１３１】
各装置種類ごとから発生するイベントについて述べる。
ロードバランサＬＢは、以下の二種類のイベントを発生するとする。
ｃｏｎｎｅｃｔｉｏｎ＿ｅｒｒｏｒ＠ＬＢ（ｅＬ１）
ｈｗ＿ｅｒｒｏｒ＠ＬＢ（ｅＬ２）
【０１３２】
アプリケーションサーバＡＰａは、以下の二種類のイベントを発生するとする。
ｃｏｎｎｅｃｔｉｏｎ＿ｅｒｒｏｒ＠ＡＰａ（ｅａ１）
ａｐ＿ｅｒｒｏｒ＠ＡＰａ（ｅａ２）
【０１３３】
アプリケーションサーバＡＰｂは、以下の二種類のイベントを発生するとする。
ｃｏｎｎｅｃｔｉｏｎ＿ｅｒｒｏｒ＠ＡＰｂ（ｅｂ１）
ａｐ＿ｅｒｒｏｒ＠ＡＰｂ（ｅｂ２）
【０１３４】
データベースＤＢは、以下の二種類のイベントを発生するとする。
ｄｉｓｋ＿ｆｕｌｌ＠ＤＢ（ｅｄ１）
ｄｂ＿ｅｒｒｏｒ＠ＤＢ（ｅｄ２）
【０１３５】
また、各装置種別ごとの障害を述べる。
ロードバランサＬＢは、以下の障害を発生するとする。
ｈｗ＿ｆａｕｌｔ＠ＬＢ（ｓＬ１）
【０１３６】
アプリケーションサーバＡＰａは、以下の障害を発生するとする。
ａｐ＿ｆａｕｌｔ＠ＡＰａ（ｓａ１）
【０１３７】
アプリケーションサーバＡＰｂは、以下の障害を発生するとする。
ａｐ＿ｆａｕｌｔ＠ＡＰｂ（ｓｂ１）
【０１３８】
データベースＤＢは、以下の障害を発生するとする。
ｄｉｓｋ＿ｆｕｌｌ＠ＤＢ（ｓｄ１）
ｉｎｖａｌｉｄ＿ｄａｔａ＠ＤＢ（ｓｄ２）
【０１３９】
また、これらの障害は、以下のイベントを発生することがわかっていたとする。
ｈｗ＿ｆａｕｌｔ＠ＬＢ（ｓＬ１）
ｃｏｎｎｅｃｔｉｏｎ＿ｅｒｒｏｒ＠ＬＢ（ｅＬ１）
ｈｗ＿ｅｒｒｏｒ＠ＬＢ（ｅＬ２）
ａｐ＿ｆａｕｌｔ＠ＡＰａ（ｓａ１）
ｃｏｎｎｅｃｔｉｏｎ＿ｅｒｒｏｒ＠ＡＰａ（ｅａ１）
ａｐ＿ｅｒｒｏｒ＠ＡＰａ（ｅａ２）
ａｐ＿ｆａｕｌｔ＠ＡＰｂ（ｓｂ１）
ｃｏｎｎｅｃｔｉｏｎ＿ｅｒｒｏｒ＠ＡＰｂ（ｅｂ１）
ａｐ＿ｅｒｒｏｒ＠ＡＰｂ（ｅｂ２）
ｄｉｓｋ＿ｆｕｌｌ＠ＤＢ（ｓｄ１）
ｄｉｓｋ＿ｆｕｌｌ＠ＤＢ（ｅｄ１）
ｄｂ＿ｅｒｒｏｒ＠ＤＢ（ｅｄ２）
ｉｎｖａｌｉｄ＿ｄａｔａ＠ＤＢ（ｓｄ２）
ｄｂ＿ｅｒｒｏｒ＠ＤＢ（ｅｄ２）
【０１４０】
図２１は、本発明の実施例に係る障害原因推定システムの基本モデル定義を示す図である。上記の障害を基本モデル定義として記述したものである。基本モデル定義は、例えば図のようなテキストファイルで記述される。［ｓｔａｔｅｓ］で始まる段落は、障害原因の集合Ｓを定義する。ここでは、５つの障害原因（例示：“ａｐ＿ｆａｕｌｔ＠ＡＰａ”）が定義され、それぞれ発生装置種別（例示：“ＡＰｂ”）と対応付けられている。また、［ｏｂｓｅｒｖａｔｉｏｎｓ］で始まる段落は、イベントの集合Ｅを定義する。ここでは、イベント名（例示：“ｃｏｎｎｅｃｔｉｏｎ＿ｅｒｒｏｒ＠ＡＰａ”）が定義され、それぞれ発生原因（例示：“ａｐ＿ｆａｕｌｔ＠ＡＰａ”）と対応付けられている。
【０１４１】
１４（２）．動作
次に、図８のステップＡ１２０である障害派生学習の手続きに関して具体的な実施例の動作を説明する。
初期モデルパーサ１４０が図２１の基本モデル定義１３０を構文解釈し、その結果を障害定義ＤＢ１５０に格納する（図９のステップＢ１１０）。
ここで、障害定義ＤＢ１５０に格納される結果の例を図２７に、障害発生箇所種別定義ＤＢ３７０に格納され結果の例を図２８にそれぞれ示す。
次に、初期モデル生成部１６０が、障害定義ＤＢ１５０からデータを読み込み、初期障害派生モデルと、初期イベント派生モデルを生成、初期障害派生モデル格納領域１７０および初期イベント派生モデル格納領域２４０に格納する（図９のステップＢ１２０）。
本実施例における初期障害派生モデルの例を図２２に、初期イベント派生モデルの例を図２３にそれぞれ示す。すなわち、図２２では、障害（Ｓ）に対して障害（Ｓ）が派生する遷移確率の初期設定が表中に記載されている。図２３では、障害（Ｓ）に対してイベント（Ｅ）が派生する遷移確率の初期設定が表中に記載されている。ただし、「ｅ」はイベントを示し、「ｓ」は障害を示し、添え字の「０」は正常な状態、「ａ１」は「ＡＰａ１」、「ａ２」は「ＡＰａ２」、「ｂ１」は「ＡＰｂ１」、「ｂ２」は「ＡＰｂ２」、「Ｌ１」は「ＬＢ１」、「Ｌ２」は「ＬＢ２」、「ｄ１」は「ＤＢ１」、「ｄ２」は「ＤＢ２」、をそれぞれ示す。図２２から図２８について同じである。
【０１４２】
次に、拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部１９０が、初期障害派生モデル格納領域１７０および初期イベント派生モデル格納領域２４０から、初期障害派生モデルと、初期イベント派生モデルを読み込み、障害派生モデル、イベント派生モデルを生成、障害派生モデル格納領域２００、イベント派生モデル格納領域２１０に格納する（図９のステップＢ１３０）。
本実施例における障害派生モデルの例を図２４に、イベント派生モデルの例を図２５にそれぞれ示す。すなわち、図２４では、障害（Ｓ）に対して障害（Ｓ）が派生する遷移確率の計算結果が表中に記載されている。図２５では、障害（Ｓ）に対してイベント（Ｅ）が派生する遷移確率の計算結果が表中に記載されている。
【０１４３】
次に、上記例に対して、図８のステップＡ１５０であるインスタンス派生確率計算部２３０についてその結果であるインスタンス派生モデルの例を図２６に示す。図１０の手続きに従ってイベントの発生装置の時間順番を記録してその割合を図２６のような遷移確率行列ＡＭ→Ｍに表す。
すなわち、図２６では、ある装置にイベント（障害のなしの状態を含む）が発生したとき、ある装置にイベントが派生する遷移確率が表中に示されている。
【０１４４】
次に、上記例に対して、図８のステップＡ１３０に示すインスタンス定義の例を図２９に示す。
すなわち、図２９では、装置（Ｍ）と種別（クラス、Ｃ）との関係が示されている。
【０１４５】
次に、図８のステップＡ１４０に示す障害学習の手続きについて上記例に対して、実施例の動作を説明する。
ここでは、ＤＢ１でｄｂ＿ｅｒｒｏｒ＠ＤＢ（ｅｄ２）発生し、続いて、ＡＰａ２でｃｏｎｎｅｃｔｉｏｎ＿ｅｒｒｏｒ＠ＡＰａ（ｅａ１）が発生したとする。このとき、図１２のステップＥ１１０の結果、図３０の結果が得られる。このｓの行をみると、ｓｄ２からｓａ１と障害の推移関係が分析されたことがわかる。また、そのときに推移確率は、０。０２％である。この確率が閾値Ｐ０よりも大きければ、ｓｄ２からｓａ１との推移関係が分析できたことになる。すなわち、ＤＢ１で起きたｉｎｖａｌｉｄ＿ｄａｔａ＠ＤＢからＡＰａ２で発生したａｐ＿ｆａｕｌｔ＠ＡＰａに推移し、根本原因は、ＤＢ１で起きたｉｎｖａｌｉｄ＿ｄａｔａ＠ＤＢが判明した。これは、ＤＢのデータエラーから、ＡＰａ２で動作するアプリケーションがＤＢアクセスできず、ｃｏｎｎｅｃｔｉｏｎ＿ｅｒｒｏｒ＠ＡＰａを発生したと解釈できる。
【０１４６】
図３１は、本発明の実施例に係る障害原因推定システムの表示結果部での表示結果例を示す図である。
結果表示部３４０の表示画面３４０ａに、複数のイベントリージョンのうちの、第４０番目のイベントリージョン（４０ｔｈ  ＥｖｅｎｔＲｅｇｉｏｎ）３４１の分析内容が表示されている。すなわち、依存した障害原因鎖（原因→派生原因）３４２として、障害状態であるｓｔａｔｅ＝ｔｈｒｅａｄ＿ｅｒｒｏｒ３４３と、そこから派生したイベント３４４、及び、障害状態であるｓｔａｔｅ＝Ｍｙ＿ＳＱＬ＿ｉｓ＿ｓｔｏｐｐｅｄ３４５と、そこから派生したイベント３４６、がそれぞれ表示されている。
【０１４７】
上記実施の形態では、拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部は、特許文献３と同様に、イベント列から障害原因の推移関係を推測する。これにより、障害の推移関係が不明な障害にでも、推移する障害に対してその発生する確率を計算でき、障害原因分析を行うことが可能である。したがって、特許文献３と同様な仕組みで、人手で推移関係の規則を記述することなく、障害の原因を推測することができる。
また、拡張Ｖｉｔｅｒｂｉ計算部は、装置と装置ごとの障害の推移関係を計算するのではなく、装置種類（種別）ごとの派生関係と装置ごとのイベント推移関係が確率的に独立と仮定し、両者を独立に計算し、得た確率を掛け合わせる。独立に計算することで、計算量を低減する。
また、拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部と、拡張Ｖｉｔｅｒｂｉ計算部は、イベントに記載している障害発生元の装置に関して、その装置種別をインスタンス定義から求めるとともに、その装置種別に関係のある隠れ状態のみを検索することで、特許文献３よりも処理速度を向上させている。
すなわち、装置種別の集合をＣ、全装置での障害種類の集合をＳ、全イベントの集合をＥ、全装置の集合をＭとすると、特許文献３の学習時間、処理時間ともＯ（｜Ｓ｜２｜Ｍ｜２／｜Ｃ｜２）となる。一方、本発明では、学習、分析ともＯ（｜Ｓ｜２）となる。これらにより、本発明の目的を達成することができる。
【０１４８】
第１の効果は、障害の推移関係が不明な障害にでも、推移する障害に関して原因分析ができる障害原因推定できることにある。その理由は、既存イベントを学習ログとして事前に与えることで、障害の推移関係を推測し、障害派生モデルを自動生成、それにより障害原因を推測するためである。
【０１４９】
第２の効果は、人手で障害の推移関係に関する規則を記述することなく、推移する障害に関して原因分析ができることにある。その理由は、既存イベントを学習ログとして事前に与えることで、障害の推移関係を推測し、障害派生モデルを自動生成、それにより障害原因を推測するためである。
【０１５０】
第３の効果は、大規模な管理対象システムに対して、推移する障害に関して原因分析ができることにある。その理由は、装置種類ごとの障害派生確率と、装置ごとの障害派生関係を独立に計算することで、計算量の削減を図っているためである。
【０１５１】
本発明によれば、ネットワークやコンピュータシステムの障害監視システムといった用途に適用できる。また、組み込みシステムの障害発見系といった用途にも適用可能である。
【０１５２】
本発明のプログラム、データ構造は、コンピュータ読取可能な記憶媒体に記録され、その記憶媒体から情報処理装置に読み込まれても良い。
【０１５３】
本発明は、以下のようにも記載することができる。ただし、その内容に限定されない。
本発明の障害原因推定システムは、管理対象の複数の装置と前記複数の装置の種別との対応関係を定義したインスタンス定義を格納するインスタンス定義データベースと；前記複数の装置で発生し得る複数の障害と前記複数の装置の種別との対応関係を定義した障害発生箇所種別定義を格納する障害発生箇所種別定義データベースと；監視中の前記複数の装置において発生した複数のイベントが発生時刻順に並んだ障害原因推定用イベント列を格納するイベント列データベースと；前記複数の装置の種別と前記複数の装置の種別での障害との組み合わせに関する障害推移確率を示す障害派生モデルを記憶する第１記憶部と；前記複数の装置での障害と前記複数の装置の障害から派生するイベントとの組み合わせに関するイベント推移確率を示すイベント派生モデルを記憶する第２記憶部と；前記複数の装置のうちの障害の発生した発生装置に関する発生装置推移確率を示すインスタンス派生モデルを記憶する第３記憶部と；前記インスタンス定義及び前記障害発生箇所種別定義と、前記障害派生モデル、前記イベント派生モデル及び前記インスタンス派生モデルと、前記障害原因推定用イベント列とに基づいて、前記複数の装置の種別における前記複数の障害間の第１遷移確率と、前記複数の装置間の第２遷移確率とを独立に求め、両者を掛け合わせることで、前記障害原因推定用イベント列に対する障害の遷移列及び遷移確率を示す障害状態推移列及び障害状態遷移確率を推測する拡張Ｖｉｔｅｒｂｉ計算部と；前記障害状態遷移列及び障害状態遷移確率に基づいて、前記管理対象で発生した前記イベントの根源的な原因となる障害を推定するフィルタリングモジュールと；を具備する。
【０１５４】
上記の障害原因推定システムにおいて、前記拡張Ｖｉｔｅｒｂｉ計算部は、前記障害原因推定用イベント列に含まれる第１時刻での第１発生装置での第１障害から第２時刻での第２発生装置での第２障害への遷移確率としての前記障害状態遷移確率を、前記第１時刻での前記第１発生装置の第１種別に対応する前記障害状態遷移確率と、前記第１障害から前記第２障害への前記障害推移確率と、前記第２障害での前記イベント推移確率とに基づいて算出される前記第１遷移確率と；前記第１発生装置から前記第２発生装置への前記発生装置推移確率である前記第２遷移確率と；に基づいて算出しても良い。
【０１５５】
上記の障害原因推定システムにおいて、前記複数の装置で発生し得る複数のイベントと、前記複数のイベントを引き起こす複数の障害との対応関係を定義した基本モデル定義を格納する障害定義データベースと、前記基本モデル定義に基づいて、前記複数の障害同士の推移関係を示す初期障害派生モデル、及び、前記複数の障害と前記複数のイベントとの間の推移関係を示す初期イベント派生モデルを予め設定された条件で生成する初期モデル生成部と；前記インスタンス定義及び前記障害発生箇所種別定義と、前記初期障害派生モデル及び前記初期イベント派生モデルと、複数の装置において発生した複数のイベントが発生時刻順に並んだ学習用イベント列とに基づいて、前記学習イベント列に含まれる開始時刻から開始状態を出発して所定時刻で所定障害に至る前向き確率と、前記終了時刻から終了状態を出発して所定時刻で所定障害に至る後向き確率とを前記複数の装置の種別で障害を絞り込んで算出し、前記前向き確率と前記後向き確率とに基づいて、前記障害派生モデル及び前記イベント派生モデルを生成する拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部と；前記学習用イベント列における前記発生装置から次の前記発生装置への遷移確率を算出することにより前記インスタンス派生モデルを生成するインスタンス派生確率計算部と；を更に具備しても良い。
【０１５６】
上記の障害原因推定システムにおいて、前記拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部は、前記学習用のイベント列に含まれる第３時刻での第３発生装置において第３障害から第４時刻での第４発生装置での第４障害への前記前向き確率を、前記第３時刻での前記第３発生装置の第３種別に対応する前記前向き確率と、前記第３障害から前記第４障害への前記障害遷移確率と、前記第４障害での前記イベント推移確率とに基づいて算出し；前記学習用のイベント列に含まれる第６時刻での第６発生装置において第６障害から第５時刻での第５発生装置での第５障害への前記後向き確率を、前記第６時刻での前記第６発生装置の第６種別に対応する前記後向き確率と、前記第６障害から前記第５障害への前記障害遷移確率と、前記第５障害での前記イベント推移確率とに基づいて算出し；前記イベント派生モデルを、前記前向き確率と前記後向き確率とに基づいて計算し；前記障害派生モデルを、前記前向き確率と前記後向き確率と各時点での前記イベント推移確率とに基づいて計算し；上記計算を、前記イベント推移確率と前記障害推移確率とが収束するまで繰り返して、前記障害派生モデル、及び、前記イベント派生モデルを生成しても良い。
【０１５７】
上記の障害原因推定システムにおいて、拡張Ｂａｕｍ−Ｗｅｌｐｈ計算部の代わりに、Ｂａｕｍ−Ｗｅｌｐｈアルゴリズムを実行するＢａｕｍ−Ｗｅｌｐｈ計算部を用いても良い。
【０１５８】
上記の障害原因推定システムにおいて、前記フィルタリングモジュールは、前記障害状態遷移列において、二つの障害間の遷移確率が、所定の確率よりも低い場合、前記障害状態遷移列を、当該二つの障害間で分割し；前記分割された障害状態推移列の各々の先頭の障害を、前記根源的な原因となる障害と推定しても良い。
【０１５９】
上記の障害原因推定システムにおいて、前記学習用イベント列及び前記障害原因推定用イベント列の各々における隣接する２つのイベントの発生時間間隔は所定の値以下であっても良い。
【０１６０】
本発明の障害原因推定方法は、管理対象の複数の装置と前記複数の装置の種別との対応関係を定義したインスタンス定義と、前記複数の装置で発生し得る複数の障害と前記複数の装置の種別との対応関係を定義した障害発生箇所種別定義と、前記複数の装置の種別と前記複数の装置の種別での障害との組み合わせに関する障害推移確率を示す障害派生モデルと、前記複数の装置での障害と前記複数の装置の障害から派生するイベントとの組み合わせに関するイベント推移確率を示すイベント派生モデルと、前記複数の装置のうちの障害の発生した発生装置に関する発生装置推移確率を示すインスタンス派生モデルと、監視中の前記複数の装置において発生した複数のイベントが発生時刻順に並んだ障害原因推定用イベント列とに基づいて、前記複数の装置の種別における前記複数の障害間の第１遷移確率と、前記複数の装置間の第２遷移確率とを独立に求め、両者を掛け合わせることで、前記障害原因推定用イベント列に対する障害の遷移列及び遷移確率を示す障害状態推移列及び障害状態遷移確率を推測するステップと；前記障害状態遷移列及び障害状態遷移確率に基づいて、前記管理対象で発生した前記イベントの根源的な原因となる障害を推定するステップと；を具備する。
【０１６１】
上記の障害原因推定方法において、障害状態推移列及び障害状態遷移確率を推測するステップは、前記障害原因推定用イベント列に含まれる第１時刻での第１発生装置での第１障害から第２時刻での第２発生装置での第２障害への遷移確率としての前記障害状態遷移確率を；前記第１時刻での前記第１発生装置の第１種別に対応する前記障害状態遷移確率と、前記第１障害から前記第２障害への前記障害推移確率と、前記第２障害での前記イベント推移確率とに基づいて算出される前記第１遷移確率と；前記第１発生装置から前記第２発生装置への前記発生装置推移確率である前記第２遷移確率と；に基づいて算出するステップを含んでも良い。
【０１６２】
上記の障害原因推定方法において、前記複数の装置で発生し得る複数のイベントと、前記複数のイベントを引き起こす複数の障害との対応関係を定義した基本モデル定義に基づいて、前記複数の障害同士の推移関係を示す初期障害派生モデル、及び、前記複数の障害と前記複数のイベントとの間の推移関係を示す初期イベント派生モデルを予め設定された条件で生成するステップと；前記インスタンス定義及び前記障害発生箇所種別定義と、前記初期障害派生モデル及び前記初期イベント派生モデルと、複数の装置において発生した複数のイベントが発生時刻順に並んだ学習用イベント列とに基づいて、前記学習イベント列に含まれる開始時刻から開始状態を出発して所定時刻で所定障害に至る前向き確率と、前記終了時刻から終了状態を出発して所定時刻で所定障害に至る後向き確率とを前記複数の装置の種別で障害を絞り込んで算出し、前記前向き確率と前記後向き確率とに基づいて、前記障害派生モデル及び前記イベント派生モデルを生成するステップと；前記学習用イベント列における前記発生装置から次の前記発生装置への遷移確率を算出することにより前記インスタンス派生モデルを生成するステップと；を更に具備しても良い。
【０１６３】
上記の障害原因推定方法において、前記障害派生モデル及び前記イベント派生モデルを生成するステップは、前記学習用のイベント列に含まれる第３時刻での第３発生装置において第３障害から第４時刻での第４発生装置での第４障害への前記前向き確率を、前記第３時刻での前記第３発生装置の第３種別に対応する前記前向き確率と、前記第３障害から前記第４障害への前記障害遷移確率と、前記第４障害での前記イベント推移確率とに基づいて算出するステップと；前記学習用のイベント列に含まれる第６時刻での第６発生装置において第６障害から第５時刻での第５発生装置での第５障害への前記後向き確率を、前記第６時刻での前記第６発生装置の第６種別に対応する前記後向き確率と、前記第６障害から前記第５障害への前記障害遷移確率と、前記第５障害での前記イベント推移確率とに基づいて算出するステップと；前記イベント派生モデルを、前記前向き確率と前記後向き確率とに基づいて計算するステップと；前記障害派生モデルを、前記前向き確率と前記後向き確率と各時点での前記イベント推移確率とに基づいて計算するステップと；上記計算を、前記イベント推移確率と前記障害推移確率とが収束するまで繰り返して、前記障害派生モデル及び前記イベント派生モデルを生成するステップと；を含んでも良い。
【０１６４】
上記の障害原因推定方法において、前記障害派生モデル及び前記イベント派生モデルを生成するステップの代わりに、Ｂａｕｍ−Ｗｅｌｐｈアルゴリズムを実行するステップを具備しても良い。
【０１６５】
上記の障害原因推定方法において、前記根源的な原因となる障害を推定するステップは、前記障害状態遷移列において、二つの障害間の遷移確率が、所定の確率よりも低い場合、前記障害状態遷移列を、当該二つの障害間で分割するステップと；前記分割された障害状態推移列の各々の先頭の障害を、前記根源的な原因となる障害と推定するステップと；を含んでも良い。
【０１６６】
上記の障害原因推定方法において、前記学習用イベント列及び前記障害原因推定用イベント列の各々における隣接する２つのイベントの発生時間間隔は所定の値以下であっても良い。
【０１６７】
本発明のプログラムは、インスタンス定義データベースから、管理対象の複数の装置と前記複数の装置の種別との対応関係を定義したインスタンス定義を読み出すステップと；障害発生箇所種別定義データベースから、前記複数の装置で発生し得る複数の障害と前記複数の装置の種別との対応関係を定義した障害発生箇所種別定義を読み出すステップと；イベント列データベースから、監視中の前記複数の装置において発生した複数のイベントが発生時刻順に並んだ障害原因推定用イベント列を読み出すステップと；第１記憶部から、前記複数の装置の種別と前記複数の装置の種別での障害との組み合わせに関する障害推移確率を示す障害派生モデルを読み出すステップと；第２記憶部から、前記複数の装置での障害と前記複数の装置の障害から派生するイベントとの組み合わせに関するイベント推移確率を示すイベント派生モデルを読み出すステップと；第３記憶部から、前記複数の装置のうちの障害の発生した発生装置に関する発生装置推移確率を示すインスタンス派生モデルを読み出すステップと；拡張Ｖｉｔｅｒｂｉ計算部が、読み出された前記インスタンス定義及び前記障害発生箇所種別定義と、前記障害派生モデル、前記イベント派生モデル及び前記インスタンス派生モデルと、前記障害原因推定用イベント列とに基づいて、前記複数の装置の種別における前記複数の障害間の第１遷移確率と、前記複数の装置間の第２遷移確率とを独立に求め、両者を掛け合わせることで、前記障害原因推定用イベント列に対する障害の遷移列及び遷移確率を示す障害状態推移列及び障害状態遷移確率を推測するステップと；フィルタリングモジュールが、前記障害状態遷移列及び障害状態遷移確率に基づいて、前記管理対象で発生した前記イベントの根源的な原因となる障害を推定するステップと；を具備する障害原因推定方法をコンピュータに実行させる。
【０１６８】
上記のプログラムにおいて、障害状態推移列及び障害状態遷移確率を推測するステップは、前記拡張Ｖｉｔｅｒｂｉ計算部が、前記障害原因推定用イベント列に含まれる第１時刻での第１発生装置での第１障害から第２時刻での第２発生装置での第２障害への遷移確率としての前記障害状態遷移確率を；前記第１時刻での前記第１発生装置の第１種別に対応する前記障害状態遷移確率と、前記第１障害から前記第２障害への前記障害推移確率と、前記第２障害での前記イベント推移確率とに基づいて算出される前記第１遷移確率と；前記第１発生装置から前記第２発生装置への前記発生装置推移確率である前記第２遷移確率と；に基づいて算出するステップを含んでも良い。
【０１６９】
上記のプログラムにおいて、障害定義データベースから、前記複数の装置で発生し得る複数のイベントと、前記複数のイベントを引き起こす複数の障害との対応関係を定義した基本モデル定義を読み出すステップと；初期モデル生成部が、前記複数の装置で発生し得る複数のイベントと、前記複数のイベントを引き起こす複数の障害との対応関係を定義した基本モデル定義に基づいて、前記複数の障害同士の推移関係を示す初期障害派生モデル、及び、前記複数の障害と前記複数のイベントとの間の推移関係を示す初期イベント派生モデルを予め設定された条件で生成するステップと；拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部が、前記インスタンス定義及び前記障害発生箇所種別定義と、前記初期障害派生モデル及び前記初期イベント派生モデルと、複数の装置において発生した複数のイベントが発生時刻順に並んだ学習用イベント列とに基づいて、前記学習イベント列に含まれる開始時刻から開始状態を出発して所定時刻で所定障害に至る前向き確率と、前記終了時刻から終了状態を出発して所定時刻で所定障害に至る後向き確率とを前記複数の装置の種別で障害を絞り込んで算出し、前記前向き確率と前記後向き確率とに基づいて、前記障害派生モデル及び前記イベント派生モデルを生成するステップと；インスタンス派生確率計算部が、前記学習用イベント列における前記発生装置から次の前記発生装置への遷移確率を算出することにより前記インスタンス派生モデルを生成するステップと；を更に具備しても良い。
【０１７０】
上記のプログラムにおいて、前記障害派生モデル及び前記イベント派生モデルを生成するステップは、前記拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部が、前記学習用のイベント列に含まれる第３時刻での第３発生装置において第３障害から第４時刻での第４発生装置での第４障害への前記前向き確率を、前記第３時刻での前記第３発生装置の第３種別に対応する前記前向き確率と、前記第３障害から前記第４障害への前記障害遷移確率と、前記第４障害での前記イベント推移確率とに基づいて算出するステップと；前記拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部が、前記学習用のイベント列に含まれる第６時刻での第６発生装置において第６障害から第５時刻での第５発生装置での第５障害への前記後向き確率を、前記第６時刻での前記第６発生装置の第６種別に対応する前記後向き確率と、前記第６障害から前記第５障害への前記障害遷移確率と、前記第５障害での前記イベント推移確率とに基づいて算出するステップと；前記拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部が、前記イベント派生モデルを、前記前向き確率と前記後向き確率とに基づいて計算するステップと；前記拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部が、前記障害派生モデルを、前記前向き確率と前記後向き確率と各時点での前記イベント推移確率とに基づいて計算するステップと；前記拡張Ｂａｕｍ−Ｗｅｌｃｈ計算部が、上記計算を、前記イベント推移確率と前記障害推移確率とが収束するまで繰り返して、前記障害派生モデル及び前記イベント派生モデルを生成するステップと；を含んでも良い。
【０１７１】
上記のプログラムにおいて、前記障害派生モデル及び前記イベント派生モデルを生成するステップの代わりに、Ｂａｕｍ−Ｗｅｌｃｈ計算部が、Ｂａｕｍ−Ｗｅｌｐｈアルゴリズムを実行するステップを具備しても良い。
【０１７２】
上記のプログラムにおいて、前記根源的な原因となる障害を推定するステップは、フィルタリングモジュールが、前記障害状態遷移列において、二つの障害間の遷移確率が、所定の確率よりも低い場合、前記障害状態遷移列を、当該二つの障害間で分割するステップと；フィルタリングモジュールが、前記分割された障害状態推移列の各々の先頭の障害を、前記根源的な原因となる障害と推定するステップと；を含んでも良い。
【０１７３】
上記のプログラムにおいて、前記学習用イベント列及び前記障害原因推定用イベント列の各々における隣接する２つのイベントの発生時間間隔は所定の値以下であっても良い。
【０１７４】
この出願は、２００９年５月１５日に出願された特許出願番号２００９−１１８２７１号の日本特許出願に基づいており、その出願による優先権の利益を主張し、その出願の開示は、引用することにより、そっくりそのままここに組み込まれている。
【０１７５】
以上、実施の形態を参照して本発明を説明したが、本発明は上記実施の形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。
【図１】
0005489085.tif 000011
【図２】
0005489085.tif 000012
【図３】
0005489085.tif 000013
【図４】
0005489085.tif 000014
【図５】
0005489085.tif 000015
【図６】
0005489085.tif 000016
【図７】
0005489085.tif 000017
【図８】
0005489085.tif 000018
【図９】
0005489085.tif 000019
【図１０】
0005489085.tif 000020
【図１１】
0005489085.tif 000021
【図１２】
0005489085.tif 000022
【図１３】
0005489085.tif 000023
【図１４Ａ】
0005489085.tif 000024
【図１４Ｂ】
0005489085.tif 000025
【図１５Ａ】
0005489085.tif 000026
【図１５Ｂ】
0005489085.tif 000027
【図１６】
0005489085.tif 000028
【図１７】
0005489085.tif 000029
【図１８】
0005489085.tif 000030
【図１９】
0005489085.tif 000031
【図２０】
0005489085.tif 000032
【図２１】
0005489085.tif 000033
【図２２】
0005489085.tif 000034
【図２３】
0005489085.tif 000035
【図２４】
0005489085.tif 000036
【図２５】
0005489085.tif 000037
【図２６】
0005489085.tif 000038
【図２７】
0005489085.tif 000039
【図２８】
0005489085.tif 000040
【図２９】
0005489085.tif 000041
【図３０】
0005489085.tif 000042
【図３１】
0005489085.tif 000043
【図３２】
0005489085.tif 000044
【図３３Ａ】
0005489085.tif 000045
【図３３Ｂ】
0005489085.tif 000046
【図３３Ｃ】
0005489085.tif 000047
【図３４】
0005489085.tif 000048