(57)【要約】  半順序手順計画装置１０は、状態要素の状態を初期状態から目的状態へ遷移させる複数の操作が直列に並べられた直列手順内の操作間の順序関係のうち所定の制約の下で削除可能な順序関係の条件である第１条件を生成する第１生成部１１と、順序関係のうち状態が初期状態から目的状態へ遷移するまでの間状態要素が満たすことが求められる要件である過渡要件が満たされるために要する順序関係の条件である第２条件を生成する第２生成部１２と、生成された第１条件を満たし、かつ生成された第２条件を満たさない順序関係を直列手順から削除される順序関係に決定する決定部１３とを備える。
2018221175.tif 000002
【特許請求の範囲】
【請求項１】
状態要素の状態を初期状態から目的状態へ遷移させる複数の操作が直列に並べられた直列手順内の操作間の順序関係のうち所定の制約の下で削除可能な順序関係の条件である第１条件を生成する第１生成部と、
前記順序関係のうち前記状態が前記初期状態から前記目的状態へ遷移するまでの間前記状態要素が満たすことが求められる要件である過渡要件が満たされるために要する順序関係の条件である第２条件を生成する第２生成部と、
生成された第１条件を満たし、かつ生成された第２条件を満たさない順序関係を前記直列手順から削除される順序関係に決定する決定部とを備える
ことを特徴とする半順序手順計画装置。
【請求項２】
第１生成部は、第１条件を整数計画制約式として生成し、
第２生成部は、第２条件を整数計画制約式として生成し、
決定部は、生成された整数計画制約式を含む整数計画制約問題を求解することによって直列手順から削除される順序関係を決定する
請求項１記載の半順序手順計画装置。
【請求項３】
第２生成部は、直列手順に対応する有向グラフ上のネットワークフローにおけるフローの存在性条件として整数計画制約式を生成する
請求項２記載の半順序手順計画装置。
【請求項４】
過渡要件は、状態要素の状態に割り当てられたスコアと前記状態要素の現在状態に割り当てられたスコアに関する制約式とで構成される
請求項１から請求項３のうちのいずれか１項に記載の半順序手順計画装置。
【請求項５】
決定部により決定された順序関係を直列手順から削除することによって前記直列手順を更新する更新部を備える
請求項１から請求項４のうちのいずれか１項に記載の半順序手順計画装置。
【請求項６】
過渡要件を正規化する正規化部を備え、
前記正規化部は、正規化された過渡要件を第２生成部に入力する
請求項１から請求項５のうちのいずれか１項に記載の半順序手順計画装置。
【請求項７】
状態要素の状態を初期状態から目的状態へ遷移させる複数の操作が直列に並べられた直列手順内の操作間の順序関係のうち所定の制約の下で削除可能な順序関係の条件である第１条件を生成し、
前記順序関係のうち前記状態が前記初期状態から前記目的状態へ遷移するまでの間前記状態要素が満たすことが求められる要件である過渡要件が満たされるために要する順序関係の条件である第２条件を生成し、
生成された第１条件を満たし、かつ生成された第２条件を満たさない順序関係を前記直列手順から削除される順序関係に決定する
ことを特徴とする半順序手順計画方法。
【請求項８】
第１条件を整数計画制約式として生成し、
第２条件を整数計画制約式として生成し、
生成された整数計画制約式を含む整数計画制約問題を求解することによって直列手順から削除される順序関係を決定する
請求項７記載の半順序手順計画方法。
【請求項９】
コンピュータに、
状態要素の状態を初期状態から目的状態へ遷移させる複数の操作が直列に並べられた直列手順内の操作間の順序関係のうち所定の制約の下で削除可能な順序関係の条件である第１条件を生成する第１生成処理、
前記順序関係のうち前記状態が前記初期状態から前記目的状態へ遷移するまでの間前記状態要素が満たすことが求められる要件である過渡要件が満たされるために要する順序関係の条件である第２条件を生成する第２生成処理、および
生成された第１条件を満たし、かつ生成された第２条件を満たさない順序関係を前記直列手順から削除される順序関係に決定する決定処理
を実行させるための半順序手順計画プログラム。
【請求項１０】
コンピュータに、
第１生成処理で、第１条件を整数計画制約式として生成させ、
第２生成処理で、第２条件を整数計画制約式として生成させ、
決定処理で、生成された整数計画制約式を含む整数計画制約問題を求解することによって直列手順から削除される順序関係を決定させる
請求項９記載の半順序手順計画プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半順序手順計画装置、半順序手順計画方法および半順序手順計画プログラムに関し、特に自動計画問題の求解に使用され所定の条件を満たす半順序手順を計画する半順序手順計画装置、半順序手順計画方法および半順序手順計画プログラムに関する。
【背景技術】
【０００２】
自動計画技術は、既知の環境の情報に基づいて次に実行される対象の行動を決定し、さらに目的が達成されるまでの一連の行動の実行計画（以下、単に「手順」と呼ぶ。）を構築する技術である。自動計画技術は、例えば人工知能により実行される。事前に未来の行動を計算した人工知能は、計算された行動の手順を計画する目的で自動計画技術を用いる。【０００３】
上記の手順を求める自動計画問題には、行動の主体（以下、「エージェント」と呼ぶ。）が複数存在する問題もある。エージェントが複数存在する自動計画問題を解く際、人工知能は、例えば全ての行動の間に順序関係が規定された手順の代わりに、複数のエージェントが並列に実行できる行動の間に順序関係が規定されていない手順を構成する。【０００４】
すなわち、複数の行動が同時に実行可能な手順が使用されると、一連の行動がより効率的に実行される。以下、全ての行動が時系列に沿って一直線に並べられた手順を「直列手順」と呼ぶ。また、一部の行動の間に順序関係が規定されていない手順を「半順序手順」と呼ぶ。【０００５】
図１８は、実行エージェントが複数存在する自動計画問題の例を示す説明図である。図１８に示す自動計画問題では、エージェントＡ、エージェントＢ、エージェントＣ、エージェントＤの４名のエージェントが同時に作業する例が扱われている。【０００６】
エージェントＡ、エージェントＢ、エージェントＣ、エージェントＤはそれぞれ、サービスＳＡ、サービスＳＢ、サービスＳＣ、サービスＳＤを一旦停止させ、各サービスの設定ファイルを更新する。更新が完了したら、各エージェントは、サービスをそれぞれ再起動させる。図１８に示すように、各サービスは別々のサーバで稼働する。【０００７】
図１８に示す自動計画問題に対して、例えば、エージェントＡ、エージェントＢ、エージェントＣ、エージェントＤが上述した手順通りに直列に作業を行う「直列手順」の作業計画が考えられる。図１９は、直列手順の例を示す説明図である。【０００８】
図１９に示す直列手順が用いられると、４人のエージェントが順に更新作業を行う。なお、図１９に示す矩形は、行動を表す。また、行動から別の行動に伸びる矢印は、行動が完了した後に別の行動が開始されるという順序関係を表す。【０００９】
図１９に示す直列手順には、１２個の行動が含まれている。各エージェントは、「サービスを停止」、「設定ファイルを更新」、「サービスを起動」の３個の行動で１組の作業を実行する。図１９に示す直列手順が用いられると、エージェントＡ、エージェントＢ、エージェントＣ、エージェントＤの順に上記の作業を実行する。【００１０】
また、図１８に示す自動計画問題に対して、４名のエージェントが全く独立に上記の作業を実行できる場合、４名のエージェントが並列に各作業を行う「半順序手順」の作業計画が考えられる。図２０は、半順序手順の例を示す説明図である。【００１１】
図２０に示す半順序手順が用いられると、４人のエージェントが並列に更新作業を行う。図２０には、「サービスを停止」、「設定ファイルを更新」、「サービスを起動」の順に３個の行動が矢印で結ばれた組が４つ並列に示されている。【００１２】
すなわち、図２０に示す半順序手順が用いられると、各エージェントには、「サービスを停止」、「設定ファイルを更新」、「サービスを起動」の順に作業を行うという制約が課せられる。しかし、各エージェントは、他のエージェントの作業の影響を全く受けずに独立して作業を進行できる。従って、図２０に示す半順序手順が用いられた時の方が、図１９に示す直列手順が用いられた時に比べて短時間で全ての作業が完了する。【００１３】
半順序手順を導出する方法には、例えば以下の２つの方法がある。１つ目の方法は、自動計画問題の解を最初から半順序手順として構成する半順序プランニング(Partial-Order Planning, POP) である。２つ目の方法は、最初に直列手順を計画した後に不要な順序関係を除去する半順序化(Deordering)である。【００１４】
一般的に、自動計画問題における行動の順序は、各行動が実行可能な状態にコンポーネントの状態が遷移するために関連する各コンポーネントに課せられる制約に依存する。なお、コンポーネントは、系を構成する部品に相当する。【００１５】
例えば、行動「サービスＳＡの設定ファイルを更新」は、サービスＳＡの状態が停止状態でなければ実行されない行動である。すなわち、行動「サービスＳＡの設定ファイルを更新」は、サービスＳＡという１つのコンポーネントの状態に依存している。【００１６】
自動計画問題の中には、上記の各コンポーネントに課せられる制約の他に、系全体に課せられる大域的な制約を考慮することが求められる問題がある。【００１７】
例えば、図１８に示す自動計画問題において、４台のサーバが全て同じサービスを提供しており、サービスＳＡ、サービスＳＢ、サービスＳＣ、サービスＳＤのうち少なくとも２つのサービスが稼働していれば全体として最低限のサービス品質が担保されるような状況を考える。【００１８】
４つのサービスの更新作業中も最低限のサービス品質の担保が求められる場合、図１８に示す自動計画問題に対して、さらに「更新作業中も常に最低２台のサーバでサービスの状態が稼働状態でなければならない」という要件が課せられる。【００１９】
上記の制約は、コンポーネントに関する制約ではなく、４つのサービスで構成される系全体の状態に関する制約である。すなわち、上記の制約は、最初の行動が開始してから最後の行動が完了するまで、系全体の状態に「最低２台のサーバでサービスの状態が稼働状態である」という要件を課している制約であると考えられる。以下、手順の実行に伴って遷移する系全体の状態が常に満たすことを求められる上記のような制約を「過渡要件」と呼ぶ。【００２０】
上記の過渡要件が与えられた場合、図２０に示す半順序手順の行動計画は、正しい行動計画ではない。その理由は、例えばエージェントＡとエージェントＢが同時に設定ファイルを更新している最中に、エージェントＣがサービスＳＣを停止させてしまう可能性があるためである。【００２１】
図２１は、半順序手順の他の例を示す説明図である。図２１に示す半順序手順が用いられると、４人のエージェントが過渡要件「最低２台のサーバでサービスの状態が稼働状態である」を満たしつつ、更新作業を行う。【００２２】
例えば、図２１に示すように、エージェントＡとエージェントＢが同時に作業しないように、エージェントＡの作業が終わるまでエージェントＢが待機するように順序関係が定められている。同様に、エージェントＣとエージェントＤが同時に作業しないように、エージェントＣの作業が終わるまでエージェントＤが待機するように順序関係が定められている。【００２３】
すなわち、図２１に示す半順序手順に従って作業を実行すれば、各エージェントは、過渡要件に違反せずに作業を完了できる。図２１に示す半順序手順は、過渡要件を満たす手順である。【００２４】
自動計画問題は、モデル化された上で求解されることが多い。以下、自動計画問題のモデル化を説明する。【００２５】
例えば、自動計画問題は、特許文献１に記載されている自動計画問題のように、初期状態および目的状態が指定された複数の状態グラフが並べられたモデル上の、全ての状態グラフの状態を目的状態へ移行させる手順を求める計画問題に帰着される。以下、複数の状態グラフが並べられたモデルを状態要素モデルと呼ぶ。また、状態要素モデルを構成する状態グラフを状態要素と呼ぶ。【００２６】
各状態要素は、自身の状態グラフのノードに対応するいずれかの状態をとる。状態要素の状態は、状態グラフ内の有向エッジに沿って遷移する。また、所定の時点における状態要素の現在状態は、各状態グラフが所定の時点でどの状態であるかを指示するポインタの役割を有する。例えば、現在状態は、最初に初期状態を指示する。【００２７】
以下、状態要素モデルの具体例を説明する。図２２は、状態要素モデルの例を示す説明図である。図２２に示す状態要素モデルPAR_UPDATEは、モデル化された図１８に示す自動計画問題である。すなわち、状態要素モデルPAR_UPDATEは、４人のエージェントが更新作業を行う状況を表す。【００２８】
図２２に示すConfigA 、ConfigB 、ConfigC 、ConfigD 、ServiceA、ServiceB、ServiceC、ServiceDと記載された各矩形が、それぞれ状態要素に相当する。また、各状態要素内のOLD 、NEW 、ON、OFF と記載された各楕円が、それぞれ状態に相当する。また、状態同士を結ぶ各矢印が、それぞれ状態遷移に相当する。【００２９】
また、二重線の楕円は、初期状態に相当する。また、黒色の楕円は、目的状態に相当する。例えば、状態要素ConfigA には、初期状態と目的状態が１つずつ存在する。【００３０】
なお、初期状態と目的状態は、状態要素内に別々の状態として存在するとは限られない。例えば、状態要素ServiceAには、初期状態であり、かつ目的状態でもある状態ONが存在する。【００３１】
図２２に示す状態要素ServiceA〜状態要素ServiceDは、状態要素としてモデル化されたサービスＳＡ〜サービスＳＤをそれぞれ表す。図２２に示すように、状態要素ServiceA〜状態要素ServiceDはそれぞれ、停止状態を表す状態OFF と、稼働状態を表す状態ONの２つの状態を含む状態グラフである。【００３２】
また、図２２に示すように、サービスを起動させる操作は、状態OFF から状態ONへの状態遷移としてモデル化されている。また、サービスを停止させる操作は、状態ONから状態OFF への状態遷移としてモデル化されている。また、状態要素ServiceA〜状態要素ServiceDの各初期状態および各目的状態は、共に状態ONである。【００３３】
また、図２２に示す状態要素ConfigA 〜状態要素ConfigD は、状態要素としてモデル化されたサービスＳＡ〜サービスＳＤの各設定ファイルをそれぞれ表す。図２２に示すように、状態要素ConfigA 〜状態要素ConfigD はそれぞれ、旧バージョンのファイルであることを表す状態OLD と、新バージョンのファイルであることを表す状態NEW の２つの状態を含む状態グラフである。【００３４】
また、図２２に示すように、設定ファイルの更新操作は、状態OLD から状態NEW への状態遷移としてモデル化されている。また、状態要素ConfigA 〜状態要素ConfigD の各初期状態は状態OLD であり、各目的状態は状態NEW である。【００３５】
さらに、状態要素モデルには、状態要素間の干渉内容が記載される。例えば、図２２に示す状態遷移を表す矢印に付随する黒色の吹き出しが、状態要素間の干渉内容（以下、「依存性」と呼ぶ。）を表す。【００３６】
図２２に示すように、状態要素ConfigA の状態OLD から状態NEW への状態遷移に付随する依存性には、「ServiceA:OFF」と記載されている。すなわち、依存性「ServiceA:OFF」は、状態要素ServiceAの状態が状態OFF でなければ、状態要素ConfigA の状態OLD から状態NEW への状態遷移は実行されないことを意味する。【００３７】
上記のように、依存性は、１以上の「（状態要素）：（状態の集合）」の記述で構成されている。状態要素モデルの依存性は、指定された状態要素が指定された状態の集合に含まれるいずれかの状態であるときのみ、付随されている状態遷移が実行されることを意味する。指定された状態要素が指定された状態の集合に含まれるいずれかの状態であるとき、依存性が満たされているという。【００３８】
なお、依存性が複数の状態要素に関する「（状態要素）：（状態の集合）」の記述で構成されている場合、全ての記述に関して依存性が満たされなければ状態遷移は実行されない。【００３９】
状態要素モデル上の自動計画問題の解は、各状態要素が遷移を実行した上で状態要素モデルに含まれる全ての状態要素の状態が目的状態に遷移するための手順である。上述したように、全ての状態要素の状態が目的状態に遷移するためには、各状態要素の状態が自由に遷移できる手順ではなく、依存性が満たされるように状態要素の遷移と他の状態要素の遷移との順序関係が適切に定められた手順を作成することが求められる。【００４０】
状態要素モデル上の自動計画問題の解の具体例を図２３〜図２４に示す。図２３は、状態要素モデルPAR_UPDATE上の自動計画問題の解の例を示す説明図である。図２３に示す直列手順は、図２２に示す状態要素モデルPAR_UPDATE上の自動計画問題の解として記載された図１９に示す直列手順に相当する。【００４１】
また、図２４は、状態要素モデルPAR_UPDATE上の自動計画問題の解の他の例を示す説明図である。図２４に示す半順序手順は、図２２に示す状態要素モデルPAR_UPDATE上の自動計画問題の解として記載された図２１に示す半順序手順に相当する。【００４２】
図２３〜図２４に示すように、状態要素E の状態を状態a から状態b へと遷移させる行動が「E:a →b 」と記載されている。上述したように、状態要素ServiceAの状態は最初から目的状態であるため遷移が不要であるが、状態要素ConfigA の状態OLD →状態NEW の遷移が実行されるためには状態要素ServiceAの状態が状態OFF であることが求められる。【００４３】
よって、上記の遷移が実行されるために、状態要素ServiceAが表すサービスＳＡが一旦停止され、状態要素ConfigA が表すサービスＳＡの設定ファイルが更新される。設定ファイルが更新された後、サービスＳＡが再起動させられる。すなわち、行動「ServiceA:ON →OFF 」、行動「ConfigA:OLD →NEW 」、行動「ServiceA:OFF→ON」の順に３つの行動が実行されることが求められる。【００４４】
上記の順序関係が担保されるように、図２３に示す直列手順、および図２４に示す半順序手順にそれぞれ矢印が張られている。すなわち、各手順が実行される時に依存性が必ず満たされる。【００４５】
次に、状態要素モデルにおける過渡要件を説明する。状態要素モデルにおける過渡要件は、「状態に対するスコア割り当て」と「制約式」の２つの要素で構成される。【００４６】
最初に、「状態に対するスコア割り当て」を説明する。１つの過渡要件に対して、状態要素モデルの各状態にスコアが割り当てられる。なお、割り当てられるスコアは、全て整数である。【００４７】
図２５は、状態要素モデルPAR_UPDATEの各状態に対して割り当てられたスコアの例を示す説明図である。図２５に示すように、状態要素ServiceA〜状態要素ServiceDの各稼働状態（状態ON）にはスコア「１」が、各停止状態（状態OFF ）にはスコア「０」がそれぞれ割り当てられている。【００４８】
また、状態要素ConfigA 〜状態要素ConfigD の全ての状態にはスコア「０」が割り当てられている。以下、状態a に割り当てられたスコアをScore(a)と記載する。【００４９】
また、所定の時点で状態要素E の状態が状態a であるとき、所定の時点での状態要素E のスコアはScore(a)である。以下、状態要素E のスコアをScore(E)と記載する。Score(E)は、状態要素E の状態の遷移に伴って変化する。【００５０】
また、状態要素モデルM に含まれる全ての状態要素のスコアの和を、状態要素モデルM のスコアと呼ぶ。以下、状態要素モデルM のスコアをScore(M)と記載する。Score(M)は、状態要素モデルM に含まれる状態要素の状態の遷移に伴って変化する。【００５１】
次に、過渡要件を構成する他の要素である「制約式」を説明する。例えば、状態要素モデルM の各状態にスコアが割り当てられた上で、過渡要件は、以下の４つのパターンのいずれかで与えられる。【００５２】
「１．Score(M)が整数値L 以上である」
「２．Score(M)が整数値L 以下である」
「３．Score(M)が整数値L より大きい」
「４．Score(M)が整数値L より小さい」【００５３】
上記の内容を過渡要件の制約式と呼ぶ。以下、過渡要件の制約式が表現可能な要件を示すため、具体例Ａ、具体例Ｂおよび具体例Ｃを説明する。【００５４】
具体例Ａ．
図１８に示す自動計画問題に与えられた上記の過渡要件は、図２５に示すスコアを用いて「Score(PAR_UPDATE) が２以上である」と表現される。その理由は、上記の過渡要件が、サービスが２台以上のサーバで稼働している時にのみ満たされるからである。【００５５】
具体例Ｂ．
図１８に示す自動計画問題では、４台のサーバが提供する各サービスの性能が全て均一であると仮定されている。しかし、例えば各サーバの性能に差異があり、サービス全体の性能が担保される要件が「サービスが稼働しているサーバの台数」ではなく「性能の合計値」で表現されるような状況も考えられる。【００５６】
上記の状況の例を図２６に示す。図２６は、状態要素モデルPAR_UPDATEの各状態に対して割り当てられたスコアおよび過渡要件の例を示す説明図である。図２６に示すスコアは、図２２に示す状態要素モデルの各状態に割り当てられている。【００５７】
図２６に示すように、状態要素ServiceA、状態要素ServiceCの各稼働状態（状態ON）には、スコア「１００」が割り当てられている。図２６に示す例では、サーバＡおよびサーバＣは、毎秒１００リクエストを処理できる。【００５８】
また、図２６に示すように、状態要素ServiceB、状態要素ServiceDの各稼働状態（状態ON）には、スコア「３００」が割り当てられている。図２６に示す例では、サーバＢおよびサーバＤは、毎秒３００リクエストを処理できる。【００５９】
また、図２６には、制約式「Score(PAR_UPDATE) ≧400 」が記載されている。すなわち、サービス全体の性能が担保される要件は、「スコアの合計（システム全体が処理可能な毎秒リクエスト数）が４００以上」である。【００６０】
具体例Ｃ．
使用可能なリソースに上限が与えられている状況の例を図２７に示す。図２７は、状態要素モデルConnectingTerminals 、各状態に対して割り当てられたスコアおよび過渡要件の例を示す説明図である。【００６１】
図２７に示す状態要素モデルConnectingTerminals には、各端末自体を表す状態要素（端末１、端末２、・・・、端末１００）と、各端末の接続状態を表す状態要素（コネクション１、コネクション２、・・・、コネクション１００）が含まれている。【００６２】
図２７に示すように、接続状態を表す状態要素には、状態「接続」と状態「切断」が含まれている。また、接続状態を表す状態要素の各現在状態および各目的状態は、共に状態「切断」である。【００６３】
また、図２７に示すように、端末を表す状態要素には、状態「未更新」と状態「更新済」が含まれている。また、端末を表す状態要素の各現在状態は状態「未更新」であり、各目的状態は状態「更新済」である。また、端末ｘの状態遷移には、依存性「コネクションｘ：接続」が付随している。【００６４】
すなわち、図２７に示す状態要素モデルConnectingTerminals は、「複数の端末（１００台）がサーバにアクセスして更新データをダウンロードした後に更新を行う」という自動計画問題を表現できる。なお、サーバの最大同時接続可能数は、５０台である。【００６５】
また、図２７に示すように、接続状態を表す状態要素の状態「接続」には、スコア「１」が割り当てられている。また、図２７には、制約式「Score(ConnectingTerminals)≦50」が記載されている。【００６６】
すなわち、状態要素モデルConnectingTerminals が表す自動計画問題には、状態が状態「接続」である接続状態を表す状態要素が常に５０個以下でなければならないという過渡要件が課せられている。図２７に示す過渡要件は、上限値が使用されている過渡要件である。
【先行技術文献】
【特許文献】
【００６７】
【特許文献１】米国特許出願公開第２０１５／０３２４２１１号明細書
【非特許文献】
【００６８】
【非特許文献１】Christian Muise, Sheila A. McIlraith, and J. Christopher Beck, "Optimally Relaxing Partial-Order Plans with MaxSAT," ICAPS’ 12.
【発明の概要】
【発明が解決しようとする課題】
【００６９】
過渡要件付き自動計画問題に対して、過渡要件を満たす直列手順を導出するための手法が提供されている。また、特許文献１および非特許文献１には、状態要素間の依存性を考慮することによって直列手順を半順序手順に変換する手法が記載されている。【００７０】
しかし、導出された過渡要件を満たす直列手順を、特許文献１や非特許文献１に記載されている手法で半順序化すると、指定された過渡要件を満たさない半順序手順が出力される場合がある。【００７１】
例えば、図２３に示す直列手順は、エージェントＡ、エージェントＢ、エージェントＣ、エージェントＤの順で作業が実行されるように順序関係が定められた直列手順である。図２３に示す直列手順は、過渡要件「最低２台のサーバでサービスの状態が稼働状態でなければならない」を満たしている。【００７２】
しかし、特許文献１や非特許文献１に記載されている手法が、エージェント間に直接的な依存性がないという理由で、作業が全て並列に実行されるように図２３に示す直列手順の順序関係を緩和すると、図２８に示すような半順序手順が生成される。【００７３】
図２８は、状態要素モデルPAR_UPDATE上の自動計画問題の解の他の例を示す説明図である。図２８に示す半順序手順は、図２２に示す状態要素モデルPAR_UPDATE上の自動計画問題の解として記載された図２０に示す半順序手順に相当する。上述したように、図２８に示す半順序手順は、上記の過渡要件を満たさない。【００７４】
過渡要件が満たされたまま直列手順を半順序化するためには、図２４に示すように、例えば依存関係がない状態要素の間に過渡要件が充足されるための順序関係を残した上で不要な順序関係のみを削除することが求められる。【００７５】
［発明の目的］
そこで、本発明は、上述した課題を解決する、過渡要件を満たす半順序手順を計画できる半順序手順計画装置、半順序手順計画方法および半順序手順計画プログラムを提供することを目的とする。
【課題を解決するための手段】
【００７６】
本発明による半順序手順計画装置は、状態要素の状態を初期状態から目的状態へ遷移させる複数の操作が直列に並べられた直列手順内の操作間の順序関係のうち所定の制約の下で削除可能な順序関係の条件である第１条件を生成する第１生成部と、順序関係のうち状態が初期状態から目的状態へ遷移するまでの間状態要素が満たすことが求められる要件である過渡要件が満たされるために要する順序関係の条件である第２条件を生成する第２生成部と、生成された第１条件を満たし、かつ生成された第２条件を満たさない順序関係を直列手順から削除される順序関係に決定する決定部とを備えることを特徴とする。【００７７】
本発明による半順序手順計画方法は、状態要素の状態を初期状態から目的状態へ遷移させる複数の操作が直列に並べられた直列手順内の操作間の順序関係のうち所定の制約の下で削除可能な順序関係の条件である第１条件を生成し、順序関係のうち状態が初期状態から目的状態へ遷移するまでの間状態要素が満たすことが求められる要件である過渡要件が満たされるために要する順序関係の条件である第２条件を生成し、生成された第１条件を満たし、かつ生成された第２条件を満たさない順序関係を直列手順から削除される順序関係に決定することを特徴とする。【００７８】
本発明による半順序手順計画プログラムは、コンピュータに、状態要素の状態を初期状態から目的状態へ遷移させる複数の操作が直列に並べられた直列手順内の操作間の順序関係のうち所定の制約の下で削除可能な順序関係の条件である第１条件を生成する第１生成処理、順序関係のうち状態が初期状態から目的状態へ遷移するまでの間状態要素が満たすことが求められる要件である過渡要件が満たされるために要する順序関係の条件である第２条件を生成する第２生成処理、および生成された第１条件を満たし、かつ生成された第２条件を満たさない順序関係を直列手順から削除される順序関係に決定する決定処理を実行させることを特徴とする。
【発明の効果】
【００７９】
本発明によれば、過渡要件を満たす半順序手順を計画できる。
【図面の簡単な説明】
【００８０】
【図１】本発明による半順序手順計画装置の第１の実施形態の構成例を示すブロック図である。
【図２】仮想的な初期化行動と仮想的な終了行動が付け加えられた手順の例を示す説明図である。
【図３】過渡要件正規化部１０１による過渡要件正規化処理の動作を示すフローチャートである。
【図４】過渡要件正規化部１０１に入力される過渡要件の例を示す説明図である。
【図５】変数生成部１０２による変数生成処理の例を示す説明図である。
【図６】半順序化処理部１０６による半順序化処理の例を示す説明図である。
【図７】非特許文献１に記載されている手法で生成される制約の例を示す説明図である。
【図８】SAT 制約式と整数計画制約式との対応関係の例を示す説明図である。
【図９】過渡要件充足制約生成部１０４による過渡要件充足制約生成処理の動作を示すフローチャートである。
【図１０】直列手順と直列手順に対応する有向グラフの例を示す説明図である。
【図１１】有向グラフに設定されたスコア割り当てと構築されるフローネットワークの例を示す説明図である。
【図１２】フローネットワークと半順序手順の例を示す説明図である。
【図１３】フローと半順序手順の例を示す説明図である。
【図１４】フロー存在性制約の例を示す説明図である。
【図１５】本発明による半順序手順計画装置の第２の実施形態の構成例を示すブロック図である。
【図１６】本発明による半順序手順計画装置のハードウェア構成例を示す説明図である。
【図１７】本発明による半順序手順計画装置の概要を示すブロック図である。
【図１８】実行エージェントが複数存在する自動計画問題の例を示す説明図である。
【図１９】直列手順の例を示す説明図である。
【図２０】半順序手順の例を示す説明図である。
【図２１】半順序手順の他の例を示す説明図である。
【図２２】状態要素モデルの例を示す説明図である。
【図２３】状態要素モデルPAR_UPDATE上の自動計画問題の解の例を示す説明図である。
【図２４】状態要素モデルPAR_UPDATE上の自動計画問題の解の他の例を示す説明図である。
【図２５】状態要素モデルPAR_UPDATEの各状態に対して割り当てられたスコアの例を示す説明図である。
【図２６】状態要素モデルPAR_UPDATEの各状態に対して割り当てられたスコアおよび過渡要件の例を示す説明図である。
【図２７】状態要素モデルConnectingTerminals 、各状態に対して割り当てられたスコアおよび過渡要件の例を示す説明図である。
【図２８】状態要素モデルPAR_UPDATE上の自動計画問題の解の他の例を示す説明図である。
【発明を実施するための形態】
【００８１】
実施形態１．
［構成の説明］
以下、本発明の実施形態を、図面を参照して説明する。図１は、本発明による半順序手順計画装置の第１の実施形態の構成例を示すブロック図である。
【００８２】
本実施形態の半順序手順計画装置１００は、人工知能が含まれる自律制御システムが所定の制約を満たしたまま目的を達成するためのタスクの実行手順を決定する。半順序手順計画装置１００は、過渡要件が指定された状態要素モデル上の自動計画問題に対して、過渡要件を満たし、かつ効率的に実行可能な自動計画問題の解である半順序手順を導出できる。
【００８３】
図１に示す半順序手順計画装置１００は、直列手順の各行動間に規定された順序関係のうちのいくつかを、過渡要件を満たす手順として満たすことが求められる制約が満たされる範囲内で削除することによって半順序手順を生成する。すなわち、本実施形態の半順序手順計画装置１００が用いられると、過渡要件に違反しない半順序手順が得られる。
【００８４】
図１に示すように、本実施形態の半順序手順計画装置１００は、過渡要件正規化部１０１と、変数生成部１０２と、依存性制約生成部１０３と、過渡要件充足制約生成部１０４と、制約解決部１０５と、半順序化処理部１０６とを備える。
【００８５】
過渡要件正規化部１０１は、過渡要件を正規化する機能を有する。具体的には、過渡要件正規化部１０１は、「１．Score(M)が整数値L 以上である」、「２．Score(M)が整数値L 以下である」、「３．Score(M)が整数値L より大きい」、「４．Score(M)が整数値L より小さい」のいずれかのパターンで表される過渡要件の制約式を、「１．Score(M)が整数値L 以上である」のパターンに変形する。以下、整数値L を、過渡要件の「下限値」と呼ぶ。
【００８６】
パターンを変形した後、過渡要件正規化部１０１は、状態に割り当てられたスコアが全て０以上の整数になるように過渡要件を変形する。例えば、過渡要件正規化部１０１は、負の数が含まれているスコア割り当てを、過渡要件の意味を変えずに全てのスコアが０以上の整数であるスコア割り当てに変換する。
【００８７】
上記の過渡要件に対する過渡要件正規化部１０１による一連の変形操作を、過渡要件の「正規化」と呼ぶ。過渡要件正規化部１０１による正規化が行われても、過渡要件の本来の意味は変更されない。例えば、正規化される前の過渡要件を満たす半順序手順は全て、正規化された後の過渡要件も満たす。さらに、正規化された後の過渡要件を満たす半順序手順は全て、正規化される前の過渡要件も満たす。
【００８８】
すなわち、最初から正規化された後の過渡要件が入力として与えられていても、半順序手順計画装置１００は、正規化される前の過渡要件が入力として与えられていた時と同じ出力を返す。過渡要件正規化部１０１は、過渡要件の意味を変えずに全てのパターンの制約式をパターン１の制約式に変換できる。
【００８９】
変数生成部１０２は、直列手順に含まれる各順序関係に対して、０または１を取り得る変数を割り当てる機能を有する。変数生成部１０２は、割り当てられた全ての変数の集合を依存性制約生成部１０３、過渡要件充足制約生成部１０４、および制約解決部１０５に入力する。
【００９０】
依存性制約生成部１０３は、直列手順に含まれる全ての行動が正常に実行されるために充足されることが求められる依存性の制約を、変数生成部１０２から与えられた変数上の整数計画制約式として生成する機能を有する。
【００９１】
依存性制約生成部１０３は、生成された整数計画制約式を制約解決部１０５に入力する。なお、依存性制約生成部１０３は、非特許文献１に記載されている手法に類似する手法で整数計画制約式を生成してもよい。
【００９２】
過渡要件充足制約生成部１０４は、過渡要件が満たされるために充足されることが求められる順序関係の制約を、変数生成部１０２から与えられた変数上の整数計画制約式として生成する機能を有する。過渡要件充足制約生成部１０４は、生成された整数計画制約式を制約解決部１０５に入力する。
【００９３】
制約解決部１０５は、依存性制約生成部１０３および過渡要件充足制約生成部１０４から入力された整数計画制約式が満たされるように変数に値を割り当てる機能を有する。具体的には、制約解決部１０５は、整数計画制約式が満たされるように変数生成部１０２から入力された各変数に対して０または１を割り当てる。
【００９４】
次いで、制約解決部１０５は、最も１が少なく割り当てられた変数の集合を求める。制約解決部１０５は、求められた変数の集合を、半順序化処理部１０６に入力する。
【００９５】
半順序化処理部１０６は、制約解決部１０５から入力された変数の集合に対する値の割り当てを基に、入力された直列順序から順序関係を一部取り除くことによって、半順序手順を生成する機能を有する。
【００９６】
なお、処理を単純にするために、本実施形態の直列手順には「初期化」と「終了」の２つの仮想的な行動が付け加えられる。初期化行動は直列手順の先頭に、終了行動は直列手順の末尾にそれぞれ付け加えられる。
【００９７】
図２は、仮想的な初期化行動と仮想的な終了行動が付け加えられた手順の例を示す説明図である。図２に示す直列手順は、図２３に示す状態要素モデルPAR_UPDATE上の自動計画問題の解の１つである直列手順に、初期化行動と終了行動が付け加えられた手順である。
【００９８】
初期化行動と終了行動は、状態要素に属する状態遷移に対応しない、特殊な行動である。すなわち、初期化行動は、全ての状態要素の状態を初期状態に遷移させる行動である。また、終了行動は、全ての状態要素の状態が目的状態である時にのみ実行可能な行動である。なお、終了行動が実行されても、何も行われずに作業が終了する。
【００９９】
初期化行動は、入力された直列手順が半順序化された手順においても、他のどのタスクよりも先に実行されることが求められる。また、終了行動は、入力された直列手順が半順序化された手順においても、他のどのタスクよりも後に実行されることが求められる。
【０１００】
本実施形態の半順序手順計画装置１００は、複数の状態要素で構成されている状態要素モデルと、状態要素モデル上に規定される過渡要件と、過渡要件を満たす状態要素モデル上の自動計画問題の解である直列手順とを基に、過渡要件を満たす自動計画問題の解である半順序手順を導出する。
【０１０１】
半順序手順計画装置１００は、直列手順に規定された行動の間の順序関係を、行動の実行に要する依存性を満たすために求められる順序関係、および過渡要件を満たすために求められる順序関係以外の冗長な順序関係が削減されるように再規定することによって、半順序手順を導出する。
【０１０２】
［動作の説明］
以下、本実施形態の半順序手順計画装置１００の半順序手順を出力する動作を図３〜図１４を参照して説明する。
【０１０３】
最初に、過渡要件正規化部１０１の過渡要件を正規化する動作を図３を参照して説明する。図３は、過渡要件正規化部１０１による過渡要件正規化処理の動作を示すフローチャートである。
【０１０４】
最初に、過渡要件正規化部１０１には、半順序手順計画装置１００に入力された状態要素モデルM に課せられた過渡要件が入力される（ステップS110）。入力された過渡要件のスコア割り当てをSc、制約式をConstrとそれぞれ記す。
【０１０５】
次いで、過渡要件正規化部１０１は、Constrが「Score(M)が整数値L 以下である」というパターン２の制約式、または「Score(M)が整数値L より小さい」というパターン４の制約式のいずれかに該当するか否かを確認する（ステップS111）。パターン２の制約式、またはパターン４の制約式に該当しない場合（ステップS111におけるNo）、過渡要件正規化部１０１は、ステップS116の処理を行う。
【０１０６】
パターン２の制約式、またはパターン４の制約式のいずれかに該当する場合（ステップS111におけるYes ）、過渡要件正規化部１０１は、Scの全てのスコアの正負を反転させる（ステップS112）。
【０１０７】
次いで、過渡要件正規化部１０１は、Constrがパターン２の制約式に該当するか否かを確認する（ステップS113）。パターン２の制約式に該当する場合（ステップS113におけるYes ）、過渡要件正規化部１０１は、Constrの内容を「Score(M)が整数値-L以上である」に置き換える（ステップS114）。 
【０１０８】
Constrがパターン２の制約式ではなくパターン４の制約式に該当する場合（ステップS113におけるNo）、過渡要件正規化部１０１は、Constrの内容を「Score(M)が整数値-Lより大きい」に置き換える（ステップS115）。
【０１０９】
ステップS115の処理まで終了した段階で、Constrは、「Score(M)が整数値L 以上である」のパターン１の制約式か、「Score(M)が整数値L より大きい」のパターン３の制約式のいずれかに該当する。
【０１１０】
次いで、過渡要件正規化部１０１は、Constrが「Score(M)が整数値L より大きい」というパターン３の制約式に該当するか否かを確認する（ステップS116）。パターン３の制約式に該当しない場合（ステップS116におけるNo）、過渡要件正規化部１０１は、ステップS118の処理を行う。
【０１１１】
パターン３の制約式に該当する場合（ステップS116におけるYes ）、過渡要件正規化部１０１は、Constrの内容を「Score(M)が整数値(L+1) 以上である」に置き換える（ステップS117）。
【０１１２】
ステップS117の処理まで終了した段階で、Constrは、「Score(M)が整数値L 以上である」というパターン１の制約式に該当する。上述した通り、以下の処理では整数値L を、過渡要件の「下限値」と呼ぶ。
【０１１３】
次いで、過渡要件正規化部１０１は、Scのスコアの最小値を取得し、Baseとする（ステップS118）。
【０１１４】
次いで、過渡要件正規化部１０１は、-Base の値を状態に割り当てられた全てのスコアに加算する。また、過渡要件正規化部１０１は、Constrの下限値L に、「-Base ×（状態要素の数）」を加算する（ステップS119）。加算した後、過渡要件正規化部１０１は、過渡要件正規化処理を終了する。
【０１１５】
過渡要件正規化処理が終了した段階で、過渡要件のスコアScは、全て０以上の値に正規化されている。また、制約式Constrは、「Score(M)が整数値L 以上である」のパターン１の制約式に正規化されている。
【０１１６】
以下、具体例を用いて過渡要件正規化部１０１による過渡要件正規化処理を説明する。本例では、入力される過渡要件Reが課せられている状態要素モデルをMeとする。状態要素モデルMeには、形式が同じである状態要素A と状態要素B が含まれている。また、状態要素A と状態要素B は、共に状態a 、状態b 、状態c の３つの状態を有する。
【０１１７】
図４は、過渡要件正規化部１０１に入力される過渡要件の例を示す説明図である。図４は、過渡要件正規化部１０１に入力される過渡要件Reを示す。
【０１１８】
図４に示すように、状態要素A および状態要素B の状態a 、状態b 、状態c には、共に「０」、「１」、「−１」の各スコアが割り当てられている。以下、図４に示すスコア割り当てを｛ａ：０、ｂ：１、ｃ：−１｝と記載する。また、制約式は「Score(Me) が２より小さい」である。
【０１１９】
上記の制約式は「Score(M)が整数値L より小さい」というパターン４の制約式に該当するため（ステップS111におけるYes ）、過渡要件正規化部１０１は、全てのスコアの正負を反転させる（ステップS112）。反転させられた後、スコア割り当ては｛ａ：０、ｂ：−１、ｃ：１｝と記載される。
【０１２０】
また、上記の制約式はパターン４の制約式に該当するため（ステップS113におけるNo）、過渡要件正規化部１０１は、制約式の内容を「Score(Me) が−２より大きい」に変形する（ステップS115）。
【０１２１】
ステップS115の処理まで終了した段階で制約式が「Score(M)が整数値L より大きい」というパターン３の制約式に該当するため（ステップS116におけるYes ）、過渡要件正規化部１０１は、制約式の内容を「Score(Me) が−１以上である」に変形する（ステップS117）。
【０１２２】
次いで、過渡要件正規化部１０１は、スコアのうち最も小さい値である「−１」をBaseとして取得する（ステップS118）。次いで、過渡要件正規化部１０１は、全てのスコアに-Base である「１」を加算する。また、過渡要件正規化部１０１は、過渡要件の下限値である「−１」に「（１×２＝）２」を加算する（ステップS119）。
【０１２３】
最終的に、本具体例の過渡要件のスコア割り当ては、｛ａ：１、ｂ：０、ｃ：２｝に正規化される。また、本具体例の過渡要件の制約式は、「Score(Me) が１以上である」に正規化される。
【０１２４】
次に、変数生成部１０２による変数生成処理を説明する。変数生成部１０２は、入力された直列手順に含まれる行動の間の全ての順序関係に対して変数を割り当てる。変数生成部１０２は、１つの順序関係に対して、１つの変数を割り当てる。
【０１２５】
図５は、変数生成部１０２による変数生成処理の例を示す説明図である。図５に示す手順は、「初期化」、「ａ」、「ｂ」、「ｃ」、「終了」の５つの行動で構成される直列手順である。
【０１２６】
図５に示す順序関係のように、直列手順である図５に示す手順には、（初期化→ａ）、（初期化→ｂ）、（初期化→ｃ）、（初期化→終了）、（ａ→ｂ）、（ａ→ｃ）、（ａ→終了）、（ｂ→ｃ）、（ｂ→終了）、（ｃ→終了）の、合計で１０個の順序関係が含まれている。一般的に、ｎ個の行動で構成される直列手順には、｛（１／２）×ｎ×（ｎ−１）｝個の順序関係が含まれている。
【０１２７】
変数生成部１０２は、各順序関係に変数を割り当てる。すなわち、変数生成部１０２は、図５に示す手順から、ｘ（初期化→ａ）、ｘ（初期化→ｂ）、ｘ（初期化→ｃ）、ｘ（初期化→終了）、ｘ（ａ→ｂ）、ｘ（ａ→ｃ）、ｘ（ａ→終了）、ｘ（ｂ→ｃ）、ｘ（ｂ→終了）、ｘ（ｃ→終了）の、合計で１０個の変数を生成する。
【０１２８】
以下、生成された変数に制約を課すための構成要素である依存性制約生成部１０３および過渡要件充足制約生成部１０４の各動作の説明をする前に、変数生成部１０２が生成した変数の意味の説明が求められると考えられる。よって、先に半順序化処理部１０６の動作を説明する。
【０１２９】
半順序化処理部１０６は、変数生成部１０２が生成した変数に割り当てられた値を制約解決部１０５から受け取る。半順序化処理部１０６は、受け取った値を基に、直列手順を半順序手順に変形する。
【０１３０】
制約解決部１０５は、各変数ｘ（ａ→ｂ）に「０」か「１」を割り当てる。制約解決部１０５が変数ｘ（ａ→ｂ）に「０」を割り当てることは、半順序化処理部１０６に「順序関係（ａ→ｂ）は無用な順序関係であり取り除かれてよい」という情報を与えていることに相当する。
【０１３１】
また、制約解決部１０５が変数ｘ（ａ→ｂ）に「１」を割り当てることは、半順序化処理部１０６に「順序関係（ａ→ｂ）は必要な順序関係であり取り除かれてはならない」という情報を与えていることに相当する。
【０１３２】
半順序化処理部１０６は、基本的に制約解決部１０５から与えられた情報にそのまま従う。すなわち、半順序化処理部１０６は、「０」が割り当てられた順序関係を手順から取り除き、「１」が割り当てられた順序関係を手順に残す。すなわち、変数に割り当てられた１つの値は、そのまま半順序手順の１つの構成要素に対応している。
【０１３３】
図６は、半順序化処理部１０６による半順序化処理の例を示す説明図である。図６に示す半順序化処理において、半順序化処理部１０６は、変数に対する値の割り当てを基に、図５に示す直列手順を半順序化している。
【０１３４】
図６に示すように、ｘ（ａ→ｂ）とｘ（ｂ→ｃ）の２変数に「０」が割り当てられている。また、ｘ（初期化→ａ）、ｘ（初期化→ｂ）、ｘ（初期化→ｃ）、ｘ（初期化→終了）、ｘ（ａ→ｃ）、ｘ（ａ→終了）、ｘ（ｂ→終了）、ｘ（ｃ→終了）の８変数に「１」が割り当てられている。
【０１３５】
上記の値を基に半順序化処理部１０６が半順序化を行うと、図６に示すような半順序手順が生成される。すなわち、「初期化」と「終了」以外の行動の間には、「ａ」と「ｃ」の間にのみ順序関係が規定されており、他の順序関係は全て取り除かれている。
【０１３６】
次に、依存性制約生成部１０３による依存性制約生成処理を説明する。依存性制約生成処理では、変数生成部１０２から入力された変数に課せられる制約Cdが生成される。制約Cdは、「制約Cdを満たすような全ての割り当てに従って半順序化が行われると、正しい半順序手順が得られる」という性質を有する。なお、依存性制約生成部１０３は、例えば非特許文献１に記載されている手法と同様の手法で制約Cdを生成する。
【０１３７】
なお、「正しい半順序手順」は、過渡要件が考慮されない時の状態要素モデル上の自動計画問題の解に相当する。すなわち、「正しい半順序手順」は、全ての行動に対して、実行時に依存性が全て満たされることが保証されているような半順序手順である。
【０１３８】
以下、非特許文献１に記載されている手法を簡単に説明する。非特許文献１に記載されている手法では、「正しい半順序手順」が得られるための要件をSAT 制約、すなわちTrueまたはFalse の値を取る「ブール変数」上の論理制約式として記述する方法が使用されている。図７に、制約の一覧を示す。
【０１３９】
図７は、非特許文献１に記載されている手法で生成される制約の例を示す説明図である。図７に示すように、生成される制約は２種類ある。１つ目の制約は、順序関係としての性質である推移律に対応する制約である。推移律は、例えば「ａの後にｂが実行される」、かつ「ｂの後にｃが実行される」ならば、「ａの後にｃが実行される」と言える、という順序関係の性質である。
【０１４０】
図７に示す第１制約のように、例えば、順序関係（ａ→ｂ）に対応するブール変数をβ（ａ→ｂ）と記載すると、行動ａ、行動ｂ、行動ｃに関する推移律は「（β（ａ→ｂ）∧β（ｂ→ｃ））⇒β（ａ→ｃ）」と記載される。
【０１４１】
２つ目の制約は、全ての依存性が満たされているという条件が書き下された制約である。「全ての依存性が満たされている」ことを表現するために、非特許文献１に記載されている手法では、行動が別の行動の依存性を「支持」するという概念が用いられている。
【０１４２】
上記の概念が用いられると、行動の「状態要素E の、状態s 」に対する依存性は、状態要素E の状態を状態s に遷移させた行動に支持されると考えられる。上記の概念を基に、非特許文献１に記載されている手法は、β（ａ→ｂ）とは別に「行動ａの状態s に対する依存性を行動ｂが支持している」という変数を用いて依存性に関する制約を表現している。
【０１４３】
例えば、非特許文献１に記載されている手法は、「『行動ａが行動ｂに支持される』とは、『行動ａが行動ｂの直後に実行される』ということである」という性質や、「何らかの行動によって全ての依存性が支持されていなければならない」という性質を制約に表している。すなわち、非特許文献１に記載されている手法は、図７に示す第２制約のように、依存性の充足条件をSAT 制約として表現している。
【０１４４】
本実施形態の依存性制約生成部１０３は、依存性制約生成処理で、上記の手法で生成されるSAT 制約を整数計画制約式として生成する。図８に、２つの制約式の対応関係を示す。図８は、SAT 制約式と整数計画制約式との対応関係の例を示す説明図である。
【０１４５】
図８に示すSAT 制約式は、図７に示す制約である。また、図８に示す整数計画制約式は、依存性制約生成部１０３が生成する図７に示す制約と等価な整数計画制約式である。図８に示すように、依存性制約生成部１０３は、βのTrueをｘの「１」に、βのFalse をｘの「０」にそれぞれ対応させることによって、SAT 制約式を整数計画制約式に変換している。
【０１４６】
次に、過渡要件充足制約生成部１０４の過渡要件充足制約を生成する動作を図９を参照して説明する。図９は、過渡要件充足制約生成部１０４による過渡要件充足制約生成処理の動作を示すフローチャートである。
【０１４７】
最初に、過渡要件充足制約生成部１０４は、直列手順と過渡要件とを入力として受け取る（ステップS120）。
【０１４８】
次いで、過渡要件充足制約生成部１０４は、入力された直列手順を、各行動がノードであり、順序関係の一部がエッジであるような有向グラフとみなす。次いで、過渡要件充足制約生成部１０４は、入力された過渡要件のスコア割り当てを基に、有向グラフ上にフローネットワークを構築する（ステップS121）。
【０１４９】
フローネットワークは、有向グラフの各エッジに「容量」の値が定められたネットワークを意味する。フローネットワークは、有向グラフのエッジに沿って何らかの流体が流れているモデル化された状況を表す。
【０１５０】
容量は、エッジに沿って流れる流体の量（以下、「流量」と呼ぶ。）の上限値に対応する。また、ノードＡからノードＢまでフローネットワークに沿って流れる流体の「流れ」を、フローネットワークの「フロー」と呼ぶ。また、ノードＡをフローの「始点」、ノードＢをフローの「終点」とそれぞれ呼ぶ。また、終点に流れ込む流体の量を、「フローの流量」と呼ぶ。
【０１５１】
フローにおいて、始点と終点以外の全てのノードでは、「エッジに沿って流入する流体の量の合計（＝流入量）」と、「エッジに沿って流出する流体の量の合計（＝流出量）」が一致していなければならない。なお、始点では流入量が０であるが、流出量に上限はない。また、終点では流出量が０であるが、流入量に上限はない。
【０１５２】
以下、過渡要件充足制約生成部１０４が直列手順を有向グラフと解釈する方法を説明する。直列手順は元々、各行動がノード、および全ての順序関係がエッジとみなされることによって有向グラフとみなされる。
【０１５３】
本実施形態の過渡要件充足制約生成部１０４は、順序関係のうち、以下の４つのパターンのいずれかに該当する順序関係のみをエッジとみなす。
【０１５４】
（１）「初期化行動と、各状態要素の行動のうち最も早く出現する行動との順序関係」
（２）「状態要素E 上の２つの行動ａ、行動ｂ間の順序関係（ａ→ｂ）で、行動ｂが状態要素E 上で行動ａの直後に行われた行動である順序関係」
（３）「異なる状態要素上の２つの行動間の順序関係」
（４）「各状態要素の行動のうち最後に出現する行動と、終了行動との順序関係」
【０１５５】
さらに、過渡要件充足制約生成部１０４は、（１）、（２）、（４）の各順序関係の向きをそのままエッジの向きとして使用する。また、過渡要件充足制約生成部１０４は、（３）の順序関係の向きを反転させた向きをエッジの向きとして使用する。
【０１５６】
以下、過渡要件充足制約生成部１０４が直列手順を有向グラフと解釈する具体例を、図１０を参照して説明する。 図１０は、直列手順と直列手順に対応する有向グラフの例を示す説明図である。
【０１５７】
図１０に示す有向グラフには、「初期化」、「Ａ：ａ→ｂ」、「Ｂ：ｘ→ｙ」、「Ａ：ｂ→ｃ」、および「終了」の５つのノードが含まれている。また、図１０に示す有向グラフには、ノードの間に全部で７本のエッジが含まれている。
【０１５８】
図１０に示すエッジ（「初期化」→「Ａ：ａ→ｂ」）、エッジ（「初期化」→「Ｂ：ｘ→ｙ」）は、上記の（１）のパターンに該当する。また、図１０に示すエッジ（「Ａ：ａ→ｂ」→「Ａ：ｂ→ｃ」）は、上記の（２）のパターンに該当する。
【０１５９】
また、図１０に示すエッジ（「Ｂ：ｘ→ｙ」→「Ａ：ａ→ｂ」）、エッジ（「Ａ：ｂ→ｃ」→「Ｂ：ｘ→ｙ」）は、上記の（３）のパターンに該当する。また、図１０に示すエッジ（「Ａ：ｂ→ｃ」→「終了」）、エッジ（「Ｂ：ｘ→ｙ」→「終了」）は、上記の（４）のパターンに該当する。上述した通り、上記の（３）のパターンに該当するエッジの有向グラフにおける向きは、直列手順における矢印の向きに対して反対になっている。
【０１６０】
次いで、過渡要件充足制約生成部１０４は、有向グラフに変換された直列手順の矢印を「Acrossタイプ：（３）のパターンのエッジ」と「Sameタイプ：（１）、（２）、（４）のパターンのエッジ」の２タイプに分ける。いずれかのタイプに分けた後、過渡要件充足制約生成部１０４は、スコア割り当てに基づいてエッジに容量を設定する。
【０１６１】
過渡要件充足制約生成部１０４は、Acrossタイプのエッジ（以下、Acrossエッジと呼ぶ。）に、過渡要件の下限値以上の十分大きな値を容量として設定する。また、過渡要件充足制約生成部１０４は、順序関係が（ａ→ｂ）であるSameタイプのエッジ（以下、Sameエッジと呼ぶ。）に、「行動ａの遷移先状態のスコア」を容量として設定する。
【０１６２】
ただし、過渡要件充足制約生成部１０４は、順序関係が（ａ→ｂ）である（１）のパターンに該当するエッジに、「行動ｂの遷移元状態のスコア」を容量として設定する。
【０１６３】
以下、過渡要件充足制約生成部１０４がエッジに容量を設定する具体例を、図１１を参照して説明する。図１１は、有向グラフに設定されたスコア割り当てと構築されるフローネットワークの例を示す説明図である。
【０１６４】
図１１に示すフローネットワークは、過渡要件充足制約生成部１０４が図１１に示すスコア割り当てを基に図１０に示す有向グラフに容量を設定することによって構築したフローネットワークである。図１１に示す各エッジに付随している円の内部の数値が、各エッジに設定された容量である。
【０１６５】
なお、Acrossエッジに設定される容量は、少なくとも過渡要件の制約式の下限値より十分大きな値であればどのような値でもよい。図１１に示す例では、全ての状態のスコアの和である「１１」が設定されている。
【０１６６】
変換されたフローネットワーク上の初期化行動から終了行動までの間に過渡要件の下限値以上の流量のフローが流れるのであれば、フローが少しでも流れているエッジを含む半順序手順は、全て過渡要件を満たす。以下、上記の半順序手順が過渡要件を満たす理由を説明する。
【０１６７】
行動π（＝（Ｅ１：ａ→ｂ））と行動σ（＝（Ｅ１：ｂ→ｃ））を結ぶSameエッジにおいて、行動πが実行されてから行動σが実行されるまでの間、状態要素E1の状態は状態b のままである。
【０１６８】
従って、上記のSameエッジは、総スコアにScore(b)だけ寄与している。すなわち、Sameエッジは、フローネットワークにおいて「合計スコアが所定値以上に維持される期間」に対応している。
【０１６９】
また、行動π（＝（Ｅ１：ａ→ｂ））と行動σ（＝（Ｅ２：ｃ→ｄ））を結ぶAcrossエッジは、行動σが行動πの前に実行されることを意味する。
【０１７０】
図１２は、フローネットワークと半順序手順の例を示す説明図である。図１２に示すフローネットワークは、行動α、行動β、行動γ、行動δの４つの行動で構成されている。また、図１２に示すフローネットワークには、スコア「１」が維持されるSameエッジ（α→β）と、スコア「２」が維持されるSameエッジ（γ→δ）と、Acrossエッジ（β→γ）とが含まれている。
【０１７１】
また、図１２に示す半順序手順は、図１２に示すフローネットワークに対応している。図１２に示す半順序手順は、４つの行動が順序関係で繋がれることによって生成される手順である。
【０１７２】
図１２に示すフローネットワークのSameエッジ（α→β）により、半順序手順において行動αが実行されてから行動βが実行されるまでスコア「１」が維持されることが保証されている。また、フローネットワークのSameエッジ（γ→δ）により、半順序手順において行動γが実行されてから行動δが実行されるまでスコア「２」が維持されることが保証されている。
【０１７３】
さらに、図１２に示すフローネットワークのAcrossエッジ（β→γ）によって半順序手順に（γ→β）という順序関係が規定されたことによって、行動αが実行されてから行動δが実行されるまでスコア「１」が維持されることが保証されている。
【０１７４】
上記のように、SameエッジとAcrossエッジが繋がれることによって、「所定のスコアが維持される期間」が延長される。
【０１７５】
すなわち、初期化行動から終了行動までの流量Ｆのフローをエッジで構成することは、SameエッジとAcrossエッジを繋ぎ「スコアＦが維持される期間」を初期化行動の実行直後から終了行動の実行直前まで延長することに相当する。
【０１７６】
初期化行動の実行直後から終了行動の実行直前までスコア「Ｆ」が維持されることは、手順全体の合計スコアが「Ｆ」に維持されることを意味する。すなわち、与えられた過渡要件の下限値以上の流量を有するフローは、過渡要件の充足を保証する。
【０１７７】
以下、フローネットワーク上の流量が「２」のフローと、フローを基に生成された半順序手順の具体例を図１３を参照して説明する。図１３は、フローと半順序手順の例を示す説明図である。
【０１７８】
図１３に示すフローは、図１１に示すフローネットワーク上の流量が「２」のフローである。また、図１３に示す半順序手順は、図１３に示すフローが図１１に示すフローネットワークを流れるように、エッジ（「Ｂ：ｘ→ｙ」→「Ａ：ｂ→ｃ」）が残された半順序手順である。
【０１７９】
図１３に示す半順序手順を参照すると、エッジ（「Ｂ：ｘ→ｙ」→「Ａ：ｂ→ｃ」）が存在する場合、状態要素A による「スコア「２」が維持される区間」と、状態要素B による「スコア「５」が維持される区間」が重なることが保証される。すなわち、初期化行動から終了行動までの区間で常にスコア「２」が維持されることが確認される。
【０１８０】
なお、上記では「下限値L 以上の流量を有するフローが存在する半順序手順は過渡要件を満たす」という命題が成立することを説明した。上記命題の逆である「過渡要件を満たす半順序手順には、下限値L 以上の流量を有するフローが存在する」も、同様に成立する。
【０１８１】
上記命題の逆が成立することを証明するために、上記命題の対偶である「下限値L 以上の流量を有するフローが存在しない半順序手順は過渡要件を満たさない」が成立することの証明の概要を以下に説明する。
【０１８２】
半順序手順iPに下限値L 以上の流量を有するフローが存在しないとする。ネットワークフロー理論の基本定理である「最大フロー・最小カット定理」により、「下限値L 以上の流量を有するフローが存在しない」のであれば、「最小カットのカット容量はL 未満」である。
【０１８３】
さらに、半順序手順上の最小カットMCであって、依存性を満たしつつ最小カットMCに含まれる行動だけ実行された状態が実現される場合を考える。最小カットMCに含まれる行動だけ実行された状態における合計スコアは、最小カットMCの容量と等しい。
【０１８４】
すなわち、半順序手順が実行される順序によって、合計スコアがL 未満であるような状態が実現される可能性がある。合計スコアがL 未満であるような状態が実現される場合、半順序手順iPは過渡要件を満たさない。
【０１８５】
次いで、過渡要件充足制約生成部１０４は、変換されたフローネットワークにおける、入力された過渡要件の下限値以上の流量を有するフローの存在条件を表す整数計画制約式を生成する（ステップS122）。
【０１８６】
フローの存在条件は、各エッジにどれだけの流量が流れているかを表すフロー変数ｆが割り当てられることによって、線形制約（以下、フロー存在性制約と呼ぶ。）に帰着させる方法が一般的に知られている。フロー存在性制約を、図１４を参照して説明する。
【０１８７】
図１４は、フロー存在性制約の例を示す説明図である。各エッジ（ａ→ｂ）に流量の値を表すフロー変数ｆ（ａ→ｂ）が設定されている場合、フロー変数に課せられる１つ目の制約は、上述した「流量は容量以下」である。図１４（ａ）に示すフロー存在性制約が、「流量は容量以下」の制約に対応する。
【０１８８】
また、フロー変数に課せられる２つ目の制約は、上述した「（始点と終点以外の）各ノードの流入量の合計と流出量の合計が等しい」である。図１４（ｂ）に示すフロー存在性制約が、「各ノードの流入量の合計と流出量の合計が等しい」の制約に対応する。
【０１８９】
上記のフロー存在性制約を全て満たすようなフロー変数ｆへの値の割り当てと、フローネットワーク上の１つのフローとが、１対１に対応している。
【０１９０】
ステップS122で、過渡要件充足制約生成部１０４は、最初にフロー存在性制約を生成する。次いで、過渡要件充足制約生成部１０４は、変数生成部１０２から入力された変数ｘと、新たに導入された変数ｆとの関係を表す制約を生成されたフロー存在性制約に加える。
【０１９１】
加えられる制約は、Acrossエッジ上にフローが少しでも流れていれば半順序化された後もAcrossエッジを残さなくてはならないという制約である。元の順序関係ｒがフローネットワークにおいてエッジｒ’に変換されたとすると、上記の制約は「ｆ（ｒ’）＞０⇒ｘ（ｒ）＝１」と表現される。
【０１９２】
また、ｒ’の上限値として設定された十分大きな値をｃとすると、上記の制約式は「ｃ×ｘ（ｒ）−ｆ（ｒ’）≧０」という整数計画制約式で表現される。
【０１９３】
ステップS122で得られた制約群が、過渡要件充足制約生成部１０４の最終的な出力である。過渡要件充足制約生成部１０４は、ステップS122で得られた制約群を制約解決部１０５に入力する。
【０１９４】
次に、制約解決部１０５の動作を説明する。制約解決部１０５は、依存性制約生成部１０３および過渡要件充足制約生成部１０４から入力された整数計画制約式に目的関数を追加することによって、整数計画問題を構成する。次いで、制約解決部１０５は、整数計画ソルバ（図示せず）を用いて整数計画問題の解を求める。
【０１９５】
制約解決部１０５が整数計画制約式に追加する目的関数は、変数生成部１０２から入力された変数の総和である。上述したように、変数生成部１０２から入力される変数は、順序関係を表すエッジのうち、どのエッジが半順序手順に採用されるかを表している。
【０１９６】
採用されるエッジは「１」で表現され、採用されないエッジは「０」で表現される。すなわち、変数の総和が最小の割り当てを求めることは、依存性および過渡要件を満たす半順序手順のうち、構造が最小の半順序手順を求めることに相当する。
【０１９７】
制約解決部１０５は、構成された整数計画問題を整数計画ソルバに入力し、整数計画問題の解を求める。次いで、制約解決部１０５は、求められた整数計画問題の解を半順序化処理部１０６に入力する。
【０１９８】
半順序化処理部１０６は、上述した通りに動作し、入力を基に半順序手順を構成する。
【０１９９】
［効果の説明］
本実施形態の半順序手順計画装置１００は、過渡要件付き状態要素モデル上の自動計画問題の解である半順序手順を導出する半順序手順計画装置である。半順序手順計画装置１００は、過渡要件と直列手順とを基に最低限の制約を満たす順序関係を半順序手順に採用する。
【０２００】
半順序手順計画装置１００は、手順に含まれる全ての行動が依存性を満足し、正常に実行されるための条件および手順が過渡要件を満たすための必要十分条件を順守する手順のうち、構造が最も小さい手順を出力する。
【０２０１】
具体的には、依存性制約生成部１０３は、手順に含まれる全ての行動が依存性を満足し、正常に実行されるための必要十分条件を整数計画制約式として出力する。また、過渡要件充足制約生成部１０４は、手順が過渡要件を満たすための必要十分条件を整数計画制約式として出力する。
【０２０２】
また、制約解決部１０５は、依存性制約生成部１０３および過渡要件充足制約生成部１０４が出力した制約を満たす手順の中で構造が最も小さい手順を導出する。また、半順序化処理部１０６は、直列手順から手順の正常実行に不要な順序関係を取り除き、半順序手順を生成する。
【０２０３】
半順序化処理部１０６は、直列手順から過渡要件および遷移条件を満たすために要する順序関係以外の順序関係を取り除くことによって半順序手順を生成する。よって、手順の並列実行が可能になるため、手順実行にかかる時間が低減する。
【０２０４】
実施形態２．
［構成の説明］
次に、本発明の第２の実施形態を、図面を参照して説明する。図１５は、本発明による半順序手順計画装置の第２の実施形態の構成例を示すブロック図である。
【０２０５】
本実施形態の半順序手順計画装置１１０の構成は、複数の過渡要件が扱われるように第１の実施形態の半順序手順計画装置１００の構成の一部に変更が加えられた構成である。
【０２０６】
図１５に示すように、本実施形態の半順序手順計画装置１１０は、過渡要件正規化部１０７と、変数生成部１０２と、依存性制約生成部１０３と、過渡要件充足制約生成部１０８と、制約解決部１０５と、半順序化処理部１０６とを備える。
【０２０７】
本実施形態の半順序手順計画装置１１０の構成は、過渡要件正規化部１０１が過渡要件正規化部１０７に、過渡要件充足制約生成部１０４が過渡要件充足制約生成部１０８にそれぞれ置き換えられている点を除いて、第１の実施形態の半順序手順計画装置１００の構成と同様である。
【０２０８】
本実施形態の半順序手順計画装置１１０は、第１の実施形態の半順序手順計画装置１００と異なり、入力として過渡要件の代わりに過渡要件の集合を受け取る。
【０２０９】
本実施形態の過渡要件正規化部１０７は、図３に示す過渡要件正規化処理を与えられた全ての過渡要件に対して行う。過渡要件正規化処理を実行した後、過渡要件正規化部１０７は、正規化された全ての過渡要件を出力として過渡要件充足制約生成部１０８に入力する。
【０２１０】
本実施形態の過渡要件充足制約生成部１０８は、入力された過渡要件の集合に含まれる全ての過渡要件に対して、図９に示す過渡要件充足制約生成処理を実行することによって過渡要件充足制約を生成する。過渡要件充足制約生成処理を実行した後、過渡要件充足制約生成部１０８は、各過渡要件由来の制約式を出力として、制約解決部１０５に入力する。
【０２１１】
第１の実施形態で述べたように、図９に示す過渡要件充足制約生成処理が実行されることによって過渡要件から得られた制約を満たすような半順序手順は、生成元の過渡要件も満たす。すなわち、図９に示す過渡要件充足制約生成処理が実行されることによって複数の過渡要件から得られた制約を全て満たすような半順序手順は、生成元の過渡要件を全て満たす。
【０２１２】
［効果の説明］
本実施形態の半順序手順計画装置１１０は、手順に含まれる全ての行動が依存性を満足し、正常に実行されるための条件および手順が複数の過渡要件を満たすための必要十分条件を順守する手順のうち、構造が最も小さい手順を出力する。
【０２１３】
具体的には、過渡要件充足制約生成部１０８は、手順が入力された全ての過渡要件を満たすための必要十分条件を整数計画制約式として出力する。また、制約解決部１０５は、依存性制約生成部１０３および過渡要件充足制約生成部１０８が出力した制約を満たす手順の中で構造が最も小さい手順を導出する。
【０２１４】
また、半順序化処理部１０６は、直列手順から手順の正常実行に不要な順序関係を取り除き、半順序手順を生成する。よって、手順の並列実行が可能になるため、手順実行にかかる時間が低減する。
【０２１５】
以下、本実施形態の半順序手順計画装置のハードウェア構成の具体例を説明する。図１６は、本発明による半順序手順計画装置のハードウェア構成例を示す説明図である。
【０２１６】
図１６に示す半順序手順計画装置は、ＣＰＵ（Central Processing Unit ）２１と、主記憶部２２と、補助記憶部２３とを備える。また、ユーザが操作するための入力部２４や、ユーザに処理結果または処理内容の経過を提示するための出力部２５を備えてもよい。
【０２１７】
なお、図１６に示す半順序手順計画装置は、ＣＰＵ２１の代わりにＤＳＰ（Digital Signal Processor）を備えてもよい。または、図１６に示す半順序手順計画装置は、ＣＰＵ２１とＤＳＰとを併せて備えてもよい。
【０２１８】
主記憶部２２は、データの作業領域やデータの一時退避領域として用いられる。主記憶部２２は、例えばＲＡＭ（Random Access Memory）である。
【０２１９】
補助記憶部２３は、一時的でない有形の記憶媒体である。一時的でない有形の記憶媒体として、例えば磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory ）、ＤＶＤ−ＲＯＭ（Digital Versatile Disk Read Only Memory ）、半導体メモリが挙げられる。
【０２２０】
入力部２４は、データや処理命令を入力する機能を有する。入力部２４は、例えばキーボードやマウス等の入力デバイスである。
【０２２１】
出力部２５は、データを出力する機能を有する。出力部２５は、例えば液晶ディスプレイ装置等の表示装置、またはプリンタ等の印刷装置である。
【０２２２】
また、図１６に示すように、半順序手順計画装置において、各構成要素は、システムバス２６に接続されている。
【０２２３】
補助記憶部２３は、例えば、過渡要件正規化部１０１、変数生成部１０２、依存性制約生成部１０３、過渡要件充足制約生成部１０４、制約解決部１０５、半順序化処理部１０６、過渡要件正規化部１０７、および過渡要件充足制約生成部１０８を実現するためのプログラムを記憶している。
【０２２４】
なお、各実施形態の半順序手順計画装置１００、半順序手順計画装置１１０は、例えば、非一時的な記憶媒体に格納されているプログラムに従って処理を実行するＣＰＵ２１によって実現されてもよい。すなわち、各実施形態の半順序手順計画装置１００、半順序手順計画装置１１０は、ソフトウェアにより実現されてもよい。
【０２２５】
ソフトウェアにより実現される場合、ＣＰＵ２１が補助記憶部２３に格納されているプログラムを、主記憶部２２にロードして実行し、半順序手順計画装置の動作を制御することによって、各機能がソフトウェアにより実現される。すなわち、過渡要件正規化部１０１、変数生成部１０２、依存性制約生成部１０３、過渡要件充足制約生成部１０４、制約解決部１０５、半順序化処理部１０６、過渡要件正規化部１０７、および過渡要件充足制約生成部１０８は、例えば、プログラム制御に従って処理を実行するＣＰＵ２１によって実現される。
【０２２６】
また、各構成要素の一部または全部は、汎用の回路（circuitry ）または専用の回路、プロセッサ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【０２２７】
例えば、各実施形態の半順序手順計画装置１００、半順序手順計画装置１１０における各部は、ハードウェア回路によって実現されてもよい。一例として、過渡要件正規化部１０１、変数生成部１０２、依存性制約生成部１０３、過渡要件充足制約生成部１０４、制約解決部１０５、半順序化処理部１０６、過渡要件正規化部１０７、および過渡要件充足制約生成部１０８が、それぞれLSI(Large Scale Integration)で実現される。また、それらが１つのLSI で実現されていてもよい。
【０２２８】
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【０２２９】
次に、本発明の概要を説明する。図１７は、本発明による半順序手順計画装置の概要を示すブロック図である。本発明による半順序手順計画装置１０は、状態要素の状態を初期状態から目的状態へ遷移させる複数の操作（例えば、行動）が直列に並べられた直列手順内の操作間の順序関係のうち所定の制約の下で削除可能な順序関係の条件である第１条件を生成する第１生成部１１（例えば、依存性制約生成部１０３）と、順序関係のうち状態が初期状態から目的状態へ遷移するまでの間状態要素が満たすことが求められる要件である過渡要件が満たされるために要する順序関係の条件である第２条件を生成する第２生成部１２（例えば、過渡要件充足制約生成部１０４）と、生成された第１条件を満たし、かつ生成された第２条件を満たさない順序関係を直列手順から削除される順序関係に決定する決定部１３（例えば、制約解決部１０５）とを備える。
【０２３０】
そのような構成により、半順序手順計画装置は、過渡要件を満たす半順序手順を計画できる。
【０２３１】
また、第１生成部１１は、第１条件を整数計画制約式として生成し、第２生成部１２は、第２条件を整数計画制約式として生成し、決定部１３は、生成された整数計画制約式を含む整数計画制約問題を求解することによって直列手順から削除される順序関係を決定してもよい。
【０２３２】
そのような構成により、半順序手順計画装置は、半順序手順を生成する問題を整数計画制約問題に帰着させることができる。
【０２３３】
また、第２生成部１２は、直列手順に対応する有向グラフ上のネットワークフローにおけるフローの存在性条件として整数計画制約式を生成してもよい。
【０２３４】
そのような構成により、半順序手順計画装置は、過渡要件を満たす順序関係の条件を有向グラフを用いて導出できる。
【０２３５】
また、過渡要件は、状態要素の状態に割り当てられたスコアと状態要素の現在状態に割り当てられたスコアに関する制約式とで構成されてもよい。また、過渡要件には、状態要素モデルが遷移を禁止されている状態を規定する制約が含まれていてもよい。
【０２３６】
そのような構成により、半順序手順計画装置は、半順序手順を生成する問題を整数計画制約問題に帰着させることができる。
【０２３７】
また、半順序手順計画装置１０は、決定部１３により決定された順序関係を直列手順から削除することによって直列手順を更新する更新部（例えば、半順序化処理部１０６）を備えてもよい。また、更新部は、直列手順を一部の操作が並列に実行可能な形式の手順に更新してもよい。
【０２３８】
そのような構成により、半順序手順計画装置は、過渡要件を満たす並列に実行可能な半順序手順を計画できる。
【０２３９】
また、半順序手順計画装置１０は、過渡要件を正規化する正規化部（例えば、過渡要件正規化部１０１）を備え、正規化部は、正規化された過渡要件を第２生成部１２に入力してもよい。
【０２４０】
そのような構成により、半順序手順計画装置は、入力された過渡要件の形式を処理が容易な形式に正規化できる。
【０２４１】
また、状態要素には、複数の状態と、複数の状態間の遷移条件が付与されている状態遷移とが含まれていてもよい。
【０２４２】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０２４３】
この出願は、２０１７年５月３０日に出願された日本特許出願２０１７−１０６３６７を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用の可能性】
【０２４４】
本発明は、状態要素モデル上の過渡要件付き自動計画問題の解である手順の並列実行可能性を向上させる用途に好適に適用される。例えば、本発明は、他の部分システムに干渉する複数の小規模な部分システムで構成されるシステムと、システムに課せられた大域的な制約とに関する自動計画問題の解であるような、並列実行が可能である効率的な手順の導出に好適に適用される。
【符号の説明】
【０２４５】
１０、１００、１１０  半順序手順計画装置
１１  第１生成部
１２  第２生成部
１３  決定部
２１  ＣＰＵ
２２  主記憶部
２３  補助記憶部
２４  入力部
２５  出力部
２６  システムバス
１０１、１０７  過渡要件正規化部
１０２  変数生成部
１０３  依存性制約生成部
１０４、１０８  過渡要件充足制約生成部
１０５  制約解決部
１０６  半順序化処理部
【図１】
2018221175.tif 000003
【図２】
2018221175.tif 000004
【図３】
2018221175.tif 000005
【図４】
2018221175.tif 000006
【図５】
2018221175.tif 000007
【図６】
2018221175.tif 000008
【図７】
2018221175.tif 000009
【図８】
2018221175.tif 000010
【図９】
2018221175.tif 000011
【図１０】
2018221175.tif 000012
【図１１】
2018221175.tif 000013
【図１２】
2018221175.tif 000014
【図１３】
2018221175.tif 000015
【図１４】
2018221175.tif 000016
【図１５】
2018221175.tif 000017
【図１６】
2018221175.tif 000018
【図１７】
2018221175.tif 000019
【図１８】
2018221175.tif 000020
【図１９】
2018221175.tif 000021
【図２０】
2018221175.tif 000022
【図２１】
2018221175.tif 000023
【図２２】
2018221175.tif 000024
【図２３】
2018221175.tif 000025
【図２４】
2018221175.tif 000026
【図２５】
2018221175.tif 000027
【図２６】
2018221175.tif 000028
【図２７】
2018221175.tif 000029
【図２８】
2018221175.tif 000030
【国際調査報告】
2018221175.tif 000031
2018221175.tif 000032
2018221175.tif 000033