(57)【要約】      （修正有）【課題】データ依存型制約ネットワークの計算計画において、コンパクトで効率的な計算計画を作成する。【解決手段】入力変数ノード１２０、出力変数ノード１２８、および関係ノード１１４を含む二部グラフ１０６によって表されるデータ依存型制約ネットワーク１００の条件付き計算計画を決定する方法は、変数ノード１２０指定子を使用して、計画が所望される少なくとも１つの出力変数ノード１２８を指定することを含む。方法は、計画決定子を使用して、二部グラフの逆方向チェイニング検索を使用する入力変数ノード１２０から出力変数ノード１２８への計画を決定することをさらに備える。【選択図】図２Ａ
2014081934.tif 000002
【特許請求の範囲】
【請求項１】
入力変数ノード（１２０）、出力変数ノード（１２８）、および関係ノード（１１４）を含み、前記変数ノード（１２０）と前記関係ノード（１１４）がアーク（１１０）によって相互連結される二部グラフ（１０６）によって表されるデータ依存型制約ネットワーク（１００）の条件付き計算計画（１０２）を決定する方法であって、
変数ノード（１２０）指定子を使用して、計画（１０２）が所望される少なくとも１つの出力変数ノード（１２８）を指定するステップと、
計画（１０２）決定子を使用して、前記二部グラフ（１０６）の逆方向チェイニング検索を使用する前記入力変数ノード（１２０）から前記出力変数ノード（１２８）への計画（１０２）を決定するステップと
を備える方法。
【請求項２】
前記出力変数ノード（１２８）の値を計算するために前記計画（１０２）の計算ステップが所望される前記入力変数ノード（１２０）を指定するステップ
をさらに備え、
入力変数ノード（１２０）が指定されない場合、前記出力変数ノード（１２８）の値に影響を及ぼす前記制約ネットワーク（１００）のすべての前記入力変数ノード（１２０）からの前記計画（１０２）を決定する請求項１に記載の方法。
【請求項３】
ワールドセット（１４０）指定子を使用して、前記計算計画（１０２）が所望されるワールドセット（１４０）を指定するステップ
をさらに備え、
前記ワールドセット（１４０）が指定されない場合、前記出力変数ノード（１２８）が決定済みの状態にある前記ワールドセット（１４０）を決定する請求項１に記載の方法。
【請求項４】
前記計画（１０２）を決定する前記ステップは、
入力リスト（２２０）、出力リスト（２１８）、スタブキュー、および計画（１０２）キューを提供すること
を含み、
前記入力リスト（２２０）は、入力変数（１２２）と入力変数（１２２）ワールドセット（１４０）との間の関連付けを備え、入力変数（１２２）ワールドセット（１４０）が前記入力変数（１２２）が独立型である最大ワールドセット（１４０）であり、１つまたは複数の出力変数（１２２）が前記ワールドセット（１４０）の前記入力変数（１２２）に依存し、
前記出力リスト（２１８）は、変数ノード（１２０）と前記変数ノード（１２０）が決定されている前記最大ワールドセット（１４０）との間の関連付けを備える要素を有し、
前記計画（１０２）キューは、計画ステップと前記計画（１０２）ステップが実行されるべき前記ワールドセット（１４０）との間の関連付けを備える要素を有する計画（１０２）ステップのリストを備え、
計画（１０２）ステップは、
前記変数ノード（１２０）のうちの単一のノードの値を計算するために計算方法に関連付けられているアーク（１１０）、および
前記コンポーネント（１３２）内の複数の前記変数ノード（１２０）の値を同時に計算するために計算方法に関連付けられているコンポーネント（１３２）
のうちの１つを備え、
前記スタブキューは、スタブ変数ノード（１２０）とワールドセット（１４０）との間の関連付けを備える要素を有し、スタブ変数（１２２）は、１つまたは複数の計画（１０２）ステップにおいて必要とされるが、指定された入力変数（１２２）のいずれからも独立している任意の変数（１２２）であり、前記スタブ変数（１２２）に関連付けられている前記ワールドセット（１４０）は、前記１つまたは複数の計画（１０２）ステップを評価するために前記スタブ変数（１２２）が必要とされる前記ワールドセット（１４０）である請求項１に記載の方法。
【請求項５】
前記入力変数ノード（１２０）が引数として指定される場合、
検索パスで導かれた進展ワールドセット（１４０）を前記入力変数（１２２）に関連付けられている前記ワールドセット（１４０）と結合することにより、指定された入力変数（１２２）に関連付けられている前記ワールドセット（１４０）を更新することにより前記入力リスト（２２０）を更新するステップ
をさらに含み、
前記二部グラフ（１０６）の前記逆方向チェイニング検索を使用して前記計画を決定する前記ステップは、
前記出力変数ノード（１２８）で開始することであって、前記出力変数ノード（１２８）は指定されたワールドセット（１４０）および１つまたは複数の入アーク（１１０）を有することと、
前記出力変数ノード（１２８）が前記指定されたワールドセット（１４０）の全体について決定された状態にある場合、前記出力変数ノード（１２８）および前記指定されたワールドセットを前記出力リスト（２１８）に追加することにより前記出力リスト（２１８）を更新することと
を含む請求項６に記載の方法。
【請求項６】
前記二部グラフ（１０６）の前記逆方向チェイニング検索を使用して前記計画（１０２）を決定する前記ステップは、
所与のワールドセット（１４０）について、変数ノード（１２０）の前記計画（１０２）を見出す、コンポーネント（１３２）の前記計画（１０２）を見出す、関係ノード（１１４）の前記計画（１０２）を見出す、およびアーク（１１０）の前記計画（１０２）を見出すという操作を再帰的に実行することにより、検索パスに沿って逆方向に各々の入アーク（１１０）に従う間に、前記計画（１０２）を更新することであって、所与の変数ノード（１２０）に関連付けられている前記入アーク（１１０）を使用可能にするワールドセットは互いに素であることと、
前記計画（１０２）を更新する間、前記検索パスに沿った適切なワールドセット（１４０）を前記検索パスの追加の要素の使用可能ワールドセット（１４０）との進展ワールドセット（１４０）の論理積として保持することであって、前記追加の要素は変数ノード（１２０）、コンポーネント（１３２）、関係ノード（１１４）、およびアーク（１１０）を備えることと、
各入アーク（１１０）について、前記入アーク（１１０）がコンポーネント（１３２）の一部である場合にコンポーネント（１３２）の計画（１０２）を見出すか、または前記入アーク（１１０）がコンポーネント（１３２）の一部ではない場合に関係ノード（１１４）の計画（１０２）を見出すことと
を含む請求項８に記載の方法。
【請求項７】
各入アーク（１１０）について、コンポーネントの計画（１０２）、または関係ノード（１１４）の計画（１０２）を見出す前記ステップは、
コンポーネント（１３２）先行のすべてのアーク（１１０）の計画（１０２）を見出すことと、
前記関係ノード（１１４）のすべての入アーク（１１０）の計画（１０２）を見出すことと、
状態変数（１２４）への前記ワールドセット（１４０）の依存性を除去することであって、前記状態変数（１２４）はブール変数（１２２）、有限ドメインにわたり計数値を有するカテゴリ変数（１２２）の少なくとも１つを備えることと
を含む請求項９に記載の方法。
【請求項８】
前記二部グラフ（１０６）の前記逆方向チェイニング検索を使用して前記計画（１０２）を決定する前記ステップは、
指定された入力変数ノード（１２０）に到達するか、または指定された入力変数ノード（１２０）が提供されない場合は独立の入力変数ノード（１２０）に到達すると、検索パスの逆の順序で、前記アーク（１１０）またはコンポーネント（１３２）および関連するワールドセット（１４０）を追加することによって計画（１０２）キューを更新すること
を含み、
前記二部グラフ（１０６）の前記逆方向チェイニング検索を使用して前記計画（１０２）を決定する前記ステップは、
計画（１０２）ステップの先行アーク（１１０）で開始する任意の検索パスが、指定された入力変数ノード（１２０）で終了するかどうかを留意することであって、終了する場合には、スタブ変数（１２２）および関連するスタブワールドセット（１４０）で前記スタブキューを更新すること
を含み、
前記スタブ変数は、検索パスが前記指定された入力変数（１２２）のいずれでも終了しない任意の他の先行アーク（１１０）に関連付けられている変数を備え、
前記スタブワールドセット（１４０）は、前記検索パスのワールドセット（１４０）の論理和を備える請求項６に記載の方法。
【請求項９】
入力変数ノード（１２０）、出力変数ノード（１２８）、および関係ノード（１１４）を含み、前記変数ノード（１２０）と前記関係ノード（１１４）がアーク（１１０）によって相互連結される二部グラフ（１０６）によって表されるデータ依存型制約ネットワーク（１００）の条件付き計算計画（１０２）を決定するためのプロセッサベースのシステムであって、
前記計画（１０２）の開始点を表す入力として変数ノード（１２０）を指定し、前記計画（１０２）によって計算されるべき出力として変数ノード（１２０）を指定するように構成された変数ノード（１２０）指定子と、
前記二部グラフ（１０６）の逆方向チェイニング検索を使用する前記入力変数ノード（１２０）から前記出力変数ノード（１２８）への計画（１０２）を決定するように構成された計画（１０２）決定子と
を備えるシステム。
【請求項１０】
入力変数ノード（１２０）が指定されない場合、前記計画決定子は、前記出力変数ノード（１２８）の値に影響を及ぼす前記制約ネットワーク（１００）におけるすべての前記入力変数ノード（１２０）からの前記計画を決定するように構成され、
前記計算計画（１０２）が所望されるワールドセット（１４０）を指定するように構成されたワールドセット（１４０）指定子をさらに備え、
前記ワールドセット（１４０）が指定されない場合、前記計画（１０２）決定子は、前記出力変数ノード（１２８）が決定済みの状態にある前記ワールドセット（１４０）を決定するように構成される請求項９に記載のシステム。
【請求項１１】
前記計画を決定すると、前記計画決定子は、入力リスト（２２０）、出力リスト（２１８）、スタブキュー、および計画（１０２）キューを提供するように構成され、
前記入力リスト（２２０）は、入力変数と入力変数ワールドセット（１４０）との間の関連付けを備え、入力変数ワールドセット（１４０）が前記入力変数が独立型である最大ワールドセット（１４０）であり、１つまたは複数の出力変数（１２２）が前記ワールドセット（１４０）の前記入力変数（１２２）に依存し、
前記出力リスト（２１８）は変数ノード（１２０）と前記変数ノード（１２０）が決定されている前記最大ワールドセット（１４０）との間の関連付けを備える要素を有し、
前記計画（１０２）キューは、計画ステップと前記計画（１０２）ステップが実行されるべき前記ワールドセット（１４０）との間の関連付けを備える要素を有する計画（１０２）ステップのリストを備え、
計画ステップは、
前記変数ノード（１２０）のうちの単一のノードの値を計算するために計算方法に関連付けられているアーク（１１０）、および
コンポーネント（１３２）内の複数の前記変数ノード（１２０）の値を同時に計算するために計算方法に関連付けられている前記コンポーネント（１３２）
のうちの１つを備え、
前記スタブキューは、スタブ変数ノード（１２０）とワールドセット（１４０）との間の関連付けを備える要素を有し、スタブ変数（１２２）は、１つまたは複数の計画（１０２）ステップにおいて必要とされるが、指定された入力変数（１２２）のいずれからも独立している任意の変数（１２２）であり、前記スタブ変数（１２２）に関連付けられている前記ワールドセット（１４０）は、前記１つまたは複数の計画ステップを評価するために前記スタブ変数（１２２）が必要とされる前記ワールドセット（１４０）であり、
前記入力変数ノード（１２０）が引数として指定される場合、前記計画（１０２）決定子は、検索パスで導かれた前記進展ワールドセット（１４０）を前記入力変数（１２２）に関連付けられている前記ワールドセット（１４０）と結合することにより、指定された入力変数（１２２）に関連付けられている前記ワールドセット（１４０）を更新するようにさらに構成される請求項９に記載のシステム。
【請求項１２】
前記計画（１０２）決定子は、前記二部グラフ（１０６）の前記逆方向チェイニング検索中に、前記出力変数ノード（１２８）で開始するように構成され、前記出力変数ノード（１２８）は、指定されたワールドセット（１４０）および１つまたは複数の入アーク（１１０）を有し、
前記計画決定子は、前記出力変数ノード（１２８）が前記指定されたワールドセット（１４０）の全体について決定された状態にある場合、前記出力変数ノード（１２８）および前記指定されたワールドセット（１４０）を前記出力リスト（２１８）に追加することにより前記出力リスト（２１８）を更新するように構成される請求項１１に記載のシステム。
【請求項１３】
前記計画（１０２）決定子は、逆方向チェイニング検索中に、所与のワールドセット（１４０）について、変数ノード（１２０）の前記計画（１０２）を見出す、コンポーネント（１３２）の前記計画（１０２）を見出す、関係ノード（１１４）の前記計画（１０２）を見出す、およびアーク（１１０）の前記計画を見出すという一連の操作を再帰的に実行することにより、検索パスに沿って逆方向に各々の入アーク（１１０）に従う間に、前記計画を更新するように構成され、所与の変数ノード（１２０）に関連付けられている前記入アーク（１１０）を使用可能にするワールドセット（１４０）は互いに素であり、
前記計画（１０２）決定子は、前記計画（１０２）を更新する間、前記検索パスに沿った適切なワールドセット（１４０）を前記検索パスの追加の要素の使用可能ワールドセットとの進展ワールドセットの論理積として保持するように構成され、前記追加の要素は変数ノード（１２０）、コンポーネント（１３２）、関係ノード（１１４）、およびアーク（１１０）を備え、
前記計画（１０２）決定子は、各入アーク（１１０）について、前記入アーク（１１０）がコンポーネント（１３２）の一部である場合にコンポーネント（１３２）の計画を見出すか、または前記入アーク（１１０）がコンポーネント（１３２）の一部ではない場合に関係ノード（１１４）の計画（１０２）を見出す請求項１２に記載のシステム。
【請求項１４】
前記計画（１０２）決定子は、コンポーネント（１３２）先行のすべてのアーク（１１０）の計画（１０２）を見出し、前記関係ノード（１１４）のすべての入アーク（１１０）の計画（１０２）を見出し、状態変数（１２４）への前記ワールドセット（１４０）の依存性を除去するように構成され、
前記状態変数（１２４）はブール変数（１２２）、有限ドメインにわたり計数値を有するカテゴリ変数（１２２）の少なくとも１つを備える請求項１３に記載のシステム。
【請求項１５】
前記計画（１０２）決定子は、指定された入力変数ノード（１２０）に到達するか、または指定された入力変数ノード（１２０）が提供されない場合は独立の入力変数ノード（１２０）に到達すると、検索パスの逆の順序で、前記アーク（１１０）またはコンポーネント（１３２）および関連するワールドセット（１４０）を追加することによって計画（１０２）キューを更新するように構成され、
前記計画（１０２）決定子は、逆方向チェイニング検索中に、計画（１０２）ステップの先行アーク（１１０）で開始する任意の検索パスが、指定された入力変数ノード（１２０）で終了するかどうかを留意して、終了する場合には、スタブ変数（１２２）および関連するスタブワールドセット（１４０）で前記スタブキューを更新するように構成され、
前記スタブ変数（１２２）は、検索パスが前記指定された入力変数（１２２）のいずれでも終了しない任意の他の先行アーク（１１０）に関連付けられている変数（１２２）を備え、
前記スタブワールドセットは、前記検索パスの前記ワールドセット（１４０）の論理和を備える請求項１１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、参照により全内容が本明細書に明示的に組み込まれている、２０１２年３月１６日に出願され、「ＳＹＳＴＥＭ  ＡＮＤ  ＭＥＴＨＯＤ  ＦＯＲ  ＲＡＰＩＤ  ＭＡＮＡＧＥＭＥＮＴ  ＯＦ  ＬＯＧＩＣ  ＦＯＲＭＵＬＡＳ」と題する係属米国特許出願第１３／４２２、３３５号に関する。
【０００２】
本開示は一般に、制約管理システムに関し、さらに詳細にはデータ依存型制約ネットワークにおける計算計画に関する。
【背景技術】
【０００３】
航空機または宇宙打ち上げロケットのような車両の概念設計は、通常、設計トレードオフ研究またはトレード研究のセットを伴い、多数のシステム構成および基準が検討されることがある。最適な設計に到達するため、車両のパフォーマンス、コスト、信頼性、および複数の専門領域にわたるさまざまなその他の要因の観点から広範な候補の設計概念を評価することが望ましい。候補設計概念の評価は、制約管理システムまたは制約ネットワークのような、計算手順において実施されてもよい。
【０００４】
制約ネットワークは、アークによって相互連結された変数ノードおよび関連ノードを含む二部グラフとして表されてもよい。各変数ノードは、制約ネットワークにおける変数を表す。各関係ノードは、等値制約（たとえば、方程式）を表す。アークは、変数が関係ノードの等値制約に含まれる場合かつその場合に限り、変数ノードを関係ノードに連結することができる。二部グラフにおけるアークは、各々の等値制約からの出アークが、等値制約に連結されているその他の変数の値を所与として計算するように等値制約が作成されている変数を指し示すように方向付けられてもよい。
【０００５】
トレード研究アプリケーションの制約ネットワークの従来の実施態様において、方程式のセットは、すべての方程式が常に満足されるように静的である。加えて、代替的な計算方法は、航空機の空力抵抗を決定するために以下の表現のような選択された方程式に組み込まれてもよい。
ｄｒａｇＰｌａｎｅ＝Ｉｆ（ＣａｎａｒｄＩｓＰｒｅｓｅｎｔ、ｄｒａｇＢｏｄｙ＿ＣａｎａｒｄＡｔｔａｃｈｅｄ（ＦｕｓｅｌａｇｅＳｉｚｅ）＋ｄｒａｇＣａｎａｒｄ（ＣａｎａｒｄＳｉｚｅ）、ｄｒａｇＢｏｄｙ＿ＮｏＣａｎａｒｄ（ＦｕｓｅｌａｇｅＳｉｚｅ））
【０００６】
残念なことに、前述の表現のような方程式への計算方法の組み込みは、多数の異なる構成を伴う複雑なシステムのモデラーにとっては扱いにくいものとなるおそれもある。さらに、方程式への計算方法の組み込みは、計算フローの逆転を必要とする特定のタイプのトレード研究のパフォーマンスを妨げることもある。
【０００７】
方程式への計算方法の組み込みに対する代替策は、任意の所与の方程式の適用可能性を、制約ネットワークによって決定される計算状態に依存させることである。制約ネットワークモデリングの重要な特性は、計算計画の、計算パスの制約セットの数値解法との分離である。計算計画は、計算ステップの順序付きシーケンス（すなわち、所与のトレード研究のパフォーマンス中の指定された入力変数から指定された出力変数への制約ネットワーク経由の計算パス）を決定することとして定義されてもよい。制約セットの数値解法からの計算計画の分離は、トレード研究中の比較的迅速なフィードバックをシステム設計者にもたらすために必須である。この分離により、システム設計者は、トレード研究中に、多種多様な設計を探求することができる。
【０００８】
各方程式の適用可能性が静的ではなく、その代わりにデータ依存型であるような場合、そのようなデータ依存性をモデリングするための効果的な技法は、各方程式に命題形または完全論理式（ＷＦＦ：ｗｅｌｌ−ｆｏｒｍｅｄ  ｆｏｒｍｕｌａ）を連結することであるが、これはネットワーク内のデータに依存し、そのようなＷＦＦが真であると評価される場合には、方程式が所与の状況に適用可能であることを意味する。この点において、各ＷＦＦは、ＷＦＦが真であるワールドのセットを定義する真理値を有する。
【０００９】
データ依存型制約ネットワークの計算計画において、各計算ステップは、ネットワークのデータ、および以前の計算ステップで計算された結果に依存し、ＷＦＦが真と評価する場合には計算ステップが所与の状況において評価されることを意味する命題形またはＷＦＦに関連付けられている。各計算ステップに関連付けられているＷＦＦは、論理和、論理積、および差分演算子のさまざまな組み合わせを、解決される必要のある方程式に関連付けられているＷＦＦに適用することによって取得されてもよい。ＷＦＦが全体的に偽のＷＦＦに単純化する場合、計算計画生成手順は、制約ネットワークの不必要な分岐を除去して、それによりコンパクトで効率的な計算計画を作成することができる。
【００１０】
制約ネットワークにおいて計算計画を見出すための従来の方法は、二部グラフのトポロジカルソートに依存する。そのような従来の方法の計算上の複雑さは、グラフの大きさに関して線形となりうる。しかし、そのような従来の方法は、グラフのトポロジーが、データ依存型の制約ネットワークに見られるようにグラフの変数の値と共に動的に変化する場合には、適用可能ではないこともある。さらに、従来の方法を使用する計算計画は、計算パスにおける制約セットの計画および計算の混合を伴うことがある。計画と計算の混合は、設計者が設計空間を探求することができる柔軟性およびスピードを低下させ、設計者が探求しうる設計の多様性を制限することになる。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
以上のことから、当技術分野において、計画と計算の混合を回避する、データ依存型の制約ネットワークにおける計算計画のためのシステムおよび方法が必要とされている。
【課題を解決するための手段】
【００１２】
データ依存型制約ネットワークにおける条件付き計画に関連付けられている前述の必要性は、二部グラフによって表されるデータ依存型制約ネットワークの条件付き計算計画を決定する方法を提供する本開示によって具体的に対処され軽減される。二部グラフは、入力変数ノード、出力変数ノード、および関係ノードを含むことができる。変数ノードおよび関係ノードは、アークによって相互連結されてもよい。方法は、計画が所望される少なくとも１つの出力変数ノードを指定すること、および二部グラフの逆方向チェイニング検索を使用して入力変数ノードから出力変数ノードへの計画を決定することを含むことができる。
【００１３】
さらなる実施形態において、開示されるのは、入力変数ノード、出力変数ノード、および関係ノードを含み、変数ノードと関係ノードがアークによって相互連結されうる二部グラフによって表されるデータ依存型制約ネットワークの条件付き計算計画を決定する方法である。方法は、計算計画が所望される出力変数ノードを指定することと、出力変数ノードの値を計算するために計画の計算ステップが所望される入力変数ノードを指定することと、計画が所望されるワールドセットを指定することと、二部グラフの逆方向チェイニング検索を使用して入力変数ノードから出力変数ノードへの計画を決定することとを含むことができる。
【００１４】
さらに、開示されるのは、入力変数ノード、出力変数ノード、および関係ノードを含み、二部グラフによって表されるデータ依存型制約ネットワークの条件付き計算計画を決定するためのプロセッサベースのシステムである。変数ノードおよび関係ノードは、アークによって相互連結されてもよい。プロセッサベースのシステムは、計画の開始点を表す入力として変数ノードを指定し、計画によって計算されるべき出力として変数ノードを指定するように構成された変数ノードセレクタを含むことができる。プロセッサベースのシステムは、加えて、二部グラフの逆方向チェイニング検索を使用して入力変数ノードから出力変数ノードへの計画を決定するように構成された計画決定子を含むことができる。
【００１５】
説明されてきた特徴、機能、および利点は、本開示のさまざまな実施形態において単独で達成されてもよいか、またはさらにその他の実施形態に組み込まれてもよく、そのさらなる詳細は後段の説明および図面を参照して理解されうる。
【００１６】
本開示のさまざまな特徴は、同等の番号が全体を通じて類似する部分を示す図面を参照して、さらに明らかとなろう。
【図面の簡単な説明】
【００１７】
【図１Ａ】複数のアークによって各々変数を表す５つの変数ノードに相互連結されている等値制約を表す１つの関係ノードを有するデータ独立型制約ネットワークを示す概略図である。
【図１Ｂ】図１Ａの関係ノードにより表される等値制約の表現を示す図である。
【図２Ａ】５つの変数に相互連結されている２つの等値制約を有するデータ依存型制約ネットワークを示す概略図である。
【図２Ｂ】図２Ａの関係ノードにより表される等値制約の表現を示す図である。
【図３】３つの状態変数を含む７つの変数の間で４つの等値制約を有するデータ依存型制約ネットワークを示す概略図である。
【図４Ａ】図３の制約ネットワークを示す概略図であって、強調表示されているアークは入力変数ノードＶ１から出力変数ノードＶ３への計算計画のステップ（１）、（２）、および（３）を図示する。
【図４Ｂ】図４の制約ネットワークの入力変数ノードＶ１から出力変数ノードＶ３への計算計画の入力、出力、ならびにステップ（１）、（２）、および（３）の値を示すリスト表示である。
【図５】重複する強成分のある領域を有する制約ネットワークを示す概略図であって、各々の等値制約の前には状態変数の条件が置かれている。
【図６Ａ】図５の制約ネットワークを示す概略図であって、強調表示されているアークは入力変数ノードバーから出力変数ノードｖ５への計算計画のステップを図示する。
【図６Ｂ】図６Ａの制約ネットワークの入力変数ノードバーから出力変数ノードｖ５への計算計画の入力、出力、およびステップの値を示すリスト表示である。
【図７】ブール状態変数Ｑおよび｛ｓ１、ｓ２、ｓ３｝の値によるカテゴリ状態変数Ｓを伴うさまざまなワールドセットをリストする表である。
【図８】破線フォントで示されるゴーストアークを有する制約ネットワークを示す概略図であって、そのようなゴーストアークは、状態変数が関係ノードに到達する検索分岐（１１２）に関連付けられているワールドセットに含まれている場合、関係ノードと状態変数の間に追加されてもよい。
【図９Ａ】データ依存型制約ネットワークの計算計画を決定する高水準の方法に含まれうる１つまたは複数の操作を示す流れ図である。
【図９Ｂ】図９Ａの流れ図に示される計算計画を決定する方法を実施するためのルーチンを示す擬似コードのリストである。
【図１０Ａ】変数ノードの状態が決定されるワールドセットを決定する方法に含まれうる１つまたは複数の操作を示す流れ図である。
【図１０Ｂ】図１０Ａのフローに示される計算計画を決定する方法を実施するためのルーチンを示す擬似コードのリストである。
【図１１Ａ】計画の出力キューを更新する方法に含まれうる１つまたは複数の操作を示す流れ図である。
【図１１Ｂ】図１１Ａの流れ図に示される出力キューを更新する方法を実施するためのルーチンを示す擬似コードのリストである。
【図１２Ａ】計画の入力キューに変数ノードを追加する方法に含まれうる１つまたは複数の操作を示す流れ図である。
【図１２Ｂ】図１２Ａの流れ図に示される入力キューに変数ノードを追加する方法を実施するためのルーチンを示す擬似コードのリストである。
【図１３Ａ】ワールドセット内の変数ノードの計画を見出す方法に含まれうる１つまたは複数の操作を示す流れ図である。
【図１３Ｂ】図１３Ａの流れ図に示される変数ノードの計画を見出す方法を実施するためのルーチンを示す擬似コードのリストである。
【図１４Ａ】ワールドセット内の強成分の計画を決定する方法に含まれうる１つまたは複数の操作を示す流れ図である。
【図１４Ｂ】図１４Ａの流れ図に示される強成分の計画を決定する方法を実施するためのルーチンを示す擬似コードのリストである。
【図１５Ａ】ワールドセット内の関係ノードの計画を決定する方法に含まれうる１つまたは複数の操作を示す流れ図である。
【図１５Ｂ】図１５Ａの流れ図に示される関係ノードの計画を決定する方法を実施するためのルーチンを示す擬似コードのリストである。
【図１６Ａ】計画のステップがアークまたは強成分を備える場合、入力引数の計画を決定する方法に含まれうる１つまたは複数の操作を示す流れ図である。
【図１６Ｂ】計画のステップがアークまたは強成分を備える場合、入力引数の計画を決定する方法に含まれうる１つまたは複数の操作を示す流れ図である。
【図１６Ｃ】計画のステップが図１６Ａの流れ図に示されるようにアークまたは強成分を備える場合、入力引数の計画を決定する方法を実施するためのルーチンを示す擬似コードのリストである。
【図１６Ｄ】計画のステップが図１６Ａの流れ図に示されるようにアークまたは強成分を備える場合、入力引数の計画を決定する方法を実施するためのルーチンを示す擬似コードのリストである。
【図１７Ａ】変数および関連するワールドセットをスタブキューに追加することにより計画構造を変更する方法に含まれうる１つまたは複数の操作を示す流れ図である。
【図１７Ｂ】図１７Ａの流れ図に示される、変数および関連するワールドセットをスタブキューに追加することにより計画構造を変更する方法を実施するためのルーチンを示す擬似コードのリストである。
【図１８Ａ】計算ステップおよび関連するワールドセットを計画キューに追加することにより計画構造を変更する方法に含まれうる１つまたは複数の操作を示す流れ図である。
【図１８Ｂ】図１８Ａの流れ図に示される、計算ステップおよび関連するワールドセットを計画キューに追加することにより計画構造を変更する方法を実施するためのルーチンを示す擬似コードのリストである。
【図１９Ａ】計画の入力ステップオブジェクトに関連付けられているすべてのワールドセットの論理和を決定する方法に含まれうる１つまたは複数の操作を示す流れ図である。
【図１９Ｂ】図１９Ａの流れ図に示される計画の入力ステップオブジェクトに関連付けられているすべてのワールドセットの論理和を決定する方法を実施するためのルーチンを示す擬似コードのリストである。
【図２０Ａ】計画の計画ステップの順序を逆転させることにより計画を最終決定する方法に含まれうる１つまたは複数の操作を示す流れ図である。
【図２０Ｂ】図２０Ａの流れ図に示される、計画の計画ステップの順序を逆転させることにより計画を最終決定する方法を実施するためのルーチンを示す擬似コードのリストである。
【図２１】データ依存型制約ネットワークの計算計画を決定するための方法の１つまたは複数の操作を実施するためのプロセッサベースのシステムの実施形態を示すブロック図である。
【発明を実施するための形態】
【００１８】
これ以降、本開示のさまざまな実施形態を説明することを目的として表示されている図面を参照すると、図１Ａに示されるのは、１つの関係ノード１１４および各々アーク１１０によって関係ノード１１４に連結されている５つの変数ノード１２０を有するデータ独立型制約ネットワーク１０１を示す図である。関係ノード１１４は、等値制約Ｒ１または方程式を表す。各々の変数ノードｘ、ａ、Ｓ、ｂ、およびｙは、変数を表す。図１Ｂは、図１Ａの等値制約Ｒ１を示し、条件は等値制約内に組み込まれる。データ独立型制約ネットワーク１０１において、任意の変数の値１２２を計算するために使用される制約の適用可能性は、制約ネットワーク１００においてその他の変数の値１２２に依存しない。
【００１９】
図２Ａは、アーク１１０によって相互連結されている関係ノード１１４および変数ノード１２０を有する二部グラフ１０６として表されるデータ依存型制約ネットワーク１００を示す図である。関係ノード１１４は、等値制約Ｒ１ａ、Ｒ２ａを表す。変数ノード１２０は、５つの変数ｘ、ａ、Ｓ、ｂ、およびｙを表す。図２Ｂは、図２Ａの関係ノード１１４により表される等値制約１１６を示す。データ依存型制約ネットワーク１００において、等値制約１１６は、ブール条件１１８が満たされる場合に限りアクティブである。たとえば、図２Ｂに示されるように、Ｓ＝ｓ１である場合にＲ１ａはアクティブであり、Ｓ＝ｓ２である場合にＲ２ａはアクティブである。変数Ｓは、等値制約１１６の使用可能条件に使用される特殊変数として定義される状態変数１２４である。状態変数１２４は、ブール変数（図示せず）、または制約ネットワーク１００に知られている有限ドメイン（たとえば、状態のセット）にわたり計数値を有するカテゴリ変数１３６を備える。
【００２０】
図３は、等値制約Ｒ１、Ｒ２、Ｒ３、およびＲ４を表す４つの関係ノード１１４、および７つの変数Ｖ１、Ｖ２、Ｖ３、Ｖ４、Ｐ、Ｑ、およびＳを表す７つの変数ノード１２０を有するデータ依存型制約ネットワーク１００の例である。各関係ノード１１４は、制約がアクティブとなるために真であるべき暗黙の状態変数１２４を持つ論理表現が先行する、たとえばＲ２のような制約の名前を含む。１つの例において、等値制約１１６は、以下の条件を有することができる。
Ｒ１：  無条件に：  Ｖ２＝Ｖ１
Ｒ２：  Ｓ＝ｓ１またはＱ＝ｑ１である場合：  Ｖ３＝Ｖ２＋２：
Ｒ３：  無条件に：  Ｓ＝Ｉｆ（Ｖ１＜１０、ｓ１、Ｉｆ（Ｖ１＜２０、ｓ２、ｓ３））
Ｒ４：  Ｐ＝ｐ１である場合、  Ｑ＝Ｉｆ（Ｖ４＜５、ｑ１、ｑ２）
【００２１】
図３の制約ネットワーク１００において、変数Ｐ、Ｑ、およびＳは、上記で示される有限セット内の計数値を有する状態変数１２４である。上記の例において、Ｐは値｛ｐ１、ｐ２｝にわたり、Ｓは値｛ｓ１、ｓ２、ｓ３｝にわたり、Ｑは値｛ｑ１、ｑ２｝にわたる。
【００２２】
図４Ａは、図３の制約ネットワーク１００を示す図であって、太線のアーク１１０が入力変数ノードＶ１から出力変数ノードＶ３への計算計画１０２に含まれうるステップ（１）、（２）、および（３）を示している。本開示において、入力変数ノードは、同義的に、入力変数、入力ノード、または入力と称される。出力変数ノードは、同義的に、出力変数、出力ノード、または出力と称される。データ依存型制約ネットワークは、同義的に、制約ネットワークまたはネットワークと称される。条件付き計算計画は、同義的に、条件付き計画、計算計画、または計画と称される。
【００２３】
有利なことに、本開示において、入力１２６（たとえば、入力変数ノード）から出力１２８（たとえば、出力変数ノード）への計算計画１０２は、後段においてさらに詳細に説明されるように、検索分岐１１２（たとえば、アーク）が有効である状況の二部グラフ１０６の後方チェイニング検索を使用して二部グラフ１０６により表されるデータ依存型制約ネットワーク１００に対して決定されてもよい。計算計画プロセスは、後段において説明される、所与の検索分岐１１２が所与のワールドセットについて有効である状況を追跡するための相互に再帰的なルーチンの使用を伴う。後段において説明されるように、ワールド１３８（図７）は、制約ネットワーク１００内のすべての状態変数１２４の値の完全な指定を備える。ワールドセット１４０（図７）は、ワールド１３８のセットであり、状態変数１２４を伴う完全論理式（ＷＦＦ）１４２（図７）によって定義される。図４Ａにおいて、破線アーク１１０は、検索状態の状態変数１２４への依存を指示する。本開示において、変数は、ワールドセットのすべてのワールドにおいてそれぞれ依存型、独立型、または不確定である場合、ワールドセットで依存型、独立型、または不確定である。依存型、独立型、または不確定である変数に関連付けられている最大ワールドセットは、変数がそれぞれ依存型、独立型、または不確定であるすべてのワールドのセットである。
【００２４】
その他の有利な配置において、データ依存型制約ネットワーク１００の条件付き計算計画１０２を決定する方法はまた、入力変数ノード１２０、出力変数ノード１２８、および関係ノード１１４を含み、変数ノード１２０と関係ノード１１４がアーク１１０によって相互連結される二部グラフ１０６によって表されてもよい。この方法はまた、計算計画１０２が所望される出力変数ノード１２８を指定すること、およびまた、出力変数ノード１２８の値を計算するために計画１０２の計算ステップが所望される入力変数ノード１２０を指定することを含むことができる。加えて、方法はさらに、計画１０２が所望されるワールドセット１４０を指定し、二部グラフの逆方向チェイニング検索を使用して入力変数ノード１２０から出力変数ノード１２８への計画１０２を決定することができる。
【００２５】
図４Ｂは、図４Ａの制約ネットワーク１００の入力１２６変数ノードＶ１から出力１２８変数ノードＶ３への計算計画１０２を示す。本明細書において開示されるように、制約ネットワーク１００の計画１０２は、アーク１１０のリスト、およびアーク１１０に添付されている関係（たとえば、関係ノードによって表される等値）がアーク１１０に添付されている変数１２２を計算するために使用されるという条件を備える。計画１０２はまた、二部グラフ１０６の基本サイクルを表す強成分１３２のリスト（図６Ｂ）を含むことができる。
【００２６】
計画１０２において、アーク１１０および／または強成分１３２の各々は、計画１０２によってすでに計算された変数１２２の値に基づくか、または計画１０２の外で他に使用可能な変数１２２に基づいて、計画１０２のステップの適用可能性を確認することができるような方法で、順序付けられてもよい。計画１０２の外で使用可能な変数１２２は、計画１０２へのスタブ１３０として説明される。スタブ１３０は、計画のステップのすぐ上流に位置しているが、計画１０２には属していない。スタブ１３０の値は、計画１０２の計算を実行するために必要とされる。図４Ａにおいて、Ｑは、変数Ｖ１から変数Ｖ３への計画へのスタブ１３０である。変数Ｖ３は、Ｓ＝ｓ１またはＱ＝ｑ１のいずれでもない場合の例（図４Ａ）の事例のように、計画１０２がＶ１からＶ３への計算パスを有していないときのスタブ１３０の特殊事例である。
【００２７】
図５は、重複する強成分１０８が破線で囲まれている領域を有するデータ依存型制約ネットワーク１００を示す図である。図５の制約ネットワークはまた、関係ノード１１４と変数ノード１２０の間に代替の方向１１１を有するアーク１１０を含む。本明細書において開示される制約ネットワーク１００において、各々の等値制約１１６は、状態変数１２４のブール条件１１８が先行する等値制約１１６の名前を持つ四角形として示される。たとえば、図５において、左上側の等値制約Ａ２は、状態変数Ｓ＝ｓ１である場合にアクティブである。等値制約Ａ２ａは、状態変数Ｓ＝ｓ２である場合にアクティブである。Ｔ：Ｒ２におけるような表記Ｔは、等値制約Ｒ２が無条件にアクティブであり、真の状態にあることを指示する。
【００２８】
図６Ａは、図５の制約ネットワーク１００を示す図であって、アーク１１０および強成分１３２のいくつかが太線で示され、そのようなアーク１１０および強成分１３２が入力変数ノード「バー」から出力変数ノードｖ５への計画１０２のステップに含まれていることを指示する。図６Ｂは、図６Ａの制約ネットワーク１００の入力「バー」から出力ｖ５への計画１０２の入力１２６、出力１２８、および特定のステップの値を一覧する図表である。また示されているのは、計画１０２のステップのすぐ上流に位置しているが、計画によって計算されない変数１２２である計画１０２へのスタブ１３０である。図６Ｂの図表において、Ｓ、ｙ１、ｙ３、ｖ２、ｖ７、およびｖ５は、「バー」からｖ５への計画へのスタブ１３０である。
【００２９】
図７を参照すると、本開示において、ワールド１３８は、制約ネットワーク１００内のすべての状態変数１２４の値の完全な指定として定義される。一例として、Ｑがブール変数であり、Ｓが｛ｓ１、ｓ２、ｓ３｝の可能な値によるカテゴリ変数である場合、ならびにＱおよびＳが制約ネットワーク１００内の状態変数１２４のみである場合、以下のような６つの可能なワールドがある。
１．  Ｑ  Ａｎｄ  Ｓ＝ｓ１
２．  Ｑ  Ａｎｄ  Ｓ＝ｓ２
３．  Ｑ  Ａｎｄ  Ｓ＝ｓ３
４．  Ｎｏｔ（Ｑ）  Ａｎｄ  Ｓ＝ｓ１
５．  Ｎｏｔ（Ｑ）  Ａｎｄ  Ｓ＝ｓ２
６．  Ｎｏｔ（Ｑ）  Ａｎｄ  Ｓ＝ｓ３
【００３０】
図７において、示されているのは、ブール状態変数Ｑおよび｛ｓ１、ｓ２、ｓ３｝の値によるカテゴリ状態変数Ｓを伴うワールドセット１４０を一覧する表である。上記で示されているように、ワールドセット１４０は、状態変数１２４を伴う完全論理式（ＷＦＦ）１４２によって定義される。ワールドセット１４０は、演算子Ａｎｄ、Ｏｒ、Ｎｏｔ、および状態変数１２４を伴う述語を伴う任意の論理形式を備えることができる。制約管理システムは、否定、および論理和を簡略化するために状態変数の有限ドメイン特性を同時に使用しながら、論理文を論理積正規形または論理和正規形に変換するためのルーチンを含むことができる。簡略化を実行する例は、２０１２年３月１６日に出願され、「ＳＹＳＴＥＭ  ＡＮＤ  ＭＥＴＨＯＤ  ＦＯＲ  ＲＡＰＩＤ  ＭＡＮＡＧＥＭＥＮＴ  ＯＦ  ＬＯＧＩＣ  ＦＯＲＭＵＬＡＳ」と題する米国特許出願第１３／４２２、３３５号において開示されてもよい。
【００３１】
図８は、計算計画１０２（図６Ｂ）が決定されうるデータ依存型制約ネットワーク１００によって定義される二部グラフ１０６を示す図である。計画１０２を決定する方法は、計画１０２の開始点を表す入力１２６として変数ノード１２０を選択または指定することと、計画１０２によって計算されるべき出力１２８として変数ノード１２０を選択または指定することと、計画１０２が有効であると望むワールドセット１４０（図７）を定義することとを含むことができる。入力１２６の変数が指定されない場合、出力１２８変数（複数可）の値に影響を及ぼす制約ネットワーク１００内のすべての入力１２６変数は、入力１２６変数として使用する方法によって計算される。計画１０２を決定する方法は、指定された入力１２６変数がすでに独立した状態にある状態において開始する。
【００３２】
本明細書における方法は、二部グラフ１０６の逆方向チェイニング検索中に入力１２６から出力１２８へ制約ネットワーク１００経由で移動することまたはトラバースすることを含む。検索プロセス中に、関連するかまたは適切なワールドセット１４０は、検索の各分岐と共に保持される。検索は、変数１２２（たとえば、出力変数ノード１２０）で開始することができ、異なるワールドセット１４０ごとに、変数の入アーク１１０を通じて、変数の入アーク１１０に連結されている関係ノード１１４へと進むことができる。次いで、プロセスは、それらの入アーク１１０を通じてそれらの関係の上流を、関係の入アーク１１０に連結されている変数１２２へと移動する。プロセスは、後段においてさらに詳細に説明されるように、関係の上流に位置する新しい変数１２２において再帰的である。
【００３３】
方法はさらに、計算計画１０２が所望されるワールドセット１４０を指定することを含むことができる。ワールドセット１４０が指定されない場合、方法は、出力１２８ノードが決定済みの状態にある最大ワールドセット１４０を自動的に計算する。方法によって計算または決定された結果は、入力リスト２２０、出力リスト２１８、スタブキュー２３４、および計画キュー２３６を含む計算計画１０２である。本開示において、入力リストは、入力キューと同義的に使用され、出力リストは出力キューと同義的に使用される。入力リスト２２０の要素は、入力１２６変数と入力１２６変数ワールドセット１４０との間の関連付けを備え、入力１２６変数ワールドセット１４０は入力１２６変数が独立型である最大ワールドセット１４０であり、出力１２８変数のうちの１つまたは複数はそのワールドセット１４０のその入力１２６変数に依存する。出力リスト２１８の要素は、変数ノード１２０と変数ノード１２０が決定されている最大ワールドセット１４０との間の関連付けを備える。計画キュー２３６は、計画ステップと計画ステップが実行されるべきワールドセット１４０との間の関連付けを備える要素を有する計画ステップの順序付きリストを備える。計画ステップは、（１）変数ノード１２０のうちの単一のノードの値を計算するための計算方法に関連付けられているアーク１１０、または（２）コンポーネント１３２の複数の変数ノード１２０の値を同時に計算するための計算方法に関連付けられているコンポーネント１３２のいずれかを備える。スタブキュー２３４の要素は、スタブ変数ノード１２０とワールドセット１４０との間の関連付けを備える。スタブ１３０変数は、１つまたは複数の計画ステップにおいて必要とされるが、指定された入力１２６変数のいずれからも独立している任意の変数１２２であり、そのスタブ１３０変数に関連付けられているワールドセット１４０は、１つまたは複数の計画ステップを評価するためにスタブ１３０変数が必要とされるワールドセット１４０である。
【００３４】
本明細書において開示される方法において、入力１２６が方法への引数として指定される場合、方法は、入力１２６を任意の指定されているワールドセットまたはＴｒｕｅのワールドセットと共に入力リスト２２０に追加することによって、入力リスト２２０を更新する。方法は、出力変数ノード１２８が指定されたワールドセット１４０の全体について決定された状態にある場合、出力変数ノード１２８および指定されたワールドセット１４０を出力リストに追加することによって出力リストを更新し、次いで、所与のワールドセット１４０内の変数ノード１２０の計画を見出す、所与のワールドセット１４０内のコンポーネント１３２の計画を見出す、所与のワールドセット１４０内の関係ノード１１４の計画を見出す、および所与のワールドセット１４０内のアーク１１０の計画を見出すという操作を再帰的に実行することにより、検索パスに沿って逆方向チェイニング検索を使用して、条件付き計画１０２を更新する。逆方向チェイニング検索中に、本明細書において開示される方法は、計画ステップを追加する、計画スタブを追加する、計画入力を追加する、および計画出力を追加する、という操作を使用して、条件付き計画１０２を更新する。そのような操作中に適用されるワールドセット１４０は、後段において説明されるように、アーク１１０および関係１１４条件の特性に従って、逆方向チェイニング検索中に発展する。前述のプロセスがすべての出力１２８変数について完了すると、方法は、図９Ａ〜図２０Ｂで示され、後段においてさらに詳細に説明されるように、計画１０２を完了して、完了した条件付き計画１０２を返すための「ＦｉｎａｌｉｚｅＰｌａｎ」２１４ルーチンを含む。
【００３５】
逆方向チェイニング検索を備える再帰的操作は、変数ノード１２０について計画１０２を見出すことで開始し、その後には検索パスに沿って後方へインフローアーク１１０が続く。本開示において、インフローアーク１１０は、同義的に、入アーク１１０と称される。所与の変数ノード１２０に関連付けられているインフローアーク１１０の使用可能ワールドセット１４０は、必然的に、互いに素であることに留意されたい。インフローアーク１１０に沿って次の要素に使用されるワールドセット１４０は、アークの使用可能ワールドセットと入ワールドセットの論理積となる。各インフローアーク１１０は、アーク１１０がコンポーネント１３２の一部である場合に、コンポーネント１３２の計画を（たとえば、図１４Ａの「ＦｉｎｄＰｌａｎＦｏｒＣｏｍｐｏｎｅｎｔ」２２２ルーチンを使用して）見出すこと、またはアーク１１０がコンポーネント１３２の一部ではない場合に、関係の計画を（たとえば、図１５Ａの「ＦｉｎｄＰｌａｎＦｏｒＲｎｏｄｅ」２２４ルーチンを使用して）見出すことに至る。次いで、方法は、場合に応じて、コンポーネント１３２先行のすべてのアーク１１０または関係インフローアーク１１０で、ルーチン「ＦｉｎｄＰｌａｎＦｏｒＡｒｃｓ」２２８（図１６Ａ）を呼び出し、必要に応じて状態変数依存を除去する。
【００３６】
検索パスが関係ノード１１４、コンポーネント１３２、変数ノード１２０を経由して、またはアーク１１０に沿ってトラバースする際、方法は、パスに沿って適切なワールドセット１４０を、パス内の要素の各々の使用可能ワールドセット１４０との進展ワールドセット１４０の論理積として保持する。方法は、計画ステップの先行アーク１１０で開始する任意の検索パスが、指定された入力１２６変数ノード１２０で終了するかどうかを最初に留意または決定して、終了する場合には、スタブ変数および関連するスタブワールドセット１４０でスタブキュー２３４を更新する。スタブ変数は、検索パスが指定された入力１２６変数のいずれでも終了しない任意の他の先行アーク１１０に関連付けられている変数を備える。スタブワールドセットは、それらの検索パスのワールドセット１４０の論理和を備える。
【００３７】
計算計画１０２を見出す（たとえば、決定する）ための方法またはプロセスは、図８を参照して例示により説明されてもよい。変数ノードｖ４からｖ３への計算計画１０２を決定するためのプロセスにおいて、計画１０２は、Ｆａｌｓｅワールドセットに変数ｖ４を持つ入力１２６リストで初期化されてもよい。ワールドセットは、後に、検索パスが異なるワールドセットでｖ３からｖ４に決定される際に修正されてもよい。プロセスは、Ｔｒｕｅのワールドの変数ノードｖ３において開始することができ、ｖ３の入アークＲ２−＞ｖ３およびＲ６−＞ｖ３に沿って検索することを含むことができる。一般性を失うことなく、第１の検索Ｒ６−＞ｖ３が、Ｓ＝ｓ２＾Ｑ＝ｑ２の関連するワールドセットを有することが仮定される。検索は、入力ノードのうちの１つが任意のパスに沿って見出される場合に「成功（ｓｕｃｃｅｓｓ）」を返して、Ｒ６（ｖ５−＞Ｒ６、Ｑ−＞Ｒ６、Ｓ−＞Ｒ６）への入アークまで続行することができる。たとえば、プロセスは、関連するワールドセットＴｒｕｅでｖ５−＞Ｒ６を検索することを含むことができる。Ｔｒｕｅを現在のワールドセットＳ＝ｓ２＾Ｑ＝ｑ２と結合することで、Ｓ＝ｓ２＾Ｑ＝ｑ２＾Ｔとなり、これはＳ＝ｓ２＾Ｑ＝ｑ２に簡略化する。
【００３８】
引き続き図８を参照すると、プロセスは、ｖ５の上流アークの検索を続行することができ、そこには唯一のＲ−＞ｖ５があり、以前ｖ４に関連付けられたワールドセット１４０を現在の検索分岐に沿ってｖ４に到達するために使用されたワールドセット１４０と分離する計画入力リスト２２０にｖ４が追加されるように、最終的にワールドセットＳ＝ｓ２＾Ｑ＝ｑ２のノードｖ４で終了する。この段階において、ワールドセット１４０は、（Ｓ＝ｓ２＾Ｑ＝ｑ２）ｖＦａｌｓｅであり、これはＳ＝ｓ２＾Ｑ＝ｑ２に簡略化する。プロセスを続行することで、結果として、ワールドセットＰ＝ｐ１＾Ｓ＝ｓ２、およびその他のワールドセット１４０のｖ４に到達することになる。最終の結果は、ｖ４が、ワールドセット（Ｐ＝ｐ１＾Ｑ＝ｑ２）Ｖ（Ｐ＝ｐ１＾Ｓ＝ｓ２）のｖ３への計画への入力となり、このワールドセットの否定には計画がない。
【００３９】
本開示において、システムおよび方法は、状態変数１２４が検索パスで遭遇され、状態変数１２４への検索分岐１１２のワールドセット１４０が同じ状態変数を含むシナリオを処理するための手段を有利にもたらす。そのようなシナリオは、Ｑ−＞Ｒ６アーク１１０に上昇し、計画が引き続きＱに必要とされる場合の図８において説明される。このシナリオにおいて、Ｑのような状態変数１２４を決定するための計画の実行は、状態変数１２４を計算することの先行のいずれの状態変数１２４の値に依存することができないので、Ｑは、さらに先に進む前にワールドセット１４０から除去される必要がある。したがって、新しいワールドセット１４０は、Ｓ＝ｓ２のみになる。プロセスは、Ｑの入アークをＲ４まで上昇することを含み、Ｐ＝ｐ１であるＲ４の使用可能状態をＳ＝ｓ２と結合して、Ｐ＝ｐ１＾Ｓ＝ｓ２を返す。入アークを上昇することで、再度状態Ｐ＝ｐ１＾Ｓ＝ｓ２のｖ４に到達する。異なる検索分岐は、状態Ｓ＝ｓ１＾Ｐ＝ｐ１のｖ４に到達する。Ｑの依存性は、ノードＱを経由する場合に除去される。
【００４０】
本明細書において開示されるシステムおよび方法により提供されるさらなる利点は、関係が状態変数１２４に依存しない場合であっても、関係から所与の状態変数１２４への検索分岐１１２の追加である。そのような検索分岐１１２は、その状態変数１２４が、その関係に至る検索分岐１１２に関連付けられているワールドセット１４０に含まれる場合に追加される。追加された検索分岐１１２は、ゴーストアーク１１０として定義され、図８において破線フォントで示される。そのような検索分岐１１２を追加するための要件は、関係の実行が状態変数１２４を含むワールドセット１４０によって条件付けされる場合に、状態変数１２４が関係を経由する計画１０２の先行である必要があるという要件の結果である。
【００４１】
本開示において、提供されるのは、二部グラフ１０６によって表されるデータ依存型制約ネットワーク１００（図８）の入力変数１２２のユーザ指定のセットから出力変数１２２（図８）のユーザ指定のセットの値を計算するための計算計画１０２（図６Ｂ）を作成、決定、または見出すための方法である。制約ネットワーク１００内の１つまたは複数の等値制約の存在は、制約ネットワーク１００内の１つまたは複数の変数１２２の値に依存することができる。開示される方法の重要な利点は、従来の条件付き計画方法に必要とされる計画および計算の混合を回避することである。計画と計算の混合を回避することは、結果として、設計空間のさまざまな領域を探索するトレード研究中に計算ステップを実行するために必要とされる時間の大幅な短縮をもたらす。
【００４２】
本明細書において開示されるシステムおよび方法は、システムおよび方法の操作に必要とされるデータ依存型制約ネットワーク１００（図８）の特性に条件を課す。制約ネットワーク１００内の各々の関係へのデータ依存条件は、前述のように、有限ドメインにわたり基本述語を連結するＡＮＤ、ＯＲ、およびＮＯＴ演算子を使用して形成される論理文である完全論理式（ＷＦＦ）によって指定される。本開示において、等値制約１１６（図８）の条件に伴う任意の変数１２２の値は、既知の有限範囲にわたる必要がある。たとえば、極超音速車両研究におけるエンジンの値は、「ロケット」、「ラムジェット」、「スクラムジェット」のエンジンタイプ、およびその他のエンジンタイプごとに異なる場合もある。空力抵抗のような連続値を持つ変数１２２は、関係の条件付け値として直接使用することはできない。それどころか、本開示において、そのような変数１２２は、条件付けの目的で有限集合に量子化されてもよい。たとえば、量子化された変数「ｄｒａｇＬｅｖｅｌ」は、ｄｒａｇＬｅｖｅｌ＝Ｃａｓｅ（｛ｄｒａｇ＜ｘ１、”ｎｅｇｌｉｇｉｂｌｅＤｒａｇ”｝、｛ｄｒａｇ＜＝ｘ２、”ｌｏｗＤｒａｇ”｝、｛Ｅｌｓｅ、”ｈｉｇｈＤｒａｇ”｝）のような制約で定義されてもよく、次いで、異なる等値関係がｄｒａｇＬｅｖｌの値に依存する飛行動作を計算するために条件付けされてもよい。
【００４３】
これ以降、図９Ａ〜図２０Ｂを参照すると、示されているのは、図８に示される二部グラフ１０６と類似する二部グラフにより表されるデータ依存型制約ネットワーク１００（図８）の計算計画１０２（図６Ｂ）を決定するための方法において実施されうるルーチンおよび対応する擬似コードである。図９Ａ〜図２０Ａに示されるルーチンは、計算計画１０２の決定を容易にするための１つまたは複数の関数を含むことができる。そのようなルーチンは、方法のプログラミング命令に書き込まれてもよく、および／またはルーチンは、基礎をなすプログラミング言語に含まれてもよい。以下の項目は、ルーチンに含まれうる関数、オブジェクト、およびオブジェクト属性の簡単な説明を備える。
ｒｎｏｄｅ：  二部グラフの関係ノード
ｖｎｏｄｅ：  二部グラフの変数ノード
ａｒｃ：  所与のｖｎｏｄｅを所与のｒｎｏｄｅに連結するアーク
ｇｒａｐｈ：  最上位の二部グラフまたはそのグラフ内の強成分のいずれか
ＡｒｃＲｎｏｄｅ（ａｒｃ）：  所与のアークに連結されたｒｎｏｄｅ
ＡｒｃＶｎｏｄｅ（ａｒｃ）：  所与のアークに連結されたｖｎｏｄｅ
ＲｎｏｄｅＡｒｃｓ（ｒｎｏｄｅ）：  所与のｒｎｏｄｅに連結されたアークのセット
ＶｎｏｄｅＡｒｃｓ（ｖｎｏｄｅ）：  所与のｖｎｏｄｅに連結されたアークのセット
Ｕｎｉｏｎ（ｗｓ［１］、ｗｓ［２］、…）：  ワールドセットｗｓ［１］、ｗｓ［２］、．．．の入力リストに指定されているすべてのワールドの論理和または和集合
Ｉｎｔｅｒｓｅｃｔｉｏｎ（ｗｓ［１］、ｗｓ［２］、…）：  ワールドセットｗｓ［１］、ｗｓ［２］、．．．の入力リストに指定されているすべてのワールドの論理積または共通集合
ＣｏｍｐｏｎｅｎｔＶｎｏｄｅｓ（ｃｏｍｐｏｎｅｎｔ）：  強成分内にあるｖｎｏｄｅ
ＣｏｍｐｏｎｅｎｔＰｒｅｄｅｃｅｓｓｏｒＡｒｃｓ（ｃｏｍｐｏｎｅｎｔ）：  コンポーネント使用可能ワールドセットの関係を指し示すアークとして定義された強成分の先行アーク
ＥｎａｂｌｉｎｇＷｏｒｌｄＳｅｔ（ｏｂｊｅｃｔ）：  オブジェクトが使用可能なワールドセット。これはｖｎｏｄｅ、ｒｎｏｄｅ、コンポーネント、およびアークについて定義される
ＷｏｒｌｄＳｅｔＳｔａｔｅＶａｒｉａｂｌｅｓ（ｗｏｒｌｄＳｅｔ）：  指定されたワールドセットに固有の状態変数
【００４４】
本開示において、計算計画１０２（図６Ｂ）を決定するためのシステムおよび方法は、ノードのワールドセット属性を許容するマッピング（図示せず）のセットを保持することを含む。たとえば、そのようなワールドセット属性は、変数ノードが独立しているワールドセット、変数ノードが不確定であるワールドセット、変数ノードが異なる等値制約によって決定されているワールドセット、およびその他の属性のような変数ノードの状況を含むことができる。ワールドセットマッピングのドメインは、変数ノードが存在を有するすべてのワールドの論理和を備えるノード使用可能ワールドセットの区分である。たとえば、使用可能ワールドセット「ｒｎｏｄｅＷＳ」を持つ関係ノードを所与として、出アーク属性（たとえば、関係ノードの出アークが所与のワールドセットで関係ノードが定義されている変数を指し示す）のワールドセットマッピングは、以下のように定義されてもよい。
【００４５】
2014081934.tif 000003
【００４６】
本開示において、制約ネットワーク１００は、上記で説明されるワールドセット属性マップを保持し、以下の関数によって表されるような、指定されたワールドセットに関して属性マップを再区分するための手順を含む。
ｏｕｔｐｕｔ  Ｍａｐ＜−ＲｅｐａｒｔｉｔｉｏｎＭａｐ（ｉｎｐｕｔＭａｐ、ｗｏｒｌｄＳｅｔ）
ｏｕｔｐｕｔＭａｐは一般に、ｏｕｔｐｕｔＭａｐがｗｏｒｌｄＳｅｔに限定されることを除いて、ｉｎｐｕｔＭａｐ（図示せず）と同じである。本開示において、再構築は、元のｉｎｐｕｔＭａｐ内の要素でｗｏｒｌｄＳｅｔが交差する場合、一部の共通部分が空となりうるので、結果として得られるマップに存在しないこともあるという意味においてｏｕｔｐｕｔＭａｐはｗｏｒｌｄＳｅｔの区分であると保証することを要求されてもよい。
【００４７】
本開示において、制約管理システムまたは制約ネットワーク１００（用語は本明細書において同義的に使用される）は、以下のルックアップ関数を含むことができる。
ＷｏｒｌｄＳｅｔＶａｌｕｅ（ａｔｔｒｉｂｕｔｅＭａｐ、ｗｏｒｌｄＳｅｔ）
この関数は、ｗｏｒｌｄＳｅｔがａｔｔｒｉｂｕｔｅＭａｐ内のワールドセットのうちの１つによってのみ包含される（すなわち、その真部分集合と同等であるかまたは真部分集合である）場合に限り、所与のワールドセットによって指定された属性を返すことができ、それ以外の場合、ルックアップ関数ＷｏｒｌｄＳｅｔＶａｌｕｅ２３０（図１５Ａ）は空を返す。
【００４８】
図９Ｂ〜図２０Ｂに示される擬似コードの場合、以下のワールドセット属性マップは、制約ネットワーク１００によって管理されてもよい。
ＩｎｆｌｏｗＭａｐ（ｖｎｏｄｅ）：  ワールドセットから、そのワールドセット内の所与のｖｎｏｄｅに方向付けられるアークへのマッピング。
ＯｕｔｆｌｏｗＡｒｃｓ（ｒｎｏｄｅ）：  ワールドセットから、そのワールドセット内の関係からのアウトフローアークへのマッピング。所与のワールドセットのアウトフローアークは、方向が所与のワールドセット内のｒｎｏｄｅから逸れて指し示しているアークでしかない。
ＳｔａｔｕｓＭａｐ（ｖｎｏｄｅ）：  ワールドセットから、所与のワールドセット内のｖｎｏｄｅの状況属性へのマッピング。
ＡｒｃＧｒａｐｈｓ（ａｒｃ）：  アークは、さまざまなワールド状況において多数の強成分および非強成分にありうる。このワールドセット属性は、ワールドセットから、所与のワールドセットに対してアークがある強成分へのマッピング、ならびにワールドセットから、アークがいかなる強成分にないワールドセットの最上位制約グラフへのマップを記録する。
ＡｒｃＤｉｒｅｃｔｉｏｎＭａｐ（ａｒｃ）：  ワールドセットから、ｖｎｏｄｅに向かう、ｒｎｏｄｅに向かう、または無向のアークの方向へのマッピング。
【００４９】
図９Ｂ〜図２０Ｂに示される擬似コードはまた、以下の属性を有するオブジェクトとして定義されうる計画の特定のデータ構造を定義するための以下の関数を含むこともできる。
ｉｎｐｕｔＱｕｅｕｅ（ｐｌａｎ）：  計画への入力変数のセット。
ｏｕｔｐｕｔＱｕｅｕｅ（ｐｌａｎ）：  計画への出力変数のセット。
ｓｔｅｐＳｔａｃｋ（ｐｌａｎ）：  計画のステップオブジェクトの順序付きセット。各ステップオブジェクトは、ペアの＜ｗｏｒｌｄＳｅｔ、ステップ＞であり、ステップは、我々がｗｏｒｌｄＳｅｔ内のワールドの１つにいる場合に実行されるべきであり、ステップは、上流ｒｎｏｄｅを所与のｗｏｒｌｄＳｅｔのそのすぐ下流のｖｎｏｄｅ、またはそのｗｏｒｌｄＳｅｔの強成分に連結する。
ｓｔｕｂＱｕｅｕｅ（ｐｌａｎ）：  計画のスタブ変数のセット。スタブ変数は、計画の一部のステップのすぐ上流に位置している（すなわち、アークまたは強成分）が、計画入力のステップの下流ではない。スタブ変数の値は、計画ステップを実行する際に必要とされる。
【００５０】
図９Ａ〜９Ｂを参照すると、図９Ａに示されているのは、データ依存型制約ネットワーク１００（図８）の計算計画１０２（図６Ｂ）を見出す（たとえば、決定する）ための方法に含まれうる１つまたは複数の操作を有する流れ図である。図９Ｂは、図９Ａと同じ方法で示されているデータ依存型制約ネットワーク１００の計算計画１０２を見出す（たとえば、決定する）ための高水準ルーチン「ＦｉｎｄＰｌａｎ（ｇｒａｐｈ、ｉｎｐｕｔｓ、ｏｕｔｐｕｔｓ、ｗｏｒｌｄＳｅｔ）」の擬似コードリストである。上記に示されるように、制約ネットワーク１００は、アーク１１０（図８）によって相互連結された変数ノード１２０（図８）および関係ノード１１４（図８）を含む二部グラフ１０６（図８）により表される。「ＦｉｎｄＰｌａｎ」ルーチン２００は、「ｉｎｐｕｔｓ」（たとえば、入力変数ノード）から「ｏｕｔｐｕｔｓ」（たとえば、出力変数ノード）への計画１０２を返すか、または「ＦｉｎｄＰｌａｎ」ルーチン２００は、出力のうちの１つまたは複数が制約ネットワーク１００で決定されていない場合、「Ｆａｉｌ」を返す。ルーチン２００の引数は、以下のものを含む。
ｇｒａｐｈ：  データ依存型制約ネットワークによって定義された二部グラフを表す構造。
ｏｕｔｐｕｔｓ：  計画が計算する変数のリスト。
ｉｎｐｕｔｓ：  計画の開始点を備える変数のリスト。
ｗｏｒｌｄＳｅｔ：  計画が有効であると決定されるワールドセット。
【００５１】
ルーチン「ＦｉｎｄＰｌａｎ」２００は、以下に説明されるように、計画構造２０２を初期化することを含むことができる。「ＦｉｎｄＰｌａｎ」２００ルーチンにおいて、入力１２６が引数リストで指定されない場合、計算計画１０２は、出力１２８の上流に位置するすべての独立変数１２２を入力１２６として含む。入力１２６が指定される場合、計算計画１０２の入力１２６は、指定された引数リストの入力に限定される。各入力１２６について、ルーチン「ＡｄｄＰｌａｎＩｐｕｔ」２０８は、以下に説明されるように、計画１０２の入力キュー２２０に変数ノード１２０を追加するために実施されてもよい。各出力１２８について、ルーチン「ＶｎｏｄｅＤｅｔｅｒｍｉｎｅｄＷｏｒｌｄＳｅｔ」２０４は、変数ノード１２０の状況が決定されているワールドセット１４０を決定するために実施されてもよい。ルーチン「ＡｄｄＰｌａｎＯｕｔｐｕｔ」２０６はまた、出力１２８の出力キューを更新するために、その出力１２８ごとに実施されてもよい。加えて、各出力１２８について、ルーチン「ＦｉｎｄＰｌａｎＦｏｒＶｎｏｄｅ」２１０は、所与の変数ノード１２０の計画１０２を見出すために実施されてもよい。ルーチン「ＡｄｄＰｌａｎＳｔｕｂ」２１２はまた、以下に説明されるように、逆方向チェイニング検索プロセス中に見出された各スタブ変数についてスタブキューを更新するために実施されてもよい。ルーチン「ＦｉｎａｌｉｚｅＰｌａｎ」２１４は、「ＦｉｎｄＰｌａｎ」で決定された計画ステップの順序（図示せず）を逆転させることによって計画１０２を最終決定することができる。
【００５２】
図１０Ａ〜１０Ｂを参照すると、図１０Ａに示されているのは、ルーチン「ＶｎｏｄｅＤｅｔｅｒｍｉｎｅｄＷｏｒｌｄＳｅｔ（ｗｏｒｌｄＳｅｔ、ｖｎｏｄｅ）」２０４に含まれうる１つまたは複数の操作を有する流れ図である。ルーチン２０４は、（独立または依存のいずれかで）変数ノード１２０の状況が決定されているワールドセット１４０を決定するように構成されてもよい。図１０Ｂは、図１０Ａの流れ図に示されるルーチン「ＶｎｏｄｅＤｅｔｅｒｍｉｎｅｄＷｏｒｌｄＳｅｔ」２０４の擬似コードのリストである。ルーチンは、ｖｎｏｄｅ１２０（すなわち、変数ノード）の状況が決定されているワールドセット１４０を返す。ルーチン２０４は、以下の引数を組み入れる。
ｗｏｒｌｄＳｅｔ：  ｖｎｏｄｅ状況マップを区分するために使用される入力ワールドセット。
ｖｎｏｄｅ：  決定されたワールドセットが必要とされる変数ノード。
一般性を失うことなく、ｖｎｏｄｅの状況属性マップは以下のとおりであると仮定される。
ｗｓ［１］−＞ｓｔａｔｕｓ［１］、
ｗｓ［２］−＞ｓｔａｔｕｓ［２］、
．．．
ここで、ｗｓ［ｊ］は、ｖｎｏｄｅの使用可能状態の互いに素な区分を形成するワールドセットである。さらに具体的には、
Ｕｎｉｏｎ（ｗｓ［ｊ］、ｊ＝１、…、ｎ）＝  ｖｎｏｄｅ使用可能ワールドセット、通常はＴｒｕｅであり、
ｗｓ［ｉ］≠Φ、
ｗｓ［ｉ］Λｗｓ［ｊ］＝Φ、および
ｓｔａｔｕｓ［ｉ］≠ｓｔａｔｕｓ［ｊ］
【００５３】
ルーチン「ＶｎｏｄｅＤｅｔｅｒｍｉｎｅｄＷｏｒｌｄＳｅｔ」２０４において、ｓｔａｔｕｓ［ｊ］は、ノードがｗｓ［ｊ］の値を指し示しているアーク１１０（図８）を有する、ｗｓ［ｊ］で独立である、ｗｓ［ｊ］で依存であるかどうかなどを制約ネットワーク１００（図８）が決定できるようにする値の範囲にわたる。アーク１１０は、アーク１１０がそれらのｒｎｏｄｅ１１４（図８）に方向付けられる、それらのｖｎｏｄｅ１２０（図８）に方向付けられる、または同時であるが異なるワールドセット１４０で無向であってもよいという意味において方向属性マップを有する。本開示において、ｖｎｏｄｅ１２０は、（ａ）そのワールドセット１４０またはそのスーパーセットで「独立」であるか、または（ｂ）方向が所与のワールドセット１４０のｖｎｏｄｅ１２０に向けられ、かつ、アーク１１０に取り付けられたｒｎｏｄｅ１１４のすぐ上流（すなわち、所与のワールドセット１４０に関して上流）のｖｎｏｄｅ１２０がワールドセット１４０にあると決定されるアーク１１０を有する場合のいずれかに限り、ｖｎｏｄｅ１２０はワールドセット１４０で状況「決定済み」を有することができる。
【００５４】
図１１Ａ〜１１Ｂを参照すると、図１１Ａに示されているのは、ルーチン「ＡｄｄＰｌａｎＯｕｔｐｕｔ（ｖｎｏｄｅ、ｗｏｒｌｄＳｅｔ、ｐｌａｎ）」に含まれうる１つまたは複数の操作を有する流れ図である。ルーチン２０６は、計画１０２の出力キュー２１８を更新するように構成される。計画構造は、スタブキュー（図示せず）、計画キュー（図示せず）、および出力キュー２１８を含むことができる。図１１Ｂは、図１１Ａの流れ図に示されるルーチン「ＡｄｄＰｌａｎＯｕｔｐｕｔ」２０６の擬似コードのリストである。「ＡｄｄＰｌａｎＯｕｔｐｕｔ」２０６は、関数「ｏｕｔｐｕｔＱｕｅｕｅ」２１８を含むことができ、以下の引数を組み入れることができる。
ｖｎｏｄｅ：  計画に追加される出力変数。
ｗｏｒｌｄＳｅｔ：  ｖｎｏｄｅが出力変数であるワールドセット。
ｐｌａｎ：  変更される計画、その構造は後段において説明される。
【００５５】
上記で示されているように、計画構造は、スタブキュー、計画キュー、および出力キューを保持する。各キューは、順序付きエントリのセットを備え、各エントリはワールドセット１４０およびワールドセット１４０に関連付けられている要素を含む。スタブキューおよび出力キュー２１８の要素は、変数１２２（図８）である。計画キューの要素は、アーク１１０（図８）、または計画のステップを表す強成分１３２（図８）である。たとえば、以下のようになる。
ｏｕｔｐｕｔｑｕｅｕｅ＝
｛＜ｖｎｏｄｅ［１］、ｗｓ［１］＞、
＜ｖｎｏｄｅ［２］、ｗｓ［２］＞、
．．．｝
【００５６】
図１２Ａ〜１２Ｂを参照すると、図１２Ａに示されているのは、ルーチン「ＡｄｄＰｌａｎＩｎｐｕｔ（ｖｎｏｄｅ、ｓｐｅｃｉｆｉｅｄＩｎｐｕｔｓ？、ｗｏｒｌｄＳｅｔ、ｐｌａｎ）」に含まれうる１つまたは複数の操作を有する流れ図である。ルーチン２０８は、変数ノード１２０および関連するワールドセットを計画１０２の入力キュー２２０に追加するように構成される。図１２Ｂは、図１２Ａの流れ図に示されるルーチン「ＡｄｄＰｌａｎＩｎｐｕｔ」２０８の擬似コードのリストである。ｖｎｏｄｅ１２０が入力キューに存在しない場合、ｖｎｏｄｅおよび関連するワールドセットは入力キューに追加され、ｖｎｏｄｅ１２０がすでに存在する場合、その関連するワールドセット１４０は更新される。ｓｐｅｃｉｆｉｅｄＩｎｐｕｔｓ？がＦａｌｓｅである場合、またはｖｎｏｄｅがすでに存在する場合、ルーチン２０８はＴｒｕｅを返し、それ以外の場合ルーチンはＦａｌｓｅを返す。
【００５７】
図１３Ａ〜１３Ｂを参照すると、図１３Ａに示されているのは、ルーチン「ＦｉｎｄＰｌａｎＦｏｒＶｎｏｄｅ（ｖｎｏｄｅ、ｓｐｅｃｉｆｉｅｄＩｎｐｕｔｓ？、ｗｏｒｌｄＳｅｔ、ｐｌａｎ）」に含まれうる１つまたは複数の操作を有する流れ図である。図１３Ｂは、図１３Ａの流れ図に示されるルーチン「ＦｉｎｄＰｌａｎＦｏｒＶｎｏｄｅ」２１０の擬似コードのリストである。ルーチン２１０は、以下の引数を組み入れることができる。
ｖｎｏｄｅ：  計画が求められる変数ノード。
ｓｐｅｃｉｆｉｅｄＩｎｐｕｔｓ？：  真である場合、入力のリストはユーザ指定の入力に限定される。偽である場合、変数が出力変数の上流に位置していれば、任意の独立変数は計画への入力となりうる。
ｗｏｒｌｄＳｅｔ：  計画が関連するワールドセット。
ｐｌａｎ：  計画プロセスのこの要素によって変更されている計画構造。
【００５８】
「ＦｉｎｄＰｌａｎＦｏｒＶｎｏｄｅ」２１０ルーチンは、図１４Ａ〜図１６Ｄに示され、後段において説明されるルーチン「ＦｉｎｄＰｌａｎＦｏｒＲｎｏｄｅ」２２４、「ＦｉｎｄＰｌａｎＦｏｒＡｒｃｓ」２２８、および「ＦｉｎｄＰｌａｎＦｏｒＣｏｍｐｏｎｅｎｔ」２２２と相互に再帰的である。上記で示されているように、制約管理システムまたは制約ネットワーク１００は、各ｖｎｏｄｅ１２０についてインフローワールドセット属性マップを保持するように構成される。インフローワールドセット属性マップは、アーク１１０がそのワールドセット１４０のｖｎｏｄｅ１２０に向けて方向付けられるワールドセット１４０からアーク１１０へのマッピング、および／またはワールドセット１４０からｖｎｏｄｅ１２０がそのワールドセット１４０で独立であることを指示する：Ｉｎｄｅｐｅｎｄｅｎｔのコードへのマッピングである。本明細書において開示される方法において、プロセスは、各インフローについてブール計画成功を収集して、ｖｎｏｄｅ１２０のすべてのインフローにわたりループする。インフローのいずれかが成功を返す場合、失敗したインフローのワールドセット１４０の論理和は、ｖｎｏｄｅ１２０がスタブ１３０として追加される場合であり、プロセスはそのようなｖｎｏｄｅ１２０から成功を返す。それ以外の場合、プロセスはそのようなｖｎｏｄｅ１２０から失敗を返す。計画１０２入力１２６（「ＡｄｄＰｌａｎＩｎｐｕｔ」２０８）の追加が成功する場合（すなわち、ｎｉｌを返さない場合）、プロセスはその独立インフローから成功を返す。強成分１３２の存在によりインフローが小さく分割される場合、その断片は、別個のインフローであるかのように処理される。
【００５９】
図１４Ａ〜１４Ｂを参照すると、図１４Ａに示されているのは、ルーチン「ＦｉｎｄＰｌａｎＦｏｒＣｏｍｐｏｎｅｎｔ（ｃｏｍｐｏｎｅｎｔ、ｓｐｅｃｉｆｉｅｄＩｎｐｕｔｓ？、ｗｏｒｌｄＳｅｔ、ｐｌａｎ）」に含まれうる１つまたは複数の操作を有する流れ図である。ルーチン２２２は、ルーチンが強成分の計画１０２を見出すことに成功するかどうかに応じて、ＴｒｕｅまたはＦａｌｓｅを返すように構成される。図１４Ｂは、図１４Ａの流れ図に示されるルーチン「ＦｉｎｄＰｌａｎＦｏｒＣｏｍｐｏｎｅｎｔ」２２２の擬似コードのリストである。ルーチンは、以下の引数を組み入れることができる。
ｃｏｍｐｏｎｅｎｔ：  計画が所望される強成分。
ｓｐｅｃｉｆｉｅｄＩｎｐｕｔｓ？：  真である場合、入力のリストはユーザ指定の入力に限定される。偽である場合、変数が出力変数の上流に位置していれば、任意の独立変数は計画への入力となりうる。
ｗｏｒｌｄＳｅｔ：  計画が求められるワールドセット。
ｐｌａｎ：  これまで検索で存在している計画構造。
【００６０】
図１５Ａ〜１５Ｂを参照すると、図１５Ａに示されているのは、ルーチン「ＦｉｎｄＰｌａｎＦｏｒＲｎｏｄｅ（ｒｎｏｄｅ、ｓｐｅｃｉｆｉｅｄＩｎｐｕｔｓ？、ｗｏｒｌｄＳｅｔ、ｐｌａｎ）」に含まれうる１つまたは複数の操作を有する流れ図である。ルーチン２２４は、指定されたワールドセット１４０でｒｎｏｄｅ１１４の計画を見出すかどうかに応じて、ＴｒｕｅまたはＦａｌｓｅを返すように構成される。図１５Ｂは、図１５Ａの流れ図に示されるルーチン「ＦｉｎｄＰｌａｎＦｏｒＲｎｏｄｅ」２２４の擬似コードのリストである。ルーチン２２４は、以下の引数を組み入れることができる。
ｒｎｏｄｅ：  計画が求められる等値制約（すなわち、関係ノード）。
ｓｐｅｃｉｆｉｅｄＩｎｐｕｔｓ？：  真である場合、入力のリストはユーザ指定の入力に限定される。偽である場合、変数が出力変数の上流に位置していれば、任意の独立変数は計画への入力となりうる。
ｗｏｒｌｄＳｅｔ：  ｒｎｏｄｅの計画が求められるワールドセット。
ｐｌａｎ：ルーチンによって変更され、これまで実施された検索の結果を含む計画構造。
【００６１】
図１６Ａ〜図１６Ｄを参照すると、図１６Ａ〜図１６Ｂに示されているのは、ルーチン「ＦｉｎｄＰｌａｎＦｏｒＡｒｃｓ１１０（ｓｔｅｐＯｂｊｅｃｔ、ｓｐｅｃｉｆｉｅｄＩｎｐｕｔｓ？、ａｒｃｓ、ｗｏｒｌｄＳｅｔ、ｐｌａｎ）」に含まれうる１つまたは複数の操作を有する流れ図である。ルーチン２２８は、入力引数ｓｔｅｐＯｂｊｅｃｔの計画を見出すように構成され、ここでステップはアーク１１０または強成分１３２のいずれかである。ルーチン２２８は、ルーチンが計画を見出すかどうかに応じて、ＴｒｕｅまたはＦａｌｓｅを返す。図１６Ｃ〜図１６Ｄは、図１６Ａ〜図１６Ｂの流れ図に示されるルーチン「ＦｉｎｄＰｌａｎＦｏｒＡｒｃｓ」２２８の擬似コードのリストである。ルーチンは、以下の引数を組み入れることができる。
ｓｔｅｐＯｂｊｅｃｔ：  計画が求められ、アークまたは強成分のいずれかであるステップ。
ｓｐｅｃｉｆｉｅｄＩｎｐｕｔｓ？：  真である場合、入力のリストはユーザ指定の入力に限定される。偽である場合、変数が出力変数の上流に位置していれば、任意の独立変数は計画１０２への入力となりうる。
ａｒｃｓ：  強成分またはｓｔｅｐＯｂｊｅｃｔに連結されたｒｎｏｄｅの上流に位置するアークのセット
ｗｏｒｌｄＳｅｔ：  計画が所望されるワールドセット。
ｐｌａｎ：  ルーチンによって変更され、これまでの検索の結果を含む計画構造。
【００６２】
図１７Ａ〜１７Ｂを参照すると、図１７Ａに示されているのは、ルーチン「ＡｄｄＰｌａｎＳｔｕｂ（ｖｎｏｄｅ、ｗｏｒｌｄＳｅｔ、ｐｌａｎ）」に含まれうる１つまたは複数の操作を有する流れ図である。ルーチン２１２は、指定されたワールドセット１４０でｒｎｏｄｅ１１４の計画１０２が見出されるかどうかに応じて、ＴｒｕｅまたはＦａｌｓｅを返すように構成される。図１７Ｂは、図１７Ａの流れ図に示されるルーチン「ＡｄｄＰｌａｎＳｔｕｂ」２１２の擬似コードのリストである。ルーチン２１２は、変数ノード１２０（すなわち、ｖｎｏｄｅ）をワールドセット１４０（すなわち、ｗｏｒｌｄＳｅｔ）の計画１０２のスタブされた変数１２２のセットに追加することにより計画構造を変更する。「ＡｄｄＰｌａｎＳｔｕｂ」２１２計画１０２は、スタブ１３０エントリのキューを保持し、各エントリは、変数ノード１２０が関連するワールドセット１４０の計画１０２のスタブ１３０であるという意味において変数ノード１２０とワールドセット１４０の関連付けである。ルーチン２１２は、そのエントリに関連付けられているワールドセット１４０と入力１２６ワールドセット１４０ｗｏｒｌｄＳｅｔの論理和を形成することにより、計画１０２のスタブキュー２３４でｖｎｏｄｅ１２０の先在するエントリを変更する、またはルーチン２１２はペア＜ｖｎｏｄｅ、ｗｏｒｌｄＳｅｔ＞の新しいエントリを追加する。
【００６３】
図１８Ａ〜１８Ｂを参照すると、図１８Ａに示されているのは、ルーチン「ＡｄｄＰｌａｎＳｔｅｐ（ｓｔｅｐＯｂｊｅｃｔ、ｗｏｒｌｄＳｅｔ、ｐｒｅｄｅｃｅｓｓｏｒｓ、ｐｌａｎ）」に含まれうる１つまたは複数の操作を有する流れ図である。ルーチン２３８は、指定されたワールドセット１４０でｒｎｏｄｅ１１４の計画が見出されるかどうかに応じて、ＴｒｕｅまたはＦａｌｓｅを返すように構成される。図１８Ｂは、図１８Ａの流れ図に示されるルーチン「ＡｄｄＰｌａｎＳｔｅｐ」２３８の擬似コードのリストである。ルーチン２３８は、マップ「ｗｏｒｌｄ−ｓｅｔ−＞ｓｔｅｐ」のスタック「ｓｔｅｐＳｔａｃｋ（ｐｌａｎ）」を保持し、関連するワールドセット１４０が現在のデータ環境において真である場合、各ステップ（すなわち、アークまたは強成分）は計画が呼び出されるときに実行される。制約ネットワークの逆方向チェイニング検索中、スタックは、逆順に保持され、後段において説明されるようにルーチンＦｉｎａｌｉｚｅ（ｐｌａｎ）を使用して検索プロセスの終わりに再配列される。ルーチン「ＡｄｄＰｌａｎＳｔｅｐ」２３８は、可能な限り早期、ただしすべてのその先行２４０の後に、ステップオブジェクトをスタックに置く。ルーチン２３８は、ステップオブジェクトが所与のワールドセット１４０で適用可能であるように、計画ステップスタックを破壊的に変更し、新しいかまたは変更済みのエントリを返す。ルーチン２３８は、以下の引数を組み入れることができる。
ｓｔｅｐＯｂｊｅｃｔ：  計画が呼び出される時に潜在的に実行される計画のステップを表すアークまたは強成分。
ｗｏｒｌｄＳｅｔ：  実行されるべき関連するステップの呼び出された計画のデータ環境において真である必要のあるワールドセット。
ｐｒｅｄｅｃｅｓｓｏｒｓ：  関係ノードのすぐ上流に位置する変数ノードであり、各変数ノードは、オブジェクトの値がワールドセットで依存するそのワールドセットにより条件付けされる。
【００６４】
図１８Ｂの擬似コードにおいて、関数Ｒｅｓｔ（ｌｉｓｔ）は、同じリスト構造を返すが、リストの第２の要素で開始する。関数Ｆｉｒｓｔ（ｌｉｓｔ）は、リストの第１の要素を返す。関数ｇｅｔＯｂｊｅｃｔ（ｗｓ−＞ｏｂｊｅｃｔ）は、マップ要素ｗｓ−＞ｏｂｊｅｃｔでオブジェクトを返す。関数ｇｅｔＷｏｒｌｄＳｅｔ（ｗｓ−＞ｏｂｊｅｃｔ）は、マップ要素内のワールドセットを返す。
【００６５】
図１９Ａ〜１９Ｂを参照すると、図１９Ａに示されているのは、ルーチン「ＳｔｅｐＷｏｒｌｄＳｅｔＩｎＰｌａｎ（ｓｔｅｐＯｂｊｅｃｔ、ｐｌａｎ）」に含まれうる１つまたは複数の操作を有する流れ図である。「ＳｔｅｐＷｏｒｌｄＳｅｔＩｎＰｌａｎ」２３２ルーチンは、計画の入力１２６ステップオブジェクトに関連付けられているすべてのワールドセット１４０の論理和を返すように構成される。図１９Ｂは、図１９Ａの流れ図に示されるルーチン「ＳｔｅｐＷｏｒｌｄＳｅｔＩｎＰｌａｎ」２３２の擬似コードのリストである。ルーチン２３２は、以下の引数を組み入れることができる。
ｓｔｅｐＯｂｊｅｃｔ：  関連するワールドセットが要求されている所与のオブジェクト。
ｐｌａｎ：  所与のステップオブジェクトと適合するかどうか調査されている計画ステップを有する計画。
【００６６】
制約ネットワーク１００の計画１０２を決定するシステムおよび方法はまた、図８に関して上記で説明されるように、状態変数１２４ｖｎｏｄｅ１２０でｗｏｒｌｄＳｅｔの依存性を除去するための関数「ＲｅｍｏｖｅＳｔａｔｅＤｅｐｅｎｄｅｎｃｅ（ｖｎｏｄｅ、ｗｏｒｌｄＳｅｔ）」（図示せず）を含むこともできる。有利なことに、関数「ＲｅｍｏｖｅＳｔａｔｅＤｅｐｅｎｄｅｎｃｅ」は無限ループを回避し、同時に、状態変数１２４が計算パスに必要とされるときにそのような状態変数１２４の値を計算するためのステップを計画１０２が確実に含むようにする。関数「ＲｅｍｏｖｅＳｔａｔｅＤｅｐｅｎｄｅｎｃｅ」は、以下の引数を組み入れることができる。
ｖｎｏｄｅ：  依存性を除去するために必要とされる状態変数。
ｗｏｒｌｄＳｅｔ：  状態変数ｖｎｏｄｅの値への可能な依存性を除去するために必要とされるワールドセット。
【００６７】
「ＲｅｍｏｖｅＳｔａｔｅＤｅｐｅｎｄｅｎｃｅ」２２６関数は、Ｔｒｕｅによりワールドセットの完全論理式（ＷＦＦ）表現で指定された状態変数を伴うリテラルおよびリテラルの否定を置き換えて、結果を簡略化する。たとえば、ＷＦＦでＳへの依存性を除去することで、「Ｓ＝ｓ１  Ａｎｄ  Ｑ＝ｑ２」は「Ｔｒｕｅ  Ａｎｄ  Ｑ＝ｑ２」をもたらし、これは「Ｑ＝ｑ２」に簡略化する。ＷＦＦでＳへの依存性を除去することで、「Ｓ＝ｓ１  Ｏｒ  Ｑ＝ｑ２」は「Ｔｒｕｅ  Ｏｒ  Ｑ＝ｑ２」をもたらし、これは「Ｔｒｕｅ」に簡略化する。
【００６８】
「ＲｅｍｏｖｅＳｔａｔｅＤｅｐｅｎｄｅｎｃｅ」２２６関数の実施態様は、ワールドセット１４０を表すために使用されるデータ構造によって決まる。１つの例において、Ｌｉｓｐリスト構造（すなわち、カリフォルニア州オークランドのＦｒａｎｚ、Ｉｎｃ．社から市販されているＡｌｌｅｇｒｏ  Ｃｏｍｍｏｎ  Ｌｉｓｐ）は、ワールドセット１４０を指定する完全論理式を表すために使用されてもよい。もう１つの例において、多次元ビットアレイ（図示せず）がワールドセットを表すために使用されてもよく、ビットアレイの各次元は、所与の状態変数に関連付けられてもよく、その次元の大きさは、状態変数がとりえる固有の値の数と等しい。
【００６９】
この点で、計算ステップに関連付けられているＷＦＦは、解決される必要のある方程式に関連付けられているＷＦＦへの、論理和、論理積、および／または差分演算子の組み合わせによって取得されてもよい。そのようなＷＦＦは、制約ネットワーク１００のどの変数が独立であるかに応じて、極めて複雑になる可能性もあり、そのような命題ＷＦＦの迅速な操作および組み合わせを必要とすることがある。その他のＷＦＦの組み合わせを通じて得られたＷＦＦは、トレード研究中に効率的な計算のために簡略化を必要とする。この点において、ＷＦＦが数千の方程式を伴う比較的大規模なネットワークでさらに組み合わされるので、ＷＦＦの組み合わせを簡略化されない状態にしておくことは、結果としてメモリサイズを爆発的に増加させることもある。さらに、ＷＦＦが全体的に偽のＷＦＦに単純化する場合、計算計画生成手順は、制約ネットワーク１００の不必要な分岐を除去して、それによりコンパクトで効率的な計算計画１０２を作成することができる。
【００７０】
そのようなＷＦＦ簡略化プロセスは、有限であるが大きいドメインにわたり大量の述語を有する論理式に適用される場合、計算量を著しく増大させることがある。ＷＦＦの論理積正規形またはＷＦＦの論理和正規形を決定するための従来のアルゴリズムは、システム設計者に計算結果を比較的短期間（たとえば、数分）で提供するには不十分である。ＷＦＦの簡略化は、好ましくは、計算時間を短縮してシステム設計者がさまざまな設計のトレードを検討および調査するために使用可能な時間を増やすために、可能な限り迅速に実行される。完全論理式を簡略化するための時間の短縮は、加えて、より大規模で複雑な設計空間を調査する能力をシステム設計者にもたらすことができる。
【００７１】
たとえば、極超音速車両の概念設計において、制約管理計画アルゴリズムには、多数の望ましいトレード研究の１つを計画中に膨大量の述語の数々の参照を含む多数のＷＦＦを簡略化することが求められる。例のＷＦＦは、各々の述語が２から２０の可能な値を有する、わずか１０から１５の述語を有することができる。そのようなＷＦＦは、同じ規模の深さで、同じ述語を５から１０回構文的に参照することができる（たとえば、Ａｎｄ（Ｏｒ（Ａｎｄ  Ｏｒ（Ｐ１＝−ｐ１１、Ｐ２＝ｐ２１．．）．．．Ｏｒ（Ａｎｄ（Ｐ１＝ｐ１３、Ｏｒ（Ｎｏｔ（Ｐ１＝ｐ１３）．．．））））など。残念なことに、従来のアルゴリズムを使用してそのようなＷＦＦを論理積正規形または論理和正規形に簡略化するには、１つの実施で１０から３０分のコンピュータ時間が必要である。従来のアルゴリズムを使用してＷＦＦを簡略化するための比較的長期のコンピュータ時間は、設計者がより大規模で複雑な設計トレードを検討および調査するために使用可能な時間を直接的に減らしてしまう。
【００７２】
有利なことに、完全論理式（ＷＦＦ）の簡略化は、本明細書において開示され図９Ａ〜図２０Ｂに示されるデータ依存型制約ネットワークの計算計画をサポートすることができる。ＷＦＦを簡略化するプロセスは、入力ＷＦＦ（図示せず）を初期ビットアレイ（図示せず）に変換することと、入力ＷＦＦを表すために必要ではない述語を除去することにより、初期ビットアレイを簡略化ビットアレイ（図示せず）に簡略化することと、簡略化ビットアレイを戻りＷＦＦ（図示せず）に変換することとを含むことができる。
【００７３】
ビットアレイは、「１」または「０」の値を有するビット要素（図示せず）を有するアレイとして定義されてもよい。加えて、ビットアレイは、任意の次元数を含むことができる。各次元は、異なるサイズを有することができる。ブール述語（図示せず）の場合、対応するビットアレイの次元のサイズは２である。等値述語（図示せず）の場合、ビットアレイの次元のサイズは、ドメインの長さと等しい。論理ビットアレイは、ビットアレイに含まれる述語（たとえば、ブールおよび／または等値）のリストへのビットアレイの各次元のマッピングを含むビットアレイとして定義されてもよい。
【００７４】
入力ＷＦＦ（図示せず）は、アトミックな真またはアトミックな偽のＷＦＦ、アトミックなブール述語ＷＦＦ、アトミックな等値述語ＷＦＦ、否定演算子（ＮＯＴ）を伴う否定ＷＦＦ、論理積および論理和演算子ＡＮＤまたはＯＲを伴う複合ＷＦＦを含むことができる。入力ＷＦＦの簡略化は、入力ＷＦＦの述語を決定することと、各々の述語に関連付けられているドメイン要素を決定することと、初期ビットアレイのビットアレイ次元を決定することと、内部プログラム（図示せず）を呼び出して、入力ＷＦＦに関連付けられているビットアレイ次元、述語、およびドメイン要素を有する初期ビットアレイを返すことによって、入力ＷＦＦを再帰的に処理することとを含むことができる。
【００７５】
入力ＷＦＦが、単一のブール述語を備えるアトミックなＷＦＦである場合、単一のブール述語は等値述語に変換されてもよい。入力ＷＦＦが、論理和演算子（ＯＲ）または論理積演算子（ＡＮＤ）に関連付けられているゼロまたはそれ以上のアトミックなＷＦＦまたは複数の複合ＷＦＦ、もしくは否定演算子に関連付けられている正確に１つのアトミックなＷＦＦまたは複合ＷＦＦを備える複合ＷＦＦである場合、複合ＷＦＦの各オペランドは、アトミックなＷＦＦに遭遇するまで再帰的に処理されてもよい。再帰的に処理されるＷＦＦは、複合ＷＦＦの演算子が否定演算子（ＮＯＴ）、論理積演算子（ＡＮＤ）、または論理和演算子（ＯＲ）のいずれであるかに従って組み合わされてもよい。次いで、初期ビットアレイは、各々のアトミックなＷＦＦごとに返される。
【００７６】
演算子が論理積演算子（たとえば、ＡＮＤ）または論理和演算子（たとえば、ＯＲ）である非否定の複合ＷＦＦの場合、組み合わされた初期ビットアレイのオペランドの数量が決定されてもよい。論理積演算子の場合、個々の初期ビットアレイのビット要素は、ビット要素が個々の初期ビットアレイの論理積（「ＡＮＤ」）と等しくなるような方法で組み合わされてもよい。論理和演算子の場合、個々の初期ビットアレイのビット要素は、ビット要素が個々の初期ビットアレイの論理和（「ＯＲ」）と等しくなるような方法で組み合わされてもよい。初期ビットアレイは、述語に関連付けられている複数のビットアレイ次元を含むことができる。
【００７７】
初期ビットアレイは、入力ＷＦＦを表すために必要ではない述語を除去することにより簡略化されてもよい。この点において、初期ビットアレイの簡略化は一般に、ビットアレイ次元が折りたたみ可能であるかどうかを決定するために、各々のビットアレイ次元のサブアレイのビット要素を比較するなどのような、意味論的に冗長なビットアレイ次元を除去することによって、初期ビットアレイを折りたたむことを備えることができる。サブアレイのビット要素が等しい場合、サブアレイに関連付けられている次元は除去されてもよい。
【００７８】
簡略化されたビットアレイは、述語のセットおよびそれらの各々のドメイン要素を所与として簡略化されたビットアレイを体系的に処理して、戻りＷＦＦを構築することにより、論理和正規形（ＤＮＦ）または論理積正規形（ＣＮＦ）の戻りＷＦＦに変換されてもよい。簡略化されたビットアレイの変換は、１の値を有する簡略化されたビットアレイのビット要素の合計数量を決定することと、ビット要素の合計数量の２分の１未満が１の値を有する場合に、簡略化されたビットアレイを論理和正規形（ＤＮＦ）の戻りＷＦＦに変換することとを備えることができる。簡略化されたビットアレイは、ビット要素の合計数量の少なくとも２分の１が１の値を有する場合に、論理積正規形（ＣＮＦ）１４２の戻りＷＦＦに変換されてもよい。
【００７９】
有利なことに、データ依存型制約管理システムまたは制約ネットワークにおける完全論理式の簡略化は、結果として、完全論理式の論理和、論理積、および差分演算子の結果を簡略化するために必要とされる時間の大幅な短縮をもたらすことができ、特定のトレード研究を処理するために必要な時間を大幅に短縮することができる。処理時間の短縮は、設計者が、データ依存型制約ネットワーク１００の本明細書において開示される計算計画の方法を使用して、総合的な方法でより大規模で複雑な設計空間を探索できるようにする技術的な効果をもたらす。
【００８０】
図２０Ａ〜２０Ｂを参照すると、図２０Ｂに示されているのは、ルーチン「Ｆｉｎａｌｉｚｅ（ｐｌａｎ）」に含まれうる１つまたは複数の操作を有する流れ図である。ルーチン２１４は、上記で説明されるように、計画ステップスタックにプッシュされた計画ステップの順序を逆転させるように構成される。図２０Ｂは、図２０Ａの流れ図に示されるルーチン「Ｆｉｎａｌｉｚｅ」２０４の擬似コードのリストを示す。
【００８１】
図２１を参照すると、示されているのは、プロセッサベースのシステム３００またはその他の適切なコンピュータシステムのようなコンピュータ実施のプロセスにおいて、全体または部分的に、上記で説明される計算計画の方法を実施するためのシステムのブロック図である。プロセッサベースのシステム３００は、データ依存型制約ネットワーク１００（図８）の上記で説明される計算計画ステップの１つまたは複数を実施することができる。プロセッサベースのシステム３００は、上記で説明される操作またはステップの１つまたは複数を実施するために、プロセッサベースのシステム３００に提供またはロードされうるコンピュータ可読プログラム命令３２４を実行することができる。非限定的な例において、プロセッサベースのシステム３００および／またはコンピュータ可読プログラム命令３２４は、データ依存型制約ネットワーク１００の計算計画１０２の定義を容易にすることができる。
【００８２】
図２１のブロック図は、制約ネットワーク１００を表す二部グラフ１０６（図８）で計算計画１０２（図８）の決定を容易にすることができる有利な実施形態におけるプロセッサベースのシステム３００を示す。プロセッサベースのシステム３００は、変数ノード１２０（図８）の状況が決定されるワールドセット１４０（図７）を決定することができ、二部グラフ１０６の逆方向チェイニング検索中に１つまたは複数の入力１２６変数ノード１２０（図８）から１つまたは複数の出力１２８変数ノード１２０（図８）への計算計画１０２を決定することができる。図２１に示される実施形態において、プロセッサベースのシステム３００は、１つまたは複数のコンポーネントブロックに通信可能に結合されて、そのようなコンポーネントブロック間のデータの転送を容易にするデータ通信パス３０２（たとえば、データリンク）を含むことができる。通信パス３０２は、コンポーネントブロックとプロセッサベースのシステム３００のデバイスとの間のデータの転送を容易にする１つまたは複数のデータバスまたは任意の他の適切な通信パス３０２を備えることができる。
【００８３】
図２１を参照すると、非限定的な実施形態において、コンポーネントブロックは、１つまたは複数のプロセッサ３０４、メモリデバイス３０６、不揮発性ストレージデバイス３０８、通信デバイス３１２、入出力デバイス３１０、および表示デバイス３１４を含むことができる。システムはさらに、変数ノード指定子３２６、ワールドセット指定子３２８、および計画決定子３３０を含むことができる。上記で示されているように、変数ノード指定子３２６は、計画１０２の開始点を表す入力１２６として１つまたは複数の変数ノード１２０を指定すること、および計画１０２によって計算されるべき出力１２８として１つまたは複数の変数ノード１２０を指定することを容易にするように構成されてもよい。ワールドセット指定子３２８は、計算計画１０２が所望されるワールドセット１４０を指定することを容易にするように構成されてもよい。入力１２６（たとえば、入力変数ノード１２０）が指定されない場合、計画決定子３３０は、出力１２８の値に影響を及ぼす制約ネットワーク１００のすべての入力１２６からの計画１０２を決定するように構成されてもよい。ワールドセット１４０が指定されない場合、計画決定子３３０は、変数ノード１２０の状況が決定済みの状態にあるワールドセット１４０を決定するように構成されてもよい。
【００８４】
計画決定子３３０は、二部グラフ１０６の検索中に入力（複数可）１２６から出力（複数可）１２８への計画１０２を決定するように構成されてもよい。計画１０２を決定すると、計画決定子３３０は、上記で説明されているように、計画を、入力リスト２２０またはキュー、出力リスト２１８またはキュー、スタブキュー２３４、および計画キュー２３６として提供するように構成されてもよい。入力変数１２６が引数として指定される場合、計画決定子３３０は、検索パスで導かれた進展ワールドセットをその入力変数に関連付けられているワールドセット１４０と結合することにより、指定された入力変数１２６に関連付けられているワールドセット１４０を更新するように構成されてもよい。二部グラフの逆方向チェイニング検索中に、計画決定子３３０は、出力１２８変数ノード１２０で開始して、出力１２８変数ノード１２０が指定されたワールドセット１４０の全体について決定された状態にある場合、出力１２８変数ノード１２０および指定されたワールドセット１４０を出力リスト２１８追加することにより出力リスト２１８を更新するように構成されてもよい。
【００８５】
逆方向チェイニング検索中に、計画決定子３３０は、加えて、所与のワールドセットについて変数ノード１２０の計画を見出す、コンポーネント１３２の計画を見出す、関係ノードの計画を見出す、およびアークの計画を見出す、という操作を再帰的に実行することにより検索パスに沿って各々の入アーク１１０逆方向に従いながら、計画１０２を更新するように構成されてもよく、所与の変数ノード１２０に関連付けられている入アーク１１０を使用可能にするワールドセット１４０は互いに素である。加えて、計画決定子３３０は、計画１０２を更新する間、検索パスに沿った適切なワールドセット１４０を検索パスの追加の要素の使用可能ワールドセット１４０との進展ワールドセット１４０の論理積として保持するように構成されてもよく、追加の要素は、変数ノード１２０、コンポーネント１３２、関係ノード１１４、およびアーク１１０を備える。さらに、計画決定子３３０は、各入アーク１１０について、入アーク１１０がコンポーネント１３２の一部である場合にコンポーネント１３２の計画を見出すか、または入アーク１１０がコンポーネント１３２の一部ではない場合に関係ノード１１４の計画を見出すように構成されてもよい。
【００８６】
図２１において、計画決定子３３０は、加えて、コンポーネント１３２先行のすべてのアーク１１０の計画を見出し、関係ノード１１４のすべての入アーク１１０の計画を見出し、状態変数１２４へのワールドセット１４０の依存性を除去するように構成されてもよく、状態変数１２４はブール変数、または有限ドメインにわたり計数値を有するカテゴリ変数を備えることができる。逆方向チェイニング検索中に、計画決定子３３０は、指定された入力変数ノード１２０に到達するか、または指定された入力変数ノード１２０が提供されない場合は独立の入力変数ノード１２０に到達すると、検索パスの逆の順序で、アーク１１０またはコンポーネント１３２および関連するワールドセット１４０を追加することによって、計画キュー２３６を更新するように構成されてもよい。さらに、計画決定子３３０は、計画ステップの先行アーク１１０で開始する任意の検索パスが、指定された入力１２６変数ノード１２０で終了するかどうかを最初に留意または決定して、終了する場合には、スタブ変数および関連するスタブワールドセット１４０でスタブキュー２３４を更新するように構成されてもよい。スタブ変数は、検索パスが指定された入力１２６変数のいずれでも終了しない任意の他の先行アーク１１０に関連付けられている変数を備える。スタブワールドセットは、それらの検索パスのワールドセット１４０の論理和を備える。計画１０２を決定すると、計画決定子３３０は、計画ステップの順序を逆転させることにより、計画１０２を最終確定するように構成されてもよい。
【００８７】
図２１を参照すると、計算計画１０２の入力１２６および出力１２８を指定し、変数ノード１２０の状況が決定されるワールドセット１４０を指定し、二部グラフ１０６の逆方向チェイニング検索を実行する上記で説明されるステップのいずれか１つの結果は、入出力デバイス３１０に伝送されてもよい。入出力デバイス３１０は、計算計画の結果を表示するように構成されうる表示デバイス３１４に通信可能に結合されてもよい。表示デバイス３１４は、計算計画の実施の進行および／または結果を表示するように構成されてもよい。加えて、表示デバイス３１４は、計算計画プロセスを使用してデータ依存型制約管理システム（図８）で実施されるトレード研究の結果を表示するように構成されてもよい。
【００８８】
１つの実施形態において、プロセッサベースのシステム３００は、メモリデバイス３０６にインストールされうるコンピュータ可読プログラム命令３２４の命令を実行するための１つまたは複数のプロセッサ３０４を含むことができる。あるいは、プロセッサ３０４は、２つまたはそれ以上の統合プロセッサコアを有するマルチプロセッサコアを備えることができる。さらになお、プロセッサ３０４は、チップ上に集積されたメインプロセッサおよび１つまたは複数の２次プロセッサを備えることができる。プロセッサ３０４はまた、複数の同様に構成されたプロセッサを有する多プロセッサシステムを備えることもできる。
【００８９】
引き続き図２１を参照すると、プロセッサベースのシステム３００はさらに、揮発性または不揮発性ストレージデバイス３０８の１つまたは複数を備えることができる１つまたは複数のメモリデバイス３０６を含むことができる。しかし、メモリデバイス３０６は、任意のハードウェアデバイスを、制限なく備えることができる。たとえば、メモリデバイス３０６は、ランダムアクセスメモリまたはインターフェイスのキャッシュ、および／または通信パスに含まれうる統合メモリコントローラハブを備えることができる。メモリデバイス３０６は、多種多様なタイプのデータ、コンピュータ可読コードまたはプログラム命令、または任意のその他のタイプの情報のいずれかを永続的および／または一時的に格納するように構成されてもよい。不揮発性ストレージデバイス３０８は、フラッシュメモリデバイス、ハードドライブ、光ディスク、ハードディスク、磁気テープ、または長期的な格納のための任意のその他の適切な実施形態を含むさまざまな構成で提供されてもよいが、これらに限定されることはない。加えて、不揮発性ストレージデバイス３０８は、取り外し可能ハードドライブのような、取り外し可能デバイスを備えることができる。
【００９０】
プロセッサベースのシステム３００は、加えて、プロセッサベースのシステム３００に接続されうるコンポーネント１３２間のデータの転送を容易にするための入出力デバイス３１０の１つまたは複数を含むことができる。入出力デバイス３１０は、プロセッサベースのシステム３００に直接的および／または間接的に結合されてもよい。入出力デバイス３１０は、キーボード、マウス、ジョイスティック、タッチスクリーン、およびプロセッサベースのシステム３００にデータを入力するために適切な任意のその他のデバイスのような周辺デバイスを用いてユーザ入力を容易にすることができる。入出力デバイス３１０はさらに、プロセッサベースのシステム３００の出力を表すデータを転送するための出力デバイスを含むことができる。たとえば、入出力デバイス３１０は、プロセッサベースのシステム３００によって処理されたデータの結果を表示するためのコンピュータモニタまたはコンピュータ画面のような表示デバイス３１４を備えることができる。入出力デバイス３１０は、任意で、プロセッサベースのシステム３００により処理された情報のハードコピーを印刷するためのプリンタまたはファックスマシンを含むことができる。
【００９１】
引き続き図２１を参照すると、プロセッサベースのシステム３００は、コンピュータネットワーク内および／またはその他のプロセッサベースのシステムとのプロセッサベースのシステム３００の通信を容易にするための１つまたは複数の通信デバイス３１２を含むことができる。コンピュータネットワーク内またはその他のプロセッサベースのシステムとのプロセッサベースのシステム３００の通信は、無線手段および／または配線接続によるものであってもよい。たとえば、通信デバイス３１２は、プロセッサベースのシステム３００とコンピュータネットワークとの間の無線またはケーブル通信を可能にするためのネットワークインターフェイスコントローラを備えることができる。通信デバイス３１２はまた、モデムおよび／またはネットワークアダプタ、もしくはデータを送受信するためのさまざまな代替的デバイスのうちの１つを備えることもできる。
【００９２】
データ依存型制約ネットワーク１００の計算計画のための前述の方法論の操作のうちの１つまたは複数は、コンピュータ可読プログラム命令３２４を使用して、プロセッサ３０４および／または変数ノード指定子３２６、ワールドセット指定子３２８、および計画決定子３３０のうちの１つまたは複数によって実行されてもよい。コンピュータ可読プログラム命令３２４は、コンピュータ使用可能プログラムコードおよびコンピュータ可読プログラムコードを含みうるプログラムコードを備えることができる。コンピュータ可読プログラム命令３２４は、プロセッサ３０４によって読み取られ、実行されてもよい。コンピュータ可読プログラム命令３２４は、プロセッサ３０４が、制約ネットワーク１００の計算計画に関連付けられている前述の実施形態の１つまたは複数の操作を実行できるようにすることができる。
【００９３】
引き続き図２１を参照すると、コンピュータ可読プログラム命令３２４は、プロセッサベースのシステム３００のための操作命令を含むことができ、さらにアプリケーションおよびプログラムを含むことができる。コンピュータ可読プログラム命令３２４は、数式プロセッサ３０４、数式コンバータ、ビットアレイシンプリファイア、ビットアレイコンバータ、および／またはビットアレイコンストラクタにより実行するためのメモリデバイス３０６および／または不揮発性ストレージデバイス３０８のうちの１つまたは複数に含有および／またはロードされてもよい。上記に示されるように、メモリデバイス３０６および／または不揮発性ストレージデバイス３０８の１つまたは複数は、通信パスを通じて図２１に示される残りのコンポーネントブロックの１つまたは複数に通信可能に結合されてもよい。
【００９４】
コンピュータ可読プログラム命令３２４は、有形または非有形の、一時的または非一時的コンピュータ可読媒体３１８に含まれてもよく、プロセッサにより実行するためにプロセッサベースのシステム３００にロードされるかまたは転送されてもよい。コンピュータ可読プログラム命令３２４およびコンピュータ可読媒体３１８は、コンピュータプログラム製品３１６を備える。１つの実施形態において、コンピュータ可読媒体３１８は、コンピュータ可読ストレージ媒体３２０および／またはコンピュータ可読信号媒体３２２を備えることができる。
【００９５】
コンピュータ可読ストレージ媒体３２０は、ドライブにロードされうる光ディスクおよび磁気ディスク、フラッシュメモリデバイス、またはハードドライブのようなストレージデバイスにデータを転送するためのその他のストレージデバイスまたはハードウェアを含む多種多様な実施形態を備えることができるが、これらに限定されることはない。コンピュータ可読ストレージ媒体３２０は、プロセッサベースのシステム３００に固定式で取り付けられてもよい。コンピュータ可読ストレージ媒体３２０は、任意の適切なストレージ媒体を備えることができ、半導体システムまたは伝搬媒体を、非限定的に含むことができる。この点において、コンピュータ可読ストレージ媒体３２０は、電子媒体、磁気媒体、光媒体、電磁媒体、および赤外線媒体を備えることができる。たとえば、コンピュータ可読ストレージ媒体３２０は、磁気テープ、コンピュータディスケット、ランダムアクセスメモリ、および読み取り専用メモリを備えることができる。光ディスクの実施形態の非限定的な例は、読み取り専用メモリのコンパクトディスク、読み取り／書き込みコンパクトディスク、およびデジタルビデオディスクを含むことができる。
【００９６】
コンピュータ可読信号媒体３２２は、コンピュータ可読プログラム命令３２４を含むことができ、電磁信号および光信号を含む（ただし、これらに限定されない）さまざまなデータ信号構成で具現されてもよい。そのようなデータ信号は、無線または有線手段を含む任意の適切な通信リンクにより伝送されてもよい。たとえば、有線手段は、光ファイバケーブル、同軸ケーブル、信号線、および無線または物理的手段によりデータを伝送するための任意の他の適切な手段を備えることができる。
【００９７】
引き続き図２１を参照すると、コンピュータ可読信号媒体３２２は、プロセッサベースのシステム３００内で使用するための、コンピュータ可読プログラム命令３２４の不揮発性ストレージまたはその他の適切なストレージまたはメモリデバイス３０６へのダウンロードを容易にすることができる。たとえば、コンピュータ可読ストレージ媒体３２０内に含まれるコンピュータ可読プログラム命令３２４は、サーバまたは別のシステムのクライアントコンピュータからコンピュータネットワークを介してプロセッサベースのシステム３００にダウンロードされてもよい。
【００９８】
プロセッサベースのシステム３００の多種多様な実施形態の任意の１つは、コンピュータ可読プログラム命令３２４を実行することができる任意のハードウェアデバイスまたはシステムを使用して実施されてもよい。たとえば、プロセッサ３０４は、１つまたは複数の特定の機能を実行するために構成されたハードウェアユニットを備えることができ、機能を実行するためのコンピュータ可読プログラム命令３２４は、メモリデバイス３０６にプリロードされてもよい。
【００９９】
１つの実施形態において、プロセッサ３０４は、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル論理デバイス、または１つまたは複数の固有の機能または操作を実行するように構成された任意の他のハードウェアデバイスを備えることができる。たとえば、プログラマブル論理デバイスは、制約ネットワーク１００において計算計画に関連する操作の１つまたは複数を実行するように一時的または永続的にプログラムされてもよい。プログラマブル論理デバイスは、プログラマブル論理アレイ、プログラマブルアレイ論理、フィールドプログラマブル論理アレイ、およびフィールドプログラマブルゲートアレイ、ならびに任意の他の論理デバイスを、非限定的に備えることができる。１つの実施形態において、コンピュータ可読プログラム命令３２４は、１つまたは複数のプロセッサ、および／またはプロセッサ３０４と通信する１つまたは複数のハードウェアユニットを含むその他のデバイスによって操作されてもよい。コンピュータ可読プログラム命令３２４の特定の部分は、プロセッサ３０４によって実行されてもよく、コンピュータ可読プログラム命令３２４のその他の部分は、ハードウェアユニットによって実行されてもよい。
【０１００】
有利なことに、データ依存型制約ネットワーク１００の条件付き計算計画１０２を作成するための、本明細書において開示されるシステムおよび方法は、従来の条件付き計画アルゴリズムに必要とされるような、計画と計算の混合を回避する。この点において、本明細書において開示される計算計画のシステムおよび方法は、フロントエンドのトレード研究中、または従来の条件付き計画の方法により提供される限定された範囲のトレード空間に関連する複雑なエンジニアリングシステムの概念設計中に、大幅に広範なトレード空間にわたるトレード研究の実行を容易にする技術的な効果をもたらす。本明細書において開示される計算計画の方法により提供されるさらなる技術的な効果は、トレード研究が異種のトレード空間にわたり実施されうる効率の大幅な上昇であり、システム構成または車両構成（たとえば、航空機またはロケット機体の構成）は、トレード空間にわたり著しく変化しうるので、車両コスト、車両パフォーマンス、およびその他のパラメータを記述する方程式は、大きく異なるパラメトリックフォームを有することができる。設計者がトレード空間の広い範囲を探索することができる迅速さを大幅に高めることに加えて、本明細書において開示される計算計画のシステムおよび方法は、所与のトレード空間が所与の時間内に探索されうる完全性を大幅に高めることを容易にする技術的な効果をもたらす。
【０１０１】
本開示の多くの変更およびその他の実施形態は、前述の説明および関連する図面に提示されている教示を利用できる本開示に関連する当業者に発想をもたらすことになろう。本明細書において説明される実施形態は、例示的であることが意図されており、限定的または包括的であることは意図されていない。本明細書において特定の用語が採用されているが、これらは一般的かつ説明的な意味でのみ使用されており、限定することを目的としてはいない。
【符号の説明】
【０１０２】
１００  制約ネットワーク
１１０  アーク
１１２  検索分岐
１１４  関係ノード
１１６  等値制約
１１８  ブール条件
１２０  変数ノード
１２２  変数
１２４  状態変数
１２６  入力
１２８  出力
１３０  スタブ
１３２  強成分
１３６  カテゴリ変数
１３８  ワールド
１４０  ワールドセット
１４２  完全論理式（ＷＦＦ）
【図１Ａ】
2014081934.tif 000004
【図１Ｂ】
2014081934.tif 000005
【図２Ａ】
2014081934.tif 000006
【図２Ｂ】
2014081934.tif 000007
【図３】
2014081934.tif 000008
【図４Ａ】
2014081934.tif 000009
【図４Ｂ】
2014081934.tif 000010
【図５】
2014081934.tif 000011
【図６Ａ】
2014081934.tif 000012
【図６Ｂ】
2014081934.tif 000013
【図７】
2014081934.tif 000014
【図８】
2014081934.tif 000015
【図９Ａ】
2014081934.tif 000016
【図９Ｂ】
2014081934.tif 000017
【図１０Ａ】
2014081934.tif 000018
【図１０Ｂ】
2014081934.tif 000019
【図１１Ａ】
2014081934.tif 000020
【図１１Ｂ】
2014081934.tif 000021
【図１２Ａ】
2014081934.tif 000022
【図１２Ｂ】
2014081934.tif 000023
【図１３Ａ】
2014081934.tif 000024
【図１３Ｂ】
2014081934.tif 000025
【図１４Ａ】
2014081934.tif 000026
【図１４Ｂ】
2014081934.tif 000027
【図１５Ａ】
2014081934.tif 000028
【図１５Ｂ】
2014081934.tif 000029
【図１６Ａ】
2014081934.tif 000030
【図１６Ｂ】
2014081934.tif 000031
【図１６Ｃ】
2014081934.tif 000032
【図１６Ｄ】
2014081934.tif 000033
【図１７Ａ】
2014081934.tif 000034
【図１７Ｂ】
2014081934.tif 000035
【図１８Ａ】
2014081934.tif 000036
【図１８Ｂ】
2014081934.tif 000037
【図１９Ａ】
2014081934.tif 000038
【図１９Ｂ】
2014081934.tif 000039
【図２０Ａ】
2014081934.tif 000040
【図２０Ｂ】
2014081934.tif 000041
【図２１】
2014081934.tif 000042
【外国語明細書】
2014081934000001.pdf
2014081934000002.pdf
2014081934000003.pdf
2014081934000004.pdf