自動計画技術は、既知の環境の情報に基づいて次に実行される対象の行動を決定し、さらに目的が達成されるまでの一連の行動の実行計画(以下、単に「手順」と呼ぶ。)を構築する技術である。自動計画技術は、例えば人工知能により実行される。事前に未来の行動を計算した人工知能は、計算された行動の手順を計画する目的で自動計画技術を用いる。
上記の手順を求める自動計画問題には、行動の主体(以下、「エージェント」と呼ぶ。)が複数存在する問題もある。エージェントが複数存在する自動計画問題を解く際、人工知能は、例えば全ての行動の間に順序関係が規定された手順の代わりに、複数のエージェントが並列に実行できる行動の間に順序関係が規定されていない手順を構成する。
すなわち、複数の行動が同時に実行可能な手順が使用されると、一連の行動がより効率的に実行される。以下、全ての行動が時系列に沿って一直線に並べられた手順を「直列手順」と呼ぶ。また、一部の行動の間に順序関係が規定されていない手順を「半順序手順」と呼ぶ。
図18は、実行エージェントが複数存在する自動計画問題の例を示す説明図である。図18に示す自動計画問題では、エージェントA、エージェントB、エージェントC、エージェントDの4名のエージェントが同時に作業する例が扱われている。
エージェントA、エージェントB、エージェントC、エージェントDはそれぞれ、サービスSA、サービスSB、サービスSC、サービスSDを一旦停止させ、各サービスの設定ファイルを更新する。更新が完了したら、各エージェントは、サービスをそれぞれ再起動させる。図18に示すように、各サービスは別々のサーバで稼働する。
図18に示す自動計画問題に対して、例えば、エージェントA、エージェントB、エージェントC、エージェントDが上述した手順通りに直列に作業を行う「直列手順」の作業計画が考えられる。図19は、直列手順の例を示す説明図である。
図19に示す直列手順が用いられると、4人のエージェントが順に更新作業を行う。なお、図19に示す矩形は、行動を表す。また、行動から別の行動に伸びる矢印は、行動が完了した後に別の行動が開始されるという順序関係を表す。
図19に示す直列手順には、12個の行動が含まれている。各エージェントは、「サービスを停止」、「設定ファイルを更新」、「サービスを起動」の3個の行動で1組の作業を実行する。図19に示す直列手順が用いられると、エージェントA、エージェントB、エージェントC、エージェントDの順に上記の作業を実行する。
また、図18に示す自動計画問題に対して、4名のエージェントが全く独立に上記の作業を実行できる場合、4名のエージェントが並列に各作業を行う「半順序手順」の作業計画が考えられる。図20は、半順序手順の例を示す説明図である。
図20に示す半順序手順が用いられると、4人のエージェントが並列に更新作業を行う。図20には、「サービスを停止」、「設定ファイルを更新」、「サービスを起動」の順に3個の行動が矢印で結ばれた組が4つ並列に示されている。
すなわち、図20に示す半順序手順が用いられると、各エージェントには、「サービスを停止」、「設定ファイルを更新」、「サービスを起動」の順に作業を行うという制約が課せられる。しかし、各エージェントは、他のエージェントの作業の影響を全く受けずに独立して作業を進行できる。従って、図20に示す半順序手順が用いられた時の方が、図19に示す直列手順が用いられた時に比べて短時間で全ての作業が完了する。
半順序手順を導出する方法には、例えば以下の2つの方法がある。1つ目の方法は、自動計画問題の解を最初から半順序手順として構成する半順序プランニング(Partial-Order Planning, POP) である。2つ目の方法は、最初に直列手順を計画した後に不要な順序関係を除去する半順序化(Deordering)である。
一般的に、自動計画問題における行動の順序は、各行動が実行可能な状態にコンポーネントの状態が遷移するために関連する各コンポーネントに課せられる制約に依存する。なお、コンポーネントは、系を構成する部品に相当する。
例えば、行動「サービスSAの設定ファイルを更新」は、サービスSAの状態が停止状態でなければ実行されない行動である。すなわち、行動「サービスSAの設定ファイルを更新」は、サービスSAという1つのコンポーネントの状態に依存している。
自動計画問題の中には、上記の各コンポーネントに課せられる制約の他に、系全体に課せられる大域的な制約を考慮することが求められる問題がある。
例えば、図18に示す自動計画問題において、4台のサーバが全て同じサービスを提供しており、サービスSA、サービスSB、サービスSC、サービスSDのうち少なくとも2つのサービスが稼働していれば全体として最低限のサービス品質が担保されるような状況を考える。
4つのサービスの更新作業中も最低限のサービス品質の担保が求められる場合、図18に示す自動計画問題に対して、さらに「更新作業中も常に最低2台のサーバでサービスの状態が稼働状態でなければならない」という要件が課せられる。
上記の制約は、コンポーネントに関する制約ではなく、4つのサービスで構成される系全体の状態に関する制約である。すなわち、上記の制約は、最初の行動が開始してから最後の行動が完了するまで、系全体の状態に「最低2台のサーバでサービスの状態が稼働状態である」という要件を課している制約であると考えられる。以下、手順の実行に伴って遷移する系全体の状態が常に満たすことを求められる上記のような制約を「過渡要件」と呼ぶ。
上記の過渡要件が与えられた場合、図20に示す半順序手順の行動計画は、正しい行動計画ではない。その理由は、例えばエージェントAとエージェントBが同時に設定ファイルを更新している最中に、エージェントCがサービスSCを停止させてしまう可能性があるためである。
図21は、半順序手順の他の例を示す説明図である。図21に示す半順序手順が用いられると、4人のエージェントが過渡要件「最低2台のサーバでサービスの状態が稼働状態である」を満たしつつ、更新作業を行う。
例えば、図21に示すように、エージェントAとエージェントBが同時に作業しないように、エージェントAの作業が終わるまでエージェントBが待機するように順序関係が定められている。同様に、エージェントCとエージェントDが同時に作業しないように、エージェントCの作業が終わるまでエージェントDが待機するように順序関係が定められている。
すなわち、図21に示す半順序手順に従って作業を実行すれば、各エージェントは、過渡要件に違反せずに作業を完了できる。図21に示す半順序手順は、過渡要件を満たす手順である。
自動計画問題は、モデル化された上で求解されることが多い。以下、自動計画問題のモデル化を説明する。
例えば、自動計画問題は、特許文献1に記載されている自動計画問題のように、初期状態および目的状態が指定された複数の状態グラフが並べられたモデル上の、全ての状態グラフの状態を目的状態へ移行させる手順を求める計画問題に帰着される。以下、複数の状態グラフが並べられたモデルを状態要素モデルと呼ぶ。また、状態要素モデルを構成する状態グラフを状態要素と呼ぶ。
各状態要素は、自身の状態グラフのノードに対応するいずれかの状態をとる。状態要素の状態は、状態グラフ内の有向エッジに沿って遷移する。また、所定の時点における状態要素の現在状態は、各状態グラフが所定の時点でどの状態であるかを指示するポインタの役割を有する。例えば、現在状態は、最初に初期状態を指示する。
以下、状態要素モデルの具体例を説明する。図22は、状態要素モデルの例を示す説明図である。図22に示す状態要素モデルPAR_UPDATEは、モデル化された図18に示す自動計画問題である。すなわち、状態要素モデルPAR_UPDATEは、4人のエージェントが更新作業を行う状況を表す。
図22に示すConfigA 、ConfigB 、ConfigC 、ConfigD 、ServiceA、ServiceB、ServiceC、ServiceDと記載された各矩形が、それぞれ状態要素に相当する。また、各状態要素内のOLD 、NEW 、ON、OFF と記載された各楕円が、それぞれ状態に相当する。また、状態同士を結ぶ各矢印が、それぞれ状態遷移に相当する。
また、二重線の楕円は、初期状態に相当する。また、黒色の楕円は、目的状態に相当する。例えば、状態要素ConfigA には、初期状態と目的状態が1つずつ存在する。
なお、初期状態と目的状態は、状態要素内に別々の状態として存在するとは限られない。例えば、状態要素ServiceAには、初期状態であり、かつ目的状態でもある状態ONが存在する。
図22に示す状態要素ServiceA~状態要素ServiceDは、状態要素としてモデル化されたサービスSA~サービスSDをそれぞれ表す。図22に示すように、状態要素ServiceA~状態要素ServiceDはそれぞれ、停止状態を表す状態OFF と、稼働状態を表す状態ONの2つの状態を含む状態グラフである。
また、図22に示すように、サービスを起動させる操作は、状態OFF から状態ONへの状態遷移としてモデル化されている。また、サービスを停止させる操作は、状態ONから状態OFF への状態遷移としてモデル化されている。また、状態要素ServiceA~状態要素ServiceDの各初期状態および各目的状態は、共に状態ONである。
また、図22に示す状態要素ConfigA ~状態要素ConfigD は、状態要素としてモデル化されたサービスSA~サービスSDの各設定ファイルをそれぞれ表す。図22に示すように、状態要素ConfigA ~状態要素ConfigD はそれぞれ、旧バージョンのファイルであることを表す状態OLD と、新バージョンのファイルであることを表す状態NEW の2つの状態を含む状態グラフである。
また、図22に示すように、設定ファイルの更新操作は、状態OLD から状態NEW への状態遷移としてモデル化されている。また、状態要素ConfigA ~状態要素ConfigD の各初期状態は状態OLD であり、各目的状態は状態NEW である。
さらに、状態要素モデルには、状態要素間の干渉内容が記載される。例えば、図22に示す状態遷移を表す矢印に付随する黒色の吹き出しが、状態要素間の干渉内容(以下、「依存性」と呼ぶ。)を表す。
図22に示すように、状態要素ConfigA の状態OLD から状態NEW への状態遷移に付随する依存性には、「ServiceA:OFF」と記載されている。すなわち、依存性「ServiceA:OFF」は、状態要素ServiceAの状態が状態OFF でなければ、状態要素ConfigA の状態OLD から状態NEW への状態遷移は実行されないことを意味する。
上記のように、依存性は、1以上の「(状態要素):(状態の集合)」の記述で構成されている。状態要素モデルの依存性は、指定された状態要素が指定された状態の集合に含まれるいずれかの状態であるときのみ、付随されている状態遷移が実行されることを意味する。指定された状態要素が指定された状態の集合に含まれるいずれかの状態であるとき、依存性が満たされているという。
なお、依存性が複数の状態要素に関する「(状態要素):(状態の集合)」の記述で構成されている場合、全ての記述に関して依存性が満たされなければ状態遷移は実行されない。
状態要素モデル上の自動計画問題の解は、各状態要素が遷移を実行した上で状態要素モデルに含まれる全ての状態要素の状態が目的状態に遷移するための手順である。上述したように、全ての状態要素の状態が目的状態に遷移するためには、各状態要素の状態が自由に遷移できる手順ではなく、依存性が満たされるように状態要素の遷移と他の状態要素の遷移との順序関係が適切に定められた手順を作成することが求められる。
状態要素モデル上の自動計画問題の解の具体例を図23~図24に示す。図23は、状態要素モデルPAR_UPDATE上の自動計画問題の解の例を示す説明図である。図23に示す直列手順は、図22に示す状態要素モデルPAR_UPDATE上の自動計画問題の解として記載された図19に示す直列手順に相当する。
また、図24は、状態要素モデルPAR_UPDATE上の自動計画問題の解の他の例を示す説明図である。図24に示す半順序手順は、図22に示す状態要素モデルPAR_UPDATE上の自動計画問題の解として記載された図21に示す半順序手順に相当する。
図23~図24に示すように、状態要素E の状態を状態a から状態b へと遷移させる行動が「E:a →b 」と記載されている。上述したように、状態要素ServiceAの状態は最初から目的状態であるため遷移が不要であるが、状態要素ConfigA の状態OLD →状態NEW の遷移が実行されるためには状態要素ServiceAの状態が状態OFF であることが求められる。
よって、上記の遷移が実行されるために、状態要素ServiceAが表すサービスSAが一旦停止され、状態要素ConfigA が表すサービスSAの設定ファイルが更新される。設定ファイルが更新された後、サービスSAが再起動させられる。すなわち、行動「ServiceA:ON →OFF 」、行動「ConfigA:OLD →NEW 」、行動「ServiceA:OFF→ON」の順に3つの行動が実行されることが求められる。
上記の順序関係が担保されるように、図23に示す直列手順、および図24に示す半順序手順にそれぞれ矢印が張られている。すなわち、各手順が実行される時に依存性が必ず満たされる。
次に、状態要素モデルにおける過渡要件を説明する。状態要素モデルにおける過渡要件は、「状態に対するスコア割り当て」と「制約式」の2つの要素で構成される。
最初に、「状態に対するスコア割り当て」を説明する。1つの過渡要件に対して、状態要素モデルの各状態にスコアが割り当てられる。なお、割り当てられるスコアは、全て整数である。
図25は、状態要素モデルPAR_UPDATEの各状態に対して割り当てられたスコアの例を示す説明図である。図25に示すように、状態要素ServiceA~状態要素ServiceDの各稼働状態(状態ON)にはスコア「1」が、各停止状態(状態OFF )にはスコア「0」がそれぞれ割り当てられている。
また、状態要素ConfigA ~状態要素ConfigD の全ての状態にはスコア「0」が割り当てられている。以下、状態a に割り当てられたスコアをScore(a)と記載する。
また、所定の時点で状態要素E の状態が状態a であるとき、所定の時点での状態要素E のスコアはScore(a)である。以下、状態要素E のスコアをScore(E)と記載する。Score(E)は、状態要素E の状態の遷移に伴って変化する。
また、状態要素モデルM に含まれる全ての状態要素のスコアの和を、状態要素モデルM のスコアと呼ぶ。以下、状態要素モデルM のスコアをScore(M)と記載する。Score(M)は、状態要素モデルM に含まれる状態要素の状態の遷移に伴って変化する。
次に、過渡要件を構成する他の要素である「制約式」を説明する。例えば、状態要素モデルM の各状態にスコアが割り当てられた上で、過渡要件は、以下の4つのパターンのいずれかで与えられる。
「1.Score(M)が整数値L 以上である」
「2.Score(M)が整数値L 以下である」
「3.Score(M)が整数値L より大きい」
「4.Score(M)が整数値L より小さい」
上記の内容を過渡要件の制約式と呼ぶ。以下、過渡要件の制約式が表現可能な要件を示すため、具体例A、具体例Bおよび具体例Cを説明する。
具体例A.
図18に示す自動計画問題に与えられた上記の過渡要件は、図25に示すスコアを用いて「Score(PAR_UPDATE) が2以上である」と表現される。その理由は、上記の過渡要件が、サービスが2台以上のサーバで稼働している時にのみ満たされるからである。
具体例B.
図18に示す自動計画問題では、4台のサーバが提供する各サービスの性能が全て均一であると仮定されている。しかし、例えば各サーバの性能に差異があり、サービス全体の性能が担保される要件が「サービスが稼働しているサーバの台数」ではなく「性能の合計値」で表現されるような状況も考えられる。
上記の状況の例を図26に示す。図26は、状態要素モデルPAR_UPDATEの各状態に対して割り当てられたスコアおよび過渡要件の例を示す説明図である。図26に示すスコアは、図22に示す状態要素モデルの各状態に割り当てられている。
図26に示すように、状態要素ServiceA、状態要素ServiceCの各稼働状態(状態ON)には、スコア「100」が割り当てられている。図26に示す例では、サーバAおよびサーバCは、毎秒100リクエストを処理できる。
また、図26に示すように、状態要素ServiceB、状態要素ServiceDの各稼働状態(状態ON)には、スコア「300」が割り当てられている。図26に示す例では、サーバBおよびサーバDは、毎秒300リクエストを処理できる。
また、図26には、制約式「Score(PAR_UPDATE) ≧400 」が記載されている。すなわち、サービス全体の性能が担保される要件は、「スコアの合計(システム全体が処理可能な毎秒リクエスト数)が400以上」である。
具体例C.
使用可能なリソースに上限が与えられている状況の例を図27に示す。図27は、状態要素モデルConnectingTerminals 、各状態に対して割り当てられたスコアおよび過渡要件の例を示す説明図である。
図27に示す状態要素モデルConnectingTerminals には、各端末自体を表す状態要素(端末1、端末2、・・・、端末100)と、各端末の接続状態を表す状態要素(コネクション1、コネクション2、・・・、コネクション100)が含まれている。
図27に示すように、接続状態を表す状態要素には、状態「接続」と状態「切断」が含まれている。また、接続状態を表す状態要素の各現在状態および各目的状態は、共に状態「切断」である。
また、図27に示すように、端末を表す状態要素には、状態「未更新」と状態「更新済」が含まれている。また、端末を表す状態要素の各現在状態は状態「未更新」であり、各目的状態は状態「更新済」である。また、端末xの状態遷移には、依存性「コネクションx:接続」が付随している。
すなわち、図27に示す状態要素モデルConnectingTerminals は、「複数の端末(100台)がサーバにアクセスして更新データをダウンロードした後に更新を行う」という自動計画問題を表現できる。なお、サーバの最大同時接続可能数は、50台である。
また、図27に示すように、接続状態を表す状態要素の状態「接続」には、スコア「1」が割り当てられている。また、図27には、制約式「Score(ConnectingTerminals)≦50」が記載されている。
すなわち、状態要素モデルConnectingTerminals が表す自動計画問題には、状態が状態「接続」である接続状態を表す状態要素が常に50個以下でなければならないという過渡要件が課せられている。図27に示す過渡要件は、上限値が使用されている過渡要件である。
実施形態1.
[構成の説明]
以下、本発明の実施形態を、図面を参照して説明する。図1は、本発明による半順序手順計画装置の第1の実施形態の構成例を示すブロック図である。
本実施形態の半順序手順計画装置100は、人工知能が含まれる自律制御システムが所定の制約を満たしたまま目的を達成するためのタスクの実行手順を決定する。半順序手順計画装置100は、過渡要件が指定された状態要素モデル上の自動計画問題に対して、過渡要件を満たし、かつ効率的に実行可能な自動計画問題の解である半順序手順を導出できる。
図1に示す半順序手順計画装置100は、直列手順の各行動間に規定された順序関係のうちのいくつかを、過渡要件を満たす手順として満たすことが求められる制約が満たされる範囲内で削除することによって半順序手順を生成する。すなわち、本実施形態の半順序手順計画装置100が用いられると、過渡要件に違反しない半順序手順が得られる。
図1に示すように、本実施形態の半順序手順計画装置100は、過渡要件正規化部101と、変数生成部102と、依存性制約生成部103と、過渡要件充足制約生成部104と、制約解決部105と、半順序化処理部106とを備える。
過渡要件正規化部101は、過渡要件を正規化する機能を有する。具体的には、過渡要件正規化部101は、「1.Score(M)が整数値L 以上である」、「2.Score(M)が整数値L 以下である」、「3.Score(M)が整数値L より大きい」、「4.Score(M)が整数値L より小さい」のいずれかのパターンで表される過渡要件の制約式を、「1.Score(M)が整数値L 以上である」のパターンに変形する。以下、整数値L を、過渡要件の「下限値」と呼ぶ。
パターンを変形した後、過渡要件正規化部101は、状態に割り当てられたスコアが全て0以上の整数になるように過渡要件を変形する。例えば、過渡要件正規化部101は、負の数が含まれているスコア割り当てを、過渡要件の意味を変えずに全てのスコアが0以上の整数であるスコア割り当てに変換する。
上記の過渡要件に対する過渡要件正規化部101による一連の変形操作を、過渡要件の「正規化」と呼ぶ。過渡要件正規化部101による正規化が行われても、過渡要件の本来の意味は変更されない。例えば、正規化される前の過渡要件を満たす半順序手順は全て、正規化された後の過渡要件も満たす。さらに、正規化された後の過渡要件を満たす半順序手順は全て、正規化される前の過渡要件も満たす。
すなわち、最初から正規化された後の過渡要件が入力として与えられていても、半順序手順計画装置100は、正規化される前の過渡要件が入力として与えられていた時と同じ出力を返す。過渡要件正規化部101は、過渡要件の意味を変えずに全てのパターンの制約式をパターン1の制約式に変換できる。
変数生成部102は、直列手順に含まれる各順序関係に対して、0または1を取り得る変数を割り当てる機能を有する。変数生成部102は、割り当てられた全ての変数の集合を依存性制約生成部103、過渡要件充足制約生成部104、および制約解決部105に入力する。
依存性制約生成部103は、直列手順に含まれる全ての行動が正常に実行されるために充足されることが求められる依存性の制約を、変数生成部102から与えられた変数上の整数計画制約式として生成する機能を有する。
依存性制約生成部103は、生成された整数計画制約式を制約解決部105に入力する。なお、依存性制約生成部103は、非特許文献1に記載されている手法に類似する手法で整数計画制約式を生成してもよい。
過渡要件充足制約生成部104は、過渡要件が満たされるために充足されることが求められる順序関係の制約を、変数生成部102から与えられた変数上の整数計画制約式として生成する機能を有する。過渡要件充足制約生成部104は、生成された整数計画制約式を制約解決部105に入力する。
制約解決部105は、依存性制約生成部103および過渡要件充足制約生成部104から入力された整数計画制約式が満たされるように変数に値を割り当てる機能を有する。具体的には、制約解決部105は、整数計画制約式が満たされるように変数生成部102から入力された各変数に対して0または1を割り当てる。
次いで、制約解決部105は、最も1が少なく割り当てられた変数の集合を求める。制約解決部105は、求められた変数の集合を、半順序化処理部106に入力する。
半順序化処理部106は、制約解決部105から入力された変数の集合に対する値の割り当てを基に、入力された直列順序から順序関係を一部取り除くことによって、半順序手順を生成する機能を有する。
なお、処理を単純にするために、本実施形態の直列手順には「初期化」と「終了」の2つの仮想的な行動が付け加えられる。初期化行動は直列手順の先頭に、終了行動は直列手順の末尾にそれぞれ付け加えられる。
図2は、仮想的な初期化行動と仮想的な終了行動が付け加えられた手順の例を示す説明図である。図2に示す直列手順は、図23に示す状態要素モデルPAR_UPDATE上の自動計画問題の解の1つである直列手順に、初期化行動と終了行動が付け加えられた手順である。
初期化行動と終了行動は、状態要素に属する状態遷移に対応しない、特殊な行動である。すなわち、初期化行動は、全ての状態要素の状態を初期状態に遷移させる行動である。また、終了行動は、全ての状態要素の状態が目的状態である時にのみ実行可能な行動である。なお、終了行動が実行されても、何も行われずに作業が終了する。
初期化行動は、入力された直列手順が半順序化された手順においても、他のどのタスクよりも先に実行されることが求められる。また、終了行動は、入力された直列手順が半順序化された手順においても、他のどのタスクよりも後に実行されることが求められる。
本実施形態の半順序手順計画装置100は、複数の状態要素で構成されている状態要素モデルと、状態要素モデル上に規定される過渡要件と、過渡要件を満たす状態要素モデル上の自動計画問題の解である直列手順とを基に、過渡要件を満たす自動計画問題の解である半順序手順を導出する。
半順序手順計画装置100は、直列手順に規定された行動の間の順序関係を、行動の実行に要する依存性を満たすために求められる順序関係、および過渡要件を満たすために求められる順序関係以外の冗長な順序関係が削減されるように再規定することによって、半順序手順を導出する。
[動作の説明]
以下、本実施形態の半順序手順計画装置100の半順序手順を出力する動作を図3~図14を参照して説明する。
最初に、過渡要件正規化部101の過渡要件を正規化する動作を図3を参照して説明する。図3は、過渡要件正規化部101による過渡要件正規化処理の動作を示すフローチャートである。
最初に、過渡要件正規化部101には、半順序手順計画装置100に入力された状態要素モデルM に課せられた過渡要件が入力される(ステップS110)。入力された過渡要件のスコア割り当てをSc、制約式をConstrとそれぞれ記す。
次いで、過渡要件正規化部101は、Constrが「Score(M)が整数値L 以下である」というパターン2の制約式、または「Score(M)が整数値L より小さい」というパターン4の制約式のいずれかに該当するか否かを確認する(ステップS111)。パターン2の制約式、またはパターン4の制約式に該当しない場合(ステップS111におけるNo)、過渡要件正規化部101は、ステップS116の処理を行う。
パターン2の制約式、またはパターン4の制約式のいずれかに該当する場合(ステップS111におけるYes )、過渡要件正規化部101は、Scの全てのスコアの正負を反転させる(ステップS112)。
次いで、過渡要件正規化部101は、Constrがパターン2の制約式に該当するか否かを確認する(ステップS113)。パターン2の制約式に該当する場合(ステップS113におけるYes )、過渡要件正規化部101は、Constrの内容を「Score(M)が整数値-L以上である」に置き換える(ステップS114)。
Constrがパターン2の制約式ではなくパターン4の制約式に該当する場合(ステップS113におけるNo)、過渡要件正規化部101は、Constrの内容を「Score(M)が整数値-Lより大きい」に置き換える(ステップS115)。
ステップS115の処理まで終了した段階で、Constrは、「Score(M)が整数値L 以上である」のパターン1の制約式か、「Score(M)が整数値L より大きい」のパターン3の制約式のいずれかに該当する。
次いで、過渡要件正規化部101は、Constrが「Score(M)が整数値L より大きい」というパターン3の制約式に該当するか否かを確認する(ステップS116)。パターン3の制約式に該当しない場合(ステップS116におけるNo)、過渡要件正規化部101は、ステップS118の処理を行う。
パターン3の制約式に該当する場合(ステップS116におけるYes )、過渡要件正規化部101は、Constrの内容を「Score(M)が整数値(L+1) 以上である」に置き換える(ステップS117)。
ステップS117の処理まで終了した段階で、Constrは、「Score(M)が整数値L 以上である」というパターン1の制約式に該当する。上述した通り、以下の処理では整数値L を、過渡要件の「下限値」と呼ぶ。
次いで、過渡要件正規化部101は、Scのスコアの最小値を取得し、Baseとする(ステップS118)。
次いで、過渡要件正規化部101は、-Base の値を状態に割り当てられた全てのスコアに加算する。また、過渡要件正規化部101は、Constrの下限値L に、「-Base ×(状態要素の数)」を加算する(ステップS119)。加算した後、過渡要件正規化部101は、過渡要件正規化処理を終了する。
過渡要件正規化処理が終了した段階で、過渡要件のスコアScは、全て0以上の値に正規化されている。また、制約式Constrは、「Score(M)が整数値L 以上である」のパターン1の制約式に正規化されている。
以下、具体例を用いて過渡要件正規化部101による過渡要件正規化処理を説明する。本例では、入力される過渡要件Reが課せられている状態要素モデルをMeとする。状態要素モデルMeには、形式が同じである状態要素A と状態要素B が含まれている。また、状態要素A と状態要素B は、共に状態a 、状態b 、状態c の3つの状態を有する。
図4は、過渡要件正規化部101に入力される過渡要件の例を示す説明図である。図4は、過渡要件正規化部101に入力される過渡要件Reを示す。
図4に示すように、状態要素A および状態要素B の状態a 、状態b 、状態c には、共に「0」、「1」、「-1」の各スコアが割り当てられている。以下、図4に示すスコア割り当てを{a:0、b:1、c:-1}と記載する。また、制約式は「Score(Me) が2より小さい」である。
上記の制約式は「Score(M)が整数値L より小さい」というパターン4の制約式に該当するため(ステップS111におけるYes )、過渡要件正規化部101は、全てのスコアの正負を反転させる(ステップS112)。反転させられた後、スコア割り当ては{a:0、b:-1、c:1}と記載される。
また、上記の制約式はパターン4の制約式に該当するため(ステップS113におけるNo)、過渡要件正規化部101は、制約式の内容を「Score(Me) が-2より大きい」に変形する(ステップS115)。
ステップS115の処理まで終了した段階で制約式が「Score(M)が整数値L より大きい」というパターン3の制約式に該当するため(ステップS116におけるYes )、過渡要件正規化部101は、制約式の内容を「Score(Me) が-1以上である」に変形する(ステップS117)。
次いで、過渡要件正規化部101は、スコアのうち最も小さい値である「-1」をBaseとして取得する(ステップS118)。次いで、過渡要件正規化部101は、全てのスコアに-Base である「1」を加算する。また、過渡要件正規化部101は、過渡要件の下限値である「-1」に「(1×2=)2」を加算する(ステップS119)。
最終的に、本具体例の過渡要件のスコア割り当ては、{a:1、b:0、c:2}に正規化される。また、本具体例の過渡要件の制約式は、「Score(Me) が1以上である」に正規化される。
次に、変数生成部102による変数生成処理を説明する。変数生成部102は、入力された直列手順に含まれる行動の間の全ての順序関係に対して変数を割り当てる。変数生成部102は、1つの順序関係に対して、1つの変数を割り当てる。
図5は、変数生成部102による変数生成処理の例を示す説明図である。図5に示す手順は、「初期化」、「a」、「b」、「c」、「終了」の5つの行動で構成される直列手順である。
図5に示す順序関係のように、直列手順である図5に示す手順には、(初期化→a)、(初期化→b)、(初期化→c)、(初期化→終了)、(a→b)、(a→c)、(a→終了)、(b→c)、(b→終了)、(c→終了)の、合計で10個の順序関係が含まれている。一般的に、n個の行動で構成される直列手順には、{(1/2)×n×(n-1)}個の順序関係が含まれている。
変数生成部102は、各順序関係に変数を割り当てる。すなわち、変数生成部102は、図5に示す手順から、x(初期化→a)、x(初期化→b)、x(初期化→c)、x(初期化→終了)、x(a→b)、x(a→c)、x(a→終了)、x(b→c)、x(b→終了)、x(c→終了)の、合計で10個の変数を生成する。
以下、生成された変数に制約を課すための構成要素である依存性制約生成部103および過渡要件充足制約生成部104の各動作の説明をする前に、変数生成部102が生成した変数の意味の説明が求められると考えられる。よって、先に半順序化処理部106の動作を説明する。
半順序化処理部106は、変数生成部102が生成した変数に割り当てられた値を制約解決部105から受け取る。半順序化処理部106は、受け取った値を基に、直列手順を半順序手順に変形する。
制約解決部105は、各変数x(a→b)に「0」か「1」を割り当てる。制約解決部105が変数x(a→b)に「0」を割り当てることは、半順序化処理部106に「順序関係(a→b)は無用な順序関係であり取り除かれてよい」という情報を与えていることに相当する。
また、制約解決部105が変数x(a→b)に「1」を割り当てることは、半順序化処理部106に「順序関係(a→b)は必要な順序関係であり取り除かれてはならない」という情報を与えていることに相当する。
半順序化処理部106は、基本的に制約解決部105から与えられた情報にそのまま従う。すなわち、半順序化処理部106は、「0」が割り当てられた順序関係を手順から取り除き、「1」が割り当てられた順序関係を手順に残す。すなわち、変数に割り当てられた1つの値は、そのまま半順序手順の1つの構成要素に対応している。
図6は、半順序化処理部106による半順序化処理の例を示す説明図である。図6に示す半順序化処理において、半順序化処理部106は、変数に対する値の割り当てを基に、図5に示す直列手順を半順序化している。
図6に示すように、x(a→b)とx(b→c)の2変数に「0」が割り当てられている。また、x(初期化→a)、x(初期化→b)、x(初期化→c)、x(初期化→終了)、x(a→c)、x(a→終了)、x(b→終了)、x(c→終了)の8変数に「1」が割り当てられている。
上記の値を基に半順序化処理部106が半順序化を行うと、図6に示すような半順序手順が生成される。すなわち、「初期化」と「終了」以外の行動の間には、「a」と「c」の間にのみ順序関係が規定されており、他の順序関係は全て取り除かれている。
次に、依存性制約生成部103による依存性制約生成処理を説明する。依存性制約生成処理では、変数生成部102から入力された変数に課せられる制約Cdが生成される。制約Cdは、「制約Cdを満たすような全ての割り当てに従って半順序化が行われると、正しい半順序手順が得られる」という性質を有する。なお、依存性制約生成部103は、例えば非特許文献1に記載されている手法と同様の手法で制約Cdを生成する。
なお、「正しい半順序手順」は、過渡要件が考慮されない時の状態要素モデル上の自動計画問題の解に相当する。すなわち、「正しい半順序手順」は、全ての行動に対して、実行時に依存性が全て満たされることが保証されているような半順序手順である。
以下、非特許文献1に記載されている手法を簡単に説明する。非特許文献1に記載されている手法では、「正しい半順序手順」が得られるための要件をSAT 制約、すなわちTrueまたはFalse の値を取る「ブール変数」上の論理制約式として記述する方法が使用されている。図7に、制約の一覧を示す。
図7は、非特許文献1に記載されている手法で生成される制約の例を示す説明図である。図7に示すように、生成される制約は2種類ある。1つ目の制約は、順序関係としての性質である推移律に対応する制約である。推移律は、例えば「aの後にbが実行される」、かつ「bの後にcが実行される」ならば、「aの後にcが実行される」と言える、という順序関係の性質である。
図7に示す第1制約のように、例えば、順序関係(a→b)に対応するブール変数をβ(a→b)と記載すると、行動a、行動b、行動cに関する推移律は「(β(a→b)∧β(b→c))⇒β(a→c)」と記載される。
2つ目の制約は、全ての依存性が満たされているという条件が書き下された制約である。「全ての依存性が満たされている」ことを表現するために、非特許文献1に記載されている手法では、行動が別の行動の依存性を「支持」するという概念が用いられている。
上記の概念が用いられると、行動の「状態要素E の、状態s 」に対する依存性は、状態要素E の状態を状態s に遷移させた行動に支持されると考えられる。上記の概念を基に、非特許文献1に記載されている手法は、β(a→b)とは別に「行動aの状態s に対する依存性を行動bが支持している」という変数を用いて依存性に関する制約を表現している。
例えば、非特許文献1に記載されている手法は、「『行動aが行動bに支持される』とは、『行動aが行動bの直後に実行される』ということである」という性質や、「何らかの行動によって全ての依存性が支持されていなければならない」という性質を制約に表している。すなわち、非特許文献1に記載されている手法は、図7に示す第2制約のように、依存性の充足条件をSAT 制約として表現している。
本実施形態の依存性制約生成部103は、依存性制約生成処理で、上記の手法で生成されるSAT 制約を整数計画制約式として生成する。図8に、2つの制約式の対応関係を示す。図8は、SAT 制約式と整数計画制約式との対応関係の例を示す説明図である。
図8に示すSAT 制約式は、図7に示す制約である。また、図8に示す整数計画制約式は、依存性制約生成部103が生成する図7に示す制約と等価な整数計画制約式である。図8に示すように、依存性制約生成部103は、βのTrueをxの「1」に、βのFalse をxの「0」にそれぞれ対応させることによって、SAT 制約式を整数計画制約式に変換している。
次に、過渡要件充足制約生成部104の過渡要件充足制約を生成する動作を図9を参照して説明する。図9は、過渡要件充足制約生成部104による過渡要件充足制約生成処理の動作を示すフローチャートである。
最初に、過渡要件充足制約生成部104は、直列手順と過渡要件とを入力として受け取る(ステップS120)。
次いで、過渡要件充足制約生成部104は、入力された直列手順を、各行動がノードであり、順序関係の一部がエッジであるような有向グラフとみなす。次いで、過渡要件充足制約生成部104は、入力された過渡要件のスコア割り当てを基に、有向グラフ上にフローネットワークを構築する(ステップS121)。
フローネットワークは、有向グラフの各エッジに「容量」の値が定められたネットワークを意味する。フローネットワークは、有向グラフのエッジに沿って何らかの流体が流れているモデル化された状況を表す。
容量は、エッジに沿って流れる流体の量(以下、「流量」と呼ぶ。)の上限値に対応する。また、ノードAからノードBまでフローネットワークに沿って流れる流体の「流れ」を、フローネットワークの「フロー」と呼ぶ。また、ノードAをフローの「始点」、ノードBをフローの「終点」とそれぞれ呼ぶ。また、終点に流れ込む流体の量を、「フローの流量」と呼ぶ。
フローにおいて、始点と終点以外の全てのノードでは、「エッジに沿って流入する流体の量の合計(=流入量)」と、「エッジに沿って流出する流体の量の合計(=流出量)」が一致していなければならない。なお、始点では流入量が0であるが、流出量に上限はない。また、終点では流出量が0であるが、流入量に上限はない。
以下、過渡要件充足制約生成部104が直列手順を有向グラフと解釈する方法を説明する。直列手順は元々、各行動がノード、および全ての順序関係がエッジとみなされることによって有向グラフとみなされる。
本実施形態の過渡要件充足制約生成部104は、順序関係のうち、以下の4つのパターンのいずれかに該当する順序関係のみをエッジとみなす。
(1)「初期化行動と、各状態要素の行動のうち最も早く出現する行動との順序関係」
(2)「状態要素E 上の2つの行動a、行動b間の順序関係(a→b)で、行動bが状態要素E 上で行動aの直後に行われた行動である順序関係」
(3)「異なる状態要素上の2つの行動間の順序関係」
(4)「各状態要素の行動のうち最後に出現する行動と、終了行動との順序関係」
さらに、過渡要件充足制約生成部104は、(1)、(2)、(4)の各順序関係の向きをそのままエッジの向きとして使用する。また、過渡要件充足制約生成部104は、(3)の順序関係の向きを反転させた向きをエッジの向きとして使用する。
以下、過渡要件充足制約生成部104が直列手順を有向グラフと解釈する具体例を、図10を参照して説明する。 図10は、直列手順と直列手順に対応する有向グラフの例を示す説明図である。
図10に示す有向グラフには、「初期化」、「A:a→b」、「B:x→y」、「A:b→c」、および「終了」の5つのノードが含まれている。また、図10に示す有向グラフには、ノードの間に全部で7本のエッジが含まれている。
図10に示すエッジ(「初期化」→「A:a→b」)、エッジ(「初期化」→「B:x→y」)は、上記の(1)のパターンに該当する。また、図10に示すエッジ(「A:a→b」→「A:b→c」)は、上記の(2)のパターンに該当する。
また、図10に示すエッジ(「B:x→y」→「A:a→b」)、エッジ(「A:b→c」→「B:x→y」)は、上記の(3)のパターンに該当する。また、図10に示すエッジ(「A:b→c」→「終了」)、エッジ(「B:x→y」→「終了」)は、上記の(4)のパターンに該当する。上述した通り、上記の(3)のパターンに該当するエッジの有向グラフにおける向きは、直列手順における矢印の向きに対して反対になっている。
次いで、過渡要件充足制約生成部104は、有向グラフに変換された直列手順の矢印を「Acrossタイプ:(3)のパターンのエッジ」と「Sameタイプ:(1)、(2)、(4)のパターンのエッジ」の2タイプに分ける。いずれかのタイプに分けた後、過渡要件充足制約生成部104は、スコア割り当てに基づいてエッジに容量を設定する。
過渡要件充足制約生成部104は、Acrossタイプのエッジ(以下、Acrossエッジと呼ぶ。)に、過渡要件の下限値以上の十分大きな値を容量として設定する。また、過渡要件充足制約生成部104は、順序関係が(a→b)であるSameタイプのエッジ(以下、Sameエッジと呼ぶ。)に、「行動aの遷移先状態のスコア」を容量として設定する。
ただし、過渡要件充足制約生成部104は、順序関係が(a→b)である(1)のパターンに該当するエッジに、「行動bの遷移元状態のスコア」を容量として設定する。
以下、過渡要件充足制約生成部104がエッジに容量を設定する具体例を、図11を参照して説明する。図11は、有向グラフに設定されたスコア割り当てと構築されるフローネットワークの例を示す説明図である。
図11に示すフローネットワークは、過渡要件充足制約生成部104が図11に示すスコア割り当てを基に図10に示す有向グラフに容量を設定することによって構築したフローネットワークである。図11に示す各エッジに付随している円の内部の数値が、各エッジに設定された容量である。
なお、Acrossエッジに設定される容量は、少なくとも過渡要件の制約式の下限値より十分大きな値であればどのような値でもよい。図11に示す例では、全ての状態のスコアの和である「11」が設定されている。
変換されたフローネットワーク上の初期化行動から終了行動までの間に過渡要件の下限値以上の流量のフローが流れるのであれば、フローが少しでも流れているエッジを含む半順序手順は、全て過渡要件を満たす。以下、上記の半順序手順が過渡要件を満たす理由を説明する。
行動π(=(E1:a→b))と行動σ(=(E1:b→c))を結ぶSameエッジにおいて、行動πが実行されてから行動σが実行されるまでの間、状態要素E1の状態は状態b のままである。
従って、上記のSameエッジは、総スコアにScore(b)だけ寄与している。すなわち、Sameエッジは、フローネットワークにおいて「合計スコアが所定値以上に維持される期間」に対応している。
また、行動π(=(E1:a→b))と行動σ(=(E2:c→d))を結ぶAcrossエッジは、行動σが行動πの前に実行されることを意味する。
図12は、フローネットワークと半順序手順の例を示す説明図である。図12に示すフローネットワークは、行動α、行動β、行動γ、行動δの4つの行動で構成されている。また、図12に示すフローネットワークには、スコア「1」が維持されるSameエッジ(α→β)と、スコア「2」が維持されるSameエッジ(γ→δ)と、Acrossエッジ(β→γ)とが含まれている。
また、図12に示す半順序手順は、図12に示すフローネットワークに対応している。図12に示す半順序手順は、4つの行動が順序関係で繋がれることによって生成される手順である。
図12に示すフローネットワークのSameエッジ(α→β)により、半順序手順において行動αが実行されてから行動βが実行されるまでスコア「1」が維持されることが保証されている。また、フローネットワークのSameエッジ(γ→δ)により、半順序手順において行動γが実行されてから行動δが実行されるまでスコア「2」が維持されることが保証されている。
さらに、図12に示すフローネットワークのAcrossエッジ(β→γ)によって半順序手順に(γ→β)という順序関係が規定されたことによって、行動αが実行されてから行動δが実行されるまでスコア「1」が維持されることが保証されている。
上記のように、SameエッジとAcrossエッジが繋がれることによって、「所定のスコアが維持される期間」が延長される。
すなわち、初期化行動から終了行動までの流量Fのフローをエッジで構成することは、SameエッジとAcrossエッジを繋ぎ「スコアFが維持される期間」を初期化行動の実行直後から終了行動の実行直前まで延長することに相当する。
初期化行動の実行直後から終了行動の実行直前までスコア「F」が維持されることは、手順全体の合計スコアが「F」に維持されることを意味する。すなわち、与えられた過渡要件の下限値以上の流量を有するフローは、過渡要件の充足を保証する。
以下、フローネットワーク上の流量が「2」のフローと、フローを基に生成された半順序手順の具体例を図13を参照して説明する。図13は、フローと半順序手順の例を示す説明図である。
図13に示すフローは、図11に示すフローネットワーク上の流量が「2」のフローである。また、図13に示す半順序手順は、図13に示すフローが図11に示すフローネットワークを流れるように、エッジ(「B:x→y」→「A:b→c」)が残された半順序手順である。
図13に示す半順序手順を参照すると、エッジ(「B:x→y」→「A:b→c」)が存在する場合、状態要素A による「スコア「2」が維持される区間」と、状態要素B による「スコア「5」が維持される区間」が重なることが保証される。すなわち、初期化行動から終了行動までの区間で常にスコア「2」が維持されることが確認される。
なお、上記では「下限値L 以上の流量を有するフローが存在する半順序手順は過渡要件を満たす」という命題が成立することを説明した。上記命題の逆である「過渡要件を満たす半順序手順には、下限値L 以上の流量を有するフローが存在する」も、同様に成立する。
上記命題の逆が成立することを証明するために、上記命題の対偶である「下限値L 以上の流量を有するフローが存在しない半順序手順は過渡要件を満たさない」が成立することの証明の概要を以下に説明する。
半順序手順iPに下限値L 以上の流量を有するフローが存在しないとする。ネットワークフロー理論の基本定理である「最大フロー・最小カット定理」により、「下限値L 以上の流量を有するフローが存在しない」のであれば、「最小カットのカット容量はL 未満」である。
さらに、半順序手順上の最小カットMCであって、依存性を満たしつつ最小カットMCに含まれる行動だけ実行された状態が実現される場合を考える。最小カットMCに含まれる行動だけ実行された状態における合計スコアは、最小カットMCの容量と等しい。
すなわち、半順序手順が実行される順序によって、合計スコアがL 未満であるような状態が実現される可能性がある。合計スコアがL 未満であるような状態が実現される場合、半順序手順iPは過渡要件を満たさない。
次いで、過渡要件充足制約生成部104は、変換されたフローネットワークにおける、入力された過渡要件の下限値以上の流量を有するフローの存在条件を表す整数計画制約式を生成する(ステップS122)。
フローの存在条件は、各エッジにどれだけの流量が流れているかを表すフロー変数fが割り当てられることによって、線形制約(以下、フロー存在性制約と呼ぶ。)に帰着させる方法が一般的に知られている。フロー存在性制約を、図14を参照して説明する。
図14は、フロー存在性制約の例を示す説明図である。各エッジ(a→b)に流量の値を表すフロー変数f(a→b)が設定されている場合、フロー変数に課せられる1つ目の制約は、上述した「流量は容量以下」である。図14(a)に示すフロー存在性制約が、「流量は容量以下」の制約に対応する。
また、フロー変数に課せられる2つ目の制約は、上述した「(始点と終点以外の)各ノードの流入量の合計と流出量の合計が等しい」である。図14(b)に示すフロー存在性制約が、「各ノードの流入量の合計と流出量の合計が等しい」の制約に対応する。
上記のフロー存在性制約を全て満たすようなフロー変数fへの値の割り当てと、フローネットワーク上の1つのフローとが、1対1に対応している。
ステップS122で、過渡要件充足制約生成部104は、最初にフロー存在性制約を生成する。次いで、過渡要件充足制約生成部104は、変数生成部102から入力された変数xと、新たに導入された変数fとの関係を表す制約を生成されたフロー存在性制約に加える。
加えられる制約は、Acrossエッジ上にフローが少しでも流れていれば半順序化された後もAcrossエッジを残さなくてはならないという制約である。元の順序関係rがフローネットワークにおいてエッジr’に変換されたとすると、上記の制約は「f(r’)>0⇒x(r)=1」と表現される。
また、r’の上限値として設定された十分大きな値をcとすると、上記の制約式は「c×x(r)-f(r’)≧0」という整数計画制約式で表現される。
ステップS122で得られた制約群が、過渡要件充足制約生成部104の最終的な出力である。過渡要件充足制約生成部104は、ステップS122で得られた制約群を制約解決部105に入力する。
次に、制約解決部105の動作を説明する。制約解決部105は、依存性制約生成部103および過渡要件充足制約生成部104から入力された整数計画制約式に目的関数を追加することによって、整数計画問題を構成する。次いで、制約解決部105は、整数計画ソルバ(図示せず)を用いて整数計画問題の解を求める。
制約解決部105が整数計画制約式に追加する目的関数は、変数生成部102から入力された変数の総和である。上述したように、変数生成部102から入力される変数は、順序関係を表すエッジのうち、どのエッジが半順序手順に採用されるかを表している。
採用されるエッジは「1」で表現され、採用されないエッジは「0」で表現される。すなわち、変数の総和が最小の割り当てを求めることは、依存性および過渡要件を満たす半順序手順のうち、構造が最小の半順序手順を求めることに相当する。
制約解決部105は、構成された整数計画問題を整数計画ソルバに入力し、整数計画問題の解を求める。次いで、制約解決部105は、求められた整数計画問題の解を半順序化処理部106に入力する。
半順序化処理部106は、上述した通りに動作し、入力を基に半順序手順を構成する。
[効果の説明]
本実施形態の半順序手順計画装置100は、過渡要件付き状態要素モデル上の自動計画問題の解である半順序手順を導出する半順序手順計画装置である。半順序手順計画装置100は、過渡要件と直列手順とを基に最低限の制約を満たす順序関係を半順序手順に採用する。
半順序手順計画装置100は、手順に含まれる全ての行動が依存性を満足し、正常に実行されるための条件および手順が過渡要件を満たすための必要十分条件を順守する手順のうち、構造が最も小さい手順を出力する。
具体的には、依存性制約生成部103は、手順に含まれる全ての行動が依存性を満足し、正常に実行されるための必要十分条件を整数計画制約式として出力する。また、過渡要件充足制約生成部104は、手順が過渡要件を満たすための必要十分条件を整数計画制約式として出力する。
また、制約解決部105は、依存性制約生成部103および過渡要件充足制約生成部104が出力した制約を満たす手順の中で構造が最も小さい手順を導出する。また、半順序化処理部106は、直列手順から手順の正常実行に不要な順序関係を取り除き、半順序手順を生成する。
半順序化処理部106は、直列手順から過渡要件および遷移条件を満たすために要する順序関係以外の順序関係を取り除くことによって半順序手順を生成する。よって、手順の並列実行が可能になるため、手順実行にかかる時間が低減する。
実施形態2.
[構成の説明]
次に、本発明の第2の実施形態を、図面を参照して説明する。図15は、本発明による半順序手順計画装置の第2の実施形態の構成例を示すブロック図である。
本実施形態の半順序手順計画装置110の構成は、複数の過渡要件が扱われるように第1の実施形態の半順序手順計画装置100の構成の一部に変更が加えられた構成である。
図15に示すように、本実施形態の半順序手順計画装置110は、過渡要件正規化部107と、変数生成部102と、依存性制約生成部103と、過渡要件充足制約生成部108と、制約解決部105と、半順序化処理部106とを備える。
本実施形態の半順序手順計画装置110の構成は、過渡要件正規化部101が過渡要件正規化部107に、過渡要件充足制約生成部104が過渡要件充足制約生成部108にそれぞれ置き換えられている点を除いて、第1の実施形態の半順序手順計画装置100の構成と同様である。
本実施形態の半順序手順計画装置110は、第1の実施形態の半順序手順計画装置100と異なり、入力として過渡要件の代わりに過渡要件の集合を受け取る。
本実施形態の過渡要件正規化部107は、図3に示す過渡要件正規化処理を与えられた全ての過渡要件に対して行う。過渡要件正規化処理を実行した後、過渡要件正規化部107は、正規化された全ての過渡要件を出力として過渡要件充足制約生成部108に入力する。
本実施形態の過渡要件充足制約生成部108は、入力された過渡要件の集合に含まれる全ての過渡要件に対して、図9に示す過渡要件充足制約生成処理を実行することによって過渡要件充足制約を生成する。過渡要件充足制約生成処理を実行した後、過渡要件充足制約生成部108は、各過渡要件由来の制約式を出力として、制約解決部105に入力する。
第1の実施形態で述べたように、図9に示す過渡要件充足制約生成処理が実行されることによって過渡要件から得られた制約を満たすような半順序手順は、生成元の過渡要件も満たす。すなわち、図9に示す過渡要件充足制約生成処理が実行されることによって複数の過渡要件から得られた制約を全て満たすような半順序手順は、生成元の過渡要件を全て満たす。
[効果の説明]
本実施形態の半順序手順計画装置110は、手順に含まれる全ての行動が依存性を満足し、正常に実行されるための条件および手順が複数の過渡要件を満たすための必要十分条件を順守する手順のうち、構造が最も小さい手順を出力する。
具体的には、過渡要件充足制約生成部108は、手順が入力された全ての過渡要件を満たすための必要十分条件を整数計画制約式として出力する。また、制約解決部105は、依存性制約生成部103および過渡要件充足制約生成部108が出力した制約を満たす手順の中で構造が最も小さい手順を導出する。
また、半順序化処理部106は、直列手順から手順の正常実行に不要な順序関係を取り除き、半順序手順を生成する。よって、手順の並列実行が可能になるため、手順実行にかかる時間が低減する。
以下、本実施形態の半順序手順計画装置のハードウェア構成の具体例を説明する。図16は、本発明による半順序手順計画装置のハードウェア構成例を示す説明図である。
図16に示す半順序手順計画装置は、CPU(Central Processing Unit )21と、主記憶部22と、補助記憶部23とを備える。また、ユーザが操作するための入力部24や、ユーザに処理結果または処理内容の経過を提示するための出力部25を備えてもよい。
なお、図16に示す半順序手順計画装置は、CPU21の代わりにDSP(Digital Signal Processor)を備えてもよい。または、図16に示す半順序手順計画装置は、CPU21とDSPとを併せて備えてもよい。
主記憶部22は、データの作業領域やデータの一時退避領域として用いられる。主記憶部22は、例えばRAM(Random Access Memory)である。
補助記憶部23は、一時的でない有形の記憶媒体である。一時的でない有形の記憶媒体として、例えば磁気ディスク、光磁気ディスク、CD-ROM(Compact Disk Read Only Memory )、DVD-ROM(Digital Versatile Disk Read Only Memory )、半導体メモリが挙げられる。
入力部24は、データや処理命令を入力する機能を有する。入力部24は、例えばキーボードやマウス等の入力デバイスである。
出力部25は、データを出力する機能を有する。出力部25は、例えば液晶ディスプレイ装置等の表示装置、またはプリンタ等の印刷装置である。
また、図16に示すように、半順序手順計画装置において、各構成要素は、システムバス26に接続されている。
補助記憶部23は、例えば、過渡要件正規化部101、変数生成部102、依存性制約生成部103、過渡要件充足制約生成部104、制約解決部105、半順序化処理部106、過渡要件正規化部107、および過渡要件充足制約生成部108を実現するためのプログラムを記憶している。
なお、各実施形態の半順序手順計画装置100、半順序手順計画装置110は、例えば、非一時的な記憶媒体に格納されているプログラムに従って処理を実行するCPU21によって実現されてもよい。すなわち、各実施形態の半順序手順計画装置100、半順序手順計画装置110は、ソフトウェアにより実現されてもよい。
ソフトウェアにより実現される場合、CPU21が補助記憶部23に格納されているプログラムを、主記憶部22にロードして実行し、半順序手順計画装置の動作を制御することによって、各機能がソフトウェアにより実現される。すなわち、過渡要件正規化部101、変数生成部102、依存性制約生成部103、過渡要件充足制約生成部104、制約解決部105、半順序化処理部106、過渡要件正規化部107、および過渡要件充足制約生成部108は、例えば、プログラム制御に従って処理を実行するCPU21によって実現される。
また、各構成要素の一部または全部は、汎用の回路(circuitry )または専用の回路、プロセッサ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
例えば、各実施形態の半順序手順計画装置100、半順序手順計画装置110における各部は、ハードウェア回路によって実現されてもよい。一例として、過渡要件正規化部101、変数生成部102、依存性制約生成部103、過渡要件充足制約生成部104、制約解決部105、半順序化処理部106、過渡要件正規化部107、および過渡要件充足制約生成部108が、それぞれLSI(Large Scale Integration)で実現される。また、それらが1つのLSI で実現されていてもよい。
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
次に、本発明の概要を説明する。図17は、本発明による半順序手順計画装置の概要を示すブロック図である。本発明による半順序手順計画装置10は、状態要素の状態を初期状態から目的状態へ遷移させる複数の操作(例えば、行動)が直列に並べられた直列手順内の操作間の順序関係のうち所定の制約の下で削除可能な順序関係の条件である第1条件を生成する第1生成部11(例えば、依存性制約生成部103)と、順序関係のうち状態が初期状態から目的状態へ遷移するまでの間状態要素が満たすことが求められる要件である過渡要件が満たされるために要する順序関係の条件である第2条件を生成する第2生成部12(例えば、過渡要件充足制約生成部104)と、生成された第1条件を満たし、かつ生成された第2条件を満たさない順序関係を直列手順から削除される順序関係に決定する決定部13(例えば、制約解決部105)とを備える。
そのような構成により、半順序手順計画装置は、過渡要件を満たす半順序手順を計画できる。
また、第1生成部11は、第1条件を整数計画制約式として生成し、第2生成部12は、第2条件を整数計画制約式として生成し、決定部13は、生成された整数計画制約式を含む整数計画制約問題を求解することによって直列手順から削除される順序関係を決定してもよい。
そのような構成により、半順序手順計画装置は、半順序手順を生成する問題を整数計画制約問題に帰着させることができる。
また、第2生成部12は、直列手順に対応する有向グラフ上のネットワークフローにおけるフローの存在性条件として整数計画制約式を生成してもよい。
そのような構成により、半順序手順計画装置は、過渡要件を満たす順序関係の条件を有向グラフを用いて導出できる。
また、過渡要件は、状態要素の状態に割り当てられたスコアと状態要素の現在状態に割り当てられたスコアに関する制約式とで構成されてもよい。また、過渡要件には、状態要素モデルが遷移を禁止されている状態を規定する制約が含まれていてもよい。
そのような構成により、半順序手順計画装置は、半順序手順を生成する問題を整数計画制約問題に帰着させることができる。
また、半順序手順計画装置10は、決定部13により決定された順序関係を直列手順から削除することによって直列手順を更新する更新部(例えば、半順序化処理部106)を備えてもよい。また、更新部は、直列手順を一部の操作が並列に実行可能な形式の手順に更新してもよい。
そのような構成により、半順序手順計画装置は、過渡要件を満たす並列に実行可能な半順序手順を計画できる。
また、半順序手順計画装置10は、過渡要件を正規化する正規化部(例えば、過渡要件正規化部101)を備え、正規化部は、正規化された過渡要件を第2生成部12に入力してもよい。
そのような構成により、半順序手順計画装置は、入力された過渡要件の形式を処理が容易な形式に正規化できる。
また、状態要素には、複数の状態と、複数の状態間の遷移条件が付与されている状態遷移とが含まれていてもよい。
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2017年5月30日に出願された日本特許出願2017-106367を基礎とする優先権を主張し、その開示の全てをここに取り込む。
産業上の利用の可能性
本発明は、状態要素モデル上の過渡要件付き自動計画問題の解である手順の並列実行可能性を向上させる用途に好適に適用される。例えば、本発明は、他の部分システムに干渉する複数の小規模な部分システムで構成されるシステムと、システムに課せられた大域的な制約とに関する自動計画問題の解であるような、並列実行が可能である効率的な手順の導出に好適に適用される。