JPWO2018083729A1 - ステートチャート実行装置 - Google Patents

ステートチャート実行装置 Download PDF

Info

Publication number
JPWO2018083729A1
JPWO2018083729A1 JP2018548479A JP2018548479A JPWO2018083729A1 JP WO2018083729 A1 JPWO2018083729 A1 JP WO2018083729A1 JP 2018548479 A JP2018548479 A JP 2018548479A JP 2018548479 A JP2018548479 A JP 2018548479A JP WO2018083729 A1 JPWO2018083729 A1 JP WO2018083729A1
Authority
JP
Japan
Prior art keywords
data
state
unit
state chart
transition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018548479A
Other languages
English (en)
Other versions
JP6486572B2 (ja
Inventor
進也 田口
進也 田口
克希 小林
克希 小林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2018083729A1 publication Critical patent/JPWO2018083729A1/ja
Application granted granted Critical
Publication of JP6486572B2 publication Critical patent/JP6486572B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4498Finite state machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • User Interface Of Digital Computer (AREA)
  • Devices For Executing Special Programs (AREA)
  • Navigation (AREA)

Abstract

関連度計算部(12)は、ステートチャートを構成するデータ間の関連度を計算する個別データバイナリ化部(13)は、ステートチャートを構成するデータをバイナリ化する。最適配列計算部(14)は、関連度計算部(12)が計算した関連度に基づき、ステートチャートを構成するデータの配列を計算する。オフセット設定部(15)は、個別データバイナリ化部(13)がバイナリ化したデータを最適配列計算部(14)が計算した配列で並べた場合の位置を示すオフセットを設定する。バイナリデータ統合部(16)は、個別データバイナリ化部(13)がバイナリ化しオフセット設定部(15)がオフセットを設定したデータを、最適配列計算部(14)が計算した配列で統合してバイナリデータ(104)にする。ステートチャート実行部(20)は、バイナリデータ(104)に基づいてステートチャートの処理を実行する。

Description

この発明は、ステートチャートのデータを生成し実行するステートチャート実行装置に関するものである。
近年、タッチパネル、音声認識、または空間ジェスチャ認識などのユーザインタフェースデバイスが実用化されている。さらに、カーナビゲーションシステムに代表されるように、これらのユーザインタフェースデバイスを複数組み合わせたマルチモーダルアプリケーションが開発されている。従来、複数のユーザインタフェースデバイスを効率的に結合するマルチモーダルインタフェースの設計方式の1つとして、ステートチャート(または、ステートマシン)が広く活用されている。
例えば非特許文献1では、ステートチャートのXML(Extensible Markup Language)記述方式であるState Chart XML(SCXML)について記載されている。また、非特許文献2では、Unified Modelig Language(UML)におけるステートチャートの作画ルールが記載されている。
また、従来、設計したステートチャートをプログラムとして効率的に実行する様々な方式が提案されている。例えば特許文献1には、テーブルで表現されたステートチャートを実行する方式について、および、ステートチャートを実行した結果に基づいて状態遷移の優先順位を決めることについて、記載されている。また、特許文献2では、連想配列を利用して動的にステートチャートを実行する方式が記載されている。
特開平11−24907号公報 米国特許出願公開第20130138593号明細書
"State Chart XML(SCXML):State Machine Notation for Control Abstraction",[Online],World Wide Web Consortium,インターネット<URL:https://www.w3.org/TR/scxml/> "Unified Modeling Language(UML) Version 2.5",[Online],Object Management Group,インターネット<URL:http://www.omg.org/spec/UML/2.5/>
従来の方式において、階層構造を持ち、かつ膨大なステート数を持つステートチャートをコンピュータ上で実行するにあたり、ステートチャートのデータ構造が最適化されていないために実行速度が低下するという課題があった。
例えば、特許文献1では、テーブルで表現されたステートチャートを実行したときの状態毎の状態遷移履歴およびイベント毎のイベント成立履歴に基づき、ステートチャートの状態毎に、他の状態への遷移順序とイベントの成立順序とを決定する方式について記載されている。しかし、遷移順序および成立順序を利用して、データをコンピュータのメモリ上にどのように最適に配置するかについては記載されていない。また、テーブル型のステートチャートについて記載があるのみで、平行状態および階層状態を持つステートチャートにおいて遷移先の優先度を決めて最適に実行する方法について記載がない。
また、特許文献2では、ステート名の文字列からステートデータのメモリ上の位置を特定するために、ステートチャートのデータを動的なツリー(木)構造として保持することが記載されている。しかし、動的にツリーを構成した場合、ステート数が膨大になると、関連性のあるステートデータがメモリ上の離れた位置に配置されることでキャッシュヒット率が低下し、ステートチャートの実行処理が低速になる可能性がある。また、状態遷移の処理において2分木によるステートデータの探索処理が少なからず必要であるため、ステート数が増えると処理時間が長くなる。
この発明は、上記のような課題を解決するためになされたもので、ステートチャートを高速に実行することを目的とする。
この発明に係るステートチャート実行装置は、状態の遷移を表現したステートチャートに関するステートチャート情報をバイナリデータにするバイナリデータ生成部と、バイナリデータに基づいてステートチャートの処理を実行するステートチャート実行部とを備え、バイナリデータ生成部は、ステートチャート情報を読み込み、ステートチャートを構成するデータを生成するステートチャート情報読み込み部と、ステートチャートを構成するデータ間の関連度を計算する関連度計算部と、ステートチャートを構成するデータをバイナリ化する個別データバイナリ化部と、関連度計算部が計算した関連度に基づき、ステートチャートを構成するデータの配列を計算する最適配列計算部と、個別データバイナリ化部がバイナリ化したデータを最適配列計算部が計算した配列で並べた場合の位置を示すオフセットを設定するオフセット設定部と、個別データバイナリ化部がバイナリ化しオフセット設定部がオフセットを設定したデータを、最適配列計算部が計算した配列で統合してバイナリデータにするバイナリデータ統合部とを有するものである。
この発明によれば、ステートチャートを構成するデータ間の関連度に基づいてデータの配列を計算し、オフセットを設定したバイナリデータを生成することにより、このバイナリデータに基づいてステートチャートを高速に実行することができる。
この発明の実施の形態1に係るステートチャート実行装置の構成例を示すブロック図である。 この発明の実施の形態1に係るステートチャート実行装置の動作例を示すフローチャートである。 図3Aは、この発明の実施の形態1におけるステートチャートの一例を示す図であり、図3Bは、図3Aのステートチャートを記述したステートチャート情報を示す図である。 図3Aに示すステートチャートから得られる関連度の表である。 この発明の実施の形態1におけるステートチャートの別の例を示す図である。 図5に示すステートチャートから得られる関連度の表である。 この発明の実施の形態1におけるステートチャートの別の例を示す図である。 図7に示すステートチャートから得られる関連度の表である。 この発明の実施の形態1におけるステートチャートの別の例を示す図である。 図9に示すステートチャートから得られる関連度の表である。 この発明の実施の形態1におけるステートチャートの修正頻度を示すグラフである。 この発明の実施の形態1に係るステートチャート実行装置の個別データバイナリ化部が行う動作を説明する図である。 図13A、図13Bおよび図13Cは、図3Bのステートチャート情報に含まれる個々の情報を示す図である。 この発明の実施の形態1に係るステートチャート実行装置の最適配列計算部が行う動作を説明する図である。 この発明の実施の形態1に係るステートチャート実行装置のオフセット設定部が行う動作の一例を説明する図である。 この発明の実施の形態1に係るステートチャート実行装置のオフセット設定部が行う動作の別の例を説明する図である。 この発明の実施の形態1におけるステートチャートの別の例を示す図である。 図17のステートチャートに相当するバイナリデータを示す図である。 図19Aおよび図19Bは、この発明の実施の形態1に係るステートチャート実行装置のハードウェア構成の例を示す図である。
以下、この発明をより詳細に説明するために、この発明を実施するための形態について、添付の図面に従って説明する。
実施の形態1.
図1は、この発明の実施の形態1に係るステートチャート実行装置101の構成例を示すブロック図である。ステートチャート実行装置101は、バイナリデータ生成部10と、ステートチャート実行部20とを備えている。バイナリデータ生成部10は、ステートチャート情報読み込み部11と、関連度計算部12と、個別データバイナリ化部13と、最適配列計算部14と、オフセット設定部15と、バイナリデータ統合部16とを有している。ステートチャート実行部20は、バイナリデータ読み込み部21と、通信部22と、状態遷移処理部23とを有している。
ステートチャート実行装置101は、外部機器102に接続されている。外部機器102は、例えば、カーナビゲーションシステム等の車載機器であって、タッチパネル、音声認識、または空間ジェスチャ認識などのユーザインタフェースデバイスを有する。この外部機器102は、ユーザインタフェースデバイスを用いてユーザの指示を受け付け、イベント情報としてステートチャート実行装置101へ送信する。また、外部機器102は、ステートチャート実行装置101から命令を受信し、命令に従って動作する。
図2は、この発明の実施の形態1に係るステートチャート実行装置101の動作例を示すフローチャートである。ステップST1〜ST6の処理は、ステートチャート設計時に行う事前処理である。ステップST7〜ST9の処理は、設計したステートチャートを実行する処理である。
ステップST1において、ステートチャート情報読み込み部11は、ステートチャート情報103を読み込み、ステートチャートを構成するデータを生成する。
ここで、ステートチャート情報103は、ステートチャートを構成するステートおよび状態遷移などの情報を含む。また、ステートチャート情報103は、ステートチャートを構成する各データの利用頻度、設計者が意図的に設定した状態遷移の優先度および設計履歴等、設計時の付加的な情報を含んでもよい。このステートチャート情報103は、設計者によって作成された、外部機器102に実行させるステートチャートのデータファイルである。
なお、実施の形態1において、ステートは状態と同義である。ステートチャートは、状態遷移図、ステートマシン図、および状態機械図と同義である。
図3Aは、この発明の実施の形態1におけるステートチャートの一例を示す図であり、図3Bは、図3Aのステートチャートに対応するステートチャート情報103を示す図である。図3Bに例示するステートチャート情報103は、SCXMLの形式で記述されたテキストファイルである。
以下では、SCXML形式で記述されたステートチャート情報103を例に用いて実施の形態1を説明するが、記述形式はこれに限らない。
ステートチャートを構成するデータとは、ステートチャート情報103に記述された、ステートチャートを構成する初期ステート、ステート、状態遷移、平行状態およびヒストリ等、各要素の情報のことと定義する。
例えばSCXMLにおいて遷移データとは、<transition>タグに記述された属性(アトリビュート)および子要素の情報を指すものと定義する。図3Bに示したSCXMLの例では、以下の2つの遷移データが存在する。各遷移データには、子要素であるイベント名(event)と、遷移先のステート名(target)が含まれる。
遷移データ1
・event=“ev1”
・target=“st2”
遷移データ2
・event=“ev2”
・target=“st1”
また、例えばSCXMLにおいてステートデータとは、<state>タグに記述された属性(アトリビュート)および子要素の情報を指すものと定義する。図3Bに示したSCXMLの例では、以下の2つのステートデータが存在する。各ステートデータには、子要素である遷移データが含まれる。
ステートデータ1
・id=“st1”
・遷移データ1
ステートデータ2
・id=“st2”
・遷移データ2
ステップST2において、関連度計算部12は、ステートチャート情報読み込み部11が読み込んだステートチャート情報103に基づき、ステートチャートを構成するデータ間の関連度を計算する。
ここで、関連度について定義する。ステートチャート実行時に2つのデータが近い順番でアクセスされる可能性が高い場合、該当のデータ間の関連度は高いものとする。反対に、離れた順番でアクセスされる可能性が高い場合、該当のデータ間の関連度は低いものと定義する。
実施の形態1では、関連度計算方法(1)〜(5)を例示する。
関連度計算方法(1):ルールに基づく関連度計算
関連度計算部12は、以下のルール(1)〜(6)に基づいてステートチャートを構成するデータ間の関連度を計算する。
ルール(1):遷移データと遷移先のステートデータとの関連度を1とする
ルール(2):親子関係にあるデータは関連度を3とする
ルール(3):平行状態(パラレルステート)にあるステートデータ間の関連度を2とする
ルール(4):自己遷移するステートデータと遷移データとの関連度を4とする
ルール(5):ルール(1)〜(4)に該当しないデータ間の関連度を0とする
ルール(6):初期ステートと、初期ステートの遷移先のデータとの関連度を1とする
上記ルールにおける関連度は、0〜4の整数値であるが、これに限らず、ユーザが適宜設定した実数値でよい。
上記ルールに基づく関連度計算により、図3Aに示すステートチャートから、図4に示す関連度の表が得られる。ここで、図3Aおよび図4を用いて、ルールに基づく関連度計算の具体例について述べる。
・ステートデータ1(st1)は、子要素に遷移データ1(ev1)を持つため、ルール(2)が適用され、関連度が3となる。
・ステートデータ1(st1)とステートデータ2(st2)とは直接関連がないため、ルール(5)が適用され、関連度が0となる。
・初期ステートデータ(initial)は、ステートデータ1(st1)に遷移するため、ルール(6)が適用され、関連度が1となる。
ステートチャートの別の例を示す。図5は、この発明の実施の形態1におけるステートチャートの別の例を示す図である。図6は、図5に示すステートチャートから得られる関連度の表である。
上記ルールに基づく関連度計算により、図5に示すステートチャートから、図6に示す関連度の表が得られる。ここで、図5および図6を用いて、ルールに基づく関連度計算の具体例について述べる。
以下では、説明のために、ステート名stを持つステートデータを「ステートデータst」、イベント名evを持つ遷移データを「遷移データev」などと呼ぶ。
・遷移データev2と遷移データev3の遷移先にはステートデータst21が設定されている。このため、ルール(1)が適用され、遷移データev2とステートデータst21との関連度は1、遷移データev3とステートデータst21との関連度も1となる。
・ステートデータst1は、子要素に遷移データev1を持つため、ルール(2)が適用され、関連度が3となる。
・平行状態データpa1は、子要素にステートデータst3とステートデータst4を持つ。このため、ルール(2)が適用され、平行状態データpa1とステートデータst3との関連度は3、平行状態データpa1とステートデータst4との関連度も3となる。
・平行状態データpa1において、ステートデータst3とステートデータst4は平行に実行される。このため、ルール(3)が適用され、ステートデータst3とステートデータst4との関連度は2となる。
・ステートデータst2は、子要素にステートデータst21とステートデータst22を持つ。このため、ルール(2)が適用され、ステートデータst2とステートデータst21との関連度は3、ステートデータst2とステートデータst22との関連度も3となる。
・遷移データev5は、ステートデータst1に自己遷移しているため、ルール(4)が適用され、関連度は4となる。
関連度計算方法(2):利用頻度に基づく関連度計算
関連度計算部12は、各遷移状態に関わる利用頻度の情報を利用して、データ間の関連度を計算してもよい。
図7は、この発明の実施の形態1におけるステートチャートの別の例を示す図である。図8は、図7に示すステートチャートから得られる関連度の表である。図7および図8を用いて、利用頻度に基づく関連度計算の具体例について述べる。
例えば、カーナビゲーションシステムなどの車載機器の音声対話をステートチャートで設計し、ユーザの問い合わせを以下の3種類に分類設計したとする。
分類(1):簡単で短いユーザの命令、またはカーナビゲーションシステムが「はい(Yes)」か「いいえ(No)」で回答できる質問
質問例:「カーナビ起動して」、「ナビ終了」、「ここ右折かな?」、「近くに道の駅がある?」
分類(2):カーナビゲーションシステムが複雑で長い回答を返すと想定される質問
質問例:「おすすめのレストランは?いまラーメンかカレーが食べたいな」
分類(3):エラー処理
例:音声認識デバイスが起動しない等、稀に発生するエラー時の処理
上記分類(1)〜(3)を元に、例えば、図7のステートチャートにおける音声対話の処理フローを以下のように表現する。
・ステートデータst1は、カーナビゲーションシステムがユーザの問い合わせを受け付け、質問を分類する状態
・遷移データev1は、分類(1)が発生した場合の遷移
・遷移データev2は、分類(2)が発生した場合の遷移
・遷移データev3は、分類(3)が発生した場合の遷移
・ステートデータst2は、カーナビゲーションシステムが分類(1)の回答処理をする状態
・ステートデータst3は、カーナビゲーションシステムが分類(2)の回答処理をする状態
・ステートデータst4は、カーナビゲーションシステムが分類(3)の回答処理をする状態
ここで、分類(1)は頻繁に利用され、分類(2)は中程度に利用され、分類(3)は滅多に発生しない、という情報が事前に得られているものとする。この利用頻度に関する情報は、ユーザが手動で設定してもよいし、関連度計算部12が大量の対話データの傾向から求めてもよい。
関連度計算部12は、利用頻度に関する情報に基づいて、以下のようにデータ間の関連度を決定する。
・ステートデータst1から遷移データev1を経由する確率が最も高いため、ステートデータst1と遷移データev1との関連度を15とする。
・ステートデータst1から遷移データev2を経由する確率が2番目に高いため、ステートデータst1と遷移データev2との関連度を10とする。
・ステートデータst1から遷移データev3を経由する確率が最も低いため、ステートデータst1と遷移データev3との関連度を1とする。
関連度計算部12は、上記以外のデータの関連度に関しては、前記ルールに基づいて計算し、図8に示す関連度の表を得る。なお、利用頻度に基づく関連度15、10、1の値は、これに限らず、例えばユーザが手動で設定してもよいし、関連度計算部12が大量の対話データを用いたシミュレーションなどにより状態遷移確率を求めて、その状態遷移確率に比例するように関連度の値を決定してもよい。
関連度計算方法(3):誘導度合いに基づく関連度計算
カーナビゲーションシステムなどの車載機器が、ユーザに対して機器の使い方または道順などを教示する際に、ユーザの動作を誘導したい場合がある。その場合、誘導したい度合(以下、「誘導度合い」と称す)の高い状態遷移に関わるデータ間の関連度を相対的に高めてもよい。
例えば、カーナビゲーションシステムがユーザとの音声対話にて近くのレストランを検索し、燃費コストに基づき以下の3種類の検索結果が得られ、3種類の検索結果を選択肢としてユーザに提示する場合を考える。
選択肢(1)レストランA:現在地からの移動に伴う燃費コスト1
選択肢(2)レストランB:現在地からの移動に伴う燃費コスト5
選択肢(3)レストランC:現在地からの移動に伴う燃費コスト10
上記選択肢(1)〜(3)を元に、例えば、前記関連度計算方法(2)で用いた図7のステートチャートに適用した場合における音声対話の処理フローを、以下のように設計する。
・ステートデータst1は、選択肢(1)〜(3)をユーザに提示した状態。ただし、カーナビゲーションシステムは、燃費コストが1番低い選択肢(1)をユーザに優先的に勧める。すなわち、選択肢(1)が最も誘導度合いが高い。カーナビゲーションシステムは、例えば、選択肢(1)の表示文字を他の選択肢の表示文字より大きくしたり、選択肢(1)をリストの1番上位に表示したり、音声ガイダンスで選択肢(1)を勧めたりする
・遷移データev1は、ユーザにより選択肢(1)が選択された場合の遷移
・遷移データev2は、ユーザにより選択肢(2)が選択された場合の遷移
・遷移データev3は、ユーザにより選択肢(3)が選択された場合の遷移
・ステートデータst2は、選択肢(1)が選択された後のカーナビゲーションシステムの処理
・ステートデータst3は、選択肢(2)が選択された後のカーナビゲーションシステムの処理
・ステートデータst4は、選択肢(3)が選択された後のカーナビゲーションシステムの処理
関連度計算部12は、誘導度合いに基づいて、以下のようにデータ間の関連度を決定する。
・選択肢(1)の誘導度合いが高いため、ステートデータst1から遷移データev1を経由する確率が最も高いと判断する。このため、ステートデータst1と遷移データev1との関連度を15とする。
・ステートデータst1から遷移データev2を経由する確率と、ステートデータst1から遷移データev3を経由する確率とは同程度に低い。このため、ステートデータst1と遷移データev2との関連度は1、ステートデータst1と遷移データev3との関連度も1とする。
関連度計算方法(4):ステートチャートの修正日時に基づく関連度計算
関連度計算部12は、設計時におけるステートチャートの修正日時に基づき、データ間の関連度を計算してもよい。例えば、設計の採取段階において、最も新しく修正されたデータは、重要な処理フローと考えられるため、その他のデータと比較して関連度を高くする。
図9は、この発明の実施の形態1におけるステートチャートの別の例を示す図である。図10は、図9に示すステートチャートから得られる関連度の表である。図9および図10を用いて、修正日時に基づく関連度計算の具体例について述べる。
図9に示すステートチャートは、図3Aに示したステートチャートに対して遷移データev3が追加されたものである。関連度計算部12は、追加された遷移データev3を重要な処理とみなして、ステートデータst1と遷移データev3との関連度を、他のデータ間の関連度よりも相対的に高い値である10に設定し、図10の関連度表を得る。なお、図10において初期ステートデータ(initial)の関連度の図示は省略する。
関連度計算方法(5):ステートチャートの修正頻度に基づく関連度計算
関連度計算部12は、設計時におけるステートチャートの修正頻度に基づき、データ間の関連度を計算してもよい。
図11は、この発明の実施の形態1におけるステートチャートの修正頻度を示すグラフである。関連度計算部12は、ステートチャートの設計時、当該ステートチャートを構成するデータA〜Fそれぞれの修正頻度を求め、低頻度に修正されたデータ群と、高頻度に修正されたデータ群と、残りのデータ群とに分類する。高頻度に修正されたデータ群は設計上重要な処理フローである可能性が高いため、関連度計算部12は、高頻度に修正されたデータ群の関連度を残りのデータ群の関連度より高くする。また、低頻度に修正されたデータ群は修正が不要な基本的な処理フローである可能性が高いため、関連度計算部12は、低頻度に修正されたデータ群の関連度を残りのデータ群の関連度より高くする。
図11の例であれば、低頻度に修正されたデータAとデータBとの関連度に「1」が加算される。同様に、高頻度に修正されたデータEとデータFとの関連度に「1」が加算される。データAとデータCとの関連度、およびデータAとデータEとの関連度等、その他のデータ間の関連度はそのままである。この例では関連度に加算する値を「1」としたが、値はこれに限られない。また、低頻度に修正されたデータ群の関連度に加算する値と、高頻度に修正されたデータ群の関連度に加算する値とは、同じ値であってもよいし、異なる値であってもよい。
関連度計算部12は、関連度計算方法(1)〜(5)のうちのいずれか1つを用いて関連度を計算してもよいし、2つ以上の方法を組み合わせて関連度を計算してもよい。
ステップST3において、個別データバイナリ化部13は、ステートチャート情報読み込み部11が生成した個々のデータをバイナリ化する。また、個別データバイナリ化部13は、バイナリ化した各データのサイズを求める。
ここでは、ステートチャート情報103が、図3Bに示すSCXML形式で記述されている場合を考える。
図12は、この発明の実施の形態1に係るステートチャート実行装置101の個別データバイナリ化部13が行う動作を説明する図である。図13A、図13Bおよび図13Cは、図3Bのステートチャート情報103に含まれる個々の情報を示す図である。
ステートチャート情報103のうちの図13Aに示す部分に、初期ステートデータst1の情報が記述されている。個別データバイナリ化部13は、この初期ステートデータst1の情報を元に、下記(1)のようなバイナリ化したヘッダデータを作成する。
(1)id=“st1”を持つステートデータへのオフセット
オフセットとは、後のステップST6にて作成するバイナリデータ104における該当データの開始位置である。ここでは、オフセットは整数値であり、そのデータサイズを4バイトと仮定した。このため、バイナリ化したヘッダデータのデータサイズは、4バイトである。
上記(1)のオフセットには後のステップST5で値を代入することになるため、ステップST3では個別データバイナリ化部13は疑似的に整数値の0を代入する。
ステートチャート情報103のうちの図13Bに示す部分に、遷移データ1の情報が記述されている。個別データバイナリ化部13は、この遷移データ1の情報をバイナリ化して、下記(1)および(2)のデータを生成する。
(1)eventの“ev1”を表す文字列
(2)targetの文字列の代替として、id=“st2”を持つステートデータへのオフセット
ここで、1文字のデータサイズを2バイトと仮定したため、上記(1)の“ev1”を表す文字列のデータサイズは6バイトである。上記(2)のオフセットは4バイトの整数値である。このため、バイナリ化した遷移データ1のデータサイズの合計は、10バイトである。
また、上記(2)のオフセットには後のステップST5で値を代入することになるため、ステップST3では個別データバイナリ化部13は疑似的に整数値の0を代入する。
ステートチャート情報103のうちの図13Cに示す部分に、ステートデータ1の情報が記述されている。個別データバイナリ化部13は、このステートデータ1の情報をバイナリ化して、下記(1)および(2)のデータを生成する。
(1)idの“st1”を表す文字列
(2)遷移データ1へのオフセット
ステートデータ1も遷移データ1と同様、1文字のデータサイズを2バイトと仮定したため、上記(1)の“st1”を表す文字列のデータサイズは6バイトである。上記(2)のオフセットは4バイトの整数値である。このため、バイナリ化したステートデータ1のデータサイズの合計は、10バイトである。
また、上記(2)のオフセットには後のステップST5で値を代入することになるため、ステップST3では個別データバイナリ化部13は疑似的に整数値の0を代入する
個別データバイナリ化部13は、ステートチャート情報103に含まれている遷移データ2およびステートデータ2の情報も、上記同様にバイナリ化する。
ここでは、ステート情報(<state>)の子要素に遷移情報(<transition>)が含まれている場合について述べたが、これに限らず、ステート情報としてその他の情報が含まれていてもよい。例えば、SCXMLの場合、<state>タグの子要素である<onentry>および<onexit>が定義されており、個別データバイナリ化部13はそれらを適宜バイナリ化してもよい。同様にSCXMLにて<transition>タグの子要素である<script>タグなどを適宜バイナリ化してもよい。
ステップST4において、最適配列計算部14は、関連度計算部12が計算したデータ間の関連度に基づき、関連度が高いデータ同士が可能な限り近くに配置されるような各データの一次元配列、つまり最適な順列を計算する。
実施の形態1では、最適配列計算方法(1)〜(3)を例示する。
最適配列計算方法(1):隣接するデータの関連度の利用
最適配列計算部14は、ステートチャートを構成する各データを一次元配列に並べた際の、隣接するデータ間の関連度を総計した総合関連度を計算し、総合関連度が最大となるデータの順列を求める。
図14は、この発明の実施の形態1に係るステートチャート実行装置101の最適配列計算部14が行う動作を説明する図である。最適配列計算部14は、図4の関連度表を利用して、図14に示す順列A,Bの総合関連度を計算する。
順列Aに従って各データを一次元配列に並べた場合は、総合関連度が1となる。
総合関連度
=(ヘッダデータと遷移データ1との関連度)
+(遷移データ1と遷移データ2との関連度)
+(遷移データ2とステートデータ1との関連度)
+(ステートデータ1とステートデータ2との関連度)
=0+0+1+0
=1
順列Bに従って各データを一次元配列に並べた場合は、総合関連度が8となる。
総合関連度
=(ヘッダデータとステートデータ1との関連度)
+(ステートデータ1と遷移データ1との関連度)
+(遷移データ1とステートデータ2との関連度)
+(ステートデータ2と遷移データ2との関連度)
=1+3+1+3
=8
最適配列計算部14は、総合関連度が大きい順列Bを選択する。説明を省略するが、最適配列計算部14は、同様に考えうる可能な順列をすべて列挙、または確率的サンプリングで順列候補を列挙し、それらの総合関連度を計算し、総合関連度が最大となる順列を選択する。
総合関連度の計算式は、最適なデータの順列を求めるための評価関数である。
なお、図14の例では、対象とするデータに隣接する1個のデータの関連度を加算して総合関連度を求めたが、対象とするデータに隣接するN個(N≧1)のデータの関連度を加算して総合関連度を求めてもよい。例えば、隣接する2個のデータの関連度を考慮する場合、最適配列計算部14は、図14の順列Bにおいて、対象とするヘッダデータに対しては、ステートデータ1と遷移データ1の関連度を加算する。結果として、N=2の場合の順列Bの総合関連度は8となる。
N=2の場合の順列Bの総合関連度
=(ヘッダデータとステートデータ1との関連度)
+(ヘッドデータと遷移データ1との関連度)
+(ステートデータ1と遷移データ1との関連度)
+(ステートデータ1とステートデータ2との関連度)
+(遷移データ1とステートデータ2との関連度)
+(遷移データ1と遷移データ2との関連度)
+(ステートデータ2と遷移データ2との関連度)
=1+0+3+0+1+0+3
=8
これにより、一次元に並べた各データをメモリ上に展開した際に、関連するデータが近くに並ぶため、ステートチャート実行時のキャッシュヒット率が向上し、状態遷移処理を高速化できる。また、隣接するN個の関連度しか考慮しないため、総合関連度の計算において計算量を抑えることができる。
最適配列計算方法(2):データ間の距離と関連度の利用
最適配列計算部14は、データ間の距離が遠くなるほど関連度が減少するような評価関数を設定し、その評価関数が最大となるようなデータの順列を求めてもよい。
評価関数の例を以下に示す。
変数の定義
M:データ数
E:ステートチャートを構成するデータの順列の集合。要素数はM!
s(i):ステートチャートを構成するi番目のデータ
s(j):ステートチャートを構成するj番目のデータ
r(i,j):s(j)とs(i)との関連度
d(e,i,j):順列e∈Eに従ってデータを一次元に配列した場合の、s(j)とs(i)との距離。すなわち、s(j)とs(i)とのオフセット(データ開始位置)の差分の絶対値。
Figure 2018083729

Figure 2018083729

Figure 2018083729
これにより、一次元に並べた各データをメモリ上に展開した際に、関連するデータが可能な限り近くに並ぶため、ステートチャート実行時のキャッシュヒット率が向上し、状態遷移処理を高速化できる。また、すべてのデータ間の関連度を考慮するため、最適配列計算方法(1)と比較して、より最適なデータの順列を求めることができると期待される。
最適配列計算方法(3):データ間の距離、関連度および閾値の利用
最適配列計算部14は、あらかじめ定められた距離以上離れてしまうデータ間の関連度を総計してコスト関数とし、コスト関数が最小となるようなデータの順列を求めてもよい。ここで、上記のあらかじめ定められた距離を、閾値B1と定義する。閾値B1には、例えば、CPU(Central Processing Unit)が持つキャッシュメモリのブロックサイズまたはラインサイズが設定される。これにより、キャッシュヒットミスが低減されるようなデータの順列を求めることができる。
コスト関数の例を以下に示す。
変数の定義
E:ステートチャートを構成するデータの順列の集合
B1:上述した閾値
s(i):ステートチャートを構成するi番目のデータ
s(j):ステートチャートを構成するj番目のデータ
r(i,j):s(j)とs(i)との関連度
d(e,i,j):順列e∈Eに従ってデータを一次元に配列した場合の、s(j)とs(i)との距離
X1(e):d(e,i,j)>B1を満たすi,jの組
このとき、最適配列計算部14は、下式(3)のようにコスト関数を定義する。
Figure 2018083729
または、大小異なるブロックサイズのキャッシュメモリを持つCPUを利用する場合、最適配列計算部14は、閾値B2として大きめのブロックサイズまたはラインサイズを設定し、下式(4)のようにコスト関数を定義してもよい。
Figure 2018083729
B2:B1<B2を満たす閾値(キャッシュメモリのブロックサイズ等)
X2(e):d(e,i,j)>B2を満たすi,jの組
α,β:適切な重み係数
Figure 2018083729

Figure 2018083729
これにより、一次元に並べた各データをメモリ上に展開した際に、キャッシュメモリのブロックサイズまたはラインサイズに収まらないデータのペアを可能な限り少なくすることができる。これによって、ステートチャート実行時のキャッシュヒットミスが低減し、状態遷移処理を高速化できる。
なお、評価関数を最大化する、またはコスト関数を最小化する場合に、データ数が増えると計算量が増大し、順列の最適解を現実的な時間内に求めることは困難となる。そこで、評価関数を最大化する、またはコスト関数を最小化する準最適解を求めてもよい。
最適配列計算部14は、準最適解を求める方法として、遺伝アルゴリズムなどの確率的最適化手法を利用できる。最適配列計算部14は、例えば、ステートチャートを構成するデータの順列を、下記文献の34ページに記載された順序表現(Ordinal Representation)で表現し、最適配列計算方法(1)もしくは(2)で示した評価関数を最大化するような順列、または最適配列計算方法(3)で示したコスト関数を最小化するような順列を、遺伝アルゴリズムにより求める。
伊庭 斉志、「遺伝的アルゴリズムの基礎―GAの謎を解く―」、第1版、オーム社、1994、p.34
ステップST5において、オフセット設定部15は、最適配列計算部14が計算した順列に従ってバイナリ化した各データを一次元に配列した場合の、各データのオフセットを求め、オフセットを各データに設定する。オフセットは、バイナリデータ104におけるデータの開始位置である。
図15は、この発明の実施の形態1に係るステートチャート実行装置101のオフセット設定部15が行う動作の一例を説明する図である。ここでは、最適配列計算部14が、図14の順列Bを選択して、オフセット設定部15に出力したものとする。
オフセット設定部15は、順列Bの順番に従って、ステートデータを構成するデータを並べる。結果、図15の通り、ヘッダデータ、ステートデータ1、遷移データ1、ステートデータ2、遷移データ2の順番でデータが配置される。
ヘッダデータのデータサイズは4バイト、ステートデータ1のデータサイズは10バイト、遷移データ1のデータサイズは10バイト、ステートデータ2のデータサイズは10バイト、および遷移データ2のデータサイズは10バイトである。このことから、オフセット設定部15は、ヘッダデータのオフセットを0バイト目、ステートデータ1のオフセットを5バイト目、遷移データ1のオフセットを15バイト目、ステートデータ2のオフセットを25バイト目、および遷移データ2のオフセットを35バイト目と計算する。
続いてオフセット設定部15は、ステップST3で0に仮設定されていた各オフセットを、計算した正しい値に設定しなおす。オフセット設定部15は、例えば、初期ステートデータのオフセットには、ステートデータ1のオフセットである5を設定する。また、オフセット設定部15は、ステートデータ1が持つ「遷移データ1のオフセット」には15を設定する。また、オフセット設定部15は、遷移データ1が持つ「ステートデータ2のオフセット」には25を設定する。オフセット設定部15は同様に、ステートデータ2および遷移データ2が持つ各オフセットにも値を設定する。
図15では、オフセット設定部15がオフセットを利用してステートチャート情報103をバイナリ化する方法について述べたが、例えば、ステートデータが変更されてそのデータサイズが増えた場合、すべてのデータに設定されたオフセットの再計算が必要になるという問題がある。
そこで、以下では、オフセット設定部15がオフセットアレイデータとオフセットアレイデータのインデックスとを用いて、効率的にデータをバイナリ化する方法について述べる。
図16は、この発明の実施の形態1に係るステートチャート実行装置101のオフセット設定部15が行う動作の別の例を説明する図である。ここでは、最適配列計算部14が、図14の順列Bを選択して、オフセット設定部15に出力したものとする。
オフセット設定部15は、オフセットアレイデータを追加で用意し、ヘッダデータ、オフセットアレイデータ、ステートデータ1、遷移データ1、ステートデータ2、遷移データ2の順番に配置する。
オフセットアレイデータには、ステートデータ1のオフセットに相当するインデックス0、遷移データ1のオフセットに相当するインデックス1、ステートデータ2のオフセットに相当するインデックス2、遷移データ2のオフセットに相当するインデックス3を定義する。1つのオフセットは4バイトの整数値であるため、オフセットアレイデータのデータサイズは4バイト×4=16バイトである。そして、オフセット設定部15は、以下のようにインデックス0〜3にオフセット値を設定する。
インデックス0:21(ステートデータ1のオフセット)
インデックス1:31(遷移データ1のオフセット)
インデックス2:41(ステートデータ2のオフセット)
インデックス3:51(遷移データ2のオフセット)
続いてオフセット設定部15は、ステートデータ1、遷移データ1、ステートデータ2、および遷移データ2において、オフセット値の代替として、オフセットアレイデータのインデックスを指定する。
例えば、図15において、ステートデータ1には「遷移データ1のオフセット」(オフセット値15)が設定されていたが、その代替として、図16ではオフセットアレイデータのインデックス1を設定する。オフセットアレイデータにおいて、インデックス1は、遷移データ1のオフセットである31が設定されているためである。
以上のように、オフセットアレイデータを利用すれば、データサイズが変更になった場合でも、オフセットアレイデータを変更するのみで済む。例えば、ステートデータ1の文字列が“st1”から“st1_new”に変更されて文字数が増えた場合、1文字が2バイトとすると、ステートデータ1のデータサイズは8バイト増える。そのため、オフセット設定部15は、オフセットアレイデータにおいて、遷移データ1、ステートデータ1および遷移データ2のオフセットをそれぞれ8バイト増やし、オフセットアレイデータを以下のように変更する。
インデックス0:21(ステートデータ1のオフセット)
インデックス1:39(遷移データ1のオフセット)
インデックス2:49(ステートデータ2のオフセット)
インデックス3:59(遷移データ2のオフセット)
これにより、オフセットが正しいデータの位置を指し示すことになる。この際に、データの順列は変更していないため、各データに設定されたインデックスは変更する必要がない。従って、各データの中身を書き換える必要が無い。
ステップST6において、バイナリデータ統合部16は、個別データバイナリ化部13がバイナリ化し、オフセット設定部15がオフセットまたはオフセットアレイデータを設定したデータを、最適配列計算部14が計算した配列で統合してバイナリデータ104にし、バイナリデータ104を保存する。バイナリデータ統合部16は、バイナリデータ104を、RAM(Random Access Memory)等のメモリに保存してもよいし、ファイル等の形式でディスクに保存してもよい。
次に、ステートチャート実行部20の動作について述べる。
ステップST7において、バイナリデータ読み込み部21は、保存されたバイナリデータ104を読み込む。例えば、バイナリデータ104がバイナリファイルとして保存されている場合、バイナリデータ読み込み部21は、まずバイナリデータサイズ分のメモリを確保し、確保したメモリ上にステートチャートを構成するすべてのデータを格納する。
ステップST8において、通信部22は、外部機器102と通信し、外部機器102からイベント情報を受信する。イベント情報とは、イベントの名前を示す文字列と、イベントに付随する任意のデータのことを指す。
図17は、この発明の実施の形態1におけるステートチャートの別の例を示す図である。このステートチャートでは、通信部22は、“ev1”のイベント文字列、または“ev2”のイベント文字列と付随データvalue1==10とを受信する。
ステップST9において、状態遷移処理部23は、通信部22が受信したイベント文字列と付随データ、およびステップST7でバイナリデータ読み込み部21が読み込んだバイナリデータ104に従って、状態遷移処理を実行する。
ここで、図17および図18を用いて、ステップST7〜ST9の処理の例について述べる。図17は、イベントev2の遷移データ2において、ガード条件“value1==10”と、アクションAction1()とを含むステートチャートを示す。図18は、図17のステートチャートに相当するバイナリデータ104を示す図である。遷移データ2は、イベント名とステートデータ1へのオフセットとに加え、ガード条件文字列“value1==10”とアクション文字列“Action1()”とを持つ。
1.初期遷移(ステップST7)
バイナリデータ読み込み部21は、初めに、バイナリデータ104のヘッダデータを読み込み、ヘッダデータに記述された初期ステートデータにアクセスする。図18の例では、初期ステートデータのオフセットに5が設定されている。このため、バイナリデータ読み込み部21は、バイナリデータ104の5バイト目にアクセスし、ステートデータ1を読み込む。これにより、ステートチャートの初期状態はst1となる。
2.イベント“ev1”を受信(ステップST8)
次に、通信部22は、外部機器102からイベント情報を受信する。ここでは例えば、イベント文字列“ev1”を受信したものとする。
3.状態遷移(ステップST9)
次に、状態遷移処理部23は、ステートデータ1が持つ遷移データ1のオフセットを参照し、15バイト目の遷移データ1を読み込む。この遷移データ1には、イベント名“ev1”があり、先に受信したイベント文字列“ev1”と同一であることから、状態遷移処理部23は、遷移先のステートデータ2に遷移する。具体的には、遷移先のステートデータ2のオフセットとして設定されている25バイト目のデータにアクセスする。これにより、ステートデータ2に記述されたステート“st2”に遷移する。
遷移先のデータのオフセットが25バイトと設定されていることにより、状態遷移処理部23が状態遷移する際に、探索処理を必要とせず、次の遷移情報にアクセスすることができる。
一方、遷移データ1のイベント名と受信したイベント文字列とが一致しない場合、状態遷移処理部23はステート“st1”に留まる。
4.イベント“ev2”と付随するデータを受信(ステップST8)
次に、通信部22は、外部機器102からイベント文字列“ev2”と、それに付随するデータvalue1==10とを受信する。
5.状態遷移(ステップST9)
次に、状態遷移処理部23は、遷移データ2にアクセスし、遷移データ2が持つイベント名“ev2”と受信したイベント文字列“ev2”とが一致するか判定する。ここでは、遷移データ2が持つイベント名と受信したイベント文字列とが一致することから、状態遷移処理部23は、次のガード条件判定に進む。一致しない場合、状態遷移処理部23はステート“st2”に留まる。
6.ガード条件判定とアクション実行(ステップST9)
次に、状態遷移処理部23は、遷移データ2に記載されたガード条件文字列と外部機器102から受信した付随データのガード条件文字列とを比較し、ガード条件文字列の真偽を判定する。状態遷移処理部23は、ガード条件文字列が真である場合、アクションデータに記載されたアクションを実行し、次の状態に遷移する。ここでは、受信した付随データがvalue1==10であることから、図18に記載されたガード条件文字列は真である。そこで、状態遷移処理部23は、アクション文字列“Action1()”を取得し、Action1()を実行する。Action1()は、外部機器102に登録された関数などであり、例えばステートチャート実行部20が通信部22を介して特定の外部機器102へイベント情報を送信するなどの命令が記述されている。最後に、状態遷移処理部23は、ステートデータ1のオフセットに設定された5バイト目のデータにアクセスし、次のステート“st1”に遷移する。
一方、ガード条件文字列が偽である場合、状態遷移処理部23はステート“st2”に留まる。
このように、ステートチャート実行部20は、ステップST8のイベント文字列受信と、ステップST9の状態遷移処理とを繰り返す。
次に、ステートチャート実行装置101のハードウェア構成例を説明する。
図19Aおよび図19Bは、この発明の実施の形態1に係るステートチャート実行装置101のハードウェア構成の一例を示す図である。
ステートチャート実行装置101におけるバイナリデータ生成部10およびステートチャート実行部20の各機能は、処理回路により実現される。すなわち、ステートチャート実行装置101は、状態の遷移を表現したステートチャートに関するステートチャート情報103をバイナリデータ104にし、このバイナリデータ104に基づいてステートチャートの処理を実行するための処理回路を備える。処理回路は、図19Aに示すように専用のハードウェアであってもよいし、図19Bに示すようにメモリ1006に格納されているプログラムを実行するCPU1005であってもよい。
図19Aに示すように、処理回路が専用のハードウェアである場合、処理回路1001は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)、またはこれらを組み合わせたものが該当する。
バイナリデータ生成部10およびステートチャート実行部20の機能をまとめて1つの処理回路1001で実現してもよいし、複数の処理回路1001で実現してもよい。
図19Bに示すように、処理回路がCPU1005である場合、バイナリデータ生成部10およびステートチャート実行部20の機能は、ソフトウェア、ファームウェア、またはソフトウェアとファームウェアとの組み合わせにより実現される。ソフトウェアまたはファームウェアはプログラムとして記述され、HDD(Hard Disk Drive)1002またはメモリ1006に格納される。CPU1005は、HDD1002またはメモリ1006に格納されたプログラムを読み出して実行することにより、各部の機能を実行する。すなわち、ステートチャート実行装置101は、CPU1005により実行されるときに、図2に示したステップが結果的に実行されることになるプログラムを格納するためのHDD1002またはメモリ1006を備える。また、このプログラムは、バイナリデータ生成部10およびステートチャート実行部20の手順または方法をコンピュータに実行させるものであるともいえる。
ここで、CPU1005は、例えば、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、またはシステムLSI(Large−Scale Integration)等であってもよい。
また、CPU1005は、1次キャッシュメモリおよび2次キャッシュメモリ等の複数のキャッシュメモリを備えてもよい。CPU1005は、バイナリデータ読み込み部21の機能を実現する際、バイナリデータ104を読み込んでキャッシュメモリ上に展開する。
メモリ1006とは、例えば、RAM、ROM(Read Only Memory)、フラッシュメモリ、EPROM(Erasable Programmable ROM)、EEPROM(Electrically EPROM)等の不揮発性もしくは揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、またはDVD(Digital Versatile Disc)等が該当する。
なお、バイナリデータ生成部10およびステートチャート実行部20の各機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。例えば、ステートチャート実行部20については専用のハードウェアとしての処理回路1001でその機能を実現し、バイナリデータ生成部10についてはCPU1005がメモリ1006に格納されたプログラムを読み出して実行することによってその機能を実現することが可能である。
バイナリデータ生成部10に入力されるステートチャート情報103およびバイナリデータ生成部10が生成したバイナリデータ104は、例えばHDD1002に保存される。なお、これは一例にすぎず、ステートチャート情報103およびバイナリデータ104は、DVD等のメモリ1006に保存されてもよい。
ステートチャート実行装置101における通信部22は、入力インタフェース装置1003および出力インタフェース装置1004である。入力インタフェース装置1003は、外部機器102から情報を受信する。出力インタフェース装置1004は、外部機器102へ情報を送信する。
外部機器102は、ステートチャート実行装置101と同様に、専用のハードウェアであってもよいし、メモリに格納されているプログラムを実行するCPUであってもよい。
また、ステートチャート実行装置101を構成する処理回路1001またはCPU1005が、ステートチャート実行装置101の機能だけでなく、外部機器102の機能を実現してもよい。例えば、カーナビゲーションシステムのCPUが、ステートチャート実行装置101および外部機器102の各機能を実現する構成であってもよい。あるいは、例えばコンピュータのCPUが、バイナリデータ生成部10の機能を実現し、カーナビゲーションシステムのCPUがステートチャート実行部20および外部機器102の各機能を実現する構成であってもよい。
以上のように、実施の形態1に係るステートチャート実行装置101は、状態の遷移を表現したステートチャートに関するステートチャート情報103をバイナリデータ104にするバイナリデータ生成部10と、バイナリデータ104に基づいてステートチャートの処理を実行するステートチャート実行部20とを備える構成である。バイナリデータ生成部10は、ステートチャート情報103を読み込み、ステートチャートを構成するデータを生成するステートチャート情報読み込み部11と、ステートチャートを構成するデータ間の関連度を計算する関連度計算部12と、ステートチャートを構成するデータをバイナリ化する個別データバイナリ化部13と、関連度計算部12が計算した関連度に基づき、ステートチャートを構成するデータの配列を計算する最適配列計算部14と、個別データバイナリ化部13がバイナリ化したデータを最適配列計算部14が計算した配列で並べた場合の位置を示すオフセットを設定するオフセット設定部15と、個別データバイナリ化部13がバイナリ化しオフセット設定部15がオフセットを設定したデータを、最適配列計算部14が計算した配列で統合してバイナリデータ104にするバイナリデータ統合部16とを有する構成である。これにより、ステートチャートのデータ構造を最適化したバイナリデータ104を得ることができる。そして、ステートチャート実行部20は、バイナリデータ104に基づいてステートチャートを高速に実行することができる。
具体的には、最適配列計算部14は、関連度計算部12が計算した関連度に基づき、関連度が高いデータ同士が近くに配置されるような配列を計算する構成である。
最適配列計算部14が評価関数またはコスト関数を最適化するようなデータの順列を求めることで、メモリ上で、関連性の高いデータを近くに配置することができる。これにより、ステートチャート実行部20がステートチャートを実行するときに、CPUのキャッシュヒット率の向上およびキャッシュヒットミスの低減が見込まれ、よってステートチャートの処理高速化が見込める。
また、バイナリデータ生成部10がステートチャート情報103をバイナリ化し、バイナリデータ104を連続したメモリ領域に配置することで、メモリフラグメンテーションが発生しない。これにより、バイナリデータ読み込み部21によるメモリ割り当て処理の高速化と、状態遷移処理部23によるステートチャート実行時のキャッシュヒット率向上とが見込まれる。
また、オフセット設定部15は、ステートチャートを構成するデータのオフセットを設定する構成である。ステートチャート実行部20は、バイナリデータ104を読み込むバイナリデータ読み込み部21と、外部機器102からイベント情報を受信する通信部22と、通信部22が受信したイベント情報に従ってステートチャートの状態遷移処理を実行する際に、バイナリデータ104に設定されたオフセットが示す位置のデータにアクセスする状態遷移処理部23とを有する構成である。
オフセットを利用したデータアクセスにより、状態遷移処理部23が状態遷移処理を実行する際に直接遷移先のステートデータにアクセスできる。このため、ステート名の文字列からステートデータを探索するような処理が発生せず、よって状態遷移処理の高速化が可能である。
また、バイナリデータ生成部10は、テーブル表現のステートチャートだけではなく、階層状態または平行状態を持つステートチャートも、それらのステートチャートを構成するデータ間の関連度を計算して一次元の配列に変換し、バイナリデータ104にすることができる。
なお、本発明はその発明の範囲内において、実施の形態の任意の構成要素の変形、または実施の形態の任意の構成要素の省略が可能である。
この発明に係るステートチャート実行装置は、ステートチャートを高速に実行するようにしたので、タッチパネル、音声認識、または空間ジェスチャ認識などのユーザインタフェースデバイスを備えた外部機器に用いるステートチャート実行装置に適している。
10 バイナリデータ生成部、11 ステートチャート情報読み込み部、12 関連度計算部、13 個別データバイナリ化部、14 最適配列計算部、15 オフセット設定部、16 バイナリデータ統合部、20 ステートチャート実行部、21 バイナリデータ読み込み部、22 通信部、23 状態遷移処理部、101 ステートチャート実行装置、102 外部機器、103 ステートチャート情報、104 バイナリデータ、1001 処理回路、1002 HDD、1003 入力インタフェース装置、1004 出力インタフェース装置、1005 CPU、1006 メモリ。

Claims (4)

  1. 状態の遷移を表現したステートチャートに関するステートチャート情報をバイナリデータにするバイナリデータ生成部と、
    前記バイナリデータに基づいて前記ステートチャートの処理を実行するステートチャート実行部とを備え、
    前記バイナリデータ生成部は、
    前記ステートチャート情報を読み込み、前記ステートチャートを構成するデータを生成するステートチャート情報読み込み部と、
    前記ステートチャートを構成するデータ間の関連度を計算する関連度計算部と、
    前記ステートチャートを構成するデータをバイナリ化する個別データバイナリ化部と、
    前記関連度計算部が計算した関連度に基づき、前記ステートチャートを構成するデータの配列を計算する最適配列計算部と、
    前記個別データバイナリ化部がバイナリ化した前記データを前記最適配列計算部が計算した配列で並べた場合の位置を示すオフセットを設定するオフセット設定部と、
    前記個別データバイナリ化部がバイナリ化し前記オフセット設定部がオフセットを設定した前記データを、前記最適配列計算部が計算した配列で統合して前記バイナリデータにするバイナリデータ統合部とを有することを特徴とするステートチャート実行装置。
  2. 前記ステートチャート実行部は、
    前記バイナリデータを読み込むバイナリデータ読み込み部と、
    外部機器からイベント情報を受信する通信部と、
    前記通信部が受信したイベント情報に従って前記ステートチャートの状態遷移処理を実行する際に、前記バイナリデータに設定されたオフセットが示す位置のデータにアクセスする状態遷移処理部とを有することを特徴とする請求項1記載のステートチャート実行装置。
  3. 前記関連度計算部は、関連度を計算するための予め定められたルール、前記ステートチャートを構成するデータの利用頻度、前記ステートチャートにおける状態遷移の誘導度合い、前記ステートチャートを構成するデータの修正日時もしくは修正頻度のうちのいずれか1つ、または組み合わせに基づいて、関連度を計算することを特徴とする請求項1記載のステートチャート実行装置。
  4. 前記最適配列計算部は、前記関連度計算部が計算した関連度に基づき、前記関連度が高いデータ同士が近くに配置されるような配列を計算することを特徴とする請求項1記載のステートチャート実行装置。
JP2018548479A 2016-11-01 2016-11-01 ステートチャート実行装置 Active JP6486572B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/082430 WO2018083729A1 (ja) 2016-11-01 2016-11-01 ステートチャート実行装置

Publications (2)

Publication Number Publication Date
JPWO2018083729A1 true JPWO2018083729A1 (ja) 2019-03-07
JP6486572B2 JP6486572B2 (ja) 2019-03-20

Family

ID=62076651

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018548479A Active JP6486572B2 (ja) 2016-11-01 2016-11-01 ステートチャート実行装置

Country Status (5)

Country Link
US (1) US11314528B2 (ja)
JP (1) JP6486572B2 (ja)
CN (1) CN109891384B (ja)
DE (1) DE112016007281B4 (ja)
WO (1) WO2018083729A1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05216641A (ja) * 1992-02-06 1993-08-27 Toshiba Corp グラフィカル・ユーザ・インタフェース制御プログラム生成装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1124907A (ja) 1997-06-27 1999-01-29 Toshiba Corp ソフトウエア開発支援方法およびソフトウエア開発支援装置
US8244545B2 (en) 2006-03-30 2012-08-14 Microsoft Corporation Dialog repair based on discrepancies between user model predictions and speech recognition results
CN101551803A (zh) * 2008-03-31 2009-10-07 华为技术有限公司 一种建立模式匹配状态机、模式识别的方法和装置
US9082073B2 (en) 2011-11-30 2015-07-14 Metaswitch Networks Ltd. Method and apparatus for operating a finite state machine
US10055203B2 (en) * 2013-05-28 2018-08-21 The Mathworks, Inc. Implicit event broadcast in a state chart of a technical computing environment
US9147070B2 (en) * 2013-08-12 2015-09-29 Cisco Technology, Inc. Binary translation and randomization system for application security
CN105512727B (zh) * 2015-11-27 2018-02-13 浙江理工大学 一种基于Markov的个人路径预测方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05216641A (ja) * 1992-02-06 1993-08-27 Toshiba Corp グラフィカル・ユーザ・インタフェース制御プログラム生成装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
矢崎 孝、今宮淳美: "制約を用いるステートチャートエディタ", 情報処理学会研究報告, vol. Vol.93,No.19, JPN6016048215, 11 March 1993 (1993-03-11), JP, pages p.11−20(93-PRG-11-2) *
苅部卓哉、吉岡信和、田原康之、本位田真一: "マルチメディアコンテンツ流通のためのモバイルエージェントのモデル駆動開発", レクチャーノート/ソフトウェア学30 ソフトウェア工学の基礎XI, vol. 初版, JPN6016048217, 30 November 2004 (2004-11-30), JP, pages p.69−72 *

Also Published As

Publication number Publication date
US11314528B2 (en) 2022-04-26
WO2018083729A1 (ja) 2018-05-11
CN109891384B (zh) 2022-04-15
CN109891384A (zh) 2019-06-14
JP6486572B2 (ja) 2019-03-20
DE112016007281B4 (de) 2023-11-02
US20210286630A1 (en) 2021-09-16
DE112016007281T5 (de) 2019-06-13

Similar Documents

Publication Publication Date Title
KR102129640B1 (ko) 스트링 변환의 귀납적 합성을 위한 랭킹 기법
CN110705709B (zh) 训练图神经网络模型的方法和装置
CN110110858B (zh) 一种基于强化学习的自动化机器学习方法
JP6403834B2 (ja) 離散最適化のための帰納論理プログラミング強化ディープビリーフネットワーク・モデルのトレーニング
CN103425727A (zh) 上下文语音查询扩大方法和系统
JP2015508918A (ja) 冗長な消費者トランザクションルールのフィルタリング
JP5980520B2 (ja) 効率的にクエリを処理する方法及び装置
US11681541B2 (en) Methods, apparatus, and articles of manufacture to generate usage dependent code embeddings
JP6486572B2 (ja) ステートチャート実行装置
JP5252596B2 (ja) 文字認識装置、文字認識方法及びプログラム
CN111783088A (zh) 一种恶意代码家族聚类方法、装置和计算机设备
JP5379812B2 (ja) データ抽出装置、データ抽出方法、及びプログラム
CN112100307B (zh) 数据处理方法、寻路处理方法、装置及电子设备
JP5832869B2 (ja) カテゴリーマッチングを用いたキーワード抽出システムおよびキーワード抽出方法
CN107220249A (zh) 基于分类的全文搜索
JP5494066B2 (ja) 検索装置、検索方法および検索プログラム
JP6973733B2 (ja) 特許情報処理装置、特許情報処理方法およびプログラム
US20230316113A1 (en) Inference apparatus, inference method, and computer-readable recording medium
US20230237351A1 (en) Inference apparatus, inference method, and computer-readable recording medium
US20230245486A1 (en) Methods, systems, articles of manufacture and apparatus to improve tagging accuracy
WO2020044413A1 (ja) 仮説推論装置、仮説推論方法、及びコンピュータ読み取り可能な記録媒体
WO2020008631A1 (ja) 観測事象判定装置、観測事象判定方法、及びコンピュータ読み取り可能な記録媒体
WO2024129366A1 (en) Model pre-training for user interface navigation
JP2015170044A (ja) 依存構造解析方法、装置、及びプログラム
CN112258297A (zh) 推送物品的描述信息的方法、装置和计算机可读存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181210

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20181210

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20181219

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190219

R150 Certificate of patent or registration of utility model

Ref document number: 6486572

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250