(58)【調査した分野】(Int.Cl.,DB名)
入力変数ノード(120)、出力変数ノード(128)、および関係ノード(114)を含み、前記変数ノード(120)と前記関係ノード(114)がアーク(110)によって相互連結される二部グラフ(106)によって表されるデータ依存型制約ネットワーク(100)の条件付き計算計画(102)を決定するためのプロセッサベースのシステムであって、
前記計画(102)の開始点を表す入力として変数ノード(120)を指定し、前記計画(102)によって計算されるべき出力として変数ノード(120)を指定するように構成された変数ノード(120)指定子と、
前記二部グラフ(106)の逆方向チェイニング検索を使用する前記入力変数ノード(120)から前記出力変数ノード(128)への計画(102)を決定するように構成された計画(102)決定子と
を備えるシステム。
入力変数ノード(120)が指定されない場合、前記計画(102)決定子は、前記出力変数ノード(128)の値に影響を及ぼす前記制約ネットワーク(100)におけるすべての前記入力変数ノード(120)からの前記計画を決定するように構成され、
前記計算計画(102)が所望されるワールドセット(140)を指定するように構成されたワールドセット(140)指定子をさらに備え、
前記ワールドセット(140)が指定されない場合、前記計画(102)決定子は、前記出力変数ノード(128)が決定済みの状態にある前記ワールドセット(140)を決定するように構成される請求項9に記載のシステム。
前記計画を決定すると、前記計画(102)決定子は、入力リスト(220)、出力リスト(218)、スタブキュー、および計画(102)キューを提供するように構成され、
前記入力リスト(220)は、入力変数と入力変数ワールドセット(140)との間の関連付けを備え、入力変数ワールドセット(140)が前記入力変数が独立型である最大ワールドセット(140)であり、1つまたは複数の出力変数(122)が前記ワールドセット(140)の前記入力変数(122)に依存し、
前記出力リスト(218)は変数ノード(120)と前記変数ノード(120)が決定されている前記最大ワールドセット(140)との間の関連付けを備える要素を有し、
前記計画(102)キューは、計画ステップと前記計画(102)ステップが実行されるべき前記ワールドセット(140)との間の関連付けを備える要素を有する計画(102)ステップのリストを備え、
計画ステップは、
前記変数ノード(120)のうちの単一のノードの値を計算するために計算方法に関連付けられているアーク(110)、および
コンポーネント(132)内の複数の前記変数ノード(120)の値を同時に計算するために計算方法に関連付けられている前記コンポーネント(132)
のうちの1つを備え、
前記スタブキューは、スタブ変数ノード(120)とワールドセット(140)との間の関連付けを備える要素を有し、スタブ変数(122)は、1つまたは複数の計画(102)ステップにおいて必要とされるが、指定された入力変数(122)のいずれからも独立している任意の変数(122)であり、前記スタブ変数(122)に関連付けられている前記ワールドセット(140)は、前記1つまたは複数の計画ステップを評価するために前記スタブ変数(122)が必要とされる前記ワールドセット(140)であり、
前記入力変数ノード(120)が引数として指定される場合、前記計画(102)決定子は、検索パスで導かれた進展ワールドセット(140)を前記入力変数(122)に関連付けられている前記ワールドセット(140)と結合することにより、指定された入力変数(122)に関連付けられている前記ワールドセット(140)を更新するようにさらに構成される請求項9に記載のシステム。
前記計画(102)決定子は、前記二部グラフ(106)の前記逆方向チェイニング検索中に、前記出力変数ノード(128)で開始するように構成され、前記出力変数ノード(128)は、指定されたワールドセット(140)および1つまたは複数の入アーク(110)を有し、
前記計画(102)決定子は、前記出力変数ノード(128)が前記指定されたワールドセット(140)の全体について決定された状態にある場合、前記出力変数ノード(128)および前記指定されたワールドセット(140)を前記出力リスト(218)に追加することにより前記出力リスト(218)を更新するように構成される請求項11に記載のシステム。
前記計画(102)決定子は、逆方向チェイニング検索中に、所与のワールドセット(140)について、変数ノード(120)の前記計画(102)を見出す、コンポーネント(132)の前記計画(102)を見出す、関係ノード(114)の前記計画(102)を見出す、およびアーク(110)の前記計画を見出すという一連の操作を再帰的に実行することにより、検索パスに沿って逆方向に各々の入アーク(110)に従う間に、前記計画を更新するように構成され、所与の変数ノード(120)に関連付けられている前記入アーク(110)を使用可能にするワールドセット(140)は互いに素であり、
前記計画(102)決定子は、前記計画(102)を更新する間、前記検索パスに沿った適切なワールドセット(140)を前記検索パスの追加の要素の使用可能ワールドセットとの進展ワールドセットの論理積として保持するように構成され、前記追加の要素は変数ノード(120)、コンポーネント(132)、関係ノード(114)、およびアーク(110)を備え、
前記計画(102)決定子は、各入アーク(110)について、前記入アーク(110)がコンポーネント(132)の一部である場合にコンポーネント(132)の計画を見出すか、または前記入アーク(110)がコンポーネント(132)の一部ではない場合に関係ノード(114)の計画(102)を見出す請求項12に記載のシステム。
前記計画(102)決定子は、コンポーネント(132)先行のすべてのアーク(110)の計画(102)を見出し、前記関係ノード(114)のすべての入アーク(110)の計画(102)を見出し、状態変数(124)への前記ワールドセット(140)の依存性を除去するように構成され、
前記状態変数(124)はブール変数(122)、有限ドメインにわたり計数値を有するカテゴリ変数(122)の少なくとも1つを備える請求項13に記載のシステム。
前記計画(102)決定子は、前記逆方向チェイニング検索中に、指定された入力変数ノード(120)に到達するか、または指定された入力変数ノード(120)が提供されない場合は独立の入力変数ノード(120)に到達すると、検索パスの逆の順序で、前記アーク(110)またはコンポーネント(132)および関連するワールドセット(140)を追加することによって計画(102)キューを更新するように構成され、
前記計画(102)決定子は、前記逆方向チェイニング検索中に、計画(102)ステップの先行アーク(110)で開始する任意の検索パスが、指定された入力変数ノード(120)で終了するかどうかを留意して、終了する場合には、スタブ変数(122)および関連するスタブワールドセット(140)で前記スタブキューを更新するように構成され、
前記スタブ変数(122)は、検索パスが前記指定された入力変数(122)のいずれでも終了しない任意の他の先行アーク(110)に関連付けられている変数(122)を備え、
前記スタブワールドセットは、前記検索パスの前記ワールドセット(140)の論理和を備える請求項11に記載のシステム。
【発明を実施するための形態】
【0018】
これ以降、本開示のさまざまな実施形態を説明することを目的として表示されている図面を参照すると、
図1Aに示されるのは、1つの関係ノード114および各々アーク110によって関係ノード114に連結されている5つの変数ノード120を有するデータ独立型制約ネットワーク101を示す図である。関係ノード114は、等値制約R1または方程式を表す。各々の変数ノードx、a、S、b、およびyは、変数を表す。
図1Bは、
図1Aの等値制約R1を示し、条件は等値制約内に組み込まれる。データ独立型制約ネットワーク101において、任意の変数の値122を計算するために使用される制約の適用可能性は、制約ネットワーク100においてその他の変数の値122に依存しない。
【0019】
図2Aは、アーク110によって相互連結されている関係ノード114および変数ノード120を有する二部グラフ106として表されるデータ依存型制約ネットワーク100を示す図である。関係ノード114は、等値制約R1a、R2aを表す。変数ノード120は、5つの変数x、a、S、b、およびyを表す。
図2Bは、
図2Aの関係ノード114により表される等値制約116を示す。データ依存型制約ネットワーク100において、等値制約116は、ブール条件118が満たされる場合に限りアクティブである。たとえば、
図2Bに示されるように、S=s1である場合にR1aはアクティブであり、S=s2である場合にR2aはアクティブである。変数Sは、等値制約116の使用可能条件に使用される特殊変数として定義される状態変数124である。状態変数124は、ブール変数(図示せず)、または制約ネットワーク100に知られている有限ドメイン(たとえば、状態のセット)にわたり計数値を有するカテゴリ変数136を備える。
【0020】
図3は、等値制約R1、R2、R3、およびR4を表す4つの関係ノード114、および7つの変数V1、V2、V3、V4、P、Q、およびSを表す7つの変数ノード120を有するデータ依存型制約ネットワーク100の例である。各関係ノード114は、制約がアクティブとなるために真であるべき暗黙の状態変数124を持つ論理表現が先行する、たとえばR2のような制約の名前を含む。1つの例において、等値制約116は、以下の条件を有することができる。
R1: 無条件に: V2=V1
R2: S=s1またはQ=q1である場合: V3=V2+2:
R3: 無条件に: S=If(V1<10、s1、If(V1<20、s2、s3))
R4: P=p1である場合、 Q=If(V4<5、q1、q2)
【0021】
図3の制約ネットワーク100において、変数P、Q、およびSは、上記で示される有限セット内の計数値を有する状態変数124である。上記の例において、Pは値{p1、p2}にわたり、Sは値{s1、s2、s3}にわたり、Qは値{q1、q2}にわたる。
【0022】
図4Aは、
図3の制約ネットワーク100を示す図であって、太線のアーク110が入力変数ノードV1から出力変数ノードV3への計算計画102に含まれうるステップ(1)、(2)、および(3)を示している。本開示において、入力変数ノードは、同義的に、入力変数、入力ノード、または入力と称される。出力変数ノードは、同義的に、出力変数、出力ノード、または出力と称される。データ依存型制約ネットワークは、同義的に、制約ネットワークまたはネットワークと称される。条件付き計算計画は、同義的に、条件付き計画、計算計画、または計画と称される。
【0023】
有利なことに、本開示において、入力126(たとえば、入力変数ノード)から出力128(たとえば、出力変数ノード)への計算計画102は、後段においてさらに詳細に説明されるように、検索分岐112(たとえば、アーク)が有効である状況の二部グラフ106の後方チェイニング検索を使用して二部グラフ106により表されるデータ依存型制約ネットワーク100に対して決定されてもよい。計算計画プロセスは、後段において説明される、所与の検索分岐112が所与のワールドセットについて有効である状況を追跡するための相互に再帰的なルーチンの使用を伴う。後段において説明されるように、ワールド138(
図7)は、制約ネットワーク100内のすべての状態変数124の値の完全な指定を備える。ワールドセット140(
図7)は、ワールド138のセットであり、状態変数124を伴う完全論理式(WFF)142(
図7)によって定義される。
図4Aにおいて、破線アーク110は、検索状態の状態変数124への依存を指示する。本開示において、変数は、ワールドセットのすべてのワールドにおいてそれぞれ依存型、独立型、または不確定である場合、ワールドセットで依存型、独立型、または不確定である。依存型、独立型、または不確定である変数に関連付けられている最大ワールドセットは、変数がそれぞれ依存型、独立型、または不確定であるすべてのワールドのセットである。
【0024】
その他の有利な配置において、データ依存型制約ネットワーク100の条件付き計算計画102を決定する方法はまた、入力変数ノード120、出力変数ノード128、および関係ノード114を含み、変数ノード120と関係ノード114がアーク110によって相互連結される二部グラフ106によって表されてもよい。この方法はまた、計算計画102が所望される出力変数ノード128を指定すること、およびまた、出力変数ノード128の値を計算するために計画102の計算ステップが所望される入力変数ノード120を指定することを含むことができる。加えて、方法はさらに、計画102が所望されるワールドセット140を指定し、二部グラフの逆方向チェイニング検索を使用して入力変数ノード120から出力変数ノード128への計画102を決定することができる。
【0025】
図4Bは、
図4Aの制約ネットワーク100の入力126変数ノードV1から出力128変数ノードV3への計算計画102を示す。本明細書において開示されるように、制約ネットワーク100の計画102は、アーク110のリスト、およびアーク110に添付されている関係(たとえば、関係ノードによって表される等値)がアーク110に添付されている変数122を計算するために使用されるという条件を備える。計画102はまた、二部グラフ106の基本サイクルを表す強成分132のリスト(
図6B)を含むことができる。
【0026】
計画102において、アーク110および/または強成分132の各々は、計画102によってすでに計算された変数122の値に基づくか、または計画102の外で他に使用可能な変数122に基づいて、計画102のステップの適用可能性を確認することができるような方法で、順序付けられてもよい。計画102の外で使用可能な変数122は、計画102へのスタブ130として説明される。スタブ130は、計画のステップのすぐ上流に位置しているが、計画102には属していない。スタブ130の値は、計画102の計算を実行するために必要とされる。
図4Aにおいて、Qは、変数V1から変数V3への計画へのスタブ130である。変数V3は、S=s1またはQ=q1のいずれでもない場合の例(
図4A)の事例のように、計画102がV1からV3への計算パスを有していないときのスタブ130の特殊事例である。
【0027】
図5は、重複する強成分108が破線で囲まれている領域を有するデータ依存型制約ネットワーク100を示す図である。
図5の制約ネットワークはまた、関係ノード114と変数ノード120の間に代替の方向111を有するアーク110を含む。本明細書において開示される制約ネットワーク100において、各々の等値制約116は、状態変数124のブール条件118が先行する等値制約116の名前を持つ四角形として示される。たとえば、
図5において、左上側の等値制約A2は、状態変数S=s1である場合にアクティブである。等値制約A2aは、状態変数S=s2である場合にアクティブである。T:R2におけるような表記Tは、等値制約R2が無条件にアクティブであり、真の状態にあることを指示する。
【0028】
図6Aは、
図5の制約ネットワーク100を示す図であって、アーク110および強成分132のいくつかが太線で示され、そのようなアーク110および強成分132が入力変数ノード「バー」から出力変数ノードv5への計画102のステップに含まれていることを指示する。
図6Bは、
図6Aの制約ネットワーク100の入力「バー」から出力v5への計画102の入力126、出力128、および特定のステップの値を一覧する図表である。また示されているのは、計画102のステップのすぐ上流に位置しているが、計画によって計算されない変数122である計画102へのスタブ130である。
図6Bの図表において、S、y1、y3、v2、v7、およびv5は、「バー」からv5への計画へのスタブ130である。
【0029】
図7を参照すると、本開示において、ワールド138は、制約ネットワーク100内のすべての状態変数124の値の完全な指定として定義される。一例として、Qがブール変数であり、Sが{s1、s2、s3}の可能な値によるカテゴリ変数である場合、ならびにQおよびSが制約ネットワーク100内の状態変数124のみである場合、以下のような6つの可能なワールドがある。
1. Q And S=s1
2. Q And S=s2
3. Q And S=s3
4. Not(Q) And S=s1
5. Not(Q) And S=s2
6. Not(Q) And S=s3
【0030】
図7において、示されているのは、ブール状態変数Qおよび{s1、s2、s3}の値によるカテゴリ状態変数Sを伴うワールドセット140を一覧する表である。上記で示されているように、ワールドセット140は、状態変数124を伴う完全論理式(WFF)142によって定義される。ワールドセット140は、演算子And、Or、Not、および状態変数124を伴う述語を伴う任意の論理形式を備えることができる。制約管理システムは、否定、および論理和を簡略化するために状態変数の有限ドメイン特性を同時に使用しながら、論理文を論理積正規形または論理和正規形に変換するためのルーチンを含むことができる。簡略化を実行する例は、2012年3月16日に出願され、「SYSTEM AND METHOD FOR RAPID MANAGEMENT OF LOGIC FORMULAS」と題する米国特許出願第13/422、335号において開示されてもよい。
【0031】
図8は、計算計画102(
図6B)が決定されうるデータ依存型制約ネットワーク100によって定義される二部グラフ106を示す図である。計画102を決定する方法は、計画102の開始点を表す入力126として変数ノード120を選択または指定することと、計画102によって計算されるべき出力128として変数ノード120を選択または指定することと、計画102が有効であると望むワールドセット140(
図7)を定義することとを含むことができる。入力126の変数が指定されない場合、出力128変数(複数可)の値に影響を及ぼす制約ネットワーク100内のすべての入力126変数は、入力126変数として使用する方法によって計算される。計画102を決定する方法は、指定された入力126変数がすでに独立した状態にある状態において開始する。
【0032】
本明細書における方法は、二部グラフ106の逆方向チェイニング検索中に入力126から出力128へ制約ネットワーク100経由で移動することまたはトラバースすることを含む。検索プロセス中に、関連するかまたは適切なワールドセット140は、検索の各分岐と共に保持される。検索は、変数122(たとえば、出力変数ノード120)で開始することができ、異なるワールドセット140ごとに、変数の入アーク110を通じて、変数の入アーク110に連結されている関係ノード114へと進むことができる。次いで、プロセスは、それらの入アーク110を通じてそれらの関係の上流を、関係の入アーク110に連結されている変数122へと移動する。プロセスは、後段においてさらに詳細に説明されるように、関係の上流に位置する新しい変数122において再帰的である。
【0033】
方法はさらに、計算計画102が所望されるワールドセット140を指定することを含むことができる。ワールドセット140が指定されない場合、方法は、出力128ノードが決定済みの状態にある最大ワールドセット140を自動的に計算する。方法によって計算または決定された結果は、入力リスト220、出力リスト218、スタブキュー234、および計画キュー236を含む計算計画102である。本開示において、入力リストは、入力キューと同義的に使用され、出力リストは出力キューと同義的に使用される。入力リスト220の要素は、入力126変数と入力126変数ワールドセット140との間の関連付けを備え、入力126変数ワールドセット140は入力126変数が独立型である最大ワールドセット140であり、出力128変数のうちの1つまたは複数はそのワールドセット140のその入力126変数に依存する。出力リスト218の要素は、変数ノード120と変数ノード120が決定されている最大ワールドセット140との間の関連付けを備える。計画キュー236は、計画ステップと計画ステップが実行されるべきワールドセット140との間の関連付けを備える要素を有する計画ステップの順序付きリストを備える。計画ステップは、(1)変数ノード120のうちの単一のノードの値を計算するための計算方法に関連付けられているアーク110、または(2)コンポーネント132の複数の変数ノード120の値を同時に計算するための計算方法に関連付けられているコンポーネント132のいずれかを備える。スタブキュー234の要素は、スタブ変数ノード120とワールドセット140との間の関連付けを備える。スタブ130変数は、1つまたは複数の計画ステップにおいて必要とされるが、指定された入力126変数のいずれからも独立している任意の変数122であり、そのスタブ130変数に関連付けられているワールドセット140は、1つまたは複数の計画ステップを評価するためにスタブ130変数が必要とされるワールドセット140である。
【0034】
本明細書において開示される方法において、入力126が方法への引数として指定される場合、方法は、入力126を任意の指定されているワールドセットまたはTrueのワールドセットと共に入力リスト220に追加することによって、入力リスト220を更新する。方法は、出力変数ノード128が指定されたワールドセット140の全体について決定された状態にある場合、出力変数ノード128および指定されたワールドセット140を出力リストに追加することによって出力リストを更新し、次いで、所与のワールドセット140内の変数ノード120の計画を見出す、所与のワールドセット140内のコンポーネント132の計画を見出す、所与のワールドセット140内の関係ノード114の計画を見出す、および所与のワールドセット140内のアーク110の計画を見出すという操作を再帰的に実行することにより、検索パスに沿って逆方向チェイニング検索を使用して、条件付き計画102を更新する。逆方向チェイニング検索中に、本明細書において開示される方法は、計画ステップを追加する、計画スタブを追加する、計画入力を追加する、および計画出力を追加する、という操作を使用して、条件付き計画102を更新する。そのような操作中に適用されるワールドセット140は、後段において説明されるように、アーク110および関係114条件の特性に従って、逆方向チェイニング検索中に発展する。前述のプロセスがすべての出力128変数について完了すると、方法は、
図9A〜
図20Bで示され、後段においてさらに詳細に説明されるように、計画102を完了して、完了した条件付き計画102を返すための「FinalizePlan」214ルーチンを含む。
【0035】
逆方向チェイニング検索を備える再帰的操作は、変数ノード120について計画102を見出すことで開始し、その後には検索パスに沿って後方へインフローアーク110が続く。本開示において、インフローアーク110は、同義的に、入アーク110と称される。所与の変数ノード120に関連付けられているインフローアーク110の使用可能ワールドセット140は、必然的に、互いに素であることに留意されたい。インフローアーク110に沿って次の要素に使用されるワールドセット140は、アークの使用可能ワールドセットと入ワールドセットの論理積となる。各インフローアーク110は、アーク110がコンポーネント132の一部である場合に、コンポーネント132の計画を(たとえば、
図14Aの「FindPlanForComponent」222ルーチンを使用して)見出すこと、またはアーク110がコンポーネント132の一部ではない場合に、関係の計画を(たとえば、
図15Aの「FindPlanForRnode」224ルーチンを使用して)見出すことに至る。次いで、方法は、場合に応じて、コンポーネント132先行のすべてのアーク110または関係インフローアーク110で、ルーチン「FindPlanForArcs」228(
図16A)を呼び出し、必要に応じて状態変数依存を除去する。
【0036】
検索パスが関係ノード114、コンポーネント132、変数ノード120を経由して、またはアーク110に沿ってトラバースする際、方法は、パスに沿って適切なワールドセット140を、パス内の要素の各々の使用可能ワールドセット140との進展ワールドセット140の論理積として保持する。方法は、計画ステップの先行アーク110で開始する任意の検索パスが、指定された入力126変数ノード120で終了するかどうかを最初に留意または決定して、終了する場合には、スタブ変数および関連するスタブワールドセット140でスタブキュー234を更新する。スタブ変数は、検索パスが指定された入力126変数のいずれでも終了しない任意の他の先行アーク110に関連付けられている変数を備える。スタブワールドセットは、それらの検索パスのワールドセット140の論理和を備える。
【0037】
計算計画102を見出す(たとえば、決定する)ための方法またはプロセスは、
図8を参照して例示により説明されてもよい。変数ノードv4からv3への計算計画102を決定するためのプロセスにおいて、計画102は、Falseワールドセットに変数v4を持つ入力126リストで初期化されてもよい。ワールドセットは、後に、検索パスが異なるワールドセットでv3からv4に決定される際に修正されてもよい。プロセスは、Trueのワールドの変数ノードv3において開始することができ、v3の入アークR2−>v3およびR6−>v3に沿って検索することを含むことができる。一般性を失うことなく、第1の検索R6−>v3が、S=s2^Q=q2の関連するワールドセットを有することが仮定される。検索は、入力ノードのうちの1つが任意のパスに沿って見出される場合に「成功(success)」を返して、R6(v5−>R6、Q−>R6、S−>R6)への入アークまで続行することができる。たとえば、プロセスは、関連するワールドセットTrueでv5−>R6を検索することを含むことができる。Trueを現在のワールドセットS=s2^Q=q2と結合することで、S=s2^Q=q2^Tとなり、これはS=s2^Q=q2に簡略化する。
【0038】
引き続き
図8を参照すると、プロセスは、v5の上流アークの検索を続行することができ、そこには唯一のR−>v5があり、以前v4に関連付けられたワールドセット140を現在の検索分岐に沿ってv4に到達するために使用されたワールドセット140と分離する計画入力リスト220にv4が追加されるように、最終的にワールドセットS=s2^Q=q2のノードv4で終了する。この段階において、ワールドセット140は、(S=s2^Q=q2)vFalseであり、これはS=s2^Q=q2に簡略化する。プロセスを続行することで、結果として、ワールドセットP=p1^S=s2、およびその他のワールドセット140のv4に到達することになる。最終の結果は、v4が、ワールドセット(P=p1^Q=q2)V(P=p1^S=s2)のv3への計画への入力となり、このワールドセットの否定には計画がない。
【0039】
本開示において、システムおよび方法は、状態変数124が検索パスで遭遇され、状態変数124への検索分岐112のワールドセット140が同じ状態変数を含むシナリオを処理するための手段を有利にもたらす。そのようなシナリオは、Q−>R6アーク110に上昇し、計画が引き続きQに必要とされる場合の
図8において説明される。このシナリオにおいて、Qのような状態変数124を決定するための計画の実行は、状態変数124を計算することの先行のいずれの状態変数124の値に依存することができないので、Qは、さらに先に進む前にワールドセット140から除去される必要がある。したがって、新しいワールドセット140は、S=s2のみになる。プロセスは、Qの入アークをR4まで上昇することを含み、P=p1であるR4の使用可能状態をS=s2と結合して、P=p1^S=s2を返す。入アークを上昇することで、再度状態P=p1^S=s2のv4に到達する。異なる検索分岐は、状態S=s1^P=p1のv4に到達する。Qの依存性は、ノードQを経由する場合に除去される。
【0040】
本明細書において開示されるシステムおよび方法により提供されるさらなる利点は、関係が状態変数124に依存しない場合であっても、関係から所与の状態変数124への検索分岐112の追加である。そのような検索分岐112は、その状態変数124が、その関係に至る検索分岐112に関連付けられているワールドセット140に含まれる場合に追加される。追加された検索分岐112は、ゴーストアーク110として定義され、
図8において破線フォントで示される。そのような検索分岐112を追加するための要件は、関係の実行が状態変数124を含むワールドセット140によって条件付けされる場合に、状態変数124が関係を経由する計画102の先行である必要があるという要件の結果である。
【0041】
本開示において、提供されるのは、二部グラフ106によって表されるデータ依存型制約ネットワーク100(
図8)の入力変数122のユーザ指定のセットから出力変数122(
図8)のユーザ指定のセットの値を計算するための計算計画102(
図6B)を作成、決定、または見出すための方法である。制約ネットワーク100内の1つまたは複数の等値制約の存在は、制約ネットワーク100内の1つまたは複数の変数122の値に依存することができる。開示される方法の重要な利点は、従来の条件付き計画方法に必要とされる計画および計算の混合を回避することである。計画と計算の混合を回避することは、結果として、設計空間のさまざまな領域を探索するトレード研究中に計算ステップを実行するために必要とされる時間の大幅な短縮をもたらす。
【0042】
本明細書において開示されるシステムおよび方法は、システムおよび方法の操作に必要とされるデータ依存型制約ネットワーク100(
図8)の特性に条件を課す。制約ネットワーク100内の各々の関係へのデータ依存条件は、前述のように、有限ドメインにわたり基本述語を連結するAND、OR、およびNOT演算子を使用して形成される論理文である完全論理式(WFF)によって指定される。本開示において、等値制約116(
図8)の条件に伴う任意の変数122の値は、既知の有限範囲にわたる必要がある。たとえば、極超音速車両研究におけるエンジンの値は、「ロケット」、「ラムジェット」、「スクラムジェット」のエンジンタイプ、およびその他のエンジンタイプごとに異なる場合もある。空力抵抗のような連続値を持つ変数122は、関係の条件付け値として直接使用することはできない。それどころか、本開示において、そのような変数122は、条件付けの目的で有限集合に量子化されてもよい。たとえば、量子化された変数「dragLevel」は、dragLevel=Case({drag<x1、”negligibleDrag”}、{drag<=x2、”lowDrag”}、{Else、”highDrag”})のような制約で定義されてもよく、次いで、異なる等値関係がdragLevlの値に依存する飛行動作を計算するために条件付けされてもよい。
【0043】
これ以降、
図9A〜
図20Bを参照すると、示されているのは、
図8に示される二部グラフ106と類似する二部グラフにより表されるデータ依存型制約ネットワーク100(
図8)の計算計画102(
図6B)を決定するための方法において実施されうるルーチンおよび対応する擬似コードである。
図9A〜
図20Aに示されるルーチンは、計算計画102の決定を容易にするための1つまたは複数の関数を含むことができる。そのようなルーチンは、方法のプログラミング命令に書き込まれてもよく、および/またはルーチンは、基礎をなすプログラミング言語に含まれてもよい。以下の項目は、ルーチンに含まれうる関数、オブジェクト、およびオブジェクト属性の簡単な説明を備える。
rnode: 二部グラフの関係ノード
vnode: 二部グラフの変数ノード
arc: 所与のvnodeを所与のrnodeに連結するアーク
graph: 最上位の二部グラフまたはそのグラフ内の強成分のいずれか
ArcRnode(arc): 所与のアークに連結されたrnode
ArcVnode(arc): 所与のアークに連結されたvnode
RnodeArcs(rnode): 所与のrnodeに連結されたアークのセット
VnodeArcs(vnode): 所与のvnodeに連結されたアークのセット
Union(ws[1]、ws[2]、…): ワールドセットws[1]、ws[2]、...の入力リストに指定されているすべてのワールドの論理和または和集合
Intersection(ws[1]、ws[2]、…): ワールドセットws[1]、ws[2]、...の入力リストに指定されているすべてのワールドの論理積または共通集合
ComponentVnodes(component): 強成分内にあるvnode
ComponentPredecessorArcs(component): コンポーネント使用可能ワールドセットの関係を指し示すアークとして定義された強成分の先行アーク
EnablingWorldSet(object): オブジェクトが使用可能なワールドセット。これはvnode、rnode、コンポーネント、およびアークについて定義される
WorldSetStateVariables(worldSet): 指定されたワールドセットに固有の状態変数
【0044】
本開示において、計算計画102(
図6B)を決定するためのシステムおよび方法は、ノードのワールドセット属性を許容するマッピング(図示せず)のセットを保持することを含む。たとえば、そのようなワールドセット属性は、変数ノードが独立しているワールドセット、変数ノードが不確定であるワールドセット、変数ノードが異なる等値制約によって決定されているワールドセット、およびその他の属性のような変数ノードの状況を含むことができる。ワールドセットマッピングのドメインは、変数ノードが存在を有するすべてのワールドの論理和を備えるノード使用可能ワールドセットの区分である。たとえば、使用可能ワールドセット「rnodeWS」を持つ関係ノードを所与として、出アーク属性(たとえば、関係ノードの出アークが所与のワールドセットで関係ノードが定義されている変数を指し示す)のワールドセットマッピングは、以下のように定義されてもよい。
【0046】
本開示において、制約ネットワーク100は、上記で説明されるワールドセット属性マップを保持し、以下の関数によって表されるような、指定されたワールドセットに関して属性マップを再区分するための手順を含む。
output Map<−RepartitionMap(inputMap、worldSet)
outputMapは一般に、outputMapがworldSetに限定されることを除いて、inputMap(図示せず)と同じである。本開示において、再構築は、元のinputMap内の要素でworldSetが交差する場合、一部の共通部分が空となりうるので、結果として得られるマップに存在しないこともあるという意味においてoutputMapはworldSetの区分であると保証することを要求されてもよい。
【0047】
本開示において、制約管理システムまたは制約ネットワーク100(用語は本明細書において同義的に使用される)は、以下のルックアップ関数を含むことができる。
WorldSetValue(attributeMap、worldSet)
この関数は、worldSetがattributeMap内のワールドセットのうちの1つによってのみ包含される(すなわち、その真部分集合と同等であるかまたは真部分集合である)場合に限り、所与のワールドセットによって指定された属性を返すことができ、それ以外の場合、ルックアップ関数WorldSetValue230(
図15A)は空を返す。
【0048】
図9B〜
図20Bに示される擬似コードの場合、以下のワールドセット属性マップは、制約ネットワーク100によって管理されてもよい。
InflowMap(vnode): ワールドセットから、そのワールドセット内の所与のvnodeに方向付けられるアークへのマッピング。
OutflowArcs(rnode): ワールドセットから、そのワールドセット内の関係からのアウトフローアークへのマッピング。所与のワールドセットのアウトフローアークは、方向が所与のワールドセット内のrnodeから逸れて指し示しているアークでしかない。
StatusMap(vnode): ワールドセットから、所与のワールドセット内のvnodeの状況属性へのマッピング。
ArcGraphs(arc): アークは、さまざまなワールド状況において多数の強成分および非強成分にありうる。このワールドセット属性は、ワールドセットから、所与のワールドセットに対してアークがある強成分へのマッピング、ならびにワールドセットから、アークがいかなる強成分にないワールドセットの最上位制約グラフへのマップを記録する。
ArcDirectionMap(arc): ワールドセットから、vnodeに向かう、rnodeに向かう、または無向のアークの方向へのマッピング。
【0049】
図9B〜
図20Bに示される擬似コードはまた、以下の属性を有するオブジェクトとして定義されうる計画の特定のデータ構造を定義するための以下の関数を含むこともできる。
inputQueue(plan): 計画への入力変数のセット。
outputQueue(plan): 計画への出力変数のセット。
stepStack(plan): 計画のステップオブジェクトの順序付きセット。各ステップオブジェクトは、ペアの<worldSet、ステップ>であり、ステップは、我々がworldSet内のワールドの1つにいる場合に実行されるべきであり、ステップは、上流rnodeを所与のworldSetのそのすぐ下流のvnode、またはそのworldSetの強成分に連結する。
stubQueue(plan): 計画のスタブ変数のセット。スタブ変数は、計画の一部のステップのすぐ上流に位置している(すなわち、アークまたは強成分)が、計画入力のステップの下流ではない。スタブ変数の値は、計画ステップを実行する際に必要とされる。
【0050】
図9A〜9Bを参照すると、
図9Aに示されているのは、データ依存型制約ネットワーク100(
図8)の計算計画102(
図6B)を見出す(たとえば、決定する)ための方法に含まれうる1つまたは複数の操作を有する流れ図である。
図9Bは、
図9Aと同じ方法で示されているデータ依存型制約ネットワーク100の計算計画102を見出す(たとえば、決定する)ための高水準ルーチン「FindPlan(graph、inputs、outputs、worldSet)」の擬似コードリストである。上記に示されるように、制約ネットワーク100は、アーク110(
図8)によって相互連結された変数ノード120(
図8)および関係ノード114(
図8)を含む二部グラフ106(
図8)により表される。「FindPlan」ルーチン200は、「inputs」(たとえば、入力変数ノード)から「outputs」(たとえば、出力変数ノード)への計画102を返すか、または「FindPlan」ルーチン200は、出力のうちの1つまたは複数が制約ネットワーク100で決定されていない場合、「Fail」を返す。ルーチン200の引数は、以下のものを含む。
graph: データ依存型制約ネットワークによって定義された二部グラフを表す構造。
outputs: 計画が計算する変数のリスト。
inputs: 計画の開始点を備える変数のリスト。
worldSet: 計画が有効であると決定されるワールドセット。
【0051】
ルーチン「FindPlan」200は、以下に説明されるように、計画構造202を初期化することを含むことができる。「FindPlan」200ルーチンにおいて、入力126が引数リストで指定されない場合、計算計画102は、出力128の上流に位置するすべての独立変数122を入力126として含む。入力126が指定される場合、計算計画102の入力126は、指定された引数リストの入力に限定される。各入力126について、ルーチン「AddPlanIput」208は、以下に説明されるように、計画102の入力キュー220に変数ノード120を追加するために実施されてもよい。各出力128について、ルーチン「VnodeDeterminedWorldSet」204は、変数ノード120の状況が決定されているワールドセット140を決定するために実施されてもよい。ルーチン「AddPlanOutput」206はまた、出力128の出力キューを更新するために、その出力128ごとに実施されてもよい。加えて、各出力128について、ルーチン「FindPlanForVnode」210は、所与の変数ノード120の計画102を見出すために実施されてもよい。ルーチン「AddPlanStub」212はまた、以下に説明されるように、逆方向チェイニング検索プロセス中に見出された各スタブ変数についてスタブキューを更新するために実施されてもよい。ルーチン「FinalizePlan」214は、「FindPlan」で決定された計画ステップの順序(図示せず)を逆転させることによって計画102を最終決定することができる。
【0052】
図10A〜10Bを参照すると、
図10Aに示されているのは、ルーチン「VnodeDeterminedWorldSet(worldSet、vnode)」204に含まれうる1つまたは複数の操作を有する流れ図である。ルーチン204は、(独立または依存のいずれかで)変数ノード120の状況が決定されているワールドセット140を決定するように構成されてもよい。
図10Bは、
図10Aの流れ図に示されるルーチン「VnodeDeterminedWorldSet」204の擬似コードのリストである。ルーチンは、vnode120(すなわち、変数ノード)の状況が決定されているワールドセット140を返す。ルーチン204は、以下の引数を組み入れる。
worldSet: vnode状況マップを区分するために使用される入力ワールドセット。
vnode: 決定されたワールドセットが必要とされる変数ノード。
一般性を失うことなく、vnodeの状況属性マップは以下のとおりであると仮定される。
ws[1]−>status[1]、
ws[2]−>status[2]、
...
ここで、ws[j]は、vnodeの使用可能状態の互いに素な区分を形成するワールドセットである。さらに具体的には、
Union(ws[j]、j=1、…、n)= vnode使用可能ワールドセット、通常はTrueであり、
ws[i]≠Φ、
ws[i]Λws[j]=Φ、および
status[i]≠status[j]
【0053】
ルーチン「VnodeDeterminedWorldSet」204において、status[j]は、ノードがws[j]の値を指し示しているアーク110(
図8)を有する、ws[j]で独立である、ws[j]で依存であるかどうかなどを制約ネットワーク100(
図8)が決定できるようにする値の範囲にわたる。アーク110は、アーク110がそれらのrnode114(
図8)に方向付けられる、それらのvnode120(
図8)に方向付けられる、または同時であるが異なるワールドセット140で無向であってもよいという意味において方向属性マップを有する。本開示において、vnode120は、(a)そのワールドセット140またはそのスーパーセットで「独立」であるか、または(b)方向が所与のワールドセット140のvnode120に向けられ、かつ、アーク110に取り付けられたrnode114のすぐ上流(すなわち、所与のワールドセット140に関して上流)のvnode120がワールドセット140にあると決定されるアーク110を有する場合のいずれかに限り、vnode120はワールドセット140で状況「決定済み」を有することができる。
【0054】
図11A〜11Bを参照すると、
図11Aに示されているのは、ルーチン「AddPlanOutput(vnode、worldSet、plan)」に含まれうる1つまたは複数の操作を有する流れ図である。ルーチン206は、計画102の出力キュー218を更新するように構成される。計画構造は、スタブキュー(図示せず)、計画キュー(図示せず)、および出力キュー218を含むことができる。
図11Bは、
図11Aの流れ図に示されるルーチン「AddPlanOutput」206の擬似コードのリストである。「AddPlanOutput」206は、関数「outputQueue」218を含むことができ、以下の引数を組み入れることができる。
vnode: 計画に追加される出力変数。
worldSet: vnodeが出力変数であるワールドセット。
plan: 変更される計画、その構造は後段において説明される。
【0055】
上記で示されているように、計画構造は、スタブキュー、計画キュー、および出力キューを保持する。各キューは、順序付きエントリのセットを備え、各エントリはワールドセット140およびワールドセット140に関連付けられている要素を含む。スタブキューおよび出力キュー218の要素は、変数122(
図8)である。計画キューの要素は、アーク110(
図8)、または計画のステップを表す強成分132(
図8)である。たとえば、以下のようになる。
outputqueue=
{<vnode[1]、ws[1]>、
<vnode[2]、ws[2]>、
...}
【0056】
図12A〜12Bを参照すると、
図12Aに示されているのは、ルーチン「AddPlanInput(vnode、specifiedInputs?、worldSet、plan)」に含まれうる1つまたは複数の操作を有する流れ図である。ルーチン208は、変数ノード120および関連するワールドセットを計画102の入力キュー220に追加するように構成される。
図12Bは、
図12Aの流れ図に示されるルーチン「AddPlanInput」208の擬似コードのリストである。vnode120が入力キューに存在しない場合、vnodeおよび関連するワールドセットは入力キューに追加され、vnode120がすでに存在する場合、その関連するワールドセット140は更新される。specifiedInputs?がFalseである場合、またはvnodeがすでに存在する場合、ルーチン208はTrueを返し、それ以外の場合ルーチンはFalseを返す。
【0057】
図13A〜13Bを参照すると、
図13Aに示されているのは、ルーチン「FindPlanForVnode(vnode、specifiedInputs?、worldSet、plan)」に含まれうる1つまたは複数の操作を有する流れ図である。
図13Bは、
図13Aの流れ図に示されるルーチン「FindPlanForVnode」210の擬似コードのリストである。ルーチン210は、以下の引数を組み入れることができる。
vnode: 計画が求められる変数ノード。
specifiedInputs?: 真である場合、入力のリストはユーザ指定の入力に限定される。偽である場合、変数が出力変数の上流に位置していれば、任意の独立変数は計画への入力となりうる。
worldSet: 計画が関連するワールドセット。
plan: 計画プロセスのこの要素によって変更されている計画構造。
【0058】
「FindPlanForVnode」210ルーチンは、
図14A〜
図16Dに示され、後段において説明されるルーチン「FindPlanForRnode」224、「FindPlanForArcs」228、および「FindPlanForComponent」222と相互に再帰的である。上記で示されているように、制約管理システムまたは制約ネットワーク100は、各vnode120についてインフローワールドセット属性マップを保持するように構成される。インフローワールドセット属性マップは、アーク110がそのワールドセット140のvnode120に向けて方向付けられるワールドセット140からアーク110へのマッピング、および/またはワールドセット140からvnode120がそのワールドセット140で独立であることを指示する:Independentのコードへのマッピングである。本明細書において開示される方法において、プロセスは、各インフローについてブール計画成功を収集して、vnode120のすべてのインフローにわたりループする。インフローのいずれかが成功を返す場合、失敗したインフローのワールドセット140の論理和は、vnode120がスタブ130として追加される場合であり、プロセスはそのようなvnode120から成功を返す。それ以外の場合、プロセスはそのようなvnode120から失敗を返す。計画102入力126(「AddPlanInput」208)の追加が成功する場合(すなわち、nilを返さない場合)、プロセスはその独立インフローから成功を返す。強成分132の存在によりインフローが小さく分割される場合、その断片は、別個のインフローであるかのように処理される。
【0059】
図14A〜14Bを参照すると、
図14Aに示されているのは、ルーチン「FindPlanForComponent(component、specifiedInputs?、worldSet、plan)」に含まれうる1つまたは複数の操作を有する流れ図である。ルーチン222は、ルーチンが強成分の計画102を見出すことに成功するかどうかに応じて、TrueまたはFalseを返すように構成される。
図14Bは、
図14Aの流れ図に示されるルーチン「FindPlanForComponent」222の擬似コードのリストである。ルーチンは、以下の引数を組み入れることができる。
component: 計画が所望される強成分。
specifiedInputs?: 真である場合、入力のリストはユーザ指定の入力に限定される。偽である場合、変数が出力変数の上流に位置していれば、任意の独立変数は計画への入力となりうる。
worldSet: 計画が求められるワールドセット。
plan: これまで検索で存在している計画構造。
【0060】
図15A〜15Bを参照すると、
図15Aに示されているのは、ルーチン「FindPlanForRnode(rnode、specifiedInputs?、worldSet、plan)」に含まれうる1つまたは複数の操作を有する流れ図である。ルーチン224は、指定されたワールドセット140でrnode114の計画を見出すかどうかに応じて、TrueまたはFalseを返すように構成される。
図15Bは、
図15Aの流れ図に示されるルーチン「FindPlanForRnode」224の擬似コードのリストである。ルーチン224は、以下の引数を組み入れることができる。
rnode: 計画が求められる等値制約(すなわち、関係ノード)。
specifiedInputs?: 真である場合、入力のリストはユーザ指定の入力に限定される。偽である場合、変数が出力変数の上流に位置していれば、任意の独立変数は計画への入力となりうる。
worldSet: rnodeの計画が求められるワールドセット。
plan:ルーチンによって変更され、これまで実施された検索の結果を含む計画構造。
【0061】
図16A〜
図16Dを参照すると、
図16A〜
図16Bに示されているのは、ルーチン「FindPlanForArcs110(stepObject、specifiedInputs?、arcs、worldSet、plan)」に含まれうる1つまたは複数の操作を有する流れ図である。ルーチン228は、入力引数stepObjectの計画を見出すように構成され、ここでステップはアーク110または強成分132のいずれかである。ルーチン228は、ルーチンが計画を見出すかどうかに応じて、TrueまたはFalseを返す。
図16C〜
図16Dは、
図16A〜
図16Bの流れ図に示されるルーチン「FindPlanForArcs」228の擬似コードのリストである。ルーチンは、以下の引数を組み入れることができる。
stepObject: 計画が求められ、アークまたは強成分のいずれかであるステップ。
specifiedInputs?: 真である場合、入力のリストはユーザ指定の入力に限定される。偽である場合、変数が出力変数の上流に位置していれば、任意の独立変数は計画102への入力となりうる。
arcs: 強成分またはstepObjectに連結されたrnodeの上流に位置するアークのセット
worldSet: 計画が所望されるワールドセット。
plan: ルーチンによって変更され、これまでの検索の結果を含む計画構造。
【0062】
図17A〜17Bを参照すると、
図17Aに示されているのは、ルーチン「AddPlanStub(vnode、worldSet、plan)」に含まれうる1つまたは複数の操作を有する流れ図である。ルーチン212は、指定されたワールドセット140でrnode114の計画102が見出されるかどうかに応じて、TrueまたはFalseを返すように構成される。
図17Bは、
図17Aの流れ図に示されるルーチン「AddPlanStub」212の擬似コードのリストである。ルーチン212は、変数ノード120(すなわち、vnode)をワールドセット140(すなわち、worldSet)の計画102のスタブされた変数122のセットに追加することにより計画構造を変更する。「AddPlanStub」212計画102は、スタブ130エントリのキューを保持し、各エントリは、変数ノード120が関連するワールドセット140の計画102のスタブ130であるという意味において変数ノード120とワールドセット140の関連付けである。ルーチン212は、そのエントリに関連付けられているワールドセット140と入力126ワールドセット140worldSetの論理和を形成することにより、計画102のスタブキュー234でvnode120の先在するエントリを変更する、またはルーチン212はペア<vnode、worldSet>の新しいエントリを追加する。
【0063】
図18A〜18Bを参照すると、
図18Aに示されているのは、ルーチン「AddPlanStep(stepObject、worldSet、predecessors、plan)」に含まれうる1つまたは複数の操作を有する流れ図である。ルーチン238は、指定されたワールドセット140でrnode114の計画が見出されるかどうかに応じて、TrueまたはFalseを返すように構成される。
図18Bは、
図18Aの流れ図に示されるルーチン「AddPlanStep」238の擬似コードのリストである。ルーチン238は、マップ「world−set−>step」のスタック「stepStack(plan)」を保持し、関連するワールドセット140が現在のデータ環境において真である場合、各ステップ(すなわち、アークまたは強成分)は計画が呼び出されるときに実行される。制約ネットワークの逆方向チェイニング検索中、スタックは、逆順に保持され、後段において説明されるようにルーチンFinalize(plan)を使用して検索プロセスの終わりに再配列される。ルーチン「AddPlanStep」238は、可能な限り早期、ただしすべてのその先行240の後に、ステップオブジェクトをスタックに置く。ルーチン238は、ステップオブジェクトが所与のワールドセット140で適用可能であるように、計画ステップスタックを破壊的に変更し、新しいかまたは変更済みのエントリを返す。ルーチン238は、以下の引数を組み入れることができる。
stepObject: 計画が呼び出される時に潜在的に実行される計画のステップを表すアークまたは強成分。
worldSet: 実行されるべき関連するステップの呼び出された計画のデータ環境において真である必要のあるワールドセット。
predecessors: 関係ノードのすぐ上流に位置する変数ノードであり、各変数ノードは、オブジェクトの値がワールドセットで依存するそのワールドセットにより条件付けされる。
【0064】
図18Bの擬似コードにおいて、関数Rest(list)は、同じリスト構造を返すが、リストの第2の要素で開始する。関数First(list)は、リストの第1の要素を返す。関数getObject(ws−>object)は、マップ要素ws−>objectでオブジェクトを返す。関数getWorldSet(ws−>object)は、マップ要素内のワールドセットを返す。
【0065】
図19A〜19Bを参照すると、
図19Aに示されているのは、ルーチン「StepWorldSetInPlan(stepObject、plan)」に含まれうる1つまたは複数の操作を有する流れ図である。「StepWorldSetInPlan」232ルーチンは、計画の入力126ステップオブジェクトに関連付けられているすべてのワールドセット140の論理和を返すように構成される。
図19Bは、
図19Aの流れ図に示されるルーチン「StepWorldSetInPlan」232の擬似コードのリストである。ルーチン232は、以下の引数を組み入れることができる。
stepObject: 関連するワールドセットが要求されている所与のオブジェクト。
plan: 所与のステップオブジェクトと適合するかどうか調査されている計画ステップを有する計画。
【0066】
制約ネットワーク100の計画102を決定するシステムおよび方法はまた、
図8に関して上記で説明されるように、状態変数124vnode120でworldSetの依存性を除去するための関数「RemoveStateDependence(vnode、worldSet)」(図示せず)を含むこともできる。有利なことに、関数「RemoveStateDependence」は無限ループを回避し、同時に、状態変数124が計算パスに必要とされるときにそのような状態変数124の値を計算するためのステップを計画102が確実に含むようにする。関数「RemoveStateDependence」は、以下の引数を組み入れることができる。
vnode: 依存性を除去するために必要とされる状態変数。
worldSet: 状態変数vnodeの値への可能な依存性を除去するために必要とされるワールドセット。
【0067】
「RemoveStateDependence」226関数は、Trueによりワールドセットの完全論理式(WFF)表現で指定された状態変数を伴うリテラルおよびリテラルの否定を置き換えて、結果を簡略化する。たとえば、WFFでSへの依存性を除去することで、「S=s1 And Q=q2」は「True And Q=q2」をもたらし、これは「Q=q2」に簡略化する。WFFでSへの依存性を除去することで、「S=s1 Or Q=q2」は「True Or Q=q2」をもたらし、これは「True」に簡略化する。
【0068】
「RemoveStateDependence」226関数の実施態様は、ワールドセット140を表すために使用されるデータ構造によって決まる。1つの例において、Lispリスト構造(すなわち、カリフォルニア州オークランドのFranz、Inc.社から市販されているAllegro Common Lisp)は、ワールドセット140を指定する完全論理式を表すために使用されてもよい。もう1つの例において、多次元ビットアレイ(図示せず)がワールドセットを表すために使用されてもよく、ビットアレイの各次元は、所与の状態変数に関連付けられてもよく、その次元の大きさは、状態変数がとりえる固有の値の数と等しい。
【0069】
この点で、計算ステップに関連付けられているWFFは、解決される必要のある方程式に関連付けられているWFFへの、論理和、論理積、および/または差分演算子の組み合わせによって取得されてもよい。そのようなWFFは、制約ネットワーク100のどの変数が独立であるかに応じて、極めて複雑になる可能性もあり、そのような命題WFFの迅速な操作および組み合わせを必要とすることがある。その他のWFFの組み合わせを通じて得られたWFFは、トレード研究中に効率的な計算のために簡略化を必要とする。この点において、WFFが数千の方程式を伴う比較的大規模なネットワークでさらに組み合わされるので、WFFの組み合わせを簡略化されない状態にしておくことは、結果としてメモリサイズを爆発的に増加させることもある。さらに、WFFが全体的に偽のWFFに単純化する場合、計算計画生成手順は、制約ネットワーク100の不必要な分岐を除去して、それによりコンパクトで効率的な計算計画102を作成することができる。
【0070】
そのようなWFF簡略化プロセスは、有限であるが大きいドメインにわたり大量の述語を有する論理式に適用される場合、計算量を著しく増大させることがある。WFFの論理積正規形またはWFFの論理和正規形を決定するための従来のアルゴリズムは、システム設計者に計算結果を比較的短期間(たとえば、数分)で提供するには不十分である。WFFの簡略化は、好ましくは、計算時間を短縮してシステム設計者がさまざまな設計のトレードを検討および調査するために使用可能な時間を増やすために、可能な限り迅速に実行される。完全論理式を簡略化するための時間の短縮は、加えて、より大規模で複雑な設計空間を調査する能力をシステム設計者にもたらすことができる。
【0071】
たとえば、極超音速車両の概念設計において、制約管理計画アルゴリズムには、多数の望ましいトレード研究の1つを計画中に膨大量の述語の数々の参照を含む多数のWFFを簡略化することが求められる。例のWFFは、各々の述語が2から20の可能な値を有する、わずか10から15の述語を有することができる。そのようなWFFは、同じ規模の深さで、同じ述語を5から10回構文的に参照することができる(たとえば、And(Or(And Or(P1=−p11、P2=p21..)...Or(And(P1=p13、Or(Not(P1=p13)...))))など。残念なことに、従来のアルゴリズムを使用してそのようなWFFを論理積正規形または論理和正規形に簡略化するには、1つの実施で10から30分のコンピュータ時間が必要である。従来のアルゴリズムを使用してWFFを簡略化するための比較的長期のコンピュータ時間は、設計者がより大規模で複雑な設計トレードを検討および調査するために使用可能な時間を直接的に減らしてしまう。
【0072】
有利なことに、完全論理式(WFF)の簡略化は、本明細書において開示され
図9A〜
図20Bに示されるデータ依存型制約ネットワークの計算計画をサポートすることができる。WFFを簡略化するプロセスは、入力WFF(図示せず)を初期ビットアレイ(図示せず)に変換することと、入力WFFを表すために必要ではない述語を除去することにより、初期ビットアレイを簡略化ビットアレイ(図示せず)に簡略化することと、簡略化ビットアレイを戻りWFF(図示せず)に変換することとを含むことができる。
【0073】
ビットアレイは、「1」または「0」の値を有するビット要素(図示せず)を有するアレイとして定義されてもよい。加えて、ビットアレイは、任意の次元数を含むことができる。各次元は、異なるサイズを有することができる。ブール述語(図示せず)の場合、対応するビットアレイの次元のサイズは2である。等値述語(図示せず)の場合、ビットアレイの次元のサイズは、ドメインの長さと等しい。論理ビットアレイは、ビットアレイに含まれる述語(たとえば、ブールおよび/または等値)のリストへのビットアレイの各次元のマッピングを含むビットアレイとして定義されてもよい。
【0074】
入力WFF(図示せず)は、アトミックな真またはアトミックな偽のWFF、アトミックなブール述語WFF、アトミックな等値述語WFF、否定演算子(NOT)を伴う否定WFF、論理積および論理和演算子ANDまたはORを伴う複合WFFを含むことができる。入力WFFの簡略化は、入力WFFの述語を決定することと、各々の述語に関連付けられているドメイン要素を決定することと、初期ビットアレイのビットアレイ次元を決定することと、内部プログラム(図示せず)を呼び出して、入力WFFに関連付けられているビットアレイ次元、述語、およびドメイン要素を有する初期ビットアレイを返すことによって、入力WFFを再帰的に処理することとを含むことができる。
【0075】
入力WFFが、単一のブール述語を備えるアトミックなWFFである場合、単一のブール述語は等値述語に変換されてもよい。入力WFFが、論理和演算子(OR)または論理積演算子(AND)に関連付けられているゼロまたはそれ以上のアトミックなWFFまたは複数の複合WFF、もしくは否定演算子に関連付けられている正確に1つのアトミックなWFFまたは複合WFFを備える複合WFFである場合、複合WFFの各オペランドは、アトミックなWFFに遭遇するまで再帰的に処理されてもよい。再帰的に処理されるWFFは、複合WFFの演算子が否定演算子(NOT)、論理積演算子(AND)、または論理和演算子(OR)のいずれであるかに従って組み合わされてもよい。次いで、初期ビットアレイは、各々のアトミックなWFFごとに返される。
【0076】
演算子が論理積演算子(たとえば、AND)または論理和演算子(たとえば、OR)である非否定の複合WFFの場合、組み合わされた初期ビットアレイのオペランドの数量が決定されてもよい。論理積演算子の場合、個々の初期ビットアレイのビット要素は、ビット要素が個々の初期ビットアレイの論理積(「AND」)と等しくなるような方法で組み合わされてもよい。論理和演算子の場合、個々の初期ビットアレイのビット要素は、ビット要素が個々の初期ビットアレイの論理和(「OR」)と等しくなるような方法で組み合わされてもよい。初期ビットアレイは、述語に関連付けられている複数のビットアレイ次元を含むことができる。
【0077】
初期ビットアレイは、入力WFFを表すために必要ではない述語を除去することにより簡略化されてもよい。この点において、初期ビットアレイの簡略化は一般に、ビットアレイ次元が折りたたみ可能であるかどうかを決定するために、各々のビットアレイ次元のサブアレイのビット要素を比較するなどのような、意味論的に冗長なビットアレイ次元を除去することによって、初期ビットアレイを折りたたむことを備えることができる。サブアレイのビット要素が等しい場合、サブアレイに関連付けられている次元は除去されてもよい。
【0078】
簡略化されたビットアレイは、述語のセットおよびそれらの各々のドメイン要素を所与として簡略化されたビットアレイを体系的に処理して、戻りWFFを構築することにより、論理和正規形(DNF)または論理積正規形(CNF)の戻りWFFに変換されてもよい。簡略化されたビットアレイの変換は、1の値を有する簡略化されたビットアレイのビット要素の合計数量を決定することと、ビット要素の合計数量の2分の1未満が1の値を有する場合に、簡略化されたビットアレイを論理和正規形(DNF)の戻りWFFに変換することとを備えることができる。簡略化されたビットアレイは、ビット要素の合計数量の少なくとも2分の1が1の値を有する場合に、論理積正規形(CNF)142の戻りWFFに変換されてもよい。
【0079】
有利なことに、データ依存型制約管理システムまたは制約ネットワークにおける完全論理式の簡略化は、結果として、完全論理式の論理和、論理積、および差分演算子の結果を簡略化するために必要とされる時間の大幅な短縮をもたらすことができ、特定のトレード研究を処理するために必要な時間を大幅に短縮することができる。処理時間の短縮は、設計者が、データ依存型制約ネットワーク100の本明細書において開示される計算計画の方法を使用して、総合的な方法でより大規模で複雑な設計空間を探索できるようにする技術的な効果をもたらす。
【0080】
図20A〜20Bを参照すると、
図20Bに示されているのは、ルーチン「Finalize(plan)」に含まれうる1つまたは複数の操作を有する流れ図である。ルーチン214は、上記で説明されるように、計画ステップスタックにプッシュされた計画ステップの順序を逆転させるように構成される。
図20Bは、
図20Aの流れ図に示されるルーチン「Finalize」204の擬似コードのリストを示す。
【0081】
図21を参照すると、示されているのは、プロセッサベースのシステム300またはその他の適切なコンピュータシステムのようなコンピュータ実施のプロセスにおいて、全体または部分的に、上記で説明される計算計画の方法を実施するためのシステムのブロック図である。プロセッサベースのシステム300は、データ依存型制約ネットワーク100(
図8)の上記で説明される計算計画ステップの1つまたは複数を実施することができる。プロセッサベースのシステム300は、上記で説明される操作またはステップの1つまたは複数を実施するために、プロセッサベースのシステム300に提供またはロードされうるコンピュータ可読プログラム命令324を実行することができる。非限定的な例において、プロセッサベースのシステム300および/またはコンピュータ可読プログラム命令324は、データ依存型制約ネットワーク100の計算計画102の定義を容易にすることができる。
【0082】
図21のブロック図は、制約ネットワーク100を表す二部グラフ106(
図8)で計算計画102(
図8)の決定を容易にすることができる有利な実施形態におけるプロセッサベースのシステム300を示す。プロセッサベースのシステム300は、変数ノード120(
図8)の状況が決定されるワールドセット140(
図7)を決定することができ、二部グラフ106の逆方向チェイニング検索中に1つまたは複数の入力126変数ノード120(
図8)から1つまたは複数の出力128変数ノード120(
図8)への計算計画102を決定することができる。
図21に示される実施形態において、プロセッサベースのシステム300は、1つまたは複数のコンポーネントブロックに通信可能に結合されて、そのようなコンポーネントブロック間のデータの転送を容易にするデータ通信パス302(たとえば、データリンク)を含むことができる。通信パス302は、コンポーネントブロックとプロセッサベースのシステム300のデバイスとの間のデータの転送を容易にする1つまたは複数のデータバスまたは任意の他の適切な通信パス302を備えることができる。
【0083】
図21を参照すると、非限定的な実施形態において、コンポーネントブロックは、1つまたは複数のプロセッサ304、メモリデバイス306、不揮発性ストレージデバイス308、通信デバイス312、入出力デバイス310、および表示デバイス314を含むことができる。システムはさらに、変数ノード指定子326、ワールドセット指定子328、および計画決定子330を含むことができる。上記で示されているように、変数ノード指定子326は、計画102の開始点を表す入力126として1つまたは複数の変数ノード120を指定すること、および計画102によって計算されるべき出力128として1つまたは複数の変数ノード120を指定することを容易にするように構成されてもよい。ワールドセット指定子328は、計算計画102が所望されるワールドセット140を指定することを容易にするように構成されてもよい。入力126(たとえば、入力変数ノード120)が指定されない場合、計画決定子330は、出力128の値に影響を及ぼす制約ネットワーク100のすべての入力126からの計画102を決定するように構成されてもよい。ワールドセット140が指定されない場合、計画決定子330は、変数ノード120の状況が決定済みの状態にあるワールドセット140を決定するように構成されてもよい。
【0084】
計画決定子330は、二部グラフ106の検索中に入力(複数可)126から出力(複数可)128への計画102を決定するように構成されてもよい。計画102を決定すると、計画決定子330は、上記で説明されているように、計画を、入力リスト220またはキュー、出力リスト218またはキュー、スタブキュー234、および計画キュー236として提供するように構成されてもよい。入力変数126が引数として指定される場合、計画決定子330は、検索パスで導かれた進展ワールドセットをその入力変数に関連付けられているワールドセット140と結合することにより、指定された入力変数126に関連付けられているワールドセット140を更新するように構成されてもよい。二部グラフの逆方向チェイニング検索中に、計画決定子330は、出力128変数ノード120で開始して、出力128変数ノード120が指定されたワールドセット140の全体について決定された状態にある場合、出力128変数ノード120および指定されたワールドセット140を出力リスト218追加することにより出力リスト218を更新するように構成されてもよい。
【0085】
逆方向チェイニング検索中に、計画決定子330は、加えて、所与のワールドセットについて変数ノード120の計画を見出す、コンポーネント132の計画を見出す、関係ノードの計画を見出す、およびアークの計画を見出す、という操作を再帰的に実行することにより検索パスに沿って各々の入アーク110逆方向に従いながら、計画102を更新するように構成されてもよく、所与の変数ノード120に関連付けられている入アーク110を使用可能にするワールドセット140は互いに素である。加えて、計画決定子330は、計画102を更新する間、検索パスに沿った適切なワールドセット140を検索パスの追加の要素の使用可能ワールドセット140との進展ワールドセット140の論理積として保持するように構成されてもよく、追加の要素は、変数ノード120、コンポーネント132、関係ノード114、およびアーク110を備える。さらに、計画決定子330は、各入アーク110について、入アーク110がコンポーネント132の一部である場合にコンポーネント132の計画を見出すか、または入アーク110がコンポーネント132の一部ではない場合に関係ノード114の計画を見出すように構成されてもよい。
【0086】
図21において、計画決定子330は、加えて、コンポーネント132先行のすべてのアーク110の計画を見出し、関係ノード114のすべての入アーク110の計画を見出し、状態変数124へのワールドセット140の依存性を除去するように構成されてもよく、状態変数124はブール変数、または有限ドメインにわたり計数値を有するカテゴリ変数を備えることができる。逆方向チェイニング検索中に、計画決定子330は、指定された入力変数ノード120に到達するか、または指定された入力変数ノード120が提供されない場合は独立の入力変数ノード120に到達すると、検索パスの逆の順序で、アーク110またはコンポーネント132および関連するワールドセット140を追加することによって、計画キュー236を更新するように構成されてもよい。さらに、計画決定子330は、計画ステップの先行アーク110で開始する任意の検索パスが、指定された入力126変数ノード120で終了するかどうかを最初に留意または決定して、終了する場合には、スタブ変数および関連するスタブワールドセット140でスタブキュー234を更新するように構成されてもよい。スタブ変数は、検索パスが指定された入力126変数のいずれでも終了しない任意の他の先行アーク110に関連付けられている変数を備える。スタブワールドセットは、それらの検索パスのワールドセット140の論理和を備える。計画102を決定すると、計画決定子330は、計画ステップの順序を逆転させることにより、計画102を最終確定するように構成されてもよい。
【0087】
図21を参照すると、計算計画102の入力126および出力128を指定し、変数ノード120の状況が決定されるワールドセット140を指定し、二部グラフ106の逆方向チェイニング検索を実行する上記で説明されるステップのいずれか1つの結果は、入出力デバイス310に伝送されてもよい。入出力デバイス310は、計算計画の結果を表示するように構成されうる表示デバイス314に通信可能に結合されてもよい。表示デバイス314は、計算計画の実施の進行および/または結果を表示するように構成されてもよい。加えて、表示デバイス314は、計算計画プロセスを使用してデータ依存型制約管理システム(
図8)で実施されるトレード研究の結果を表示するように構成されてもよい。
【0088】
1つの実施形態において、プロセッサベースのシステム300は、メモリデバイス306にインストールされうるコンピュータ可読プログラム命令324の命令を実行するための1つまたは複数のプロセッサ304を含むことができる。あるいは、プロセッサ304は、2つまたはそれ以上の統合プロセッサコアを有するマルチプロセッサコアを備えることができる。さらになお、プロセッサ304は、チップ上に集積されたメインプロセッサおよび1つまたは複数の2次プロセッサを備えることができる。プロセッサ304はまた、複数の同様に構成されたプロセッサを有する多プロセッサシステムを備えることもできる。
【0089】
引き続き
図21を参照すると、プロセッサベースのシステム300はさらに、揮発性または不揮発性ストレージデバイス308の1つまたは複数を備えることができる1つまたは複数のメモリデバイス306を含むことができる。しかし、メモリデバイス306は、任意のハードウェアデバイスを、制限なく備えることができる。たとえば、メモリデバイス306は、ランダムアクセスメモリまたはインターフェイスのキャッシュ、および/または通信パスに含まれうる統合メモリコントローラハブを備えることができる。メモリデバイス306は、多種多様なタイプのデータ、コンピュータ可読コードまたはプログラム命令、または任意のその他のタイプの情報のいずれかを永続的および/または一時的に格納するように構成されてもよい。不揮発性ストレージデバイス308は、フラッシュメモリデバイス、ハードドライブ、光ディスク、ハードディスク、磁気テープ、または長期的な格納のための任意のその他の適切な実施形態を含むさまざまな構成で提供されてもよいが、これらに限定されることはない。加えて、不揮発性ストレージデバイス308は、取り外し可能ハードドライブのような、取り外し可能デバイスを備えることができる。
【0090】
プロセッサベースのシステム300は、加えて、プロセッサベースのシステム300に接続されうるコンポーネント132間のデータの転送を容易にするための入出力デバイス310の1つまたは複数を含むことができる。入出力デバイス310は、プロセッサベースのシステム300に直接的および/または間接的に結合されてもよい。入出力デバイス310は、キーボード、マウス、ジョイスティック、タッチスクリーン、およびプロセッサベースのシステム300にデータを入力するために適切な任意のその他のデバイスのような周辺デバイスを用いてユーザ入力を容易にすることができる。入出力デバイス310はさらに、プロセッサベースのシステム300の出力を表すデータを転送するための出力デバイスを含むことができる。たとえば、入出力デバイス310は、プロセッサベースのシステム300によって処理されたデータの結果を表示するためのコンピュータモニタまたはコンピュータ画面のような表示デバイス314を備えることができる。入出力デバイス310は、任意で、プロセッサベースのシステム300により処理された情報のハードコピーを印刷するためのプリンタまたはファックスマシンを含むことができる。
【0091】
引き続き
図21を参照すると、プロセッサベースのシステム300は、コンピュータネットワーク内および/またはその他のプロセッサベースのシステムとのプロセッサベースのシステム300の通信を容易にするための1つまたは複数の通信デバイス312を含むことができる。コンピュータネットワーク内またはその他のプロセッサベースのシステムとのプロセッサベースのシステム300の通信は、無線手段および/または配線接続によるものであってもよい。たとえば、通信デバイス312は、プロセッサベースのシステム300とコンピュータネットワークとの間の無線またはケーブル通信を可能にするためのネットワークインターフェイスコントローラを備えることができる。通信デバイス312はまた、モデムおよび/またはネットワークアダプタ、もしくはデータを送受信するためのさまざまな代替的デバイスのうちの1つを備えることもできる。
【0092】
データ依存型制約ネットワーク100の計算計画のための前述の方法論の操作のうちの1つまたは複数は、コンピュータ可読プログラム命令324を使用して、プロセッサ304および/または変数ノード指定子326、ワールドセット指定子328、および計画決定子330のうちの1つまたは複数によって実行されてもよい。コンピュータ可読プログラム命令324は、コンピュータ使用可能プログラムコードおよびコンピュータ可読プログラムコードを含みうるプログラムコードを備えることができる。コンピュータ可読プログラム命令324は、プロセッサ304によって読み取られ、実行されてもよい。コンピュータ可読プログラム命令324は、プロセッサ304が、制約ネットワーク100の計算計画に関連付けられている前述の実施形態の1つまたは複数の操作を実行できるようにすることができる。
【0093】
引き続き
図21を参照すると、コンピュータ可読プログラム命令324は、プロセッサベースのシステム300のための操作命令を含むことができ、さらにアプリケーションおよびプログラムを含むことができる。コンピュータ可読プログラム命令324は、数式プロセッサ304、数式コンバータ、ビットアレイシンプリファイア、ビットアレイコンバータ、および/またはビットアレイコンストラクタにより実行するためのメモリデバイス306および/または不揮発性ストレージデバイス308のうちの1つまたは複数に含有および/またはロードされてもよい。上記に示されるように、メモリデバイス306および/または不揮発性ストレージデバイス308の1つまたは複数は、通信パスを通じて
図21に示される残りのコンポーネントブロックの1つまたは複数に通信可能に結合されてもよい。
【0094】
コンピュータ可読プログラム命令324は、有形または非有形の、一時的または非一時的コンピュータ可読媒体318に含まれてもよく、プロセッサにより実行するためにプロセッサベースのシステム300にロードされるかまたは転送されてもよい。コンピュータ可読プログラム命令324およびコンピュータ可読媒体318は、コンピュータプログラム製品316を備える。1つの実施形態において、コンピュータ可読媒体318は、コンピュータ可読ストレージ媒体320および/またはコンピュータ可読信号媒体322を備えることができる。
【0095】
コンピュータ可読ストレージ媒体320は、ドライブにロードされうる光ディスクおよび磁気ディスク、フラッシュメモリデバイス、またはハードドライブのようなストレージデバイスにデータを転送するためのその他のストレージデバイスまたはハードウェアを含む多種多様な実施形態を備えることができるが、これらに限定されることはない。コンピュータ可読ストレージ媒体320は、プロセッサベースのシステム300に固定式で取り付けられてもよい。コンピュータ可読ストレージ媒体320は、任意の適切なストレージ媒体を備えることができ、半導体システムまたは伝搬媒体を、非限定的に含むことができる。この点において、コンピュータ可読ストレージ媒体320は、電子媒体、磁気媒体、光媒体、電磁媒体、および赤外線媒体を備えることができる。たとえば、コンピュータ可読ストレージ媒体320は、磁気テープ、コンピュータディスケット、ランダムアクセスメモリ、および読み取り専用メモリを備えることができる。光ディスクの実施形態の非限定的な例は、読み取り専用メモリのコンパクトディスク、読み取り/書き込みコンパクトディスク、およびデジタルビデオディスクを含むことができる。
【0096】
コンピュータ可読信号媒体322は、コンピュータ可読プログラム命令324を含むことができ、電磁信号および光信号を含む(ただし、これらに限定されない)さまざまなデータ信号構成で具現されてもよい。そのようなデータ信号は、無線または有線手段を含む任意の適切な通信リンクにより伝送されてもよい。たとえば、有線手段は、光ファイバケーブル、同軸ケーブル、信号線、および無線または物理的手段によりデータを伝送するための任意の他の適切な手段を備えることができる。
【0097】
引き続き
図21を参照すると、コンピュータ可読信号媒体322は、プロセッサベースのシステム300内で使用するための、コンピュータ可読プログラム命令324の不揮発性ストレージまたはその他の適切なストレージまたはメモリデバイス306へのダウンロードを容易にすることができる。たとえば、コンピュータ可読ストレージ媒体320内に含まれるコンピュータ可読プログラム命令324は、サーバまたは別のシステムのクライアントコンピュータからコンピュータネットワークを介してプロセッサベースのシステム300にダウンロードされてもよい。
【0098】
プロセッサベースのシステム300の多種多様な実施形態の任意の1つは、コンピュータ可読プログラム命令324を実行することができる任意のハードウェアデバイスまたはシステムを使用して実施されてもよい。たとえば、プロセッサ304は、1つまたは複数の特定の機能を実行するために構成されたハードウェアユニットを備えることができ、機能を実行するためのコンピュータ可読プログラム命令324は、メモリデバイス306にプリロードされてもよい。
【0099】
1つの実施形態において、プロセッサ304は、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス、または1つまたは複数の固有の機能または操作を実行するように構成された任意の他のハードウェアデバイスを備えることができる。たとえば、プログラマブル論理デバイスは、制約ネットワーク100において計算計画に関連する操作の1つまたは複数を実行するように一時的または永続的にプログラムされてもよい。プログラマブル論理デバイスは、プログラマブル論理アレイ、プログラマブルアレイ論理、フィールドプログラマブル論理アレイ、およびフィールドプログラマブルゲートアレイ、ならびに任意の他の論理デバイスを、非限定的に備えることができる。1つの実施形態において、コンピュータ可読プログラム命令324は、1つまたは複数のプロセッサ、および/またはプロセッサ304と通信する1つまたは複数のハードウェアユニットを含むその他のデバイスによって操作されてもよい。コンピュータ可読プログラム命令324の特定の部分は、プロセッサ304によって実行されてもよく、コンピュータ可読プログラム命令324のその他の部分は、ハードウェアユニットによって実行されてもよい。
【0100】
有利なことに、データ依存型制約ネットワーク100の条件付き計算計画102を作成するための、本明細書において開示されるシステムおよび方法は、従来の条件付き計画アルゴリズムに必要とされるような、計画と計算の混合を回避する。この点において、本明細書において開示される計算計画のシステムおよび方法は、フロントエンドのトレード研究中、または従来の条件付き計画の方法により提供される限定された範囲のトレード空間に関連する複雑なエンジニアリングシステムの概念設計中に、大幅に広範なトレード空間にわたるトレード研究の実行を容易にする技術的な効果をもたらす。本明細書において開示される計算計画の方法により提供されるさらなる技術的な効果は、トレード研究が異種のトレード空間にわたり実施されうる効率の大幅な上昇であり、システム構成または車両構成(たとえば、航空機またはロケット機体の構成)は、トレード空間にわたり著しく変化しうるので、車両コスト、車両パフォーマンス、およびその他のパラメータを記述する方程式は、大きく異なるパラメトリックフォームを有することができる。設計者がトレード空間の広い範囲を探索することができる迅速さを大幅に高めることに加えて、本明細書において開示される計算計画のシステムおよび方法は、所与のトレード空間が所与の時間内に探索されうる完全性を大幅に高めることを容易にする技術的な効果をもたらす。
【0101】
本開示の多くの変更およびその他の実施形態は、前述の説明および関連する図面に提示されている教示を利用できる本開示に関連する当業者に発想をもたらすことになろう。本明細書において説明される実施形態は、例示的であることが意図されており、限定的または包括的であることは意図されていない。本明細書において特定の用語が採用されているが、これらは一般的かつ説明的な意味でのみ使用されており、限定することを目的としてはいない。