以下に、本願の開示するイベントフィルタプログラム、イベントフィルタ装置およびイベントフィルタ方法の実施例を図面に基づいて詳細に説明する。なお、以下では、本願の開示するイベントフィルタ装置をCEPシステムに適用する場合を説明する。また、CEPシステムを自動車の渋滞発生の予測に用いる場合を説明する。しかしながら、本願の開示するイベントフィルタ装置はこれに限定されるものではない。
[実施例1に係るCEPシステムの構成]
図1は、実施例1に係るイベントフィルタ装置を含むCEPシステムの全体構成を示す図である。図1に示すように、CEPシステム9は、イベントフィルタ装置1と制御サーバ2とを有する。
イベントフィルタ装置1は、複合イベント処理を行う物理サーバであり、例えば、データセンサや各企業に設けられたサーバコンピュータである。イベントフィルタ装置1には、イベントの入力源であるイベント元から複数の種類のイベントが配信(入力)される。イベントの入力源は、複数存在する。
また、制御サーバ2は、信号や速度制限を制御し、渋滞を回避させる。
近年、イベントフィルタ装置1には、複数の入力源から入力されるイベント量が大量に入力されている。そこで、イベントフィルタ装置1は、複合イベント処理の実施に当たり適用されるフィルタリングルールに基づいてイベントをフィルタし、フィルタされたイベントをCEPエンジンに入力する。ところが、フィルタリングルールの最適性は、季節や時間帯でのトレンド(傾向)により変化する。例えば、行楽シーズンの季節には、乗用車のイベントが急増する傾向があり、この傾向が定常化している。また、深夜の時間帯には、トラックのイベントが増加する傾向があり、この傾向が定常化している。つまり、行楽シーズンの期間と、行楽シーズンでない期間とでは、最適なフィルタリングルールが異なる。また、時間帯ごとに、最適なフィルタリングルールが異なる。
そこで、イベントフィルタ装置1は、過去に入力された(例えば乗用車やトラックの)イベントに関する特徴量の傾向の推移に基づいて、将来リアルタイムに入力される場合の入力されるイベントに関する特徴量の傾向を示す値(予測値)を予測する。イベントフィルタ装置1は、実際にリアルタイムに入力された現在のイベントに基づいて、現在のイベントに関する特徴量の傾向を示す値を算出する。イベントフィルタ装置1は、予測値と、算出値とに基づいて、イベント処理を行うCEPエンジンに引き渡すイベントのフィルタリングルールの設定を行う。
イベントフィルタ装置1は、通信制御I/F部11,12と、記憶部13と、制御部14とを有する。
通信制御I/F部11,12は、ネットワークとの間の通信を制御するインタフェースである。通信制御I/F部11は、様々な入力源から配信されたイベントを受信する。例えば、通信制御I/F部11は、所定領域の入力源から配信された走行中の乗用車の位置および速度などの状況、同じ領域の別の入力源から配信された走行中のトラックの位置および速度などの状況や当該領域のさらに別の入力源から配信された天気の情報を受信する。通信制御I/F部12は、フィルタリングルールに従って抽出されたイベントから推定される情報を制御サーバ2へ通知する。なお、以降、説明の便宜上、通信制御I/F部11,12は、乗用車のイベント、トラックのイベントおよび天気予報のイベントを、受信するイベントとして説明する。ただし、受信するイベントは、乗用車のイベント、トラックのイベントおよび天気予報のイベントに限定されず、自動車の渋滞発生の予測に用いられるイベントであれば良い。
記憶部13は、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部13は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)などのデータを書き換え可能な半導体メモリであっても良い。
記憶部13は、各種情報を記憶する。例えば、記憶部13は、制御部14で実行されるOS(Operating System)や後述する予測データ生成処理、入力処理、判定処理および通知処理など各種処理を行うプログラムを記憶する。さらに、記憶部13は、制御部14で実行されるプログラムの実行に要する各種データを記憶する。例えば、記憶部13は、時系列データテーブル(分析用)131と、時系列データテーブル(リアルタイム用)132と、予測データテーブル133と、コンフィグファイル134とを記憶する。
時系列データテーブル(分析用)131は、予測値を生成する際に用いられる分析用のテーブルである。時系列データテーブル(分析用)131は、運用前の分析時に用いられる。時系列データテーブル(分析用)131は、過去の入力イベントを記憶する過去ログを用いて各期間で生成されるイベントに対応するデータを記憶する。データが生成される粒度は、例えば1分単位であるが、1時間単位であっても良い。ここで、同一粒度内には、同種類のイベントであっても複数個存在する。したがって、同一粒度内の同種類のイベントに対応するデータは、平均化された値である。なお、時系列データテーブル(分析用)131のデータ構造の説明は、後述する。
時系列データテーブル(リアルタイム用)132は、イベントが入力源から入力される際に用いられるリアルタイム用のテーブルである。時系列データテーブル(リアルタイム用)132は、運用時に用いられる。時系列データテーブル(リアルタイム用)132は、入力源から入力されるイベントに対応するデータを時系列に記憶する。データが生成される粒度は、時系列データテーブル(分析用)131と同じ粒度である。ここで、同一粒度内には、同種類のイベントであっても複数個存在する。したがって、同一粒度内の同種類のイベントに対応するデータは、平均化された値である。なお、時系列データテーブル(リアルタイム用)132のデータ構造の説明は、後述する。
予測データテーブル133は、予測データ(予測値)を記憶するテーブルである。予測データテーブル133は、イベントに対応する予測データ(予測値)を時系列に記憶する。データが生成される粒度は、時系列データテーブル(分析用)131と同じ粒度である。なお、予測データテーブル133のデータ構造の説明は、後述する。
コンフィグファイル134は、イベントに対応するデータが生成される粒度を示す生成単位や、分析する期間を示す分析単位を記憶する。コンフィグファイル134は、運用前および分析前に予め設定される。なお、コンフィグファイル134のデータ構造の説明は、後述する。
制御部14は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部14は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路の電子回路に対応する。また、制御部14は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路に対応する。さらに、制御部14は、予測データ生成部141と、入力部142と、判定部143と、通知部144とを有する。
予測データ生成部141は、予測データ(予測値)を生成する。すなわち、予測データ生成部141は、運用前の分析時に、予測データテーブル133を生成する。例えば、予測データ生成部141は、過去に入力された乗用車、トラックおよび天気予報の各イベントに関する特徴量の傾向の推移に基づいて、リアルタイムに入力される場合の乗用車、トラックおよび天気予報のイベントに関する特徴量の傾向を示す予測値を算出する。
一例として、予測データ生成部141は、コンフィグファイル134から生成単位および分析単位を読み出す。予測データ生成部141は、過去の入力イベントの中で定常時の状態(定常状態)のそれぞれのイベントを学習期間分過去ログから取り出し、読み出した生成単位でそれぞれのイベントの時系列の値を算出する。予測データ生成部141は、この算出を、例えば、統計分析ツールを使用する。統計分析ツールの一例として、「R」が挙げられる。また、予測データ生成部141は、算出された、それぞれのイベントの時系列の値を時系列データテーブル(分析用)131に格納する。ここでいう学習期間は、分析単位が例えば1日である場合、一例として2週間であるが、これに限定されない。また、ここでいう定常状態とは、事故等の異常が発生していない状態のことをいい、例えば、イベントが乗用車のイベントである場合、速度が所定速度より低い低速度である状態のことをいう。そして、予測データ生成部141は、時系列データテーブル(分析用)131に記憶された、それぞれのイベントの時系列の値を用いて、自己回帰分析し、読み出した分析単位分のそれぞれのイベントの時系列の予測値を算出する。予測データ生成部141は、算出された、それぞれのイベントの時系列の予測値を予測データテーブル133に格納する。予測値は、例えば、95%を信頼区間として信頼区間の上限値と下限値との平均値であるが、下限値から上限値までの値を含んでも良い。なお、自己回帰分析として、一例として、VAR(Vector Auto Regressive)を用いれば良いが、これに限定されず、時系列データから将来値を予測する統計分析であれば良い。
入力部142は、イベントをイベント元の入力源から入力する。例えば、入力部142は、乗用車のイベント、トラックのイベントおよび天気予報のイベントをイベント元のそれぞれの入力源から入力する。入力源から入力されるイベントは、一例として、XML(Extensible Markup Language)形式のデータ構造で記述されている。
判定部143は、リアルタイムに入力された現在のイベントに基づいて、現在のイベントに関する特徴量の傾向を示す値を算出する。例えば、判定部143は、入力源から各期間に入力された乗用車、トラックおよび天気予報の各イベントに関する特徴量に基づいて、乗用車、トラックおよび天気予報のイベントに関する特徴量の傾向を示す値を算出する。一例として、判定部143は、コンフィグファイル134から生成単位および分析単位を読み出す。判定部143は、入力された現在の各種イベントを、読み出した生成単位で各種イベントに関する特徴量の傾向を示す値を算出する。判定部143は、算出された、各種イベントの値を時系列データテーブル(リアルタイム用)132に格納する。
また、判定部143は、現在のイベントの算出値と、現在のイベントが入力された期間に対応する予測値とからフィルタリングルールを生成する。判定部143は、生成されたフィルタリングルールに基づいて、予測値を逸脱した現在のイベントを判定し、判定結果を通知部144に引き渡す。すなわち、判定部143は、各期間におけるイベントの算出値と予測値とを用いたフィルタリングルールに基づいて、イベント処理を行うCEPエンジンに引き渡すイベントのフィルタリングを行う。例えば、判定部143は、予測データテーブル133から、現在のイベントが入力された期間に対応する予測値を読み出す。判定部143は、現在のイベントの算出値と、読み出された予測値とを比較するフィルタリングルールを生成する。判定部143は、算出値が予測値と合致する場合には、算出値に該当する現在のイベントを、通知部144に引き渡す。すなわち、判定部143は、定常状態から外れた、異常なイベントを重要なイベントとしてCEPエンジンに引き渡す。そして、判定部143は、算出値が予測値と合致しない場合には、算出値に該当する現在のイベントをフィルタリングする。
通知部144は、判定部143から引き渡されたイベントに関し、異常が発生した旨を重要通知として制御サーバ2に通知する。例えば、異常が発生した旨の一例として「渋滞の可能性がある」が挙げられる。
[時系列データテーブルのデータ構造]
次に、時系列データテーブル(分析用)131および時系列データテーブル(リアルタイム用)132のデータ構造について、図2を参照して説明する。図2は、時系列データテーブルのデータ構造の一例を示す図である。図2に示すように、時系列データテーブル131,132は、期間毎のイベントに関する特徴量の傾向を示す値を記憶する。各期間は、生成単位で示される。生成単位が「1分」であれば、各期間は1分である。ある期間に入力される同種類のイベントが複数個存在する場合には、複数の同種類のイベントに関する特徴量の傾向を示す値として複数の値の平均値が記憶される。一例として、生成単位が「1分」である場合には、各期間として「9時0分」,「9時01分」・・・が記憶されている。「9時0分」を示す「9時0分」以降「9時1分」未満である場合には、乗用車(平均速度)の傾向を示す値として「60」と記憶している。トラック(平均速度)の傾向を示す値として「70」と記憶している。天気(数値化)の傾向を示す値として「晴れ(0)」と記憶している。
[予測データテーブルのデータ構造]
次に、予測データテーブル132のデータ構造について、図3を参照して説明する。図3は、予測データテーブルのデータ構造の一例を示す図である。図3に示すように、予測データテーブル133は、期間毎のイベントに関する特徴量の傾向を示す予測値を記憶する。各期間は、生成単位で示される。ある期間に入力されると予測される同種類のイベントが複数個存在する場合には、複数の同種類のイベントに関する特徴量の傾向を示す値として複数の値の平均値が記憶される。一例として、生成単位が「1分」である場合には、各期間として「9時0分」,「9時1分」・・・が記憶されている。「9時0分」を示す「9時0分」以降「9時1分」未満である場合には、乗用車(平均速度)の傾向を示す予測値として「60(上限値80,下限値40)」と記憶している。トラック(平均速度)の傾向を示す予測値として「70(上限値85,下限値50)」と記憶している。天気(数値化)の傾向を示す予測値として「晴れ(0)」と記憶している。
[コンフィグファイルのデータ構造]
次に、コンフィグファイル134のデータ構造について、図4を参照して説明する。図4は、コンフィグファイルのデータ構造の一例を示す図である。図4に示すように、コンフィグファイルは、生成単位と分析単位とを対応付けて記憶する。生成単位は、イベントに対応するデータが生成される粒度を示す。分析単位は分析する期間を示す。一例として、生成単位が「1分」である場合に、分析単位として「1日」と記憶している。
[CEPシステムの具体的な処理の一例]
図5Aおよび図5Bは、実施例1に係るCEPシステムの具体的な処理の一例を示す図である。図5Aでは、分析時の処理の具体例を示し、図5Bでは、運用時のリアルタイム処理の具体例を示す。なお、コンフィグファイル134には、生成単位として「1分」、分析単位として「1日」が記憶されているとする。また、通知部144は、一例として、CEPエンジン20に対応する。入力部142および判定部143は、一例としてフィルタエンジン10に対応する。
図5Aに示すように、イベントフィルタ装置1は、過去に入力されたイベントを記憶する過去ログから定常時の状態の乗用車、トラックおよび天気予報のイベントを取り出し、時系列データテーブル(分析用)131に格納する。ここでは、時系列データテーブル(分析用)131には、コンフィグファイル134の生成単位が「1分」であるので、各期間として「9時0分」,「9時1分」・・・が記憶される。そして、2週間分が記憶されるとする。一例として、「9時0分」を示す「9時0分」以降「9時1分」未満である場合には、乗用車(平均速度)の傾向を示す値として「60」、トラック(平均速度)の傾向を示す値として「70」、天気(数値化)の傾向を示す値として「晴れ(0)」が格納される。
そして、イベントフィルタ装置1は、時系列データテーブル(分析用)131に記憶された過去の実績(時系列データ)を用いて、VARを用いた自己回帰分析をし、それぞれのイベントの時系列の予測値を算出する。そして、イベントフィルタ装置1は、算出されたそれぞれのイベントの時系列の予測値を、予測データテーブル133に格納する。ここでは、一例として、「9時0分」を示す「9時0分」以降「9時1分」未満である場合には、乗用車(平均速度)の傾向を示す予測値として「60(上限値80,下限値40)」が格納される。トラック(平均速度)の傾向を示す予測値として「70(上限値85,下限値50)」が格納される。天気(数値化)の傾向を示す予測値として「晴れ(0)」が格納される。
図5Aの例では、イベントフィルタ装置1は、過去2週間分の時系列データから、明日1日分の各イベントの予測値を算出する。そして、イベントフィルタ装置1は、予測データテーブル133に記憶されたそれぞれの予測値を、例えばcsv形式で出力する。出力された予測値は、運用時のリアルタイム処理で用いられる。
図5Bに示すように、運用時のリアルタイム処理では、イベントフィルタ装置1は、以下の処理を行う。イベントフィルタ装置1のフィルタエンジン10は、入力源から1分間に入力された複数の乗用車のイベントから乗用車のイベントに関する特徴量の傾向を示す平均速度を算出する。同様に、フィルタエンジン10は、入力源から1分間に入力された複数のトラックのイベントからトラックのイベントに関する特徴量の傾向を示す平均速度を算出する。フィルタエンジン10は、入力源から1分間に入力された複数の天気予報のイベントから天気予報のイベントに関する特徴量の傾向を示す平均の天気に対応する数値を算出する。そして、フィルタエンジン10は、算出された乗用車、トラックおよび天気予報のイベントを時系列データテーブル(リアルタイム用)132に格納する。ここでは、時系列データテーブル(分析用)131には、「9時0分」を示す「9時0分」以降「9時1分」未満であるとき、乗用車(平均速度)の傾向を示す値として「60」、トラック(平均速度)の傾向を示す値として「70」、天気(数値化)の傾向を示す値として「晴れ(0)」が格納される。「9時1分」を示す「9時1分」以降「9時2分」未満であるとき、乗用車(平均速度)の傾向を示す値として「50」、トラック(平均速度)の傾向を示す値として「40」、天気(数値化)の傾向を示す値として「雨(1)」が格納される。
並行して、フィルタエンジン10は、csv形式で出力された予測値を用いて、フィルタリングルールを生成する。ここでは、フィルタエンジン10は、例えば、乗用車イベントについて、「乗用車イベントの平均速度が予測値を超えた場合に、1分集計の乗用車イベントを生成し、CEPエンジン20に送る」というフィルタリングルールを生成する。一例として、「9時0分」を示す「9時0分」以降「9時1分」未満であるとき、フィルタエンジン10は、以下の処理を行う。すなわち、フィルタエンジン10は、フィルタリングルールの乗用車イベントの平均速度の部分にこの期間の乗用車(平均速度)「60」を代入し、予測値の部分にこの期間に対応する期間の乗用車(平均速度)の予測値を代入する。フィルタエンジン10は、代入された結果、フィルタリングルールが合致した場合には、この期間の乗用車のイベントを1分集計したイベントを、CEPエンジン20に引き渡す。すなわち、フィルタエンジン10は、予測値を逸脱したイベントを重要なイベントとしてCEPエンジン20に引き渡す。言い換えれば、フィルタエンジン10は、定常状態を逸脱したイベントをCEPエンジン20に引き渡す。フィルタエンジン10は、代入された結果、フィルタリングルールが合致しない場合には、この期間の乗用車のイベントをCEPエンジン20に引き渡さない。すなわち、フィルタエンジン10は、予測値を逸脱しないイベントをフィルタリングする。これにより、イベントフィルタ装置1は、予測値を逸脱したイベントのみCEPエンジン20に引き渡すので、CEPエンジン20の負荷を軽減できる。
CEPエンジン20は、引き渡されたイベントに関し、異常が発生した旨を、制御サーバ2に通知する。一例として、CEPエンジン20は、「乗用車に関し、9時0分から9時1分までの時間帯に異常が発生しました」旨を、制御サーバ2に通知する。なお、フィルタリングルールの条件は、「乗用車イベントの平均速度が予測値を超えた場合」に限定されず、「乗用車イベントの平均速度が予測値の下限を超えた場合」であっても良い。フィルタリングルールの条件は、定常状態がどういう場合かに依り、上記場合では定常状態が低速度の状態の場合であるので、「乗用車イベントの平均速度が予測値を超えた場合」となる。これにより、イベントフィルタ装置1は、制御サーバ2の制御を支援することが可能となる。
[予測データ生成処理の手順]
次に、図6を参照して、予測データ生成処理の手順を説明する。図6は、実施例1に係る予測データ生成処理のフローチャートを示す図である。なお、図6では、統計分析ツールとして「R」を使用する場合を説明する。また、学習期間を2週間、生成単位を1分単位、分析単位を1日とした場合を説明する。
まず、予測データ生成部141は、過去の入力イベントを教師データとして記憶した過去ログを入力し(ステップS11)、学習期間を指定する(ステップS12)。すると、予測データ生成部141は、過去ログを学習期間分時系列データに変換する(ステップS13)。一例として、予測データ生成部141は、学習期間として指定された2週間分のイベントを過去ログから取り出し、生成単位(1分単位)で、時系列の値に変換する。そして、予測データ生成部141は、変換された、2週間分のそれぞれのイベントの時系列の値を時系列データテーブル(分析用)131に格納する。
そして、予測データ生成部141は、ベクトル自己回帰分析(VAR)を行い、分析単位分の予測値を算出する。(ステップS14)。一例として、予測データ生成部141は、時系列データテーブル(分析用)131に記憶された、それぞれのイベントの時系列の値を用いて自己回帰分析し、分析単位(1日)分のそれぞれのイベントの時系列の予測値を算出する。そして、予測データ生成部141は、算出された、分析単位(1日)分のそれぞれのイベントの時系列の予測値を予測データテーブル133に格納する。
そして、予測データ生成部141は、予測データテーブル133に記憶された予測値をcsv形式でフィルタエンジン10に移出する(ステップS15)。
[イベントフィルタ処理の手順]
次に、図7を参照して、イベントフィルタ処理の手順を説明する。図7は、実施例1に係るイベントフィルタ処理のフローチャートを示す図である。なお、生成単位を1分単位、分析単位を1日とした場合を説明する。また、図7では、予測データ生成部141が、運用開始前に、予測値を移出したものとする。
すると、イベントフィルタ処理は、予測データ生成部141から移出された予測値を移入する(ステップS21)。
運用が開始されると、入力部142は、入力源からイベントを常時入力する(ステップS22)。すると、判定部143は、入力イベントを時系列データに変換する(ステップS23)。一例として、判定部143は、入力イベントを、生成単位(1分単位)で、時系列の値に変換する。そして、判定部143は、変換された、入力イベントの時系列の値を時系列データテーブル(リアルタイム用)132に格納する。
そして、判定部143は、現在の入力イベントの値が予測値の上限値、または下限値を超過したか否かを判定する(ステップS24)。例えば、判定部143は、現在の1分単位に対応する予測値を用いて、フィルタリングルールを生成し、現在の入力イベントがフィルタリングルールに合致するか否かを判定する。一例として、判定部143は、フィルタリングルールとして、「乗用車イベントの平均速度が予測値の上限値、または下限値を超えた場合に、1分集計の乗用車イベントを生成し、CEPエンジン20に送る」を生成する。そして、判定部143は、現在の入力イベントの値がフィルタリングルールの条件に合致するか否かを判定する。
予測値の上限値、または下限値を超過したと判定した場合には(ステップS24;Yes)、判定部143は、入力イベントから1分集計のイベントを生成し、生成されたイベントをCEPエンジン20に送る(ステップS25)。そして、CEPエンジン20の通知部144は、送られたイベントに関し異常が発生した旨を重要な通知として制御サーバ2に送る(ステップS26)。そして、通知部144は、次の入力イベントを判定部143に処理させるべく、ステップS23に移行する。
一方、予測値の上限値、および下限値を超過していないと判定した場合には(ステップS24;No)、判定部143は、次の入力イベントを処理すべく、ステップS23に移行する。なお、イベントフィルタ処理は、終了する旨の割り込みを受け付けると、終了する。
[実施例1の効果]
上記実施例1によれば、イベントフィルタ装置1は、過去に入力されたイベントに関する特徴量の傾向の推移に基づいて、現在イベントに関する特徴量の傾向を示す値を予測する。イベントフィルタ装置1は、入力された現在のイベントに基づいて、現在のイベントに関する特徴量の傾向を示す値を算出する。そして、イベントフィルタ装置1は、予測した値と、算出した値に基づいて、イベント処理を行うCEPエンジン20に引き渡すイベントのフィルタリングの設定を行う。かかる構成によれば、イベントフィルタ装置1は、現在イベントに関する特徴量の傾向を示す予測値と、入力された現在イベントに関する特徴量の傾向を示す値に基づいて、イベントのフィルタリングの設定を行うことで、イベントを適切にフィルタできる。この結果、イベントフィルタ装置1は、CEPエンジン20のイベント処理の負荷を軽減できる。
また、上記実施例1によれば、イベントフィルタ装置1は、過去に入力されたイベントに関する特徴量の傾向の推移に基づいて、所定期間ごとに現在イベントに関する特徴量の傾向を示す値を予測する。かかる構成によれば、イベントフィルタ装置1は、イベントに関する特徴量の傾向を示す予測値を所定期間ごとに予測することで、例えば季節や時間帯などの傾向(トレンド)により変化する値を予測することができる。この結果、イベントフィルタ装置1は、トレンドに合わせて最適なフィルタリングを設定できる。
また、上記実施例1によれば、イベントフィルタ装置1は、算出値が予測値と合致する場合に、算出値に該当するイベントをフィルタリングするルールを設定する。かかる構成によれば、イベントフィルタ装置1は、予測値を逸脱しない算出値に該当するイベントをフィルタリングすることができ、CEPエンジン20の負荷を軽減できる。
ところで、実施例1では、イベントフィルタ装置1では、フィルタエンジン10が定常状態から逸脱したイベントをCEPエンジン20に引き渡し、CEPエンジン20が引き渡されたイベントに関し、異常が発生した旨を重要通知として制御サーバ2に通知する。しかしながら、イベントフィルタ装置1では、これに限定されず、運用前の分析時に、過去の異常発生時のイベントを教師データとして異常発生時に逸脱するイベントを特定する。そして、イベントフィルタ装置1は、運用時に、フィルタリングルールの設定に加えて、特定した異常発生時に逸脱するイベントを用いて最重要イベントを選別する第2のフィルタリングルールを設定する場合であっても良い。そして、イベントフィルタ装置1は、CEPエンジン20が引き渡されたイベントの中で第2のフィルタリングルールに合致したイベントに関し、異常が発生した旨を最重要通知として制御サーバ2に通知する。
そこで、実施例2では、イベントフィルタ装置1は、運用時に、フィルタリングルールの設定に加えて、異常発生時に逸脱するイベントを用いて最重要イベントを選別する第2のフィルタリングルールを設定する場合について説明する。
[実施例2に係るCEPシステムの構成]
図8は、実施例2に係るイベントフィルタ装置を含むCEPシステムの全体構成を示す図である。なお、図1に示すCEPシステム9と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例1と実施例2とが異なるところは、制御部14に重要データ特定部201および第2判定部202を追加した点にある。実施例1と実施例2とが異なるところは、制御部14の判定部143を第1判定部143Aに名称を変更した点にある。
重要データ特定部201は、異常発生時に逸脱するイベントを特定する。例えば、重要データ特定部201は、コンフィグファイル134から生成単位を読み出す。重要データ特定部201は、過去の入力イベントの中で事故等が発生した日(異常発生日)のそれぞれの入力イベントを過去ログから取り出し、読み出した生成単位でそれぞれのイベントの時系列の値を算出する。重要データ特定部201は、この算出を、予測データ生成部141と同一の統計解析ツールを使用して行う。そして、重要データ特定部201は、算出したそれぞれのイベントの時系列の値の中で、異常発生日時分のそれぞれのイベントの値を取得する。重要データ特定部201は、取得したそれぞれのイベントの値と、異常発生日時分に対応する時分のそれぞれのイベントの予測値とを比較し、予測値から外れたイベントを抽出する。なお、重要データ特定部201は、時分のそれぞれのイベントの予測値として、第1判定部143Aによって生成される予測データテーブル133に記憶された予測値を用いれば良い。そして、重要データ特定部201は、抽出したイベントを第2判定部202に出力する。すなわち、重要データ特定部201は、異常発生日時分に逸脱するイベントを第2判定部202に出力する。
第1判定部143Aは、図1に示す判定部143と同一の動作であるので、その動作の説明については省略する。
第2判定部202は、第1判定部143Aから通知部144へ引き渡されたイベントと、重要データ特定部201によって出力された異常発生時に逸脱するイベントとを比較するフィルタリングルールを生成する。すなわち、第2判定部202は、異常発生時に逸脱するイベントを、最重要イベントを選別する判定に用いる。そして、第2判定部202は、生成されたフィルタリングルールに基づいて、引き渡されたイベントの中で異常発生時に逸脱するイベントと一致するイベントを、通知部144に引き渡す。すなわち、第2判定部202は、入力イベントが異常発生時に逸脱するイベントと一致すると判定した場合には、入力イベントを最重要イベントとして通知部144に引き渡す。なお、入力イベントと異常発生時に逸脱するイベントとの一致判定は、イベントの種類について行われても良いし、イベントの種類およびイベントの値について行われても良い。
通知部144は、第1判定部143Aから引き渡されたイベントの中で第2判定部202から引き渡されたイベントに関し、異常が発生した旨を最重要通知として制御サーバ2に通知する。通知部144は、第1判定部143Aから引き渡されたイベントの中で第2判定部202から引き渡されないイベントに関し、異常が発生した旨を重要通知として制御サーバ2に通知する。ここで、重要通知とは、異常が発生した旨の通知の中でも重要な通知のことをいう。重要通知の一例として「渋滞の可能性がある」が挙げられる。最重要通知とは、異常が発生した旨の通知の中でも最重要の通知のことをいう。最重要通知の一例として「事故が発生する可能性の確率が上がりました」が挙げられる。
[CEPシステムの具体的な処理の一例]
図9Aおよび図9Bは、実施例2に係るCEPシステムの具体的な処理の一例を示す図である。図9Aでは、分析時の処理の具体例を示し、図9Bでは、運用時のリアルタイム処理の具体例を示す。なお、コンフィグファイル134には、生成単位として「1分」、分析単位として「1日」が記憶されているとする。また、第1判定部143Aによって分析単位「1日」分の予測データテーブル133が生成されたものとする。また、通知部144および第2判定部202は、一例として、CEPエンジン20に対応する。入力部142および第1判定部143Aは、一例としてフィルタエンジン10に対応する。
図9Aに示すように、イベントフィルタ装置1は、過去に入力されたイベントを記憶する過去ログから異常発生日の乗用車、トラックおよび天気予報のイベントを取り出し、時系列データテーブル(分析用)131に格納する。イベントフィルタ装置1は、それぞれのイベントの時系列の値の中で、異常発生日時分のそれぞれのイベントの値を取得する。ここでは、一例として、異常発生日時分が、「9時1分」であるとする。すると、「9時1分」の乗用車(平均速度)の傾向を示す値として「50」、トラック(平均速度)の傾向を示す値として「80」、天気(数値化)の傾向を示す値として「吹雪(5)」が取得される。
そして、イベントフィルタ装置1は、取得したそれぞれのイベントの値と、異常発生日時分に対応する時分のそれぞれのイベントの予測値とを比較し、予測値から外れたイベントを抽出する。ここでは、異常発生日時分「9時1分」に対応する時分の乗用車(平均速度)の傾向を示す予測値は「50」、トラック(平均速度)の傾向を示す予測値は「40」、天気(数値化)の傾向を示す予測値は「雨(1)」である。すると、異常発生日時分の乗用車(平均速度)の値は、対応する時分の乗用車(平均速度)の予測値と同一であるので、予測値を逸脱していない。一方、異常発生日時分のトラック(平均速度)の値は、対応する時分のトラック(平均速度)の予測値より大きいので、予測値を逸脱している。また、異常発生日時分の天気(数値化)の値は、対応する時分の天気(数値化)の予測値より大きいので、予測値を逸脱している。そこで、イベントフィルタ装置1は、異常発生日時分「9時1分」について、予測値から外れたトラックのイベントおよび天気のイベントを抽出する。
そして、イベントフィルタ装置1は、異常発生日時分に逸脱するイベントをCEPエンジン20に出力する。ここでは、イベントフィルタ装置1は、異常発生日時分「9時1分」におけるトラックのイベントおよび天気のイベントをCEPエンジン20に出力する。このとき、イベントフィルタ装置1は、イベントそれぞれの値を付して出力しても良い。出力されたイベントは、運用時のリアルタイム処理で用いられる。
図9Bに示すように、運用時のリアルタイム処理では、イベントフィルタ装置1は、以下の処理を行う。イベントフィルタ装置1のフィルタエンジン10は、入力源から1分間に入力された複数の乗用車のイベントから乗用車のイベントに関する特徴量の傾向を示す平均速度を算出する。同様に、フィルタエンジン10は、入力源から1分間に入力された複数のトラックのイベントからトラックのイベントに関する特徴量の傾向を示す平均速度を算出する。フィルタエンジン10は、入力源から1分間に入力された複数の天気予報のイベントから天気予報のイベントに関する特徴量の傾向を示す平均の天気に対応する数値を算出する。そして、フィルタエンジン10は、算出された乗用車、トラックおよび天気予報のイベントを時系列データテーブル(リアルタイム用)132に格納する。
並行して、フィルタエンジン10は、予測データテーブル133に記憶された予測値を用いて、フィルタリングルールを生成する。ここでは、フィルタエンジン10は、例えば、トラックイベントについて、「トラックイベントの平均速度が予測値を超えた場合に、1分集計のトラックイベントを生成し、CEPエンジン20に送る」というフィルタリングルールを生成する。一例として、「9時0分」を示す「9時0分」以降「9時1分」未満であるとき、フィルタエンジン10は、以下の処理を行う。すなわち、フィルタエンジン10は、フィルタリングルールのトラックイベントの平均速度の部分にこの期間のトラック(平均速度)「70」を代入し、予測値の部分にこの期間に対応する期間のトラック(平均速度)の予測値を代入する。フィルタエンジン10は、代入された結果、フィルタリングルールが合致した場合には、この期間のトラックのイベントを1分集計したイベントを、CEPエンジン20に引き渡す。すなわち、フィルタエンジン10は、予測値を逸脱したイベントを重要なイベントとしてCEPエンジン20に引き渡す。言い換えれば、フィルタエンジン10は、定常状態を逸脱したイベントをCEPエンジン20に引き渡す。フィルタエンジン10は、代入された結果、フィルタリングルールが合致しない場合には、この期間のトラックのイベントをCEPエンジン20に引き渡さない。
そして、CEPエンジン20は、出力されたイベントと引き渡されたイベントとを比較するフィルタリングルールを生成する。ここでは、CEPエンジン20は、例えば、引き渡されたイベントが、出力されたトラックのイベントまたは出力された天気のイベントと一致するか否かを判定するフィルタリングルールを生成する。そして、CEPエンジン20は、引き渡されたイベントが、出力されたトラックのイベントまたは出力された天気のイベントと一致すると判定した場合には、異常が発生した旨を最重要通知として制御サーバ2に通知する。すなわち、CEPエンジン20は、引き渡されたイベントが異常発生時に逸脱するイベントと同じであった場合には、異常を発生する可能性があるので、最重要イベントとして通知する。一例として、CEPエンジン20は、「事故が発生する可能性の確率が上がりました」旨を、制御サーバ2に通知する。CEPエンジン20は、引き渡されたイベントが、出力されたトラックのイベントおよび出力された天気のイベントと一致しないと判定した場合には、異常が発生した旨を重要通知として制御サーバ2に通知する。一例として、CEPエンジン20は、「渋滞の可能性がある」旨を、制御サーバ2に通知する。これにより、イベントフィルタ装置1は、異常発生時のイベントを通知の判定に用いることで、このイベントと同じイベントが入力された場合に最重要通知を制御サーバ2に送信することができ、制御サーバ2の制御を支援することができる。
[予測データ生成処理の手順]
次に、図10を参照して、予測データ生成処理の手順を説明する。図10は、実施例2に係る予測データ生成処理のフローチャートを示す図である。なお、図10では、統計分析ツールとして「R」を使用する場合を説明する。また、学習期間を2週間、生成単位を1分単位、分析単位を1日とした場合を説明する。
まず、予測データ生成部141は、過去の入力イベントを教師データとして記憶した過去ログを入力し(ステップS31)、学習期間を指定する(ステップS32)。すると、予測データ生成部141は、過去ログを学習期間分時系列データに変換する(ステップS33)。一例として、予測データ生成部141は、学習期間として指定された2週間分のイベントを過去ログから取り出し、生成単位(1分単位)で、時系列の値に変換する。そして、予測データ生成部141は、変換された、2週間分のそれぞれのイベントの時系列の値を時系列データテーブル(分析用)131に格納する。
そして、予測データ生成部141は、ベクトル自己回帰分析(VAR)を行い、分析単位分の予測値を算出する。(ステップS34)。一例として、予測データ生成部141は、時系列データテーブル(分析用)131に記憶された、それぞれのイベントの時系列の値を用いて自己回帰分析し、分析単位(1日)分のそれぞれのイベントの時系列の予測値を算出する。そして、予測データ生成部141は、算出された、分析単位(1日)分のそれぞれのイベントの時系列の予測値を予測データテーブル133に格納する。
そして、予測データ生成部141は、予測データテーブル133に記憶された予測値をcsv形式でフィルタエンジン10に移出する(ステップS35)。
続いて、重要データ特定部201は、異常発生日の教師データが有るか否かを判定する(ステップS36)。異常発生日の教師データがないと判定した場合には(ステップS36;No)、重要データ特定部201は、重要データを特定しないで、予測データ生成処理を終了する。
一方、異常発生日の教師データが有ると判定した場合には(ステップS36;Yes)、重要データ特定部201は、当該異常発生日の教師データを入力する(ステップS37)。重要データ特定部201は、入力された教師データを時系列データに変換する(ステップS38)。一例として、重要データ特定部201は、異常発生日の教師データのイベントを過去ログから取り出し、生成単位(1分単位)で、時系列のデータ値に変換する。
そして、重要データ特定部201は、異常発生時のデータ値と予測値とを比較する(ステップS39)。重要データ特定部201は、異常発生時のデータ値が予測値の上限値、または下限値を逸脱したか否かを判定する(ステップS40)。異常発生時のデータ値が予測値の上限値、および下限値を逸脱していないと判定した場合には(ステップS40;No)、重要データ特定部201は、重要データ特定部201は、予測データ生成処理を終了する。
一方、異常発生時のデータ値が予測値の上限値、または下限値を逸脱したと判定した場合には(ステップS40;Yes)、重要データ特定部201は、逸脱したデータ値のイベントをcsv形式でCEPエンジン20に出力する(ステップS41)。そして、重要データ特定部201は、予測データ生成処理を終了する。
[イベントフィルタ処理の手順]
次に、図11を参照して、イベントフィルタ処理の手順を説明する。図11は、実施例2に係るイベントフィルタ処理のフローチャートを示す図である。なお、生成単位を1分単位、分析単位を1日とした場合を説明する。また、図11では、予測データ生成部141が、運用開始前に、予測値を移出したものとする。重要データ特定部201が、運用開始前に、異常発生時に逸脱したイベントを出力したものとする。
すると、イベントフィルタ処理は、予測データ生成部141から移出された予測値を移入する(ステップS51)。イベントフィルタ処理は、重要データ特定部201から出力された逸脱したイベントを移入する(ステップS52)。
運用が開始されると、入力部142は、入力源からイベントを常時入力する(ステップS53)。すると、第1判定部143Aは、入力イベントを時系列データに変換する(ステップS54)。一例として、第1判定部143Aは、入力イベントを、生成単位(1分単位)で、時系列の値に変換する。そして、第1判定部143Aは、変換された、入力イベントの時系列の値を時系列データテーブル(リアルタイム用)132に格納する。
そして、第1判定部143Aは、現在の入力イベントの値が予測値の上限値、または下限値を超過したか否かを判定する(ステップS55)。例えば、第1判定部143Aは、現在の1分単位に対応する予測値を用いて、フィルタリングルールを生成し、現在の入力イベントがフィルタリングルールに合致するか否かを判定する。一例として、第1判定部143Aは、フィルタリングルールとして、「トラックイベントの平均速度が予測値の上限値、または下限値を超えた場合に、1分集計のトラックイベントを生成し、CEPエンジン20に送る」を生成する。そして、第1判定部143Aは、現在の入力イベントの値がフィルタリングルールの条件に合致するか否かを判定する。
予測値の上限値、および下限値を超過していないと判定した場合には(ステップS55;No)、第1判定部143Aは、次の入力イベントを処理すべく、ステップS54に移行する。
一方、予測値の上限値、または下限値を超過したと判定した場合には(ステップS55;Yes)、第1判定部143Aは、入力イベントから1分集計のイベントを生成し、生成されたイベントをCEPエンジン20に送る(ステップS56)。そして、第1判定部143Aは、ステップS57に移行する。
ステップS57において、CEPエンジン20の第2判定部202は、送られたイベントが移入された異常発生時の逸脱イベントに一致するか否かを判定する(ステップS57)。なお、送られたイベントと逸脱イベントとの一致判定は、イベントの種類について行われても良いし、イベントの種類およびイベントの値について行われても良い。
異常発生時の逸脱イベントに一致すると判定した場合には(ステップS57;Yes)、通知部144は、送られたイベントに関し、異常が発生した旨を最重要通知として制御サーバ2に送信する(ステップS58)。そして、通知部144は、次の入力イベントを第1判定部143Aに処理させるべく、ステップS54に移行する。
一方、異常発生時の逸脱イベントに一致しないと判定した場合には(ステップS57;No)、通知部144は、送られたイベントに関し、異常が発生した旨を重要通知として制御サーバ2に送信する(ステップS59)。そして、通知部144は、次の入力イベントを第1判定部143Aに処理させるべく、ステップS54に移行する。なお、イベントフィルタ処理は、終了する旨の割り込みを受け付けると、終了する。
[実施例2の効果]
上記実施例2によれば、イベントフィルタ装置1は、予め記憶された異常発生時に逸脱するイベントに基づき、フィルタエンジン10から引き渡されたイベントが異常と判定された場合に、判定結果を最重要通知として制御サーバ2に通知する。かかる構成によれば、イベントフィルタ装置1は、異常発生時に逸脱するイベントを、最重要イベントを選別する判定に用いることで、判定結果を最重要通知として制御サーバ2に通知することができる。この結果、イベントフィルタ装置1は、制御サーバ2の制御を支援することができる。
ところで、実施例1では、イベントフィルタ装置1では、フィルタエンジン10が定常状態から逸脱したイベントをCEPエンジン20に引き渡し、CEPエンジン20が引き渡されたイベントに関し、異常が発生した旨を重要通知として制御サーバ2に通知する。実施例2では、イベントフィルタ装置1では、異常発生時に逸脱するイベントをCEPエンジン20に移入しておき、CEPエンジン20が異常発生時に逸脱するイベントを、最重要イベントを選別する判定に用い、判定結果を最重要通知として制御サーバ2に通知する。しかしながら、イベントフィルタ装置1では、これに限定されず、CEPエンジン20が異常発生時に逸脱するイベントを、最重要イベントを選別する判定に用い、判定結果をイベント処理に利用する場合であっても良い。
そこで、実施例3では、イベントフィルタ装置1は、CEPエンジン20が異常発生時に逸脱するイベントを、最重要イベントを選別する判定に用い、判定結果をイベント処理に利用する場合について説明する。
[実施例3に係るCEPシステムの構成]
図12は、実施例3に係るイベントフィルタ装置を含むCEPシステムの全体構成を示す図である。なお、図8に示すCEPシステム9と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例2と実施例3とが異なるところは、制御部14にイベント処理部203を追加した点にある。
イベント処理部203は、入力イベントと異常発生時に逸脱するイベントとの一致判定の判定結果を、イベント処理に利用する処理部である。かかる判定結果は、第2判定部202によって生成される。例えば、イベント処理部203は、入力イベントが異常発生時に逸脱するイベントと一致する一致結果をイベント処理に利用する。また、イベント処理部203は、入力イベントが異常発生時に逸脱するイベントと一致しない不一致結果をイベント処理に利用する。また、イベント処理部203は、入力イベントが異常発生時に逸脱するイベントと一致する回数をカウントし、一致する判定結果の場合には、一致する回数に1を加算する。そして、イベント処理部203は、一致する回数の累計値を制御サーバ2に通知する。通知するタイミングは、定期的または不定期であれば良く、予め定められたタイミングであれば良い。
[CEPシステムの具体的な処理の一例]
図13は、実施例3に係るCEPシステムの具体的な処理の一例を示す図である。図13は、運用時のリアルタイム処理の具体例である。なお、コンフィグファイル134には、生成単位として「1分」、分析単位として「1日」が記憶されているとする。また、第1判定部143Aによって分析単位「1日」分の予測データテーブル133が生成されたものとする。また、CEPエンジン20には、重要データ特定部201によって特定された異常発生時に逸脱するイベントが受け取られたものとする。かかる異常発生時に逸脱するイベントは、トラックのイベント,天気のイベントであるとする。なお、入力部142および第1判定部143Aは、一例として、フィルタエンジン10に対応する。通知部144、第2判定部202およびイベント処理部203は、一例として、CEPエンジン20に対応する。
図13に示すように、運用時にリアルタイム処理では、イベントフィルタ装置1のフィルタエンジン10は、生成単位としての1分毎に、予測データテーブル133に記憶された予測値を用いて、フィルタリングルールを生成する。そして、フィルタエンジン10は、入力イベントが、生成されたフィルタリングルールに合致するか否かを判定する。フィルタエンジン10は、入力イベントが、生成されたフィルタリングルールに合致した場合には、入力イベントを1分集計したイベントを、CEPエンジン20に引き渡す。すなわち、フィルタエンジン10は、予測値を逸脱したイベントを重要なイベントとしてCEPエンジン20に引き渡す。言い換えれば、フィルタエンジン10は、定常状態を逸脱したイベントをCEPエンジン20に引き渡す。
そして、CEPエンジン20は、異常発生時に逸脱するイベントと引き渡されたイベントとを比較するフィルタリングルールを生成する。ここでは、CEPエンジン20は、例えば、引き渡されたイベントが、トラックのイベントまたは天気のイベントと一致するか否かを判定するフィルタリングルールを生成する。そして、CEPエンジン20は、引き渡されたイベントが、トラックのイベントまたは天気のイベントと一致すると判定した場合には、一致結果をイベント処理に利用する。CEPエンジン20は、引き渡されたイベントが、トラックのイベントまたは天気のイベントと一致しないと判定した場合には、不一致結果をイベント処理に利用する。そして、CEPエンジン20は、引き渡されたイベントが、トラックのイベントまたは天気のイベントと一致すると判定した場合には、一致する回数に1を加算する。なお、CEPエンジン20は、一致する回数に1を加算する条件をさらに追加しても良い。一例として、引き渡されたイベントの「(発生)時刻が9:00〜12:00の間」という条件をさらに追加しても良い。
そして、CEPエンジン20は、一致回数の累計値を制御サーバ2に通知する。制御サーバ2は、通知された一致回数の累計値を統計情報として利用できる。
[イベントフィルタ処理の手順]
次に、図14を参照して、イベントフィルタ処理の手順を説明する。図14は、実施例3に係るイベントフィルタ処理のフローチャートを示す図である。なお、生成単位を1分単位、分析単位を1日とした場合を説明する。また、図14では、予測データ生成部141が、運用開始前に、予測値を移出したものとする。重要データ特定部201が、運用開始前に、異常発生時に逸脱したイベントを出力したものとする。
すると、イベントフィルタ処理は、予測データ生成部141から移出された予測値を移入する(ステップS61)。イベントフィルタ処理は、重要データ特定部201から出力された逸脱したイベントを移入する(ステップS62)。
運用が開始されると、入力部142は、入力源からイベントを常時入力する(ステップS63)。すると、第1判定部143Aは、入力イベントを時系列データに変換する(ステップS64)。一例として、第1判定部143Aは、入力イベントを、生成単位(1分単位)で、時系列の値に変換する。そして、第1判定部143Aは、変換された、入力イベントの時系列の値を時系列データテーブル(リアルタイム用)132に格納する。
そして、第1判定部143Aは、現在の入力イベントの値が予測値の上限値、または下限値を超過したか否かを判定する(ステップS65)。例えば、第1判定部143Aは、現在の1分単位に対応する予測値を用いて、フィルタリングルールを生成し、現在の入力イベントがフィルタリングルールに合致するか否かを判定する。一例として、第1判定部143Aは、フィルタリングルールとして、「トラックイベントの平均速度が予測値の上限値、または下限値を超えた場合に、1分集計のトラックイベントを生成し、CEPエンジン20に送る」を生成する。そして、第1判定部143Aは、現在の入力イベントの値がフィルタリングルールの条件に合致するか否かを判定する。
予測値の上限値、および下限値を超過していないと判定した場合には(ステップS65;No)、第1判定部143Aは、次の入力イベントを処理すべく、ステップS64に移行する。
一方、予測値の上限値、または下限値を超過したと判定した場合には(ステップS65;Yes)、第1判定部143Aは、入力イベントから1分集計のイベントを生成し、生成されたイベントをCEPエンジン20に送る(ステップS66)。そして、第1判定部143Aは、ステップS67に移行する。
ステップS67において、CEPエンジン20のイベント処理部203は、送られたイベントが異常発生時の逸脱イベントに一致し、かつ、送られたイベントの発生時刻が9:00〜12:00の間であるか否かを判定する(ステップS67)。送られたイベントが異常発生時の逸脱イベントに一致し、かつ、送られたイベントの発生時刻が9:00〜1
2:00の間であると判定した場合には(ステップS67;Yes)、イベント処理部203は、一致回数をカウントする(ステップS68)。そして、イベント処理部203は、次の入力イベントを処理すべく、ステップS64に移行する。
一方、送られたイベントが異常発生時の逸脱イベントに一致しない、または、送られたイベントの発生時刻が9:00〜12:00の間でないと判定した場合には(ステップS67;No)、イベント処理部203は、一致回数をカウントしない。そして、イベント処理部203は、次の入力イベントを処理すべく、ステップS64に移行する。
なお、通知部144は、所定のタイミングで一致回数の累計値を制御サーバ2に通知する。また、イベントフィルタ処理は、終了する旨の割り込みを受け付けると、終了する。
[実施例3の効果]
上記実施例3によれば、イベントフィルタ装置1は、予め記憶された異常発生時に逸脱するイベントに基づき、フィルタエンジン10から引き渡されたイベントが異常か否かを判定し、判定結果をイベント処理に利用する。かかる構成によれば、イベントフィルタ装置1は、異常発生時に逸脱するイベントを、最重要イベントを選別する判定に用い、判定結果をイベント処理に利用することで、複合的なイベント処理を実現できる。
ところで、実施例1−3では、CEPシステム9を自動車の渋滞発生の予測に用いる場合を説明した。しかしながら、CEPシステム9は、これに限定されず、別の用途に用いる場合であっても良い。例えば、CEPシステム9を工場内の生産ラインの管理システムに用いる場合であっても良い。
そこで、実施例4では、CEPシステム9を工場内の生産ラインの管理に用いる場合について説明する。
[CEPシステムの具体的な処理の一例]
図15Aおよび図15Bは、実施例4に係るCEPシステムの具体的な処理の一例を示す図である。図15Aおよび図15Bでは、イベントフィルタ装置1は、工場内のラインA、ラインBおよびラインCから大量のイベントを入力する場合とする。図15Aでは、分析時の処理の具体例を示し、図15Bでは、運用時のリアルタイム処理の具体例を示す。なお、コンフィグファイル134には、生成単位として「1分」、分析単位として「1日」が記憶されているとする。また、第1判定部143Aによって分析単位「1日」分の予測データテーブル133が生成されたものとする。
図15Aに示すように、イベントフィルタ装置1は、過去ログから異常発生日のラインA、ラインBおよびラインCのイベントを取り出し、時系列データテーブル(分析用)131に格納する。イベントフィルタ装置1は、それぞれのイベントの時系列の値の中で、異常発生日時分のそれぞれのイベントの値を取得する。ここでは、一例として、異常発生日時分が、「9時1分」であるとする。すると、「9時1分」のラインA(平均処理速度)の傾向を示す値は「50」、ラインB(平均処理速度)の傾向を示す値は「80」、ラインC(平均処理速度)の傾向を示す値は「5」が取得される。
そして、イベントフィルタ装置1は、取得したそれぞれのイベントの値と、異常発生日時分に対応する時分のそれぞれのイベントの予測値とを比較し、予測値から外れたイベントを抽出する。ここでは、異常発生日時分「9時1分」に対応する時分のラインA(平均処理速度)の傾向を示す予測値は「50」、ラインB(平均処理速度)の傾向を示す予測値は「40」、ラインC(平均処理速度)の傾向を示す予測値は「10」である。すると、異常発生日時分のラインA(平均処理速度)の値は、対応する時分のラインA(平均処理速度)の予測値と同一であるので、予測値を逸脱していない。一方、異常発生日時分のラインB(平均処理速度)の値は、対応する時分のラインB(平均処理速度)の予測値より大きいので、予測値を逸脱している。また、異常発生日時分のラインC(平均処理速度)の値は、対応する時分のラインC(平均処理速度)の予測値より小さいので、予測値を逸脱している。そこで、イベントフィルタ装置1は、異常発生日時分「9時1分」について、予測値から外れたラインBのイベントおよびラインCのイベントを抽出する。
そして、イベントフィルタ装置1は、異常発生日時分に逸脱するイベントをCEPエンジン20に出力する。ここでは、イベントフィルタ装置1は、異常発生日時分「9時1分」におけるラインBのイベントおよびラインCのイベントがCEPエンジン20を出力する。このとき、イベントフィルタ装置1は、イベントそれぞれの値を付して出力しても良い。出力されたイベントは、運用時のリアルタイム処理で用いられる。
図15Bに示すように、運用時のリアルタイム処理では、イベントフィルタ装置1は、以下の処理を行う。イベントフィルタ装置1のフィルタエンジン10は、入力源から1分間に入力された複数のラインAのイベントからラインAのイベントに関する特徴量の傾向を示す平均処理速度を算出する。同様に、フィルタエンジン10は、入力源から1分間に入力された複数のラインBのイベントからラインBのイベントに関する特徴量の傾向を示す平均処理速度を算出する。フィルタエンジン10は、入力源から1分間に入力された複数のラインCのイベントからラインCのイベントに関する特徴量の傾向を示す平均処理速度を算出する。そして、フィルタエンジン10は、算出されたラインA、ラインBおよびラインCのイベントを時系列データテーブル(リアルタイム用)132に格納する。
並行して、フィルタエンジン10は、予測データテーブル133に記憶された予測値を用いて、フィルタリングルールを生成する。ここでは、フィルタエンジン10は、例えば、ラインAイベントについて、「ラインAイベントの平均処理速度が予測値を超えた場合に、1分集計のラインAイベントを生成し、CEPエンジン20に送る」というフィルタリングルールを生成する。一例として、「9時0分」を示す「9時0分」以降「9時1分」未満であるとき、フィルタエンジン10は、以下の処理を行う。すなわち、フィルタエンジン10は、フィルタリングルールのラインAイベントの平均速度の部分にこの期間のラインA(平均処理速度)「60」を代入し、予測値の部分にこの期間に対応する期間のラインA(平均処理速度)の予測値を代入する。フィルタエンジン10は、代入された結果、フィルタリングルールが合致した場合には、この期間のラインAのイベントを1分集計したイベントを、CEPエンジン20に引き渡す。すなわち、フィルタエンジン10は、予測値を逸脱したイベントを重要なイベントとしてCEPエンジン20に引き渡す。言い換えれば、フィルタエンジン10は、定常状態を逸脱したイベントをCEPエンジン20に引き渡す。フィルタエンジン10は、代入された結果、フィルタリングルールが合致しない場合には、この期間のラインAのイベントをCEPエンジン20に引き渡さない。
そして、CEPエンジン20は、出力されたイベントと引き渡されたイベントとを比較するフィルタリングルールを生成する。ここでは、CEPエンジン20は、例えば、引き渡されたイベントが、出力されたラインBのイベントまたは出力されたラインCのイベントと一致するか否かを判定するフィルタリングルールを生成する。そして、CEPエンジン20は、引き渡されたイベントが、出力されたラインBのイベントまたは出力されたラインCのイベントと一致すると判定した場合には、異常が発生した旨を最重要通知として制御サーバ2に通知する。すなわち、CEPエンジン20は、引き渡されたイベントが異常発生時に逸脱するイベントと同じであった場合には、異常を発生する可能性があるので、最重要イベントとして通知する。一例として、CEPエンジン20は、「事故が発生する可能性の確率が上がりました」旨を、制御サーバ2に通知する。CEPエンジン20は、引き渡されたイベントが、出力されたラインBのイベントおよび出力されたラインCのイベントと一致しないと判定した場合には、異常が発生した旨を重要通知として制御サーバ2に通知する。一例として、CEPエンジン20は、「異常の可能性がある」旨を、制御サーバ2に通知する。
このようにして、CEPシステム9を工場内の生産ラインの管理に用いる場合であっても、イベントフィルタ装置1は、以下の効果を有する。すなわち、イベントフィルタ装置1は、異常発生時のイベントを通知の判定に用いることで、このイベントと同じイベントが入力された場合に最重要通知を制御サーバ2に送信することができ、制御サーバ2の制御を支援することができる。
[プログラムなど]
なお、上記実施例では、CEPシステム9を自動車の渋滞発生の予測に用いる場合や、CEPシステム9を工場内の生産ラインの管理に用いる場合について説明した。しかしながら、CEPシステム9は、これに限定されず、別の用途に用いる場合であっても良い。
また、上記実施例では、イベントフィルタ装置1は、生成単位を1分、分析単位を1日の場合について説明した。しかしながら、イベントフィルタ装置1は、これに限定されず、生成単位を10分、分析単位を1週間としても良い。生成単位を1時間、分析単位を1ヶ月としても良い。すなわち、生成単位および分析単位は、コンフィグファイル134に定義しておけば良く、必要に応じて変更されれば良い。
また、イベントフィルタ装置1は、既知のパーソナルコンピュータ、ワークステーションなどの情報処理装置に、上記した制御部14および記憶部13などの各機能を搭載することによって実現することができる。
また、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、第2の判定部202と通知部144とを1個の処理部として統合しても良い。一方、判定部143および第1判定部143Aを、予測値を用いてフィルタリングを生成する生成部と、フィルタリングを用いて現在のイベントを判定する判定部とに分散しても良い。また、時系列データテーブル131,132、予測データテーブル133、コンフィグファイル134などをイベントフィルタ装置1の外部装置としてネットワーク経由で接続するようにしても良い。
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図1、8、12に示したイベントフィルタ装置1と同様の機能を実現するイベントフィルタプログラムを実行するコンピュータの一例を説明する。図16は、イベントフィルタプログラムを実行するコンピュータの一例を示す図である。
図16に示すように、コンピュータ200は、各種演算処理を実行するCPU203と、ユーザからのデータの入力を受け付ける入力装置215と、表示装置209を制御する表示制御部207とを有する。また、コンピュータ200は、記憶媒体からプログラムなどを読取るドライブ装置213と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部217とを有する。また、コンピュータ200は、各種情報を一時記憶するメモリ201と、HDD205を有する。そして、メモリ201、CPU203、HDD205、表示制御部207、ドライブ装置213、入力装置215、通信制御部217は、バス219で接続されている。
ドライブ装置213は、例えばリムーバブルディスク211用の装置である。HDD205は、イベントフィルタプログラム205aおよびイベントフィルタ処理関連情報205bを記憶する。
CPU203は、イベントフィルタプログラム205aを読み出して、メモリ201に展開し、プロセスとして実行する。かかるプロセスは、イベントフィルタ装置1の各機能部に対応する。イベントフィルタ処理関連情報205bは、時系列データテーブル131,132、予測データテーブル133およびコンフィグファイル134に対応する。そして、例えばリムーバブルディスク211が、イベントフィルタプログラム205aなどの各情報を記憶する。
なお、イベントフィルタプログラム205aについては、必ずしも最初からHDD205に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ200がこれらからイベントフィルタプログラム205aを読み出して実行するようにしても良い。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
過去に入力されたイベントに関する特徴量の傾向の推移に基づいて、現在イベントに関する特徴量の傾向を示す値を予測し、
入力された現在のイベントに基づいて、現在のイベントに関する特徴量の傾向を示す値を算出し、
予測した前記値と、算出した前記値に基づいて、イベント処理を行う処理部に引き渡すイベントのフィルタリングの設定を行う、
処理を実行させることを特徴とするイベントフィルタプログラム。
(付記2)前記予測する処理は、過去に入力されたイベントに関する特徴量の傾向の推移に基づいて、時系列に現在イベントに関する特徴量の傾向を示す値を予測する
処理を実行させることを特徴とする付記1に記載のイベントフィルタプログラム。
(付記3)前記設定を行う処理は、算出した前記値が予測した前記値と合致する場合に、算出した前記値に該当するイベントをフィルタリングするルールを設定する
処理を実行させることを特徴とする付記1または付記2に記載のイベントフィルタプログラム。
(付記4)予め記憶された異常発生時に逸脱するイベントに基づき、前記処理部に引き渡されたイベントが異常であるか否かを判定し、異常であると判定された場合に、異常である旨の判定結果を通知する
処理を実行させることを特徴とする付記1から付記3のいずれか1つに記載のイベントフィルタプログラム。
(付記5)前記通知する処理は、前記判定結果を前記イベント処理に利用する
処理を実行させることを特徴とする付記4に記載のイベントフィルタプログラム。
(付記6)過去に入力されたイベントに関する特徴量の傾向の推移に基づいて、現在イベントに関する特徴量の傾向を示す値を予測する予測部と、
入力された現在のイベントに基づいて、現在のイベントに関する特徴量の傾向を示す値を算出する算出部と、
前記予測部によって予測された値と、前記算出部によって算出された値に基づいて、イベント処理を行う処理部に引き渡すイベントのフィルタリングの設定を行う設定部と、
を有することを特徴とするイベントフィルタ装置。
(付記7)コンピュータが、
過去に入力されたイベントに関する特徴量の傾向の推移に基づいて、現在イベントに関する特徴量の傾向を示す値を予測し、
入力された現在のイベントに基づいて、現在のイベントに関する特徴量の傾向を示す値を算出し、
予測した前記値と、算出した前記値に基づいて、イベント処理を行う処理部に引き渡すイベントのフィルタリングの設定を行う、
処理を実行することを特徴とするイベントフィルタ方法。