JPH10503040A - 協働する複雑なシステムを構築するための汎用同時コンフィギュレータ - Google Patents

協働する複雑なシステムを構築するための汎用同時コンフィギュレータ

Info

Publication number
JPH10503040A
JPH10503040A JP8505061A JP50506196A JPH10503040A JP H10503040 A JPH10503040 A JP H10503040A JP 8505061 A JP8505061 A JP 8505061A JP 50506196 A JP50506196 A JP 50506196A JP H10503040 A JPH10503040 A JP H10503040A
Authority
JP
Japan
Prior art keywords
configurator
component
database
instance
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP8505061A
Other languages
English (en)
Inventor
ドルビー,ナイジェル・アイ
グスリング,トーマス・アール
ネイグル,ティモシー・イー
Original Assignee
ユニシス・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US08/275,194 external-priority patent/US5617514A/en
Priority claimed from US08/274,618 external-priority patent/US5630025A/en
Application filed by ユニシス・コーポレイション filed Critical ユニシス・コーポレイション
Publication of JPH10503040A publication Critical patent/JPH10503040A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/04Constraint-based CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/06Multi-objective optimisation, e.g. Pareto optimisation using simulated annealing [SA], ant colony algorithms or genetic algorithms [GA]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Geometry (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 複数のコンポーネントからなるどのような複雑なシステムについても完全で、正当でかつ最適に近いコンフィギュレーションを発生するための汎用コンフィギュレーションエキスパートシステム(16)を開示する。本発明によれば、デベロッパ(10)か特定のコンフィギュレーション問題を解決するためのコンフィギュレータフレームワークを特定する。ユーザ(26)はカスタマイズされたコンフィギュレータ(16)を作動させてユーザの要求ならびにシステムの要件および制約に基づきコンフィギュレーションの解答を発生させる。汎用コンフィギュレータは宣言的に構成されるグラフ(24、34)および複数の相互作用するパッキングエンジン(36)を使用する。2つのレベルの、活性度伝播二部グラフ(24、34)を構成するコンポーネントおよびそれらの相関関係を表わす知識として使用する。本発明によりいずれの時点においても複数のパッカーエンジン(36)の相互作用をダイナミックに管理して全コンフィギュレーション問題の適切な部分を選択して作業し、その一方で他のパッキング問題についても考慮することができる。本発明によって、パッキングエンジンにより使用される制約を宣言的に定義する能力が得られ、確実に正しいコンフィギュレーションが得られるようになる。

Description

【発明の詳細な説明】 発明:協働する複雑なシステムを構築するための汎用同時コンフィギュレータ この特許文書の開示の一部は、著作権保護の対象ともなる素材を含み得るであ ろう。 発明の背景 1.発明の分野 この発明は一般に、人工知能(AI)の「エキスパートシステム」または「知 識ベースのシステム」に関する。この発明はより特定的には、知識の表現および 複数の対話型パッキングエンジンのために宣言的に構築されるグラフを用いる、 複雑なシステムのコンポーネントを構成するためのエキスパートシステムに関す る。 2.背景情報 知識ベースのエキスパートシステムは、人間の知識を用いて、通常は人間の知 能を必要とする問題を解決するための、人工知能における1つまたはそれ以上の 技術を取り入れたものである。これらのエキスパートシステムはしばしば、ある 特定の分野に専門知識を有する人間のやり方を模倣するべく構築されているコン ピュータのハードウェア/ソフトウェアの組合せからなる。専門知識は典型的に は「知識ベース」と呼ばれるデータベース内に含まれる。知識ベースは生成ルー ル、意味ネットワーク、フレーム、概念依存グラフ、または知識表現の他のパラ ダイムからなっ ていてもよい。エキスパートシステムは、1つまたはそれ以上の推論エンジンを 含む。推論エンジンとは、知識ベースと対話して、既存の知識から結果、結論、 または判断を発生する論理モジュールである。それはルールインタプリタであっ てもよいし、または確率推論ネットワークにおけるステート情報を伝播すること により結論に辿りついてもよい。 人工知能、知識表現、およびエキスパートシステムの一般的な説明について読 者は、ユージン・チャーニアック(Eugene Charniak)およびドルー・マクダー モット(Drew McDermott)著、アディソン・ウェスリー・パブリッシング・カン パニー(Addison Wesley Publishing Company)、1985年刊の「人工知能入門 (Introduction to Artificial Intelligence)」や、ウィリアム・カウフマン ・インコーポレーテッド(William Kaufmann,Inc.)の、アブロン・バー(Avro n Barr)およびエドワード・フェイゲンバウム(Edward Feigenbaum)編「人工 知能ハンドブック(Handbook of Artificial Intelligence)」第1巻(198 1年)および第2巻(1982年)、ならびにポール・コーヘン(Paul Cohen) およびエドワード・フェイゲンバウム編の第3巻(1982年)や、チャップマ ン・アンド・ホール・リミテッド/メスエン・ロンドン・リミテッド(Chapman and Hall Ltd./Methuen London Ltd.)、1985年のリチャード・フォーサイ ス(Richard Forsyth) およびクリス・ネイラー(Chris Naylor)著「ヒッチハイカーの人工知能ガイド (The Hitch-Hiker's Guide to Artificial Intelligence)」や、スチュアート ・シー・シャピロ(Stuart C.Shapiro)著、ジョン・ワイリー・アンド・サン ズ(John Wiley & Sons)刊、1987年の「人工知能百科事典(The Encyclope dia of Artificial Intelligence)」などの参考文献に導かれる。 知識ベースは1種類または2種類の支援で構築されるだろう。1つの種類はエ キスパートとの「インタビュー」を行ない、エキスパートに繰返し情報を求める 。それはエキスパートの応答から関連構造をつくり上げる。これらのツールは、 専門知識−転送システムと呼ばれる。他方の種類の支援は、熟練した知識のある エンジニアが知識ベースに容易に情報を付け加える(もしくは情報を削除または 修正する)ことができるようにする構造化されたエディタまたは言語である。た とえば、そのようなシステムは、ユーザに、生成ルールのリストを閲覧し、付け 加え、または取除くことができ、システムがそのルールのシンタックスをチェッ クしている。このような能力を提供するいくつかの商業的エキスパートシステム 「シェル」が利用可能である。 この第2の種類のツールおよび生成ルールフォーマットを用いて比較的単純な エキスパートシステムを効果的に構築することができる。初期のエキスパートシ ステムは、知識ベースのシステムにおけるR1系であった。R1は、後 にXCONと称するが、ドメインを特定されたルールベースの問題を解決するエ キスパートシステムであって、従来のデータ処理方法を用いて対話することがで きる。コンピュータシステムの正しいコンフィギュレーションの生成には、何千 ものヒューリスティックなルールを適用して十分にさまざまなエンジニアリング コンポーネントとサポートされているコンポーネント間の関係とを補足すること が必要である。人間のエキスパートはこれらのルールを適用して可能なコンフィ ギュレーションを生じることができるが、そのコンフィギュレーションが正しい という保証、すなわちそれが適正に製造でき動作し得るであろう保証はない。さ らに、最適なコンフィギュレーションの解答という目標は、いかなる人間の能力 をも超えているかもしれない。R1は顧客の購入オーダを構文解析して、その購 入オーダを一貫した完全なものとするためになされなければならないコンポーネ ントの代用および付加がもしあるならば、何であるかを判断する。R1は、コン ピュータシステムのコンフィギュレーションドメインおよびさまざまなコンフィ ギュレーションの制約における特異性についてのその知識を用いることによって 、ある解答に到達する。 カーネギー・メロン大学(Carnegie Mellon University)およびデジタル・イ クイップメント・コーポレーション(Digital Equipment Corporation)(DE C)により開発されたR1システムは、生成システムモデルに基づく ものであり、OPS−5、すなわち生成システムに特に適したプログラミング言 語で書かれている。知識表現としての生成システムの基本的特徴は、基本知識と それまでの計算結果とを含むグローバルデータベースと、データベース上で動作 する1組の生成ルールである。生成ルールはルールの本体と呼ばれる手順および 関連のパターンからなる。そのようなシステムにおける推論プロセスは、そのパ ターンがデータベースの一部に一致するルールが発見され、次にそのルールの本 体が実行されるというサイクルからなる。ルールの本体の実行は一般にデータベ ース内のデータ構造を付加する、削除する、または修正することによりデータベ ースに変化をもたらす。OPS−5は問題解決状態データを記述し、この状態デ ータに一致するルール条件を特定するための単純ではあるが均一な表現方法を提 供するものである。しかしながら、OPS−5が提供する、事実、関係および不 確実性を表わすための構造は少ない。したがって、問題解決のための便利な汎用 アーキテクチャを提供するものではない。加えて、ルールのアクションコンポー ネントをプログラムするには、OPS−5は専門的なプログラミング言語でプロ グラムコードを書くための知識をもったエンジニアを必要とする。 R1システムにはいくつかの欠点がある。元来、これはDECによって生産さ れたVAX11/780コンピュータシステム専用のものであった。したがって これは、専門 化されたコンフィギュレータであった。その能力は徐々に他のDECコンピュー タシステムにも拡張されているが、その代償としてより多くのルールが付加され ている。ルールの数が何千もに膨れ上がるにつれ、システムは遅いものになった 。知識ベース内のいくつかのルールは冗長であった。コンフィギュレーション知 識はルールベースのものであったため、コンポーネント制約情報はエキスパート によって宣言的な態様で書かれるよりもむしろ、やむを得ず専門知識からコンピ ュータプログラマによって「ハードコード化」されたルールにおいて実施された 。したがって、システムが大きくなっていくにつれ、R1をさらに向上させるこ とは非常に困難なこととなった。オリジナルのR1は対話式ではなかった。ユー ザは異なった代替的なコンフィギュレーションを容易にセットアップすることは できなかった。 通信ネットワークを構成するためのエキスパートシステムが、ガリス(Galis )らに発行された米国特許第5,175,800号に開示されている。この発明 により、ユーザはコンフィギュレーション知識および要求情報のデータベースを 規定し維持することができる。システムは通信ネットワークに対するユーザの要 求または要求の変更を確認し、全体的および部分的コンフィギュレーションの努 力のためのオプションのエキスパートコンフィギュレーションデータセットを生 成する。システムはルールベースであり、 埋込まれたルールはネットワーク装置間の正当な接続を特定する。したがって、 これはR1システムと同じ種類の問題の影響を受けやすい。ガリスらのシステム は専用コンフィギュレータである。これは主に時分割マルチプレクス(TDM) 装置を含む通信ネットワークのために設計されている。そのマンマシンインタフ ェースは通信ネットワークのためのコンフィギュレーション判断を下すべくデー タおよびコマンドをエンターするようユーザを導く。この発明の専用であるとい う性質は、通信ネットワークコンフィギュレーションの問題へのその応用を制限 している。 可変の特性によって説明されてもよい接続されたコンポーネントの集合を設計 するためのエキスパートシステムが、クィンテロ(Quintero)らに発行された米 国特許第5,293,479号に開示されている。この発明は知識ベースと推論 エンジンとを含む。知識ベースは接続可能なコンポーネントの一定および可変の 特性およびこれらのコンポーネントを組合せるためのルールに関する情報を含む 。推論エンジンは、コンポーネントをユーザの要求について正当に接続するため に、ルールを解釈する。クィンテロらのシステムには、それがルールベースであ り、専門化された問題ドメイン(この場合はモジュラファニチャーアセンブリ) に向けられているという、R1およびガリスらのシステムに類似の欠陥がみられ る。 いくつかの既存の専用コンフィギュレータは、コンピュ ータシステムについてのコンフィギュレーション問題を解決するのに異なったア プローチをとっている。ユニシス・コーポレーション(Unisys Corporation)に より生産された2200シリーズのコンピュータシステム専用である1つのシス テムは、非常にさまざまな、利用可能であるシステムコンポーネントを表わし、 コンポーネントのケーブリング(または「ストリンギング」)問題を解決すべく 大部分の反復コードおよび専用データ構造を用いる。ユニシスによって販売され ている「A」シリーズのコンピュータシステムのための別のシステムも、コンポ ーネントを表わすのに標準的な高水準言語で書かれた専用データ構造を用い、こ れらはコンポーネントのパッキング問題を解決すべく操作される。そのパッキン グ論理モジュールは、動的なオーダリングなしで予め規定されたシーケンスにお いて実行される。結果として、これは時折非常に貧弱な結果の異常なケースをも たらす。パーソナルコンピュータ(PC)システムを構成するための第3のシス テムは、活性度伝播(spreading activation)ネットワークのコンセプトに基づ くものである。このシステムは単純なコンフィギュレーションについては効果的 に働くが、複雑度のレベルが高くなると、活性度伝播ネットワークは適正に処理 されるには余りにも入り組んだものとなってしまう。上述のアプローチの各々に は、コンポーネントが接続され得るやり方を変更する、可能なシステムコンポー ネントを付加するまたは削除 する、またはコンピュータシステムの他のモデルをサポートするために大きなプ ログラムコード修正を必要とする。 オブジェクト志向設計の方法論に基づくプロダクトコンフィギュレータツール は、トリロジー・デベロップメント・グループ(Trilogy Development Group) から商業的に入手可能である。「セールズビルダー(SalesBuilder)」と呼ばれ るトリロジーのコンフィギュレータでは、構成されるべき各部分またはコンポー ネントはソフトウェアオブジェクトによって表わされる。したがってこのシステ ムにおける知識はオブジェクトベースのものであって、ルールベースではない。 トリロジーシステムは根底にある構造化クエリ言語(SQL)データベースマネ ージャを用いてカスタマイズされたプロダクトコンフィギュレーションシステム を発展させ、これはその後ある会社によってセールスおよびマーケティングの道 具として用いられる。このシステムはオブジェクトのヒエラルキーおよびクラス 継承の利用可能な特性を利用するため、C++プログラミング言語で実現されて いる。オブジェクト志向の設計によるアプローチは、PCのためのものなど、比 較的小さいコンフィギュレーションの問題に対しては良好に働くが、大きいメイ ンフレームのコンピュータシステムに固有の複雑なコンフィギュレーションにと っては不十分である。 コンフィギュレーションの問題についてのさまざまなレベルの複雑性を管理す るには、融通性のある汎用のコンフ ィギュレータが必要である。数多くの相互に接続された部分からなるたくさんの 製品が、その生産のセットおよびパッケージングの中で連続的な変化を被る。生 産ラインの流れの一定した状態に遅れないようにすることは、多くのユーザにと って困難かつ時間のかかる課題である。しばしば特殊なデータベースを用いる専 用エキスパートシステムは、このコンフィギュレーションの問題に部分的には対 処することができるが、時折明らかに順最適である、または全体的な問題のサブ セットに限定される結果を生ずる。そのようなシステムはまた、大きな維持の課 題をもたらすものでもある。したがって、汎用コンフィギュレータは簡単に定義 され変更されるはずである。これまでに設置されたコンフィギュレーションはし ばしば寿命が長いが、それでも特定の製品の顧客は現在製造されているかもしれ ないし、されていないかもしれない交換コンポーネントを時々必要とする。よっ て、コンフィギュレータは古い受け継がれたコンポーネントに備えるための経歴 データをサポートしなければならない。通常コンフィギュレータのユーザ間で専 門知識は広く多様なので、コンフィギュレータは経験を積んだユーザのための「 手動」制御と初心者のユーザのための自動モードとを提供できるべきである。最 後に、コンフィギュレーション問題の著しい複雑性は、人間が適切かつ効率的に 解答するには複雑過ぎるような問題に対する自動的な解答を要求するかもしれな い。 発明の概要 この発明の目的は、多くの相互接続されたコンポーネントからなる複雑なシス テムの完全な、最適に近い正当なコンフィギュレーションを発生することである 。 本発明の他の目的は、複雑なコンピュータシステムのための完全な、最適に近 い正当なコンフィギュレーションを発生することである。 この発明のさらに他の目的は、複数の相互接続されたコンポーネントからなる さまざまな複雑なシステムのためのコンフィギュレーション問題を解決するため に容易に特殊化される、汎用コンフィギュレータを提供することである。 本発明の他の目的は、さまざまなコンピュータシステムについてのコンフィギ ュレーション問題を解決するべく簡単に特殊化される汎用コンフィギュレータを 提供することである。 本発明のさらに他の目的は、既存のパッキングベースであり、かつネットワー クベースの情報処理システムのコンフィギュレータを、汎用の包括的なコンフィ ギュレータエキスパートシステムに統合し、それによって要求される機能性の完 全な範囲を均一にサポートすることである。 この発明のさらに他の目的は、既存のコンフィギュレータエキスパートシステ ムよりも簡単に特殊化され、修正され、かつ維持される汎用コンフィギュレータ を提供することである。 本発明のさらに他の目的は、複数のコンポーネントのパッキング問題が相互に 関連したとき、所与のどの時点においても、対処すべき総合的なコンフィギュレ ーション問題における最も適切なピースを動的かつ自動的に選択することである 。 この発明のさらに他の目的は、そのユーザインタフェースに融通性があり、使 用が簡単であり、コンフィギュレータ内部のコンフィギュレーションロジックか ら独立している汎用コンフィギュレータを提供することである。 この発明のさらなる目的は、複雑なシステム内のさまざまなコンポーネントが どのように接続されてもよいかをそれで規定するための宣言的言語を備えるコン フィギュレータデベロッパを提供することである。 この発明のさらなる目的は、コンフィギュレータデベロッパがコンポーネント の組合せに対する制約を宣言的に規定し、コンフィギュレーションプロセスによ る結果が確実に正しいものとなるようにする能力を提供することである。 本発明の他の目的は、コンピュータシステムコンポーネントの自動コンフィギ ュレーションをサポートするためのコンフィギュレーション知識の効率的な根底 にあるランタイム表現を与えることである。 この発明のさらに他の目的は、コンフィギュレータエキスパートシステムによ って構成されるべきコンポーネントの宣言的な記述として2レベルで二部の活性 度伝播グラフ を用い、使いやすさを高め、コンフィギュレータの応用性の範囲を広げ、かつ維 持コストを最低限にすることである。 この発明のさらに他の目的は、コンフィギュレーション知識のセーブおよびロ ードをサポートすることである。 この発明のさらなる目的、利点および新規な特徴は、部分的にはこれ以降の説 明で述べられ、部分的には以下を検討すれば当業者には明らかとなり、またはこ の発明の実施から学びとられるであろう。この発明の目的および利点は、図面お よび好ましい実施例の説明で特定的に指摘されている方便および組合せによって 実現され達成されてもよく、発明の範囲および局面は、後の請求の範囲において 規定されている。 本発明に従い、前述および他の目的および利点は、宣言的に構築されたグラフ および複数の対話型パッカーを用いる汎用コンフィギュレータにより達成される 。この発明は、汎用コンフィギュレーションツールを構築するのに要求される基 本的な処理および表現を実現するものである。本発明によって提供される汎用の 能力がなければ、広範囲なタイプのアセンブリのためにコンフィギュレーション プロセスの簡単な定義を許容し、かつコンフィギュレーションの詳細に対する手 動制御とユーザが制御しないことを選択したいかなる細部に対する自動的な取扱 いとが双方ともできる汎用対話型コンフィギュレータを構築することは極めて難 しい。 本発明は二部グラフおよび関連のシンタックスを用いて、所与のコンフィギュ レーションプロセスの一部であるコンポーネントを記述するため、およびユーザ によってなされた詳細なコンフィギュレーションリクエストをたどるために、よ く構造化され統合されたやり方を提供する。ここに開示されるコンフィギュレー タは、パッキングを必要とする各コンポーネントについて個々のパッキングオブ ジェクトの明示的な別個の表現を用いる。これらのパッカーが広範でさまざまな 環境の下で正当かつ最適に近いコンフィギュレーションを生成するべく建設的に 対話することを許容する、一般的制御パラダイムが示される。このアプローチは 、パッキングプロセスの固定されたシーケンスが行なわれる、以前の状況からは 著しい進歩となるものである。本発明はまた、コンフィギュレーションの正当性 を規定する制約パラメータを特定するための式文法をも開示する。これらの制約 式を扱うための埋込まれた機能性により、コンフィギュレータエキスパートシス テムの発展および維持プロセスが向上する。 この発明の1つの局面に従い、接続されたコンポーネントの有効なコンフィギ ュレーションを発生するためのエキスパートシステムは、(コンフィギュレータ デベロッパとして知られる)システムデベロッパにより宣言的に特定されたコン ポーネント定義をストアするためのアプリオリデータベースを含む。インスタン スデータベースは、(コン フィギュレータユーザとして知られる)エキスパートシステムのユーザにより対 話的に選択されるアプリオリデータベース内で規定されたコンポーネントのイン スタンスをストアするために設けられる。エキスパートシステムはコンフィギュ レータユーザからのリクエストを受け入れて選択されたコンポーネントを構成か つ接続し、リクエストをアプリオリデータベース内にストアされたコンポーネン ト定義と一致させ、インスタンスの創出および接続が有効であれば選択されたコ ンポーネントのインスタンスを創出し接続する。有効性のチェックはアプリオリ データベース内のコンポーネント定義と、既に処理されている以前のコンフィギ ュレータユーザのリクエストとに基づく。インスタンスデータベースは、コンフ ィギュレータユーザのリクエストの実現の結果もたらされる有効コンフィギュレ ーションの表現である。処理ユニットはこの有効コンフィギュレーションをグラ フィカルユーザインタフェースを介してコンフィギュレータユーザに報告する。 この発明の他の局面に従い、各コンポーネントがコンポーネント定義によって 記述され得る、接続されたコンポーネントの完全かつ有効な、最適に近いコンフ ィギュレーションを発生する方法は、コンフィギュレータデベロッパがコンポー ネントを宣言的に規定できるようにするステップと、コンポーネント定義および 第1の活性度伝播2部グラフにおけるそれらのノードとしての使用により含意さ れる リソースを表わすステップと、コンフィギュレータユーザからの、選択されたコ ンポーネントを構成し接続するリクエストを受け入れるステップとを含む。方法 の最後のステップは、コンポーネント定義、以前のコンフィギュレータユーザの リクエスト、および第2の二部グラフの現在の状態に基づきインスタンスの創出 および接続が有効であれば、選択されたコンポーネントのインスタンスおよび第 1の活性度伝播二部グラフにおいて第2の二部グラフ中のノードとして規定され たリソースを創出し、接続することに関わる。 この発明の他の局面に従い、接続されたコンポーネントの完全かつ有効な最適 に近いコンフィギュレーションを発生するためのコンフィギュレータエキスパー トシステムが開示される。コンフィギュレータエキスパートシステムはコンフィ ギュレータデベロッパによって所与のコンフィギュレーションドメイン用にカス タマイズされ、コンフィギュレータユーザによって、ユーザリクエストならびに コンポーネント定義に含まれる予め定められたコンポーネント要求および接続の 制約に基づきコンフィギュレーション解答を発生するべく動作させられる。コン フィギュレータエキスパートシステムはコンフィギュレータデベロッパによって 宣言的に特定されたコンポーネント定義をストアするためのアプリオリデータベ ースと、コンフィギュレータユーザによって対話的に選択されたアプリオリデー タベース 内で定義されたコンポーネントのインスタンスをストアするためのインスタンス データベースとを有する。選択されたコンポーネントを創出かつ接続すべくコン フィギュレータからのリクエストを受入れ、アプリオリデータベース内にストア されたコンポーネント定義にリクエストを一致させ、コンポーネント定義および 以前のコンフィギュレータユーザのリクエストに基づき創出および接続が有効で あればインスタンスデータベース内の選択されたコンポーネントのインスタンス を創出かつ接続し、コンフィギュレータユーザにリクエストからもたらされたコ ンフィギュレーションを報告するためにロジックエンジンが設けられる。エキス パートシステムは、ロジックエンジンにより参照されるパッカー定義知識ベース を含む。これはアプリオリデータベース内のアイテムに付与されてもよいコンフ ィギュレーションパッキング動作のタイプに関連する知識をストアする。また、 1つまたはそれ以上の制約式においてコンフィギュレータデベロッパにより宣言 的に特定された基準に従い、選択されたコンポーネントを他の選択されたコンポ ーネントに接続する複数パッキング動作を同時に行なうための、パッキングエン ジンも含まれる。これらの制約式は、アプリオリデータベース内のアイテムに付 される。 この発明の他の局面に従い、各コンポーネントがコンポーネント定義により記 述され得る、複数の対話型パッカーを用いることにより接続されたコンポーネン トの完全かつ 有効な最適に近いコンフィギュレーションを発生する方法は、コンフィギュレー タデベロッパが宣言的にコンポーネントを定義できるようにするステップと、コ ンポーネント定義およびそれらを第1の活性度伝播二部グラフにおいてノードと して用いることにより含意されるリソースを表わすステップと、第1の活性度伝 播二部グラフにおける選択されたノードにパッカーを付与するステップとを含む 。さらなるステップは、コンフィギュレータユーザから選択されたコンポーネン トを接続するリクエストを受入れるステップと、選択されたパッカーのセットの 各々に従いリクエストを実現するための最重要アクションを識別するステップと 、各選択されたパッカーについての最重要アクションに数値的な重みを割当て、 各選択されたパッカーに対して最重要アクションがどれほど望ましく、どれほど 制約されているかを表わすステップとを含む。プロセスは、選択されたパッカー により割当てられた数値的な重みを比較して、選択されたコンポーネントのイン スタンスと、第1の活性度伝播二部グラフにおいて第2の活性度伝播二部グラフ 内のノードとして定義されたリソースとを創出し接続することにより最重要アク ションを仮に行なうべく選択されたパッカーの1つを選択するステップで続行す る。方法は、パッカーの総合的なセットの各々に従い、第2の二部グラフにより 表わされたコンフィギュレーションが有効であるかどうかを判断するステップと 、パッカーのセットの各々が 最重要アクションの実現を肯定するならば恒常的である最重要アクションの実現 の結果として起こる第2の二部グラフにおける変化をもたらすステップとで続行 される。最後に、リクエストからもたらされた第2の二部グラフにより表わされ るコンフィギュレーションは、コンフィギュレータユーザに報告される。 本発明のさらに他の目的および利点は、次に述べる詳細な説明から当業者には 容易に明らかとなるであろう。ここにはこの発明の好ましい実施例のみが単に発 明を実施するのに企図されるベストモードを説明するためだけに示され記載され ている。認識されるであろうように、この発明は他の異なった実施例が可能であ り、そのいくつかの詳細はさまざまな明らかな点において修正が、すべてこの発 明から逸脱することなく可能である。したがって、図面および明細書は本質的に 説明的なものであって限定的なものではないと考えられるべきであり、特許によ り保護されることが意図されるものは後の請求の範囲に述べられている。 図面の簡単な説明 図1は、本発明の主要な論理コンポーネントを示すブロック図である。 図2は、あるアイテムのための外部形式の基本的シンタックスの図である。 図3は、外部形式の記述の一例である。 図4は、外部形式の例から結果として生じたアプリオリ グラフの図である。 図5は、インスタンスグラフの図である。 図6は、外部形式のロードプロセスのフローチャートである。 図7は、個々のパッカー処理ステップのフロー図である。 図8は、パッカーの4つの部分を表わすブロック図である。 図9は、マスタスケジューラとパッカーとの間の関係を表わすブロック図であ る。 図10は、コンフィギュレータ式ハンドラによりサポートされるデータタイプ のブロック図である。 図11は、式ハンドラによりサポートされる機能のブロック図である。 図12は、データエントリ形式の表示の一例である。 図13は、ユーザ/インタフェースエンジンの対話を表わすブロック図である 。 好ましい実施例の説明 目次 I.本発明の概観 II.2レベル二部グラフ III.単純な例 IV.知識ベース定義 A.ネット定義 B.パッカー定義 V.ローダ VI.ロジックエンジン VII.パッキングエンジン A.パッカー処理 B.選択プロポーザ C.割当プロポーザ D.コンサルタント E.インプリメンタ F.マスタスケジューラ G.パッキング例 VIII.制約式および式ハンドラ A.制約式の例 B.式ハンドラによりサポートされるファンクション IX.インタフェースエンジン A.データエントリ形式 B.カプセル X.不変情報 付録A.外部形式シンタックスの定義 付録B.外部形式の例 付録C.用語集 A.本発明の概観 本発明の好ましい実施例は、複雑なコンピュータシステムのコンフィギュレー ション問題を解決するための汎用フ レームワークを提供する。代替的には、ここで実施されるコンセプトはさまざま なコンポーネントアセンブリおよびシステム定義の問題を解決するために当業者 によって用いられることができるだろう。ここに開示されるコンフィギュレータ および関連のコンフィギュレーション指定言語の一般的な性質は、複数の相互接 続されたコンポーネントからなるどのような製品についてのコンフィギュレーシ ョン問題をも解決するための基礎を提供する。この発明の最初の実現例は、コモ ンLISPプログラミング言語で書かれた。この実現例は、インテリコープ・イ ンコーポレーテッド(Intellicorp,Incorporated)から商業的に入手可能な知 識エンジニアリング環境(KEE)と呼ばれるエキスパートシステムシェルを利 用する。しかしながら、本発明で実施するコンセプトは、C++などの他の象徴 的またはオブジェクト志向言語で実現することもできるし、マイクロソフト・コ ーポレーション(Microsoft Corporation)によるウィンドウズ(WINDOWS)など の他のオペレーティングシステムを利用することもできるであろうし、広範かつ さまざまなプロセッサによって実行することもできるであろう。 本システムの根底にあるAIパラダイムは、2レベルの二部グラフである。こ のグラフはコンフィギュレーション情報を表わすのに用いられる。グラフはコン ポーネントおよび関係のネットワークとして規定される。これは宣言的 シンタックス、すなわち定義がプロセスとの関連ではなくむしろ状態との関連で 与えられるシンタックスの形式で規定される。これにより、コンフィギュレータ デベロッパはあるコンフィギュレーション問題を解決するために順次的なステッ プの論理を規定しなくともよくなる。システムのコンポーネントが構成され定義 される際、これらのコンポーネントのインスタンスがグラフの第2レベルにおい て創出される。定義されているコンポーネントの要求および値は、グラフの第1 レベルを介して流れる。本システムにおいてグラフの第1のレベルが用いられる 態様は、意味ネットワークのための活性度伝播のコンセプトに似ている。活性度 伝播は、処理がグラフ中の何らかのノードで始まり、そこから開始ノードへアー クによって直接接続されているノードへ移行し、そしてそこから直接接続された ノードの次のセットへ移行する、というような制御パラダイムである。意味ネッ トワークでは、ネットワーク内の各ノードは通常それに何らかの機能的処理が付 されており、これはネットワークを介して論理制御が流れるにつれ、「発火する 」(すなわち処理を行なう)。しかしながら本システムでは、グラフの第1レベ ルのノードには必ずしも機能的処理が付されていなくともよい。さらに、グラフ の第1のレベルにおける伝播は、厳密に制御されている。本システムにおける知 識の表現は、他の多くのエキスパートシステムでのようにルールに基づくもので はなく、二部グラフに基 づいている。ルールベースのシステムパラダイムは比較的単純な問題ドメインに ついては満足のいくものであるが、コンピュータシステムコンフィギュレーショ ンなどの大きく複雑な問題ドメインについては急速に用をなさなくなる。しかし ながら、二部グラフは大きいコンフィギュレーション問題にも小さいコンフィギ ュレーション問題にも等しく良好に作用する。 図1は本発明の主要な論理コンポーネントを示すブロック図である。コンフィ ギュレーションシステムデベロッパ10は、コンフィギュレータ定義情報(CO NFIG DEF)12を参照し、それをコンフィギュレータシステム16に入 力することによって、コンピュータシステムの所与のセットに利用可能なコンフ ィギュレーションアイテムおよびリソースを定義する。好ましい実施例では、デ ベロッパ10は特定のコンピュータシステムの利用可能な装置およびコンポーネ ントのためにコンフィギュレータ10の特定的な実現例をつくり出すべく新しい 専用言語を用いる。代替的には、デベロッパは通信ネットワーク、輸送システム などの、多くのコンポーネントからなる他の複雑なシステムを記述することもで きるだろう。コンフィギュレータ定義12は、問題ドメインに関しての情報を含 む。たとえば、コンピュータシステムのコンフィギュレーション問題ドメインで は、コンフィギュレータ定義はキャビネット、バックプレイン、入力/出力(I /O)チャネル、電源、 周辺装置等の利用可能なシステムコンポーネントに対する情報に加えて、これら のコンポーネントを相互接続するための要求、およびそれらの使用に対する制限 の情報を含む。この情報はデベロッパ10によってテキストベースの外部形式1 8にエンターされる。コンフィギュレータ定義12はデベロッパによって宣言的 に定義されており、かつ外部形式ファイル内にストアされていることに注意され たい。デベロッパ10は、いかなる利用可能なテキストエディタコンピュータプ ログラムを用いてでもこのファイルを編集することによって、コンフィギュレー タの定義を簡単に変更することができるであろう。新しいコンポーネントが利用 可能になったり、古いコンポーネントがリタイアさせられたり、または既存のコ ンポーネント間の関係が改定されたりした場合に、コンフィギュレータ16を再 プログラミングする必要はない。したがって、本システムの維持は、大きいルー ルベースのエキスパートシステムの維持よりも著しく容易である。 コンフィギュレータは知識ベース19と呼ばれるデータベースを含む。知識ベ ース19の内容が、コンフィギュレータによって操作されてもよい構築のタイプ を規定する。知識ベース19は2つの別個になったデータベースを含む。第1の ものはネット定義(NET DEF)20である。ネット定義は外部形式18に どのタイプのオブジェクトが表わされてもよいかを定義する。第2のデータベー スは、 パッカー定義(PACKER DEF)21である。パッカー定義は、外部形式 18内でどのタイプのパッキング論理オブジェクトが参照されてもよいかを定義 する。知識ベース19に関するさらなる詳細は、セクションIVにおいて後述さ れる。 外部形式18はローダモジュール22によって構文解析され、「アプリオリ」 グラフ24と呼ばれるグラフベースの内部形式に翻訳される。コンフィギュレー タ16は次にエンドユーザに受け渡される。外部形式がエンドユーザに受け渡さ れるのは、彼らが可能なコンフィギュレーションを修正できるようにするためで もある。続いて、コンフィギュレータユーザ26は入力装置14を介してコンフ ィギュレータ16の処理を開始する。ユーザ26はコンフィギュレータ16を動 作させて、このコンフィギュレータによってサポートされるコンピュータシステ ム(またはデベロッパによって定義される他の複雑なシステム)についての特定 的なコンフィギュレーション問題に対する解答を発生させる。インタフェースエ ンジン28が、構成すべきコンポーネントを選択するためにディスプレイ30上 にグラフィカルユーザインタフェース(GUI)を提供する。インタフェースエ ンジン28は入力装置14を介してユーザ入力選択を受け入れ、結果としてもた らされたシステムコンフィギュレーション情報およびステータスをディスプレイ 30上に表示する。入力装置14はキーボード、マウス、 またはユーザから入力を得るための他の適切な装置であってよい。 インタフェースエンジン28は、ロジックエンジンモジュール32に、現在の コンフィギュレーションのための選択されたシステムコンポーネントのインスタ ンスをつくり出し相互に接続するよう指示する。インスタンスとは、アプリオリ グラフ24内に存在するコンポーネントの特定化されたコピーである。この文脈 におけるコンポーネントは、オーダされなければならない、および/またはコン フィギュレーションプロセスに影響を与える識別可能なオブジェクト(これはし ばしば1つのハードウェアである)である。完成されたコンフィギュレーション は、ユーザのリクエストと、それに加えてそれらの相互接続を満足させるのに必 要なコンポーネントの集合からなる。ロジックエンジン32は、インスタンスか ら作られたグラフ(インスタンスグラフ)34を創出する。アプリオリグラフ2 4内の情報は各選択されたコンポーネントのインスタンスを生じるためのテンプ レートとして用いられる。インスタンスのセットおよびその相互接続は、コンフ ィギュレーションの現在の状態を定義する。各ユーザ選択がなされると、それに よりコンフィギュレーションにコンポーネントが付加され、ロジックエンジン3 2がグラフ内の要求される値を伝播させる。すなわち、ロジックエンジンは新た に修正されたアプリオリグラフ24を考察し、ここまでで処理されたユーザ のコンポーネント選択およびそれらに付随する暗黙の制限に基づくコンフィギュ レーション問題に対する解答を見つけ出そうとする。伝播は「パッキング」ノー ドと呼ばれるグラフ内の何らかのノードで立ち往生する。パッキングノードは、 グラフ内の異なったノードについての制約が相互に関連しているため、正確にコ ンフィギュレーション問題を解決するためには、処理されるべき付加的な論理を 必要とする。パッキングエンジン36はこれらの対立を解決して解答にたどり着 く。これは再検討のためインタフェースエンジン28によってユーザ26に戻る よう提示される。パッキングエンジン36およびロジックエンジン32は、アプ リオリグラフ24のノードに特定的な制約または他の式を評価する際に式ハンド ラ37の能力を利用する。この伝播およびパッキングプロセスからもたらされる コンフィギュレーションは、最適なものに近い。これはコンフィギュレータ16 が選択されたコンポーネントの使用にあたっての可能なすべてのデベロッパによ り定義された制約を評定することによって解答にたどり着いているため、アセン ブルされたときには動作が保証されているという点においては満足のいくもので ある。解答は理想的なものではないかもしれないが、明らかな問題点はすべて回 避するものであり、ほとんどの人間が容易に達成できるであろうよりも一般的に 優れている。 II.2レベルの二部グラフ 二部グラフは、コンフィギュレータ16における知識を表わすために用いられ る。グラフはアークによって相互接続されたノードのネットワークである。本発 明の好ましい実施例では、これらのアークは双方向性である。グラフはコンフィ ギュレータの定義と特定のコンフィギュレーションとの双方に関連するすべての 情報のための一次的記憶メカニズム(すなわちデータ構造)である。本システム では、ノードは長方形または長円形の図形で示されており、アークはそれらを接 続する線として示される。「二部」は、どのアークも1つのタイプのノードを他 のタイプのノードに結合するように、グラフ内に2つの異なる種類のノードがあ ることを意味する。複雑なコンフィギュレーションは、他のコンポーネントの能 力を供給および/または消費するコンポーネントとの関連で大いに特定可能であ る。これらのコンポーネントはさまざまな態様で互いにリンクされ、コンフィギ ュレータ論理と現在のコンフィギュレーションとを双方とも表わすグラフを形成 する。二部グラフを用いることで、付随の「制約式」を伴う「アイテム」および 「リソース」のネットワークにより特徴づけられるコンフィギュレーション問題 の図がもたらされる。アイテムとは、コンポーネントを表わすグラフ中のノード である。リソースとは、それ自体はコンポーネントではないがコンポーネントの コンフィギュレーションに影響を与えるアイテムにより供給または消費される能 力である。アイテムは構成可 能なアセンブリにおける特定的な特徴を提供する物理的コンポーネントであって 、一般に他のアイテムのサポートに、これら他のアイテムが、前のアイテムが必 要とする、または提供するリソースの量のいくらかを供給または消費するという 点において、依存する。たとえば、デジタルコンピュータシステムを構成する際 には、カードケージ(アイテム)が、カード(アイテム)が中に差し込まれ得る いくつかのスロット(リソース)を提供する。したがって、二部グラフは供給/ 消費依存度および量を反映すべく相互接続された交互のアイテムおよびリソース からなる。これらのアイテムおよびリソースが、ソフトウェア用語でいう「オブ ジェクト」として実現される。これらは名前を有しており、それらが直接関連し ている他のオブジェクトの名前を指定することによって共に接続される。アイテ ムおよびリソースは双方とも、局所的な関心の対象となる値を識別する特性を有 する。 2レベルのグラフを用いることで、コンフィギュレータ16の定義は特定のコ ンフィギュレーションの内容から区分され、一方で2組の情報間の一貫性が維持 される。第1のレベルでは、各アイテムまたはリソースにグラフのデベロッパ1 0により一意的な名前が与えられる。このグラフはデベロッパによって、主とし て存在すべきアイテムを明示的に特定し、かつそれらを接続するリソースを明示 的または暗示的に特定することによって、宣言的シンタックス でつくられ得る。アイテムおよびリソースは、専門化されたローカル情報を付与 するのに用いられ得る関連の変更可能な値を備える名前であるプロパティをも有 していてよく、アイテムは単純な供給/消費との関連で表わされ得るよりも複雑 な関係を定義する制約式を含むことができる。制約式はアイテムおよびリソース の名前のみを参照するファンクションの文法を用いて書かれる。制約はコンポー ネントがそれで構成され得る一般性に対する制限である。単一の制約がいくつか のコンポーネントに関わっていてもよく、単一のコンポーネントがいくつかの制 約を有していてもよく、1つまたはそれ以上のコンポーネントに対する複数の制 約が、複雑なやり方で相互に作用し得る。制約はインスタンスグラフ34上のユ ーザのリクエストのインパクトの有効性を判断するためにパッキングエンジン3 6によって用いられる。文法とは、言語の要素がどのように組合せられ得るかを 規定する1組のルールである。式文法は原始的な値およびファンクションがどの ようにして正当な式になるように組合せられ得るかを規定する。宣言的文法の存 在により、スタティックプログラムコード以外のやり方でコンフィギュレータ内 の計算を記述する可能性が生み出される。制約式を式文法で書き、それをアイテ ムに付随させることで、デベロッパはアイテム間の関係を正確に表現することが できる。 記述の第1のレベルは、構成され得るコンポーネントの タイプおよびそれらの相互依存性との関連で特定のコンピュータシステムのため のコンフィギュレータの構造を定義する。これはローダ22によってサポートさ れており、ローダ22は主にアイテムおよびそれらの特性からなるコンフィギュ レータ定義12(すなわち外部形式18)のシンタックス的形式を、すべてのア イテムおよびリソースならびにそれらの相互接続が明示的にその中で表わされる アプリオリグラフ24の内部形式に変換する。このグラフのロードされた定義的 形式は、コンフィギュレーションプロセスが進むにつれコンフィギュレータ16 によって用いられる情報の「アプリオリ」レベルをなす。ユーザがコンフィギュ レータを実行している間にはアプリオリレベルには変更は加えられない。これは ユーザがコンポーネントを構成するときに活性度伝播を導くのに用いられる。ア プリオリグラフ24はモノリシックではないことを理解すべきである。これは個 別にロード可能なファイルに含まれるグラフの集合から構成され得るだろう。た とえば、1つのファイルがコンピュータシステムの主要コンポーネントを規定す るグラフを含んでいてもよい。別のファイルが、コンピュータシステムへの接続 に利用可能な周辺装置の定義を含んでいてもよい。さまざまな通信装置が、第3 のファイルから得られてもよい、といった具合である。 構築されている特定のコンフィギュレーションは、同じアイテムおよびリソー スからのユーザの選択を含む同様な グラフによって第2のレベルにおいて表わされているが、各アイテムまたはリソ ースは(アプリオリグラフのようにすべてのものが存在するがそれはただ1回の みであるのではなく)ユーザのリクエストを満たすのに必要な回数だけ反復され る。これがグラフの「インスタンス」レベルであって、各々の必要なコンポーネ ントがそこで適切な回数だけ「インスタンシエート」される。インスタンスは2 方向リンケージによりアプリオリグラフ内の対応するノードに接続される。イン スタンスはまた、それが依存するすべてのインスタンス、またはそれに依存する インスタンスにも接続される。これらの接続は接続されたオブジェクトまたはそ れらへのポインタの名前との関連で表わされる。2方向リンケージは2つのオブ ジェクト間の1対の接続であって、これによりいずれかを他方のものから見出す ことは簡単なこととなる。インスタンスは常にアプリオリレベルにおいてきっか り1つのアイテムまたはリソースに対応するが、単一のアプリオリレベルアイテ ムまたはリソースは多くの対応するインスタンスを有し得ることに注意されたい 。このレベルでは、アイテムインスタンスは一般にやはりアプリオリレベルと同 じようにリソースインスタンスに接続されているが、各インスタンスはちょうど それ自体が依存している他のインスタンス、そしてこれらの他のインスタンスの みに、接続されている。したがって、インスタンスレベルは究極的に製造され受 け渡されるであろうアセンブ リを直接表わし、コンポーネントは最終的なシステム内に存在するであろうよう に相互接続されている。相互接続されたインスタンスは、本質的には、コンフィ ギュレーションである。インスタンスレベルは、構成されたシステムの値段づけ 、顧客に対する見積り、オーダ、および製造を提供する。 図2はアイテムのための外部形式の基本的シンタックスの図である。アイテム ステートメント38は、アイテムの名前を特定し、アイテムの宣言を始める。消 費ステートメント40は、アイテムにより消費された名前づけされているリソー スの量を特定する。供給ステートメント42は、アイテムにより供給されている 名前づけされたリソースの量を特定する。制約ステートメント44は、アイテム のコンフィギュレーションに適用される制約を特定する。複数の制約が特定され た場合、アイテムの各インスタンスについて列挙された制約のすべてが満足され なければならない。プロパティステートメント46は、アイテムのためのアトリ ビュート値を特定する。コンフィギュレータデベロッパ10は、コンフィギュレ ータ16の必要とするものを満たすべく自由にプロパティの名前を定義すること ができる。プロパティ値は数字または文字列であり得る。エンドアイテム48ト ークンは、アイテムの定義の終わりを意味する。1つのアイテム定義内に複数の プロパティ、供給、および消費ステートメントが存在していてもよい。 外部形式シンタックスの完全な定義は、付録Aに示される。ユニシス・コーポ レーションにより生産されるAシリーズのコンピュータシステムのためのサンプ ルの外部形式は、付録Bに示される。 III.単純な例 デジタルコンピュータシステムを構成する際のこの表現からもたらされるグラ フを説明するには、図3および図4を検討されたい。図3は外部形式の記述の一 例である。これは、コンフィギュレータデベロッパ10がキャビネット、電源、 周辺装置、およびこれらのコンポーネント間の関係を定義するのに書くであろう サンプルのシンタックス的外部形式50を示す。示されている例では、キャビネ ットアイテム52は記憶リソースを36単位供給し、そのうち中央のグループ( 大まかにはウェストの高さ)が、人間のコンピュータシステムオペレータにとっ て便利なアクセスを提供する。電源アイテム54は、キャビネットスペースを3 単位消費し、6つのソケットと電流を800デシアンペア供給する。周辺装置ア イテム56(これはディスクドライブ、テープドライブ等であってもよい)は、 20デシアンペア、1つのソケット、1つのチャネル接続、およびキャビネット スペースを4単位消費する。図4は、外部形式の例からもたらされるアプリオリ グラフの図である。アプリオリグラフは、リソースすなわち電源54からの電流 58およびソケット60と、キャビネット52からのいくら かのキャビネットスペース62と、何らかの他のサプライヤ66(これはこの例 ではこれ以上扱われない)へのチャネル接続64を必要とする周辺装置56を示 す。電源54は、キャビネットスペース62を消費する。接続をするアークの上 の数字は、アイテムによって供給または消費されるかもしれない(さまざまなユ ニット内の)リソースの典型的な量を表わす。 結果として得られるコンフィギュレータ16を動作させているコンフィギュレ ータユーザ26が、2つの周辺装置をこのアプリオリグラフに基づくコンピュー タシステムに構成したいと欲した場合、対応するインスタンスグラフが作られる 。図5は、インスタンスグラフの図である。第1の周辺装置68はソケット70 と、電流72と、キャビネットスペース74と、チャネル接続76とを要求する 。第2の周辺装置78は同様に、ソケット80と、電流82と、キャビネットス ペース84と、チャネル接続86とを要求する。双方の周辺装置は電源88によ って、ソケットおよび電流を供給される。2つの周辺装置68、78および関連 の電源88は、すべてキャビネット90により供給されるキャビネットスペース を消費する。キャビネット90は36単位のスペースを供給し、2つの周辺装置 の各々は4つの単位を消費し、電源88は3つの単位を消費することに注目され たい。ユーザ26が、たとえばキャビネットに利用可能なスペースが超過されて しまうことを引き起こす コンポーネントを選択した場合、コンフィギュレータ16は自動的に付加的なキ ャビネットアイテムの新しいインスタンスを作る。電源88に多すぎる数の装置 が接続され、それによりソケットまたは電流の供給が超過された場合、同様な処 理が起こる。 あるアイテムが、何らかの他の単一のアイテムが供給するリソースを1つより 多く消費した場合、供給アイテムの1つのインスタンスが通常これらのリソース インスタンスのすべてを消費アイテムのインスタンスに供給しなければならない 。 単純な場合には、ユーザのリクエストのコンフィギュレーションの暗示は直接 、活性度伝播によって、すなわちアプリオリグラフを通って、要求されるコンポ ーネントを表わすノードから、そのリクエストによって必要性が暗示される付加 的なコンポーネントを表わすノードまで制御が流れることを許容することにより 、導き出され得る。このフローはインスタンスグラフでの現在の使用に既に利用 可能でない、いかなる考察されたノードのインスタンスをもつくり出し、新しい リクエストへの応答を表わす、新しいものと古いものとの双方のインスタンス間 での接続をなすようにもたらすことができる。たとえば、電源54がキャビネッ ト内に収納されるのではなく床上に据えられる、図4のアプリオリグラフの図解 では、この場合周辺装置のためのリクエストはキャビネットスペースおよび必要 量の電流 を供給することのできる任意のソケットのための要求以上のものは含意しないだ ろう。一旦コンフィギュレーションセッションが始まると、キャビネットおよび 電源は他の理由のために既にインスタント化されていることがありがちであり、 (残っているキャパシティがない場合)新しいキャビネットまたは電源を構成す るか、既に構成されているものの設備を用いるかは、リクエストノードからこれ に接続されているノードへ移行することによってグラフの2つのレベルから直接 判断され得るだろう。 一旦必要とされる電源をキャビネット内に構成することと、それを必要とする 装置をそのキャビネット内に構成することとの間に相互作用が起こった場合、ア プリオリグラフ内で単純な活性度伝播以上のことを行なうことが必要になってく る。周辺装置とその電源とは同じキャビネット内になければならないと仮定した 場合、装置をキャビネット内に位置づけると、新しい電源が必要な場合そのため のスペースが十分に残っていないかもしれない。この相互作用が対処されない限 りは、デッドロックまたは早発の故障が生じ得る。デッドロックとは、1つのア クティビティが何らかの能力Aを取得しておりかつ能力Bを必要としていて、別 のアクティビティが能力Bを取得しておりかつ能力Aを必要としているという状 況である。一方または双方が必要な能力を手放すまでは、これらのアクティビテ ィによってそれ以上の作業がなされることはない。これは、同時に多 くの領域で起こり得る問題の非常に単純な例である。たとえば、周辺装置がパワ ーおよびキャビネットスペースだけでなくI/Oチャネルへの接続をも要求し、 このチャネルはそれがサポートできるであろう装置のアドレスの数に関して制限 されているかもしれず、チャネル上の装置は一緒にケーブリングされる必要があ るという場合である。このケーブリングにより、最短および最長のケーブル長さ の制約がもたらされるかもしれない。そのような状況では、常に満足のいく結果 を生じる単一の処理シーケンスはなく、次に対処すべき最も適切な問題のピース を動的に選択し、先を見越して仮に行なわれた選択の結果を探究する必要がある 。この複雑性はユーザがその中で選択を行なうシーケンスが最終的なコンフィギ ュレーションの質に対して持つインパクトによって合成され、これは可能な最良 の適合性を達成するために任意の時間においてすべての要求されたコンポーネン トを「リパック」することが可能なはずであることを示唆する。リパックにより 、インスタンスグラフからユーザによって直接要求されていないすべてのインス タンスが取除かれ、残ったインスタンスの伝播およびパッキングが再実行されて 新しいコンフィギュレーションが生成される。再パッキングのプロセスは通常、 より最適なコンフィギュレーションを生成する。なぜなら、インスタンスが処理 されるシーケンスを選択する自由がコンフィギュレータにあるからである。しか しながら、これを行なうに は、(シーケンシャルマシンにおいては)何らかのシーケンスでの処理のために コンポーネントを選択する必要があるが、どちらに対してこれらの選択を行なう かに関してオーダされた基準の単一のセットはない。セクションVIIで説明さ れたパッキングエンジン36は、これらの問題を双方とも、統合された態様で解 決する。 IV.知識ベース定義 知識ベース19は、2つの明確に区別される情報の組、すなわちネット定義2 0とパッカー定義21とからなる。 A.ネット定義 ネット定義20はアプリオリグラフ24内でどの種類のデータオブジェクトが 定義されてもよいかの定義である。これはロジックエンジン32によって操作さ れた根底にあるデータ構造を列挙する。ネット定義はアイテム、リソース、モジ ュール、アイテムセット、リソースセット、およびグループなどのオブジェクト を定義してもよい。ネット定義は、特定の種類の複雑なシステムのコンフィギュ レーションをサポートするべくセットアップされる。この発明の最初の実現例で は、ネット定義はインテリコープ・インコーポレーテッドから入手可能であるK EEエキスパートシステムシェルを用いて定義されていた。しかしながら、ネッ ト定義におけるオブジェクトは、C++クラスの定義としても実現され得るであ ろう。 B.パッカー定義 パッカー定義21は、アプリオリグラフ内のアイテムにどの種類のパッカーが 付され得るかの定義である。次の表は、LISPプログラミング言語で実現され 、KEEエキスパートシステムシェルを用いる好ましい実施例のためのサンプル のパッカー定義21の一部を示す。これはユニシス・コーポレーションから入手 可能であるAシリーズのコンピュータシステムのコンフィギュレーションをサポ ートする。基本的なパッカーは発端において定義される。キャビネット、パワー 分布ユニット(PDU)、チャネルアクセスマネージャ(CAM)、チャネルマ ネージャユニット(CMU)、およびベースなどのコンポーネントのためのパッ カーが定義されている。パッキング制御パッカーが、相互に作用するパッカーの 制御局面を特定すべく定義される。チェーンおよび長さチェックパッカーも、定 義される。最後に、長さパッカーは、小型コンピュータシステムインタフェース (SCSI)およびインテリジェント周辺インタフェース(IPI)のインタフ ェースのために定義されている。 V.ローダ ローダモジュール22は構文外部形式18をグラフに基づく内部形式のアプリ オリレベルに変換する。ローダはデベロッパ10により入力された外部形式を読 出し、アイテム定義を識別する。ローダは次に、アイテム情報を保持するオブジ ェクトまたは「フレーム」と呼ばれる内部データ構造を創出する。外部形式にお けるリソースには一般には明確な定義はない。ローダは各アイテムおよびその属 性を取込んでそれに対し含意されるリソースを創出しなければならない。ローダ は、アイテムの定義からアイテムの消費/供給ステートメントを見ることにより どのリソースを創出すべきかがわかる。フレームはまた各リソースに対して生成 される。各フレームにはそのアイテムまたはリソースの名称が与えられる。各フ レームは、消費するものおよび供給するものならびにそれらに関連する量のリス トを含む。このようにして、アプリオリグラフとして表わされる関係が、フレー ム各々の消費するものおよび供給するもののフィールドにおいて名称および量の リストによって定義される。 図6は、外部形式ロードプロセスのフローチャートである。ステップ100で 、ローダは外部形式のファイルにおけるテキストの文字の構文解析を行ないアイ テムを獲得する。パーサは付録Aに詳細に説明されている外部形式の文法定義に 従いテキストを読出す。ローダは次にステップ1 02でアイテムに対しフレームを生成する。フレームは次に、外部形式ファイル のアイテム定義の残りから得られたアイテムの属性でロードされる(ステップ1 04)。ステップ106でローダは現在のアイテムに対し含意されているリソー スを創出する。このステップは、含意されたリソース各々がアプリオリグラフに 既に存在していない場合にのみ必要である。新しいフレームが、もし特定的な要 求によってまたは異なるアイテムに対し既に生成されていない場合に、識別され た各リソースについて生成される。ステップ108で、ローダは含意されたリソ ースを、アイテムおよびリソースを表わすフレームにおけるフィールドを修正す ることによりアイテムに結び付ける。外部形式ファイルにおけるすべてのアイテ ムが処理されていなければ(テストステップ110)、ステップ100の次には ノーパス112が続き、次のアイテムが外部形式ファイルから入手される。ロー ダがすべてのアイテムを処理していれば、ローダ処理はイエスパス114を介し て終了する。 VI.ロジックエンジン 一般的にロジックエンジン32はアプリオリグラフ24およびインスタンスグ ラフ34から、ユーザの要求が何であるかを推論し、コンフィギュレーションの 既存の状態に新規のコンポーネント手段を追加する。始めにロジックエンジンは ユーザの要求に基づいてアプリオリグラフ24を調べる。ロジックエンジン32 はユーザの選択に基づいて アイテムおよびリソースに対しインスタンスを創出する。ロジックエンジンは、 パッキングエンジン36(以下で説明する)の実行の前にインスタンスグラフを 処理し(「ネットを伝播する」)、終了する。伝播パスはアプリオリグラフによ って定義されるが、プログラム制御の実際の伝播はインスタンスグラフで生成さ れる新規のインスタンスを通して行なわれる。ロジックエンジンはノードごとに インスタンスグラフを通して進み、アイテムとリソースとの間の正しいリンケー ジを構成する。前方または後方チェーニングは行なわれない。ロジックエンジン は単にグラフの状態の検査および更新を行なう。この処理設計方策は、規則に基 づく知識表現のための一般の設計よりもはるかに簡単である。ロジックエンジン はワークキューを使用してインスタンスグラフにおけるノード間のロジックリン クを一時的にストアする。各アイテムに対し、リソースリンクはストアされてか ら辿られる。このリンクはロジックエンジンにより制御メカニズムとして使用さ れる。ワークキューにおける次のリンクを辿ることにより、インスタンスグラフ のどのノードを次に処理すべきかがわかる。ネット伝播プロセスは反復する。リ ソースリンクは同じアイテムに関連付けられかつ接続されるため、ワークキュー にストアされたリンクを結合する必要がある場合がある。 ロジックエンジンは、アイテムの所与の数のインスタンスを生成すること、所 与のアイテムのインスタンスをリタ ーンすること、およびインスタンスを割当てられていた別のインスタンスに接続 することなどの動作について呼出可能な機能を提供する。 アプリオリグラフ固有の供給/消費関係は、コンポーネントを使用する制限に ついて定義している。たとえば、コンピュータシステムの文脈では、大きなメイ ンフレームには通常制限は少ない。しかしながら、小さなシステムには、マザー ボードにおけるスロットの最大数などの制限があることが多い。何らかの所与の システムについて、一定量のリソースが利用可能である。この制限は、接続でき る周辺装置の数などを規定する。グラフから見ると、制限はコンフィギュレーシ ョンの問題の逆であるように見える。アプリオリグラフ24では、消費は「上向 きに」流れる。すなわち、コンポーネントを追加することの結果生じる副作用が 何であるかを判断するために、ロジックエンジンはグラフを見上げてどのリソー スを消費するかを見る。インスタンスグラフでは、制限は「下向きに」流れる。 何らかの所与のコンポーネントについての制限を判断するために、ロジックエン ジン32は、絶対的なリソースの制限が設けられているコンポーネントから始め てインスタンスグラフ34を見下ろし、要求できるコンポーネントの次の下位レ ベルの最大量を計算する。このプロセスは、所与のコンポーネントに到達するま でレベルごとに繰返される。 VII.パッキングエンジン デベロッパ10は、どの活性度伝播が不適切でありしたがってパッキングがど こで必要とされるかについてアプリオリグラフのノードをマニュアルでマークす ることができる。パッキングは、適した基準の何らかの長所(通常は最適な方法 に限りなく近い)に従い、コンポーネントのある組を別のコンポーネント内に配 置するプロセスであり、「パッカー」はこのプロセスを実行するロジックの組で ある。アプリオリグラフにおけるこのようなノード各々は、適切な方法で自身に 必要なものを扱う異なる「パッカー」を構文的に識別することができる(構文定 義については付録A参照)。パッカーはパッキングするアイテムのノードに付け られており、アイテムに接続されるリソースはそのパッカーが処理する。パッキ ングエンジン36は複数のパッカーで構成される。パッカーの内部論理は同じで ある、すなわちパッカー論理のコアとなる実働化は再使用可能な単一ブロックの ソフトウエアである。したがって、すべてのパッカーはプロセスの同じサイクル を実行する。好ましい実施例では、パッカーはKEEにおけるオブジェクトであ る。代替的に、パッカーをC++クラスのオブジェクトとして表してもよい。各 パッカーのクラスにはデフォルト設定がある。デベロッパはセクションIV.B で先に述べたパッカー定義21における利用可能なパッカーのクラスを定義する 。デベロッパにより特定された制約式は通常異なるパッカーを区別するものであ る。アプリオリグラフ2 4においてアイテムに付けられたパッカーの位置およびその制約式は所与のパッ カーに対するタスクを定義する。パッカーは生成およびテスト問題解決法を使用 する。 好ましい実施例では、パッカーはビンパッキング、ストリンギング、ケーブリ ング、ラックパッキングまたはその他の複雑なコンポーネントアセンブリの要求 に関係する、いくつかの異なっているが相関する問題を解決するために使用され る。ビンパッキングの問題では、物理的な大きさを有する多数のオブジェクトが コンテナ(ビン)タイプにパッキングされねばならない。目的は、すべてのオブ ジェクトをコンテナにパッキングすることができるようにするが使用するコンテ ナの数を最低限にするパッキングの回答を発見することである。たとえばコンピ ュータシステムでは、複数の周辺装置を最小数のキャビネットにパッキングする がそれでもなおフロントアクセス要求などの制約を満たすことが望ましい。一般 的には、ビンパッキングの問題は、空間のおよび電力ローディングの制約に適合 する最適なコンポーネント配置シーケンスを発見することを含む。「ストリンギ ング」の問題では、目標は、キャビネットにパッキングされているすべての周辺 装置を、利用できるI/Oケーブルが物理的に周辺装置を接続でき、かつケーブ ルの長さがまた最小となるように接続することである。「ストリング」は複数の 周辺装置をI/Oチャネルに接続する方法であり、各装置が自身のI/Oチャネ ルを有する (さらなるハードウエアが必要という点で見れば高価となる)ことではない。ス トリングによりホストプロセッサへのデータパスの数が最小になる。コンピュー タシステムコンフィギュレーションドメインでは、ストリンギングの目標は、制 約式によって表わされる供給/消費の制約および制約の組合せに従う最適な方法 で装置を接続することである。制約式を用いて、いかにして装置を接続できるか についての特徴が定義される。本発明は、ビンパッキングおよびストリンギング の問題を同時に解決するためのメカニズムを提供する。ビンパッキング問題を最 適な方法で解決することにより、ストリンギング問題の何らかの解決の最適性が 低下するかも知れず、またその逆となる場合もある。この問題に同時に取り組む ことにより、コンフィギュレータは最適に近い全体的な回答を生成する。 たとえば、コンピュータシステムの種々のコンポーネントをキャビネットに配 置する状況について考察する。キャビネットは固定された量のラックスペースを 提供する。ユニシス・コーポレイションから入手できるAシリーズのコンピュー タシステムでは、キャビネットは、チャネルアダプタモジュール(CAM)に接 続するチャネルマネージャユニット(CMU)に接続するI/Oチャネルを保持 し得る。CAMは次に磁気テープドライブ装置などの周辺装置に接続するか、ま たは磁気ディスクドライブ装置に接続する。これらのコンポーネントはすべて電 力分配ユニット (PDU)からの電力の供給を必要とする。これらのコンポーネントをキャビネ ットに配置するとき、コンフィギュレータは可能性のあるコンポーネントの配置 を他の配置とともに同時に評価することにより最適な解決法を判断する。したが って、デベロッパはパッカーをキャビネット、I/Oチャネル装置、CMU、C AMおよびPDUコンポーネントに付ける。これらのパッカーは(以下で述べる ように)相互作用してビンパッキングの問題についての好ましい回答を発見する 。 アプリオリグラフ24を通して流れる制御がパッキングノードに達するとき、 活性度伝播制御の流れは一時的に停止され、その他の懸案中のパス(1つ以上の アークが自身から出ているノードは複数のフローパスを生成する)を辿ることが できる。最終的には、アプリオリグラフにおける利用可能なパスすべてが探索さ れ、各パスは終了に通じるかパッキングノードに到達するかいずれかである。懸 案中のパッキング決定のために停止されている1組のノードでの不完全なインス タンス接続は、これから行なわなければならないパッキングの作業について規定 し、パッキングノードは、処理の次の段を実行するのに誘起せねばならないパッ キングエンジン36における1組のパッカーを自身で識別する。このようにして 識別されたすべてのパッカーが開始される。これらのパッカーのうち1つは、コ ンフィギュレータが処理する次の有用な作業でなければならない。 各々がするべき作業を有する1組のパッカーを与えられると、問題はどのパッ カーがその他のパッカーに対し優先順位を取るかについていかにして識別するか である。本発明では、各パッカーは自身のローカルワークの優先順位を付けるこ とができる。コンフィギュレータはまた、すべてのパッカーの間で作業を調整し なければならない。この問題に対処するために、パッカーは、所望の動作を要求 しかつその応答を相関付けるマスタスケジューラによって呼出される。マスタス ケジューラは、スーパバイザ、およびマスタコンサルタントという2つの処理要 素からなる。 パッカーは優先的にインスタンスによって動作することに注意されたい。パッ カーはインスタンスを接続することができ、かつインスタンスグラフにおける新 規のインスタンスを作成できる。これらの動作は、アプリオリグラフにおける伝 播および停止を生じさせるかもしれない。 A.パッカー処理 個々のパッカーの処理はいくつかの別々の相に分割され、リターンされる結果 は標準化された形式で表現され、マスタスケジューラが相関させることができる 。図7は、個々のパッカー処理ステップのフロー図である。ビッドステップ20 2で、各活性パッカーは次に実行することが最も重要である1つの動作を識別し 、その動作がいかに所望されるかおよびいかに制約されるかを表わす0と1との 間の2つの重みを割当てる(すなわちこの選択に対しその他の配 置の可能性がいくつ存在するかである)。選択ステップ204で、このビッドが 、重み付け方法を用い所望性と可能な配置がいかに制約されるかを組合せて比較 される。マスタスケジューラは1つのパッカーを選択してビッドをさらに発展さ せる。割当ステップ206で、選択されたパッカーは、インスタンスを作成する ことによりおよび/またはインスタンスグラフ34において接続を行なうことに より提案された動作を一時的に実現し、その他のパッカーのコンサルタント処理 (以下で述べる)を誘起して、すべての観点からして結果として生じるコンフィ ギュレーションの状態が正当であるかどうかを判断する。もしそうでなければ、 代わりの割当選択を行なうことができる、すなわち正当であれば、後に問題が発 生する場合に備え(前述の周辺/電力供給スペースの衝突の例などのように)、 新しい状態からルックアヘッドが行なわれる。ルックアヘッドは、既に一時的に 行なわれている選択の意味するものを詳細に調査してその選択に不利な結果が生 じる可能性があるかどうかを判断する。ルックアヘッドプロセスが終了まで進む ことが可能であり(最良の結果について)、またはプリセットされた数のレベル の後に早期に終了することが可能である(よりよいパフォーマンスについて)。 割当プロポーザは、マスタスケジューラによって呼出されると、所与のパッカー について選択を行なう。この選択はたとえばストリングにコンポーネントを付け ることからなるかもしれな い。各パッカーは自分自身の観点から提案された選択を査定するロジックを含む 。別のパッカーは提案された選択に従うかまたは反対してもよい。割当プロポー ザは実際にはインスタンスグラフに新規のアイテムを挿入してその選択を反映さ せる。この挿入は次に、別のパッカーによる承認の後にバックアウトされる。実 現ステップ208で、割当相の間に問題が発見されなければ、選択された動作が 永久なものとされる。 すべての場合において、違法な状態を構成するものの定義は、プログラムコー ドではなく宣言形式である。この方策の実行に成功する能力は、パッカーの機能 性の因数分解、および基礎をなすグラフとの統合に依存する。 B.選択プロポーザ 図8は、パッカーの4つの部分を示すブロック図である。 選択プロポーザ210はインスタンスグラフ34に影響を及ぼす提案される動作 の進路について何をビッドするかの選択を行なう。選択プロポーザは次に最も配 置したいインスタンスを選択し、所望性および重要性という点から0ないし1の スケールで評価する。選択プロポーザ210はパッカーが処理する必要がある既 存のアイテムインスタンスのリストを採用する。次にインスタンスグラフにおい て各アイテムインスタンスを配置するために可能な選択すべてを見る。所与の選 択を実現する動作はタスクと呼ばれる。各可能なタスクについて、選択プロポー ザは以下の処理を 実行する。選択プロポーザは、このパッカーのコンサルタント214が決定する 制限の理由または制約の理由による現在のタスクを実行する際の制約を表わす、 制約される量を計算する。現在のタスクを割当てることができない既存のアイテ ムインスタンスのリストにおけるメンバの数を同定することにより、制約される 量が計算される。コンサルタント214が定めるように現在のタスクを新規のイ ンスタンスに割当てることができなければ、選択プロポーザは作成することがで きる新規のインスタンスの数(制限に従う)を制約される量に加える。方策量が 計算されて、デベロッパが特定する方策の機能に従い、現在のタスクをパッキン グエンジン36が実現する次の動作に割当てる値を表わす。次に、値が計算され てデベロッパが規定する制約される量と方策の量との組合せを表わす。今計算さ れた値が、選択プロポーザが可能な各々のタスクを循環するときに見て最適な値 であれば、この値はパッカーの最良の値として保存され、現在のタスクはこのパ ッカーの最良のタスクとして保存される。 すべてのタスクの分析の後、選択プロポーザは最良のタスクおよび最良の値を リターンする。 C.割当プロポーザ 割当プロポーザ212は選択されたビッドの詳細を埋める。選択プロポーザは この選択を取込みこれをインスタンスグラフに正当に配置しようとする。その他 のパッカーの 関連するコンサルタントを検査して提案された配置が確実に問題を生じさせない ようにする。また前方を見て将来の問題の発生を回避する。割当プロポーザはパ ッカーが付けられているアイテムの既存のインスタンス各々を調べる。スーパバ イザにより送られたタスクをインスタンスグラフのインスタンスに一時的に割当 てる。提案された割当が限界を超過しなければ、かつマスタスケジューラのマス タコンサルタント処理がこの割当が許容できることを示していれば、割当プロポ ーザはインスタンスをスーパバイザに戻す。 既存のインスタンスにおける配置が不可能であれば、割当プロポーザ212は 一時的にタスクを新規のインスタンスに割当てる。マスタコンサルタントがこれ か許容できることを示せば、割当プロポーザは「新規の」表示をスーパバイザに 戻す。そうでなければ、割当プロポーザは「割当なし」表示をスーパバイザに戻 す。 D.コンサルタント コンサルタント214は提案されたインスタンスグラフの全般的な状態を再考 してパッカーの観点からその正当性を検査する。提案されたインスタンスグラフ が許容できるかどうかを示す。コンサルタント214は選択プロポーザから送ら れたインスタンスの文脈内でのパッカーの制約を評価する。この処理の結果は戻 される。 E.インプリメンタ インプリメンタ216は、影響を受けたすべてのパッカーが、提案された動作 の進路を許容可能であるとして送った後、それについてインスタンスグラフにお いて永久的な変更を生じさせる。インプリメンタはインスタンスグラフの提案さ れた動作の進路を実行することにより、ユーザの要求の結果としてそれを更新す る。 F.マスタスケジューラ 図9は、マスタスケジューラとパッカーとの関係を示すブロック図である。マ スタスケジューラ218はスーパバイザ220およびマスタコンサルタント22 2という2つの独立したモジュールからなる。マスタスケジューラ218はパッ カーの動作を調整する。マスタスケジューラは活性選択プロポーザ210各々か らの提案を要求する。提出されたうち最も重要な提案を選択する。マスタスケジ ューラは対応する割当プロポーザ212からのその提案に対して配置を要求する 。割当に成功すれば、提案を行なったパッカーのインプリメンタ216を呼出し てその提案を永久のものにする。このプロセスはするべき作業を有するパッカー がなくなるまで繰返される。 スーパバイザ220は、インスタンスグラフで達成することができるさらなる パッキング活動がなくなったときにのみ終了する、コンフィギュレータ16内で の制御プロセスである。スーパバイザはパッカーに絶え間なく問合せを行ないコ ンフィギュレーションを生成する際に実行すべき 最も重要なタスクを決定する。アプリオリグラフで特定された各々のパッカーに ついて、スーパバイザ220はパッカーの選択プロポーザ210を呼出してパッ カーの最良のタスクおよび最良の値を得る。選択プロポーザがタスクを戻し、戻 された値が今までから見て最良のものであれば、スーパバイザはそのパッカーを 最良のパッカーとして保存し、戻されたタスクをシステムの最良のタスクとして 保存する。 すべてのパッカーの問合せの後、システムの最良のタスクが識別されれば、ス ーパバイザ220はシステムの最良のタスクを入力として有する最良のパッカー の割当プロポーザ212を呼出し割当てられるべき新規のインスタンスを得る。 割当が発見されれば、スーパバイザは最良のパッカーのインプリメンタ216を 呼出し、システムの最良のタスクおよび割当を入力として送り、割当を実現する 。割当が発見されなければ、システムの最良のタスクは一時記憶領域に置かれプ ロセスは繰返される。システムの最良のタスクが識別されなければ、スーパバイ ザ220の処理は完了する。 マスタコンサルタント222はパッカーの割当プロポーザ212によって呼出 されて、提案された動作の進路がすべてのパッカーにとって許容できるかどうか を判断する。マスタコンサルタントは今度は各パッカーのコンサルタント214 に問合せを行なう。何らかのパッカーのコンサル タントが提案された動作の進路に反対すれば、マスタコンサルタント222は否 定的な表示を自身を呼出した割当プロポーザに戻す。マスタコンサルタントはま た、今度は割当てられていないタスク各々を調べる。タスクのパッカーの割当プ ロポーザがタスクに対する割当を戻せば、マスタコンサルタントは肯定的な表示 を自身を呼出した割当プロポーザに戻す。上記のいずれの場合も発生しなければ 、マスタコンサルタントは否定的な表示を戻す。 インスタンスグラフの伝播におけるロジックエンジンの固定的で順次的な制御 の流れと比較すると、パッカーの制御の流れは非常に流動的でかつ同時発生的で ある。この流れは、現在の部分的なコンフィギュレーションの状態およびどの動 作が次に完了させるべき最も重要な動作であるかということによって駆動される 。これにより異なるパッカーが、自身が責任を持つべきコンポーネントが特定的 な処理の段階で最も重要になったとき次第で、異なるときにコンフィギュレータ の処理を制御することができる。 パッカーはロジックエンジンにより与えられている何らかの1組のリソースイ ンスタンスを既存のコンフィギュレーションに加えることにより動作する。一度 に数多くのインスタンスを考慮に入れていれば、既に構成されているものに加え るものとしてすべてが並行してパッキングされる。1つのインスタンスのみを考 慮しているならば、既存のコンフィギュレーションに直接加えられる。既にパッ キング されているアイテムがなければ、与えられたすべてのインスタンスが可能な限り パッキングされる。このようにしてパッキングアーキテクチャはコンフィギュレ ーションへの小さな増分を加えることおよびコンフィギュレーション全体を完全 に再びパッキングすること双方をサポートする。コンフィギュレーション全体の 再パッキングの結果は通常増分的なパッキングよりも優れている。 G.パッキング例 この例は、コンピュータシステムのインスタンスグラフおよびセクションII Iで議論された仮定に基づくものである。ケーブルパッカーの選択プロポーザに おける特別な方策のコードが少量必要であり、このコードは、既存のストリング に取付けることができる周辺装置についての作業を、新規のストリングを必要と する作業よりも好んで選択する(これはデフォルトであろう)。ストリングは複 数の装置を1組のI/Oチャネルに接続する方法である。パッキングの状況が以 下のとおりであると想定する。 ・図5に示す周辺装置の1つがキャビネットにまだ配置されていない(すなわ ちCabinet space、したがって電力、接続が満たされていない)。 ・1つ以上の周辺装置に対し既存のキャビネットにスペースがあるがそれ以上 はない。 ・既にキャビネットにパッキングされている電源から十分なソケットおよび電 流が利用できる。 ・キャビネットに既に配置されている周辺装置へのストリングがまだ配置され ていない周辺装置にも適用できるが、(ケーブルの長さのために)別のキャビネ ットのインスタンスに配置されるならば適用できない。 ・既存のキャビネットにおいて何らかの周辺装置とストリンギングすることが できない、キャビネットが必要な異なるタイプの別の周辺装置がある。 本質的には、2つのパッカーが各周辺装置に対しあるシーケンスで進行しなけ ればならない。2つのパッカーはすなわちキャビネットパッカーおよびケーブリ ング(ストリンギング)パッカーである。各パッカーは次に最も所望される動作 についてビッドを出すことが求められるだろう。キャビネットパッカーには1つ の周辺装置をその他の周辺装置よりも好む根拠がなく、したがっていずれかにつ いてビッドを出すかもしれないが、重みは低い。ケーブルパッカーはさらなる方 策のためストリンギングできる周辺装置についてビッドを行なうであろうが、比 較的重みは高い。ケーブルパッカーはしたがってビッドに勝ち次にストリンギン グ可能な周辺装置を既存のストリングに割当てる。結果として生じる状況は正当 であるため、永久のものとされる。 次にビッドの新ラウンドが開始される。今度はキャビネットパッカーは新しく ストリンギングされる周辺装置が部分的に配置されていることを見て、既存のキ ャビネットに おいてその周辺装置のビッドをする。ケーブルパッカーは残っている周辺装置に ついては比較的無関心であり、そのため重み付けを低くしてビッドする。キャビ ネットパッカーはこのようにしてビッドに勝利する。割当プロセスには問題はな く、配置はしたがって永久のものとされる。 残余の周辺装置は次に新しいストリングで新規のキャビネットに配置される。 このシナリオは初期の条件にわずかな変更を加え以下のように非常に異なる結 果をもたらす。 ・2つのストリンギング可能な周辺装置のうちストリングされていない一方は 、キャビネットのフロントアクセス領域におけるスペースを要求するテープドラ イブ装置である。 ・既存のキャビネットにはフロントアクセス領域にフリースペースかない。 こうした条件の下、キャビネットパッカーはテープドライブ装置をビッドする が、その理由はこれが最も制約された選択であるためだが、重みはあまり大きく ない。ケーブルパッカーは同じ装置をかなり重みを大きくしてビッドするが、そ の理由はストリンギングすることができるからである。ケーブルパッカーはした がって勝利し、以前のようにその周辺装置をストリンギングしようとする。ルッ クアヘッドの深さがユーザによりあまり低く設定されていなければ、ケーブル割 当中のルックアヘッドは選択さ れた装置を既存のキャビネットに配置しようとするが、失敗する、というのもフ ロントアクセス領域が必要であるためである。したがって新規のキャビネットイ ンスタンスが作成されその装置を新規のキャビネットにおけるフロントアクセス 領域に配置する。しかしながら、さらなるルックアヘッド処理により、ケーブル の長さの制約が今破られていることが発されるだろう。既存のストリングへの配 置はしたがって失敗する。新しいストリングが生成され、新規のキャビネットへ の割当に成功する。第2の装置が次に古いキャビネットにおける新しいストリン グに配置される。 以前のシナリオについてのわずかな変更について考察する。すなわち ・既存のキャビネット装置がフロントアクセス領域にフリースペースを有する 。 このことは重みが少々異なる、より簡単な処理シーケンスにつながる。 ビッドの間、キャビネットパッカーは、テープドライブ装置がフロントアクセ ス領域を要求していること、したがって、選択がより制約されていることを観察 する。キャビネットパッカーはしたがってその装置を重みをかなり高くしてビッ トするが、マニュアルの方策のためにケーブルパッカーは(ストリンギングに対 し同じ装置をビッドする)より高い重みを割当て、したがってビッドに勝利する 。このシナリオにおける割当には問題は生じず、第2の装置は 再び新しいキャビネットにおける新規のストリングに進む。 処理におけるこれらの変化すべては、パッキングアーキテクチャに必要なもの として生じる。これらは、ビッドの計算および次のアイテムの選択のための各パ ッカーに関連する非常に制限された特定化されたコードと結合された、インスタ ンスグラフにおけるパッキング可能なアイテムに与えられる、制約式の解釈から 生じるものである。図3の例では、関連する制約は、キャビネット(Front Acc essとして9ないし26のレンジを規定する36のCabinet Spaceの供給を有す る)、周辺装置(ある量のCabinet Spaceの消費を有し、テープドライブ装置で あればFront Accessに対する必要性を特定する)、およびケーブル(ケーブル 全長について制約を有し、パッカーパラメータにおいて以下に述べられる)に付 けられる。コンフィギュレータデペロッパ10は、すべてのシナリオについて正 しいコンフィギュレーションを生成するために、外部形式18にこの情報すべて を入力しなければならない。 VIII.制約式および式ハンドラ パッキングプロセスの制御には2つのレベル、すなわち総合的な戦術的なもの と、個々の戦略的なものがある。戦術レベルはパッカーの部分が処理のために選 択されビッドの重みの生成されるシーケンスに対応する。これらの動作は完全に 宣言型の形式で制御されるのではない。戦略レベルは行なった選択の正当性に関 し、プロポーザにおける明 らかに違法な選択を回避し、かつコンサルタントにおけるすべての関連する観点 からの選択を再考する。 制御の戦略レベルは、全体が括弧でくくられ、任意的にネストされ、プレフィ ックス形式の関数型言語で書かれた制約式を解釈する、一般的な式ハンドラによ って実現される。コンフィギュレータには唯一の式ハンドラ37がある。これは ロジックエンジン32およびパッキングエンジン36によって呼出される。式ハ ンドラを呼出す必要性は、インスタンスグラフにおける現在の位置によって決定 される。アイテム間の複雑な相互作用が常にリソースの消費および供給という点 において特定することができるわけではないので、パッカーは自身が取付けられ たアイテムの制約の規定を考慮する。制約式は構成するのに利用できるコンポー ネントの内部的な関係を規定するコンフィギュレータデベロッパにより特定され るデータである。すなわち、インスタンスグラフにおけるアイテムのインスタン ス内で存在することが許可される関係について記述されている。式ハンドラは式 を評価してそのリターンの値を生成することができるプログラムである。この式 はパッカーが付けられたアプリオリグラフにおけるアイテムにストアされる。こ の解釈は常にインスタンスグラフの現在の状態に関して行なわれる。式は、評価 して何らかの必要とされる結果をもたらすことができるファンクションコールと アーギュメントとの組合せである。アーギュメントはファンクションに送ら れるパラメータである。式は、自身が結び付けられているパッカーの観点から現 在の状態の正当性を示す、真または偽の結果を生み出す。個々のパッカーに結び 付けることにより、コンフィギュレータのデベロッパにとっては自然である態様 で、正当性の定義を区切ることができる。式に対する構文形式は、ローダ22に よって内部的に解析される形式に変換され、したがってコンフィギュレーション を支配する規則の正当性が変化したとき修正を容易に行なうことができる。これ らの式によって非局所的な正当性の検査すべてが制御される。 式における式またはフレーズの一般形式は以下のとおりである。 (〈function-keyword〉[〈argument〉]...) 〈function-keyword〉は、さらなるプログラムコードを実現しなければ延長す ることができないファンクションの予め規定されたリストからきたものである。 アーギュメントは、文字通りの値、値のリスト、T(真)、NIL(偽または空 )、アプリオリグラフにおけるノードの名称、または上記の一般形式での副次的 な式である可能性がある。何らかの構成された値のタイプが、コンフィギュレー ションの問題(たとえば位置)の具体的な局面に特定的なデータタイプを取扱う 際に利用できる。さらに、非常に稀であるが、「パス」の概念は、複数のパスが 同じ1対のインスタンスに結合するときにはインスタンスグラフの領域を通 したステッピングのプロセスを明確に制御するのに必要とされる。 予め規定されたファンクションにより、名称を付けられたアイテムの関連する インスタンスすべてをインスタンスグラフから引出すこと、リストにおいてエン トリの数をカウントすること、またはリストにおけるエントリに述語を与え述語 が常に満足された(「すべて」)または(「何らか」)であるかどうかを検査す ることなどの動作が可能になる。式の評価は、始めに式を含むアイテムのインス タンスが「現在の」インスタンスであると考えられる文脈において実行される。 暗黙に、この文脈におけるその他のアイテムのインスタンスへのリファレンスは 、直接または間接的にこのインスタンスに結び付けられているインスタンスに対 してのみである。文脈は自動的にリストにおける各インスタンスに対し、すべて または何らかが実行されるファンクションとして再び結び付けられ、そのため暗 黙のインスタンスはファンクションが処理しているリストから現在考慮されてい るものになる。特定的な文脈を、In.Context ファンクションにより選択するこ とができる。この文脈の従属性の効果は、デベロッパが、インスタンスレベルで の制御動作を必要とせずに、専らアプリオリグラフのレベルでコンフィギュレー タを特定できることである。こうすることによりコンフィギュレータを開発する 言語およびプロセス双方が簡略化される。 インスタンスが間接的に現在のインスタンスに結ぴ付けられているとき、概念 的にはコンフィギュレータが現在のインスタンスからインスタンスグラフにおい て可能なパスを探索し、ターゲットとするインスタンスに対して文脈を配置する ことが必要であり、同様の処理が名称が付けられたセットのすべてのメンバを識 別するのに必要である。セットはアイテムの集まりである。この文脈処理は、必 要なときごとに直接的に実行されるならば遅いであろう。しかしながら、セット への名称を構成要素のアイテムに拡大し、かつ与えられた各名称に到達するため にたどられるノードの経路を明確に述べることにより、ロードのときに自動的に 最適化される。 パスは、順次的に、現在のアイテムと所与の名称との間でたどられるアイテム およびリソースを規定する(そのようにして探索を回避する)。こうした最適化 は、式の内部形式はデベロッパが書こうと意図しているものとわずかに異なるこ とを示している。デベロッパが必要な内部ファンクションを明確に書くことが可 能である(そうすることにより、より複雑なロードプロセスをプログラムする必 要性を回避する)、そうすれば結果として生じるコンフィギュレータの維持が非 常に困難になる、その理由は制約式とアプリオリグラフの構造との間の従属性が 厳しいためである。 A.制約式の例 例として再びコンピュータシステムのコンフィギュレー ションのドメインから、SCSIケーブルパッカーに結び付けられ確実に全体的 なケーブルの長さの制限を超過しないようにする長さの制約式は以下のとおりと なる。 (〈=(+(COLLET(PROPERTY.VALUE LENGTH) (CHAINED.INSTANCE.VALUES SCSI.CABLE) ))82) これは以下のことを意味すると解釈される。 「現在のSCSI.CABLEインスタンスから、ケーブルの各端部における コネクタに従い結び付けられたSCSI.CABLEすべてを発見する。」CH AINED.INSTANCE.VALUESというファンクションはこの動作 を実行し、始めのものを含め発見したすべてのインスタンスのリストをリターン する。 「リターンされた各インスタンスに対し、LENGTHプロパティを引出し、 リストにおけるすべてのプロパティをリターンする。」PROPERTY.VA LUEというファンクションは、現在のインスタンスから名称付けられたプロパ ティの値をリターンする。COLLETというファンクションは、第2のアーギ ュメントとして与えられたインスタンスのリストにわたって反復する。各インス タンスに与えられたときに始めのアーギュメントとして付与された式から戻され たものを集めてリストに入れる。このリストは最終的に呼出したものに戻される 。PROPERTY.VALUEが与えられる文脈は自動的に、実行がリス トを下に進むときにCOLLETによって再び結び付けられ、結果として、CH AINED.INSTANCE.VALUESがリターンする各インスタンスに 与えられる(PROPERTY.VALUE LENGTH)となる。このプロ セスにより、考慮中のケーブルを含むストリングにおけるケーブルすべての長さ を与えるリストがもたらされる。 「値のリターンされたリストを合計する。」この言語の多くのファンクション と同様、「+」は、一般的な2またはそれ以上のアーギュメントの代わりに値の リストからなる単一のアーギュメントが与えられることが可能であり、この状況 を検出し、自動的にリストのすべてのエントリを合計し、この場合はこのチャネ ルでケーブルの全長をリターンする。 最終的に、最後の動作は「全長が82未満であることを検査する」である。 B.式ハンドラによりサポートされるファンクション より明確には、式は括弧でくくられたプレフィックス形式の制限されたファン クションの式であり、値をリターンするものである。式はネストされた副次的式 を含むことができ、かつ多数の異なるアーギュメントのデータタイプおよびファ ンクションで構成できる。図10は、コンフィギュレータ式ハンドラがサポート するデータタイプを示すブロック図である。「整数」データタイプ300は、通 常の 整数、解釈自身が送られるファンクション次第であるがエラーを生じさせずまた 可換の動作の結果の値に影響を及ぼさないように規定される「( )」(空のセ ット)、および値が常に「1」である「T」を含む。「ブール」データタイプ3 02は、「0」(「( )」に等しく「偽」である)を含み、それ以外のものは 「真」であると考えられる。「ブール」をリターンする算術ファンクションは、 「偽」に対して「0」をリターンし、「真」に対して「1」をリターンする。「 ブール」をリターンする「リスト」ファンクションは、「偽」に対して「( ) 」をリターンし、「( )」をリターンするのでなければ「真」についてのテス トに成功した最後のリストのアイテムをリターンし、「真」がリターンされる。 「プロパティネーム」304、「アイテムネーム」306、および「セットネー ム」308データタイプは、それぞれ、プロパティ、アイテム、またはセットに ついての文字に基づく識別子を規定する。「インスタンス」データタイプ310 は直接構文的に特定できない。これは暗黙のアーギュメントである可能性がある 。「リスト」データタイプ312は、(「リスト」を含む)何らかのその他のデ ータタイプのアーギュメントのリストである。「リスト」は従来は括弧で囲んで 記述されている長さが不定の値の集まりが順序付けられたものである。「リスト 」はリストを含み得る。 「シリーズ」データタイプ314は、ファンクションへ の不定の長さのアーギュメントのリストを規定する。そのものは括弧に入れる必 要はないが、エントリは単に、ファンクションコールを囲む括弧内部のファンク ションの名称をたどる。リストを最終のアーギュメントとして受取るファンクシ ョンはまた、その代わりとしてその位置における「シリーズ」を受入れる(2つ の場合は存在するアーギュメントの数によって区別される)。ファンクション次 第で、「シリーズ」は、その各々の要素がエンティティでありその別々のアイデ ンティティを保持するように扱われるかもしれず、または各要素の内容が他の要 素の内容と結合されて単一のリストを形成するように扱われるかもしれない。複 数の値をリターンするファンクションは常にそれらをリストにリターンする。 「制約」データタイプ316は、「ブール」のリターン値を必要とする。「制 限」データタイプ318は、「整数」をリターンしなければならない。「戦術」 データタイプ320には2つのタイプかある。パッキングされていないリソース に対する「戦術」データタイプは、望ましさのオーダを減ずる際に連続するアイ テムのリストを必要とする。パッキングされたリソースに対する「戦術」は、現 在のインスタンスに対しプロポーザが割当てる重みとして使用されるであろう数 を必要とする。 図11は、式ハンドラがサポートするファンクションのブロック図である。A NDファンクション322は、標準 的なブール接続語である。これは入力パラメータに対し式のシリーズを受取る。 ANDファンクションは、調べられた最後の式がリストまたはインスタンスであ れば、「真」については調べられた最後の式の値をリターンし、「偽」に対して は「( )」という空のリストをリターンし、最後に調べた式が整数であれば「 偽」について「0」をリターンする。ANYファンクション324は、入力とし て述語およびインスタンスのリストまたはインスタンスのリストのシリーズを受 取る。述語は評価された際に真または偽をリターンするテスト式である。ANY ファンクションは、リストにおける何らかのエントリが述語を満たしていれば「 真」をリターンし(始めに満たすエントリ、または「( )」であれば「T」) 、いずれも満たしていなければ「偽」をリターンする(空のリスト「( )」) 。ANY.INSTNCES.OFファンクション326は、入力としてアイテ ムネームまたはセットネームおよび最適なパスを受取る。これは与えられたネー ムの何らかのインスタンスが現在の文脈に存在していれば「真」をリターンし( 始めに満たすインスタンス)、そのようなインスタンスがなけれは「( )」を リターンする。AT.MOSTファンクション328はカウント、述語、および インスタンスのリストを入力として受取る。リストにおけるインスタンスのカウ ントの数を上回るものが述語を満たしていなければ、「真」をリターンする(最 後に満たすリストにおけるエン トリ、または「( )」であれば「T」)。そうでなければ、AT.MOSTフ ァンクションは「偽」をリターンする(空のリスト)。 CHAINED.INSTANCE.VALUESファンクション330は始 めのアーギュメントとして最適のパスを備えるアイテムネームまたはセットネー ムを受取り、第2のアーギュメントとしてリソースネームのリストを受取る。こ れは現在の文脈における所与のアイテムのインスタンスのリストまたはセットネ ームをリターンする。これはまた、この情報を、第2のアーギュメントにおいて 与えられたリソースネームを介し元のものから到達可能なその他の同様のインス タンスすべてに対しリターンする。到達可能なインスタンスは、第2のアーギュ メントにリストされたリソースのインスタンスにつながる元のインスタンスの消 費および供給リンク双方をたどる結合プロセスによって配置される。これらのリ ソースインスタンスの消費および供給リンクが次にたどられ(エントリリンクを 除く)、結び付けられたアイテムインスタンスが集められる。これらのインスタ ンスの消費および供給リンク(エントリリンクを除く)は次にリストされたリソ ースなどのインスタンスにつながるところでたどられる。このプロセスはたどる べき消費または供給リンクがなくなるまで続けられる。CHAINED.INS TANCE.VALUESファンクションは、ストリングにおけるすべてのもの を発見する上 で有用である。ストリングは文脈的に駆動され、リストによって決定または規定 されるのではない。インスタンスグラフは常に不安定であり、式ハンドラは文脈 によりストリングを決定する。 COLLECTファンクション332は、インスタンス(たとえばPROPE RTY.VALUE)およびインスタンスリストまたはインスタンスのリストの シリーズから何らかの値をリターンする式を入力として受取る。これは各インス タンスからの対応する値を含むリストをリターンする。COLLECT.VAL UESファンクション334は、インスタンスおよびインスタンスリストまたは インスタンスのリストのシリーズから何らかの値をリターンする式を受取る。こ れは「0」または「( )」以外の値を有するすべてのインスタンスに対し各イ ンスタンスからの対応する値を含むリストをリターンする。 CONCATファンクション336はリストのシリーズを受取り順次的に入力 リストすべての内容を保持する単一のリストをリターンする。CONSTRAI NEDNESSファンクション338は入力として何のアーギュメントも取込ま ないが現在のパッカーが現在のリソースのインスタンスを配置する際に有する自 由度のファンクションである数をリターンする。この数は0ないし1の範囲でな ければならず、0は効果的にも制約されていないことを示し、1は非常に制約さ れていることを意味する。この値はパッ キングされたリソースに対してのみ意味を持つ。COUNTファンクション34 0はリストまたはシリーズを受取り、リストにおけるエントリの数を与える整数 またはシリーズすべてにおけるエントリの全数(スプライシング)をリターンす る。COUNT.OFファンクション342は入力としてアイテムネームまたは セットネームを受取る。これはこのアイテムまたはセットのインスタンスの数を リターンする。COUNT.OF.OTHERファンクション344はアイテム ネームまたはセットネームを入力として受取る。これは式を含むアイテムのイン スタンスを除く特定されたアイテムまたはセットのインスタンスの数をリターン する。COUNT.VALUESファンクション346は、リストまたはシリー ズを受取り、「0」または「( )」でない(ノンスプライシング)リストまた はシリーズにおけるエントリの数をリターンする。 DESIRABILITYファンクション348は入力としてどのアーギュメ ントも取込まないが、現在のリソースインスタンスの配置の現在のパッカーに対 する望ましさのファンクションである数をリターンする。この数は0ないし1の 範囲でなければならず、0は望ましさが適用できないことを示し、1は非常に望 ましいことを示す。この値はパッキングされたリソースに対してのみ意味をもつ 。DIFFERENTファンクション350は比較演算子である。これはインス タンスを含めて個々の値のタイプ(リス トではない)の1つを比較するために使用される。単一のDIFFERENTフ ァンクションコールへのすべてのアーギュメントは同じデータタイプでなければ ならない。このファンクションは「( )」の値を入力において無視し、2つ以 上のアーギュメント、またはアーギュメントとして使用される内容を有する単一 のリストのアーギュメントを受入れる。DIFFERENTファンクションはす べてのアーギュメントが異なる値を有することを検査する(すなわち同じものが 2つあることはない)。リターンされた値は入力アーギュメントのデータタイプ に依存する、すなわち算術アーギュメントについて「偽」は「0」であり、「真 」は「1」であり、すべてのその他のアーギュメントについて「偽」は「( ) 」であり、「真」はテストに成功した最後のアイテムである。EVERYファン クション352は、述語およびインスタンスのリストまたはインスタンスのリス トのシリーズを入力として受取る。これはもしリストにおけるすべてのエントリ が述語を満たしていれば「真」をリターンし(最後に満たすエントリ、または「 ( )」であれば「T」)、または少なくとも1つが述語を満たしていなければ 「偽」(空のリスト「( )」)をリターンする。 FIND.DISTANCEファンクション354は入力としてリストまたは インスタンスのシリーズを受取る。これはシーケンスにおける所与のインスタン スを通し現在 のインスタンスから最後のインスタンスへのパスの物理的長さをリターンする。 HAS.PROPERTYファンクション356は、入力としてプロパティネー ムを受取る。これは、現在のインスタンスに特定されたプロパティがあるかどう かに従い、「真」(もしあればプロパティの値、「( )」ではない)、または 「偽」(空のリスト)をリターンする。IN.CONTEXTファンクション3 58は入力としてアイテムネームまたはセットネームおよび式を受取る。これは 、名称が付けられたアイテムまたはセットの適切なインスタンスの文脈において 式が評価したものをリターンする。INCOMPATIBLEファンクション3 60はアイテムネームのシリーズまたはセットネームを入力として受取る。これ は、シリーズにおけるエントリの1つ以上が現在の文脈に存在するかしないか次 第で、「真」(もしあれば存在するエントリ、または「( )」であれば「T」 )、または「偽」(空のリスト)をリターンする。OF FUNCTIONファ ンクション362は、入力としてアイテムネームまたはセットネームおよび任意 のパスを受取る。これは現在の文脈において与えられたネームのインスタンスの リストをリターンし、インスタンスのない何らかのネームに対しては「( )」 をリターンする。 INSTANCE.VALUESファンクション364は、入力としてアイテ ムネームまたはセットネームおよび 任意のパスを受取る。これは現在の文脈において与えられたネームのインスタン スのリストをリターンする。インスタンスのないネームは無視される。パスが与 えられると、インスタンスグラフにおいて調べるべきノードを特定し、式が発生 するアイテムから与えられたアイテムネームに到達する。省略によってグラフの 調査は下方向に開始されるが、最初のアイテムに達した後はインスタンスグラフ を通して逆に上向きに進む。複雑なケースでは、「アップ」および「ダウン」と いうキーワードを用いて方向の変更を明確に特定する。パスが何らかのポイント でいくつかの可能なノードの1つを通して進むのであれば、可能性のリストは括 弧で与えられる。 IS.Aファンクション366は入力としてアイテムネームまたはセットネー ムを受取る。これはセットにあればまたはアイテムのインスタンスであれば現在 のインスタンス(「真」)をリターンする。そうでなければ「( )」をリター ンする。ORファンクション368は一連の式を受取る標準のブール接続語であ る。最後に調べられた式がリストまたはインスタンスであれば真について最後に 調べられた式の値をリターンし、偽について空のリストをリターンし、または最 後に調べられた式が数であれば偽に対し「0」をリターンする。MAXIMUM ファンクション370は数のシリーズのリストを受取りその最大のものをリター ンする。MINIMUMファンクション372は数の リストまたはシリーズを受取り最小のものをリターンする。PATH.INST ANCE.VALUESファンクション374はアイテムネームまたはセットネ ームおよび任意的なパスを受取る。これはインスタンスを有さないネームを無視 し現在の文脈における所与のネームのインスタンスのリストをリターンする。各 インスタンスは文脈へのパスを有するため同じ回数を表わす。PROPERTY .VALUEファンクション376はプロパティネームを受取り、現在のインス タンスからプロパティの値をリターンする。SELECTファンクション378 は入力として述語およびインスタンスのリストまたはインスタンスのリストのシ リーズを受取る。これは述語が真である元のリストにおけるエントリを含むリス トをリターンする。SELECTファンクションはリストにおいて反復すること により動作し、述語は文脈をリストからの現在のインスタンスに結び付けた後各 反復において評価される。SUMファンクション380は数のリストまたはシリ ーズを受取り、数の総和をリターンする。 +,−, *,/+,および/−ファンクション382は標準的な算術演算子 である。/+ファンクションは切上げを分割する(すなわち天井を提供する)。 /−ファンクションは切捨てを分割する(すなわち床を提供する)。=および< >ファンクション384は、インスタンスを含め個々の値のタイプの1つを比較 するために規定される比較演 算子である。1つのファンクションコールへのすべてのアーギュメントは同じデ ータタイプでなければならない。このファンクションは入力における「( )」 の値を無視し、2つ以上のアーギュメント、またはアーギュメントとして使用さ れるであろう内容を有する1つのリストのアーギュメントを受取ることができる 。=ファンクションはすべてのアーギュメントが等しいかどうかを検査する。< >ファンクションは=ファンクションの逆である。リターンされる値は入力アー ギュメントのタイプに依存する、すなわち算術アーギュメントについては「偽」 は「0」で「真」は「1」であり、すべての他のアーギュメントについては「偽 」は「( )」であり、「真」はテストに成功した最後のアイテムである。<, <=,>=,および>ファンクション386は算術比較演算子である。これは「 0」(偽)または「1」(真)をリターンする。これらのファンクションは算術 アーギュメントのみについて規定される。2つ以上のアーギュメントが与えられ ると、値は適切な単調なシーケンスになければならない。最終的に、「,」ファ ンクション388が副次的な式をグループ分けして評価シーケンスを制御するの に使用される。 リストが許されるところでは空のリストが許容できる。空のリストは総和およ び0のカウントを有し、ANYは「偽」であり、EVERYは「真」である。S ELECTおよびCOLLECTファンクションは空のリストが与え られればそれをリターンする。 上記で規定されたファンクションがアイテムネームまたはセットネームを受取 るすべての場合において、セットネームを受取らずアイテムネームの対応するリ ストに拡張することを要求し、各アイテムへのパスが明確に述べられることを要 求する同じファンクションの内部形式がある。こうしたファンクションの外部形 式から内部形式への変換は自動的に実行することが可能であるが、インスタンス グラフの関連部分の構造次第では同じセットの異なるメンバに対し異なるパスが 必要かもしれない。 IX.インタフェースエンジン 図1に戻って、インタフェースエンジン28はディスプレイ30を通してユー ザ26に図形的なユーザインタフェースを提供する。インタフェースエンジンは また入力装置14を介してユーザから入力を受取る。図形的なユーザインタフェ ースは、ウィンドウ、選択可能なボタン、アイコンなどのプログラミング技術に おいては周知である標準的な能力からなる。インタフェースエンジンはロジック エンジン32を用いてユーザの要求の受取りを調整する。これはまたユーザの要 求の結果としてのコンフィギュレーション状態をディスプレイに表示する。図形 的なユーザインタフェースはおおむねコンフィギュレーションのロジックから独 立したものである。これは必要であれば連続して変更または洗練化される。 A.データエントリ形式 データエントリ形式はユーザにより特定的なアイテムに対してデータの投入の ために使用されるフォーマットを規定するオブジェクトである。図12はディス プレイに示されるデータエントリ形式の例である。この例はユニシス・コーポレ イションから入手できるUSR 4000磁気ディスク周辺装置を構成するため のユーザの選択を示している。これらの形式はデータとして規定され、求められ ればインタフェースエンジン28によって解釈される。データエントリ形式にお けるフィールド間のリンケージおよびインスタンスグラフ34における基礎をな すコンフィギュレータロジックはコンフィギュレータデベロッパ10により提供 されるインタフェース定義データにおいて明確に示されており、コンフィギュレ ータ16のプログラムコードにおいて暗示されるのではない。可能な限りデータ エントリ形式の定義はインスタンスグラフにおける特定的なアイテムを参照しな い。その代わりに、インスタンスグラフからのインタフェース情報と組合された 、図形的なユーザインタフェースディスプレイ(すなわちメニューのハイアラキ )を通してユーザがたどるパスから文脈的に特定については判断される。 インタフェースエンジン28は、データ駆動ユーザインタフェースに対する以 下の要求をサポートする。ユーザ26が投入する値は継続し、後のコンフィギュ レータセッシ ョンにおいて修正可能である。この値を用いて新規のコンポーネントが導入され 古いものが製品のセットから除去されるときにコンポーネントの交換を制御して もよい。インタフェースエンジンは、ユーザがデータをその他のコンポーネント に投入する際にディスプレイ30に示される目に見えるコンポーネントの自動的 に変化する状態をサポートする。データエントリ形式の特定的なフィールドにお けるデータの投入の意味は、インスタンスグラフの対応する変化でデベロッパが 明確に特定しなければならない。 ユーザの入力を受入れるデータエントリ形式のすべてのフィールドには独自の 関連する「タグ」がある。このタグはフィールドに投入される値に対するネーム を構成する。1組のタグおよびデータエントリ形式のインスタンスに対する関連 する値はインスタンスグラフ34にストアされる。データエントリ形式のフィー ルド間の相関関係は、対応するタグを参照する式によって記述される。この式は データエントリ形式定義でストアされる。フィールドに投入される値の関係およ びインスタンスグラフにおけるアイテムはまた、データエントリ形式のタグおよ びアイテムネームを参照する式によって記述される。この式はアプリオリグラフ にストアされる。 B.カプセル 再び図1を参照して、インタフェースエンジン28は、ユーザ26から得られ た情報を表わすためにカプセルと呼 ばれるオブジェクトを用いる。カプセルは、ユーザとの可能なインタラクション を表わすオブジェクトである。これは、インタフェースエンジン28とロジック エンジン32との間のインタフェースの実施例として用いられるデータ構造であ る。カプセルは、ロジックエンジンによってインスタンシエートされ得る。アプ リオリグラフ24はカプセルを含み、インスタンスグラフ34はカプセルインス タンスを含む。カプセルは、ユーザが構成したい構成要素を選択しているときに ユーザ26にとって利用可能なインタラクションを表わす。各カプセルは、ディ スプレイ30に示されるグラフィカルユーザインタフエースのユーザ入力ウィン ドウに関連する。カプセルはデータエントリ形式に結合される。これは、ユーザ の入力を定義しかつ捕捉するためにI/Oモジュールとして動作する。各カプセ ルインスタンスは、ユーザの入力を識別する1組のタグを有する。したがって、 カプセルインスタンスは、所与のユーザ/コンフィギュレータインタラクション で出されるチョイスを規定するレコードである。カプセルインスタンスは特定の ユーザインタラクションから得られるデータをストアする。これは、タグのリス トおよび関連する値を含む。対応するアイテムインスタンスは、インタフェース エンジン28からのリクエストを介してロジックエンジンによって作り出される 。カプセルインスタンスはインスタンスグラフにリンクされるが、対応する制御 フローは有していない。 図13は、ユーザ/インタフェースエンジンインタラクションを説明するため のブロック図である。コンフィギュレータ定義12のインタフェース定義400 は、デベロッパ10によって規定される。これは、システムを構成する際のユー ザによる可能なセレクションまたはチョイスのメニュー階層を含む。デベロッパ は、どれだけの数の別々のメニューが存在するべきであるかを決定するとともに 、各メニューにおいてどのようなチョイスが利用可能であるかを決定する。図1 3に示すメニューおよびチョイスは例示的な目的のためだけのものである。メニ ュー階層のメニューとチョイスとのいかなる組合せおよび深さもデベロッパによ って特定されるであろう。各リーフメニューチョイスは、アプリオリグラフ24 のカプセル402に対応する。カプセルは、以下の付録Aで詳細に議論するシン タックスに従ってテクスチャの形式で特定される。これは、データエントリ形式 リファレンス404、アイコンリファレンス406、および更新式408を含み 得る。これは他のカプセルも含み得る。データエントリ形式404は、1つ以上 のタグ付フィールドおよびアイテムリファレンス410を特定する。各フィール ドは、ユーザにより入力される可能なデータ値を表わす。タグは、そのデータの 一意の識別子である。アイテムリファレンスは、ユーザがデータを分布しようと している適切なアイテムへのリンクである。ファイルロケーション412は、ア イコンビットマップがコン フィギュレータシステムにストアされる場所である。インスタンス創出マップ4 14は、カプセル402と、デベロッパによって供給される更新式と、ユーザに より供給されるデータ入力とに基づいてインスタンスグラフ34にアイテムイン スタンスを作り出すのを制御するデータ構造である。 プルダウンメニュー、アイコン、ユーザセレクションボタン等を表示するため に周知のウィンドウイングソフトウェア416が用いられる。コンフィギュレー タディスプレイ420のメインウィンドウを表わすためにメインウィンドウオブ ジェクト418が作り出される。可能なユーザセレクションまたはコマンドを表 わすアイコン424を管理するために、ウィンドウイングソフトウェア416に 種々のアイコンウィンドウオブジェクト422が作り出される。各アイコンは、 構成され得るコンポーネントの種類を表わす。 ユーザ入力の処理は以下のように進む。ユーザは、図示されるようなメニュー 1 426等のプルダウンメニューを選択する。インタフェースエンジンは、ウ ィンドウイングソフトウェア416を用いてメニュー1のチョイスを表示する。 ユーザは、たとえば現在のコンフィギュレーションに特定のコンポーネントを加 えるコマンドであろうチョイス12 428を選択する。このチョイスは対応す るカプセル定義402を有する。インタフェースエンジンは、 カプセル402からデータエントリ形式定義404を用いて、データエントリウ ィンドウオブジェクト430を作り出す。データエントリウィンドウオブジェク ト430は、ユーザに示されるデータエントリウィンドウ432を管理する。ユ ーザは、データエントリウィンドウに表示されるボタンを選択しかつ必要に応じ てテキストを入力することによってコンフィギュレーションの選択を行なう。デ ータエントリウィンドウが表示されると、インスタンスグラフ34にカプセルイ ンスタンス433が作りだされる。このカプセルインスタンス433は、コンフ ィギュレーションに加えられているアイテムに関してユーザにより入力されたデ ータを保持する。カプセルインスタンス433に付与されたタグマップ434は 、ユーザの入力とともに更新される。その後、ユーザにより選択されたアイテム に関してインスタンス436を作り出すために、インタフェースエンジン28に よってカプセルの更新式408が評価される。 X.不変情報 再び図1を参照して、「不変(persistent)」情報は、コンフィギュレータ定 義12の外部形式18と、特定のコンフィギュレーションのインスタンスグラフ 34とを含む。インスタンスグラフデータは、ユーザによってファイルにセーブ され、後に再びロードされ得る。これは、各インスタンスに関するエントリをそ のインスタンスの名前およびリンケージとともに含み、かつそれがそのインスタ ンスで あるアプリオリオブジェクトの名前と、カプセルフィールドおよびその値とをさ らに含むテキストファイル(不変データファイルと呼ばれる)の書込を伴う。 セーブされた不変データファイルは、その不変データファイルがセーブ時間の 時点のコンフィギュレーション状態を再び作り出すために生成されたアプリオリ グラフ24のコンテキストで再ロードされ得る。これは、ユーザがコンフィギュ レータ16を用いるセッションをほとんどいつでも中断することを可能にしかつ それを後に再開できることを可能にする。しかしながら、パッキング処理が進行 中であれば、いくつかの付加的な状態情報をセーブしなればならない。コンフィ ギュレーションのいくつかの場所で必要とされ得るサブコンフィギュレーション を表わすためにも不変データファイルを用いることができる。ローダ22は、1 回よりも多く用いられたサブコンフィギュレーションに関するロードされたイン スタンスの名前が確実に一意となるようにする。不変データファイルはまた、コ ンフィギュレーションが常にあるインスタンスを含んでいなければならない場合 にインスタンスグラフ34を初期化する便利な方法を与えることができる。 時間が経過するに従って、所与の積の組によって支持されるコンポーネントの 組はしばしば変わる。古いコンポーネントは利用不可能となる場合があり、新し いコンポーネントが導入される。古いアイテムは、それ以上利用できな くなればアプリオリグラフ24から取除かなければならない。しかし、それらの インスタンスはまだ不変データファイルにあり、これはいつでも再ロードされ得 る。そのようなローディングを成功させるために、古いアイテムは、アプリオリ グラフから取除かれると、その古いアイテムに対するユーザリクエストがいかに して現在利用可能なアイテムにマップされるべきであるかを規定する規則ととも に、履歴データベース(図示せず)に加えられる。 ロードされている不変データファイルは、特定のカスタマーサイトに存在する ことが知られているコンフィギュレーションを表わす場合、古いアイテムインス タンスを翻訳せずにロードされなければならない。ロードされている不変データ ファイルがまだ順序付けされるべきではないコンフィギュレーションを表わす場 合、ロードされた形式は現在順序付けされ得るアイテムのみを含むことができる 。この場合、ローディングプロセスの間にどの古いアイテムもローダ22によっ て翻訳されなければならない。 宣言的に構成されたグラフと多数のインタラクトするパッカーとを用いる一般 化(汎用)コンフィギュレータが開示されている。2レベル二部活性化伝播グラ フは、構成されるべきオブジェクトとそれらに関連する関係との宣言的記述とし て用いられる。コンフィギュレータは、多数のパッキング問題がインタラクトす る際に、いかなる時点でも動作するために構成問題全体から最も適切なピースを ダイ ナミックに選択しながらなおかつ他のパッキング問題を考慮する能力を有する。 コンフィギュレータは、正しいコンフィギュレーション結果を保証するためにパ ッキングアクティビティによって用いられる制約を宣言的に規定する能力を与え る。 多数のインタラクトするパッキング問題を扱う能力によって、コンフィギュレ ータは最適に近いコンフィギュレーションをより一貫して生成できるようになる 。宣言的表現および明示制約によって与えられる高レベルビューは、以前そのよ うなエキスパートシステムに関連していたプログラミングスキルからコンフィギ ュレータを構成するアクティビティを分離する傾向がある。特殊化(専用)コン フィギュレータは宣言的に記述されるため、構成、向上および維持がより簡単で ある。これにより、コンフィギュレータの開発に必要とされるプログラミングス キルの量が低減され、したがって、より幅広い範囲のスキルを有する人々がアク ティビティに寄与できるようになる。それと同時に、一般化された機能性は、コ ンフィギュレータにおいて与えられ得るカバレッジの幅を増加する。 以上本発明を現在企図されているベストモードに関して説明したが、明らかに 本発明には種々の変形例、種々の動作モード、および種々の実施例が可能であり 、これらはすべて当業者の能力および技術の範囲内であってさらなる進歩性を伴 う活動を行なわずになされるものである。したが って、特許によって保護されるべきものは、添付の請求の範囲に記載されている 。 付録A.外部形式のシンタックスの定義 以下の項目は、外部形式定義の正当なシンタックスを定義する。 A.1大局的定義 コンフィギュレータの定義のほとんどのアスペクトはアイテム、リソース、お よびそれらの関係の点から説明できるが、いくつかのアスペクトは大局的に特定 しなければならない。これらのいくつかのアスペクトには以下のものがある。 ・インスタンスグラフの初期化 ・アイテムスロットからの値がアプリオリグラフのどこで生じても行なわれる それらの値の集成 ・ラベルの伝播 これらのアスペクトはすべて、知識ベースと呼ばれる1つの大局的オブジェク トのコンテキストで定義される。 初期化 初期化は、Initialization.Actions スロットによって特定される。このスロ ットは、たとえばコンフィギュレータの初期状態を効果的に作り出すために予め 規定されたインスタンスグラフをロードすることができる式を含む。 集成 集成は、インスタンスグラフ中の特定の種類のすべての値を必要なときに合計 するためにアクセスできるように配列する方法を与える。これは、たとえば、特 定のコンフィ ギュレーションによって与えられる電力または熱の負荷を計算する必要がある場 合に有用となり得る。この方法は、同じ名前のプロパティを有するインスタンス グラフ中のすべての関連アイテムに依存する。このプロパティの値は、標準化さ れた単位で測定される、このアイテムのインスタンスによって与えられるこの特 定の負荷の量でなければならない。 集成はその後このスロットの名前を特定し、アプリオリグラフがロードされる とこのスロットを含むすべてのアイテムが通知され後に合計するために利用可能 とされるという効果を有する。 伝播 ラベルの伝播は周辺装置のための複雑なパスの定義か、または、インスタンス グラフの1つの点でコンフィギュレータユーザによって入力された情報をフィル タ処理しかつインスタンスグラフの他の部分に伝播させなければならないという 他の状況を支持する。基本的なアイデアは、インタフェースエンジンによってラ ベルを生成することができ、インスタンスが生成されるに従ってそれらのインス タンスにラベルを付与することができることである。このラベルはその後、伝播 が起こるに従ってインスタンスグラフを介して自動的に分配され、オプションと しては、このラベルがコンフィギュレーションプロセスのアスペクトを駆動する ために用いられる場合にはコンフィギュレータデベロッ パの制御下で変更される。最も単純な場合には、ラベルは、識別子等の名前であ ってもよい。より複雑な領域では、ラベルは、マスクおよびパターンからなる構 造化された値であってもよい。マスクはパターンのどの部分が現在のインスタン スに当てはまるかを規定する。パターンはこの部分のコンフィギュレーションに 当てはまる名前を識別する。 たとえば、二本で始まった(dual-initiated)チャネルであれば(H1 H2 )のパターンを有するであろう。生成の時点で、完全なレベルは(1(H1 H 2))であろう。伝播が進行するに従ってチャネルへの接続が分離されると、こ れらの2つの接続には((1 0) H1 H2))および((0 1)(H1 H2))というラベルが付けられるであろう。「1」は、含んでいるインスタ ンスに適用できるパターンのピースを表わす。マスクおよびパターンはともに任 意の深さにネストされ得る。ラベルを付けられたコンシュームズ(Consumes)伝 播はそれと一致するラベルを有するサプライヤ(Supplier)またはラベルを有し ていないサプライヤ(この場合サプライヤは入来するラベルを受取るであろう) のみに行なわれるであろう。伝播は、ラベルの値を含むプロパティを識別しかつ それらを伝播させるために用いられる。 A.2オブジエクトの定義 {Capsule |Item|Resource|Set |Package} 〈name〉 外部形式中のオブジェクトは、カプセル(Capsule)、 アイテム(Item)、リソース(Resource)、セツト(Set)またはパッケージ(Pa ckage)が可能である。このステートメントは、名前が付けられた種類のオブジェ クトの定義を導入する。〈name〉は、定義されたオブジェクトを識別するために コンフィギュレータデベロッパによって選択された名前である。1つ以上のCaps ule、Item、Resource、Set、またはPackageの定義ステートメントはこのステー トメントの後に起こり得る。 End〈object-type〉 このステートメントは、オブジェクトの定義を終了させる。End ステートメン トは、各オブジェクト定義に必要である。 A.3カプセルの定義 以下のステートメントはCapsuleの後に起こり得る。 Contains〈item-name〉|〈capsule-name〉[,〈item-name〉|〈capsule-name 〉]... このステートメントは、カプセルが1つ以上の指定されたアイテムおよび/ま たはカプセルを含むことを示す。 Icon このステートメントは、ディスプレイ上でカプセルを表わすビットマップを示 す。 Data.Entry.Form このステートメントは、ユーザがカプセルの所望の特性を入力するのを可能に するデータエントリ形式を特定する。 Update.Net このステートメントは、現在のデータエントリ形式におけるコンフィギュレー タユーザのセレクションによって暗示される結果のインスタンスグラフへのエン トリを制御するために評価されるべき式を特定する。データエントリ形式が終了 されると、この式が評価される。これは、インスタンシエートされるべきアイテ ムの名前と、それらに対応する量と、このデータエントリ形式との以前のインタ ラクションによって生成されたインスタントを取除くべきであるかどうかとを特 定しなければならない。これらの目的のために、式からの情報をインタフェース エンジンに通信する3つのステートメント、すなわち、Select、Number、および Rebuildが存在する。 External〈internal-name〉[as〈new-external-name〉].. このステートメントは、このカプセルの内部で用いられる名前であって他のカ プセルに利用可能にされるべき名前を定義し、オプションとしては名前が付け変 えられる。 Endcapsule このステートメントは、カプセルの定義を終了させる。なお、カプセルはイン スタンスグラフにおいてインスタンシエートされてもされなくてもよい。インス タンシエートされないカプセルはインスタンスが必要とされるコンテキストで参 照され、この参照は、カプセルに含まれるアイテムの適切なインスタンスにアク セスするために中断される。 なお、含まれるものとして挙げたアイテムは、実際には、一旦アプリオリグラフ が完全にロードされると存在しなければならない。ロードプロセスによって、ロ ードされていないアイテムが参照されないことが確認されるであろう。 A.4アイテムの定義 以下の項目では、SuppliesおよびConsumesは、「変更子(Modifier)」の特定を 可能にする。コンフィギュレータデベロッパがそれら自身の変更子を定義しかつ 参照することを可能にする一般的なシンタックスがある。Suppliesに関しては、 このシンタックスは1つ以上の関連する値とともに識別子の定義を可能にし、Co nsumesに関しては、このシンタックスは対応するSuppliesにおいて定義された識 別子への参照を可能にする。Consumesリファレンスの意味は、消費されたインス タンスがSuppliesステートメントにおける識別子に関連する値に従わなければな らないということである。識別子の形式は2つの名前のリストであり、最初の名 前が「グループ」の名前となり、2番目の名前がそのグループ内の修飾子(quali fier)となるように意図される。Suppliesリファレンスにおける値は、新しいリ ソースインスタンスを付与するために必要とされるたびに評価される式であり、 一旦インスタンスが付与されると、その式の値は変わらない。 以下のステートメントはItemの後に起こり得る。 Supplies〈resource-use〉[〈supplies-modifiers〉] このステートメントは、それを含むアイテムによって供給される指定されたリ ソースの量を特定する。アイテムが多数のリソースを供給すると、多数のSuppli esステートメントが与えられなければならない。アイテムの各インスタンスは挙 げられたリソースをすべて供給する。 Consumes〈resource-use〉[〈consumes-modifiers〉] このステートメントは、それを含むアイテムによって消費される指定されたリ ソースの量を示す。アイテムが多数のリソースを消費すると、多数のConsumesス テートメントが与えられなければならない。アイテムの各インスタンスは挙げら れたリソースをすべて消費する。consumes-modifiersは、そのコンフィグレーシ ョンのアスペクトを制御する、リソースのプロパティを定義する。多数のconsum es-modifiersが許可される。一般的なグループ/修飾子の表示の他に、有効修飾 子は、Separate、Prefer、(Mask Split)、および(Mask Extract)を含む。 Separate[until〈Property-name〉] Separateは、そうするためにはコンフィギュレーションにコンポーネントを加 えなければならない場合であっても、このアイテムのインスタンスの接続を異な るリソース間で分割しなければならないことを示す。until〈Property-name〉の 句は、〈Property-name〉が定義されるアイテムまで(アイテムを含む)の伝播 パスで遭遇するアイテムへのSeparateの適用の範囲を制限する。 Prefer{Separate|〈Item-name〉} Preferは、必要なリソースがいずれにせよ構成される場合にはこのアイテムの インスタンス接続の分離が好ましいが、単にこの分離を達成するためだけには付 加的なリソースを構成してはならないことを示す。 (Mask Split)〈Label-name〉 この変更子は、所与のラベルがこのインスタンスからの伝播によって生成され たインスタンスに付与される多くのピースに分割されることを意味する。生成さ れたインスタンスの各々には1つのピースが与えられ、それらのマスクは、それ が行なわれたことを示すように調整される。たとえは、入来するラベルが(1( H1(H1 H2)A()))であれば、伝播によって3つのインスタンスが生 成され、それらのインスタンスにはそれぞれ((1 0 0)(H1(H1 H 2)A()))、((0 1 0)(H1(H1 H2)A()))、および( (0 0 1)(H1(H1 H2)A()))のラベルがつけられるであろう 。 (Mask Extract)〈Label-name〉 この変更子は、入来するラベルのマスクがそのパターンに適用されより簡単な 値を生成し、これがその後に伝播されることを示す。たとえば、入来するラベル が((1 0 0)(H1(H1 H2)A()))であれば、得られる値はH 1であり、入来するラベルが((0 1 0) (H1(H1 H2)A()))であれば、得られる値は(1(H1 H2)) であろう。 Classification〈superset〉〈classification-function〉 アイテムにおいてClassificationステートメントが存在すると、classificati on-functionを呼出した結果によって特定されるセットにアイテムのインスタン スを入れるために生成/接続時間にこのアイテムのインスタンスを処理すること が暗に呼出される。このセットがまだ存在していなければ、自動的に生成され、 supersetのサブセットにされるであろう。用いることができる予め定義されたcl assification-functionの限られた集まりがあり、これらのclassification-func tionは現在のインスタンスを含むはずであるセットの名前を戻す。 Constraints〈boolean-expression〉[,〈boolean-expression〉]… このステートメントは、それを含むアイテムのコンフィギュレーションに当て 嵌まる1つ以上の制約を特定する。多数のboolean-expressionが与えられると、 アイテムの各インスタンスに関してこれらの制約のすべてが満たされなければな らない。 Manual Cpnstraints〈boolean-expression〉[,〈boolean-expression〉]… このステートメントは、それを含むアイテムのマニュアルコンフィギュレーシ ョンに当て嵌まる制約を特定する。 これらの制約はConstraintsのもとで入力された制約よりも制限的ではないこと が可能であり、これらの制約は、コンフィギュレータユーザが手動でアイテムの 配置を制御する場合に、それらの制約の代わりに用いられる。 Enable〈boolean-expression〉 このステートメントは、付与されたパッカーの選択プロポーザに提案を発生さ せることを可能にするTまたはNILを戻す式を特定する(値がNILであれば 、提案は発生されない)。このステートメントは、他のパッカーがインスタンス グラフのいくつかの前もって必要な部分を構成してしまうまで選択されたパッカ ーの動作を延期する手段を与える。 Property〈Property-name〉〈property-value〉[,〈property-name〉〈Property -value〉]… このステートメントは、アイテムに関してProperty-valueを特定する。コンフ ィギュレータデベロッパは、コンフィギュレータの要求を満たすために自由にpr operty-nameを規定する。property-valueは番号またはストリングであることが 可能である。 Packer このプロパティは、配置の機能性を支持するために予め定義され、再利用して はならない。Property-valueは、このアイテムに関するパッキング能力を与える オブジェクトの名前を特定する。 Aggregated このプロパティは、このアイテムによって消費されるリソースが、(別の場合 に当て嵌まるであろう、特定の数の別々のインスタンスによってではなく)適切 なカウントとともに1つの集成されたインスタンスによって表わされるべきであ ることを示す。このプロパティは、多くのアイテムがリクエストされる可能性が ある場合に用いることができ、インスタンスグラフに関して空間および時間の含 意を有する。 Beginner.Completer Ender.Completer これらのプロパティは、特殊目的用「チェーニング(chaining)」パッカーに よって構成されるアイテムのチェーンの始めおよび終わりで(それぞれ)用いら れるべきアイテムの名前を特定する。Beginner.Completerは、リストの形をとる ことが可能である。このリストの要素は、リクエストを出しているリソースとは 別に動作しながら、チェーンの始めで構成されるべきコンポーネントをシーケン シャルに識別する。このリストのコンポーネントはそれ自体がリストであること が可能であり、これは、内部リストの要素はパラレルに構成されるべきであり、 先行するエントリのリソースに付与されることを意味する。 Limit〈numeric-expression〉 Limit式は、構成できる含有アイテムの最大数の計算を 特定する。 Absolute.Limit Absolute.Limit式は、いかなる環境下でも超えることができないアイテムの量 を特定する。 Enditem このステートメントは、アイテムの定義を終了させる。 A.5リソースの定義 ほとんどの場合、リソースは、アイテムのSuppliesおよびConsumesの節で言及 されることによって暗に定義される。いくつかの環境下では、リソースのいくつ かの特性を明示的に記述する必要がある場合もある。これはResourceステートメ ントを特定することによって達成される。このステートメントの後には、Suppli es、Consumes、またはPropertyステートメントが続き得る。 Supplies〈resource-use〉 このステートメントは、それを含むリソースによって供給される指定されたア イテムの量を特定する。リソースが多数のアイテムを供給する場合、多数のSupp liesステートメントを与えなければならない。リソースの各インスタンスは挙げ られたアイテムをすべて供給する。 Consumes〈resource-use〉 このステートメントは、それを含むリソースによって消費される指定されたア イテムの量を特定する。リソースが多数のアイテムを消費する場合、多数のCons umesステート メントを与えなければならない。リソースの各インスタンスは挙げられたアイテ ムをすべて消費する。 Property〈Property-name〉〈Property-value〉 有効な〈Property-name〉は以下のとおりである: Combination-rule Combination-ruleは、その〈Property-value〉としてmaximumを有することが 可能である。多数のアイテムからくる1つの種類のリソースに関する要件は、デ フォルトにより、加算によって組合される。このプロパティはその規則に優先す るものであり、代わりに最も大きい1つの値をとることによって要件を組合せな ければならないことを示す。 Positional このプロパティは、これらのリソースインスタンスのコンテナ内での配置が重 要であることを示す。 Reusable このプロパティは、1回の使用で消費される1つのリソースの通常の手順に反 するものとして、リソースを使い果たすことなく複数回再利用できることを示す 。 No.Group このプロパティは、インスタンスグラフで伝播が起こると、このリソースのイ ンスタンスが、パッキングの待ち行列に入れられる場合に他のリソースのインス タンスとともにグループ分けされるべきではないことを示す。これにより、所与 のアイテムからのこのプロパティを有するリソー スのインスタンスがすべてパッカーによって独立して扱われるという効果がある 。 Into.Dev このプロパティは、「ケーブル(Cable)」パッカーに関して、(コンポーネ ントから出て来るのではなく)コンポーネントの「中へ」入ると考えられるべき である接続を識別する。 Endresource このステートメントは、リソースの定義を終了させる。 A.6セットの定義 Setは、アイテムの集まりである。その目的は、システムのコンフィギュレー ションが進むに従って現在の要求に応じていくつかの類似したアイテムから1つ のアイテムを選択できるようにすることである。これは、コンフィギュレーショ ンプロセスの間に要求が変わるとその選択を再度行なうことができるようにする 。定義は、Setの要素であるアイテムのリストである。ロード時間にこの定義に 遭遇する効果は、これらのアイテムへのアプリオリグラフコンシュームズ(cons umes)/サプライズ(Supplies)リンクがセットに行くようにおよびセットから 出ていくようにされることである。最初のリンクはセーブされ、Set.Consumes およびSet.Suppliesという名前が付けられる。セットはロジックエンジンおよ びパッキングエンジンによって処理される。Setは次のように定義される。 Contains〈Item-name〉,〈Item-name〉,... Endset A.7リソースーユーズ(Resource-use)の定義 Resource-useは以下のように特定される。 〈Count-spec〉{〈Resource-name〉|〈Item-name〉} Resource-useが許可されると、その形式は(アイテムの)リソースのまたは( リソースの)アイテムの名前および数値カウントである。〈Count-spec〉と〈Re source-name〉または〈Item-name〉とは、適切な種類の値を戻す一般的な式であ ることが可能である。〈Count-spec〉がゼロであるか、〈Resource-name〉また は〈Item-name〉が空であれば、インスタンスは生成されず、この接続において 伝播は起こらない。式が用いられるとき、インスタンスグラフの伝播が所与のイ ンスタンスに関してこれらの式を最初に必要とする際にこれらの式はその所与の インスタンスに関して評価され、これらの式が依存する条件が変わっても、これ らの式はその後自動的には再評価されない。 付録C.用語集 アーク:グラフ中のノード間の接続。リンケージポインタによってコンフィギ ュレータソフトウェアにおいて実現される。 アーギュメント:ファンクションに送られるパラメータ。 バインディング:(または「再結合(Re-bound)」)変数と値との関連。変数 を再結合することは、その変数に新しい値を与えることである。 二部:(グラフに適用される場合)すべてのアークが一方の種類のノードを他 方の種類のノードに結合するような2つの異なる種類のノードからなる。 コンポーネント:順序付けされなければならないおよび/またはコンフィギュ レーションプロセスに影響を及ぼす識別可能なオブジェクト(通常このコンテキ ストではハードウェアのピースである)。 コンフィギュレーション:(1)ユーザのリクエストを満足するために必要と されるコンポーネントの集まり。 (2)(1)を構成するプロセス−より正確には、「コンフィギュレーションプ ロセス」。 制約:それによってコンポーネントを構成することができる普遍性に対する制 限−たとえば、キャビネットは制限された量の占有可能な空間しか与えない。1 つの制約はいくつかのコンポーネントを関わらせることが可能であり、1つのコ ンポーネントはいくつかの制約を有し得、1つ以 上のコンポーネントに対する多数の制約は複雑な方法でインタラクトすることが 可能である。 消費:このコンテキストでは、別のアイテムに依存する1つのアイテムが他の アイテムのリソースのいくつかを使い果たすプロセス(cf.供給)。 コントロール(制御):プログラムの実行において、制御点は実行されている 命令またはステートメントである。活性化伝播では、これは、伝播において達し た最新のノードである。 デッドロック:1つのプログラムアクティビティが何らかのケイパビリティA を獲得しておりかつBを必要とし、別のプログラムアクティビティがケイパビリ ティBを獲得しておりかつAを必要とする状況。これらのプログラムアクティビ ティのうちの一方または両方がその獲得しているケイパビリティを手放すまでこ れらのアクティビティによってさらなる動作は行なわれない。 宣言的:プロセスに関してではなく状態に関して定義が与えられるシンタック スの形式。これは、デペロッパがプログラムのシーケンシャルなロジックを定義 しなくてもよいようにする。 評価:式を解釈してそのリターン値を生成する際に式ハンドラによって行なわ れるプロセス。 実行:プログラムを実行するまたは式を解釈するプロセス。 式:何らかの必要とされる結果を出すために評価することができるファンクシ ョンコールおよびアーギュメントの組合せ。「(+ 1 2)」は単純なプレフ ィックスフォーム式であり、その結果は3である。 式ハンドラ:式を評価してそのリターン値を出すことができるプログラム。 フロー:コントロールが1つの命令、ステートメントまたはノードから別の命 令、ステートメントまたはノードに移動するとき、これは、特に点のより長いシ ーケンスをフローするといわれる。 全体を括弧でくくられた:いくつかの表記では、評価シーケンスの一部分を明 示的にではなく慣習によって定義した式を書くことが可能であり、たとえば、( 1+2*3)は慣習的には9ではなく7を意味するとして理解される。全体を括 弧で括られた形式では、すべての順序付けが明示的であり、たとえば、上述の式 であれば(1+(2*3))と書かれるであろう。 ファンクション:わずかなアーギュメントを受入れそれらを用いてリターン値 を生成するプログラム。 ファンクションコール:(1)ファンクションを入力するコントロールフロー のプロセス。(2)(1)を起こす書込まれたコード。 関数型言語:値を戻すファンクションコールを用いてすべての作業が行なわれ るプログラミング言語のスタイルで あり、多くのアクションがリターン値を与えずしたがって構成され得ないステー トメント言語に対するものである。 文法:いかにして言語の要素を組合せることができるかを定義する1組の規則 。式文法は、いかにして元の値を正当な式に組合せることができるかを定義する 。宣言的文法の存在により、プログラムコード以外によって計算を記述する可能 性ができる。 グラフ:双方向アークによって相互接続されるノードのネットワークであり、 このコンテキストでは、典型的には、矩形または楕円形としてのノードと、ノー ドを接続する線としてのアークとで描かれる。 アイテム:本明細書のコンテキストでは、コンポーネントを表わすグラフ中の ノードであり、矩形として描かれる。 正当な:すべての定義された制約およびリソースの制限によって許可されるア クション。コンフィギュレーションに関しては、システムは構成されることがで き、これがグラフによって定義される程度まで作業するであろう。 リンケージ:1つのオブジェクトを他方のオブジェクトから見つけ出すのが容 易となるような2つのオブジェクト間の接続。通常、ポインタによって実現され る(cf.二方向リンケージ)。 リスト:不定の長さの値の順序付けられた集まりであり、慣習的にはたとえば (A B C)のように括弧で囲んで書く。リストはリストを含むことができる 。 リテラル:たとえば数字または文字のストリングのようなそれ自身を表わす値 のためのプログラミング用語。プログラムの実行状態に依存して、異なる時間に 異なる値を表わす名前である変数とは対照的である。 ローディング:永久的なファイル記憶装置から情報を読出し、その情報をプロ グラムでの使用のためにメモリ内で利用可能にするプロセス。単純なコピープロ セスであることが可能であり、または、変形およびリンケージの構成を伴い得る 。 ルックアヘッド:このコンテキストでは既に仮になされている選択の予測可能 な不利な結果があるかどうかを判断するために、その選択の暗示を詳細に調べる プロセス。 最適に近い:満足がいくのに十分なほどよいこと。必ずしも理想であるわけで はないが(しかし、理想である可能性がかなり高い)、すべての明白な問題を回 避し、ほとんどの人間が達成できるであろうよりも良い。その他の場合は「満た す(満足する)」と呼ぶ。(cf.準最適の) ネストされる:関数型言語の式に適用される。1つの式が別の(副)式をその 中に含み得ることを意味する。「任意にネストされる」は、たとえば(1+2* (3/(4−5))))のようにネスティングが所望の回数だけ何回でも起こり 得ることを意味する。 ノード:いくつかのアークが出会うグラフ中の点。オブジェクトによりコンフ ィギュレータソフトウェアにおいて 実現される。 オブジェクト:有用な抽象化を与えるデータおよびコードのカプセル化のため のソフトウェア用語。 パッキング:(1)なんらかの適合度の基準(通常最適な方法にできるだけ近 い)に基づいて、関係を左右する制約を満足するように別のコンポーネントに関 してコンポーネントの何らかの組を配列するプロセス。 (2) (1)の結果。 パッキングバウンダリ:コンフィギュレーションパッキングプロセスの特徴は 、もう1つのコンポーネントを加えても通常はその結果に大きな変化が現われな いことである。もう1つのコンポーネントを繰返し加えると、結果的には大きな 変化が現われるであろう(たとえば、キャビネットが一杯になり、したがって新 しいキャビネットを構成しなければならなくなる)。大きな変化が必要とされる 点がパッキングバウンダリである。 パラダイム:パターン、例、またはモデル。コントロールパラダイムはプログ ラム(のピース)の全体的な制御構造であり、いかにしてプログラムの異なる部 分が関連し合うか、およびどのようなアクションの組合せが可能であるかを定義 する。 パラメータ:何らかの動作を制御するエンティティ。ファンクションに送られ 、ファンクションの動作に基づいて動作するまたはそれを制御するデータのピー スである場合 もある。 構文解析される:その元の形態から、コンピュータ化された処理のために有用 な構成要素に解析される。 区分される:いくつかのピースに分割される。プログラミング技術の一部分は 、それぞれの個々のピースが密接に結びつきそれだけで意味をなすように、かつ 、これらのピース全体が取組まれている問題を解決するように機能およびデータ を区分することである。 プレフィックスフォーム:慣習的には、算術式はインフィックス形式で書かれ 、この場合、たとえば(1+2)のように演算子はそれが適用される値の間に生 じる。全体を括弧でくくられたシンタックスでは、たとえば(+1 2)のよう に演算子をその演算子が適用されるすべての値の前におくことができる。これは 、たとえば(+ 1 2 3 4)のように不定数の値に1つの演算子を適用す ることができるという利点と、値の数が予めわかっていなくてもよいという利点 とを有する。 処理シーケンス:処理動作が行なわれる固定された順序。 伝播:活性化伝播におけるコントロールフローの進行を示しており、コントロ ールの場所(locus)がグラフ中をノードごとに伝播する。 プロパティ:オブジェクトに関連する値。典型的には、プロパティは、参照す る際に用いられる名前と、その名前に関連する可変の値とを有する。オブジェク トの定義特性 のうちの1つは、そのオブジェクトが含むプロパティの組である。 リパック:ユーザによって直接リクエストされなかったすべてのインスタンス (すなわち、これらのインスタンスを支持するように構成されたインスタンス) をインスタンスグラフから取除き、残りのインスタンスの伝播およびパッキング を再実行して新しい全体のコンフィギュレーションを生成すること。これにより 、通常、インスタンスが処理されるシーケンスを選択するのにシステムが有する 自由のため、より最適なコンフィギュレーションが生成される。 表現:定義されたフォーマットに従ういくつかのデータにコードを適用するこ とによってプログラムが実世界で値の結果を生成することができるようにする、 コンピュータプログラムにおいてデータフォーマットおよびコードで実現される 1組の概念。選択された表現は、プログラムの適用可能性の範囲を決定する。 リソース:本明細書のコンテキストでは、それ自体はコンポーネントではない がコンポーネントのコンフィギュレーション(たとえばカードケージのスロット )に影響を及ぼす、アイテムにより供給され消費されるケイパビリティ。 リターン:ファンクションの実行の最終ステージ。制御のフローは、ファンク ションの実行が呼出されたポイントに戻り、ファンクションの結果である値はそ のポイントに送り戻される。 活性化伝播:処理がグラフのあるノードから始まり、そこから、アークによっ て開始ノードに直接接続されるノードに移動し、そこから、直接接続されるノー ドのその次の組に移動する(エントリのアークは無視する)等の制御パラダイム 。 準最適の:一般にはかなり明白な態様で、「最適に近い」の基準には達しない こと。 供給:このコンテキストでは、1つのアイテムが他のアイテムによって必要と されるリソースを与えるプロセス(cf.消費)。 シンタックス:情報を表現することができ、この情報が、典型的には予め定義 されたキーワードを含み、必要に応じてユーザにより埋めることができるホルダ を配置する言語形式。 二方向リンケージ:いずれか一方のオブジェクトを他方のオブジェクトから見 つけ出すことが容易であるような2つのオブジェクト間の1対の接続(cf.リ ンケージ)。 重み:プログラムにおいて所望性または相対的な重要性を表わすために用いら れる数値。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),JP (72)発明者 グスリング,トーマス・アール アメリカ合衆国、55306 ミネソタ州、バ ーンズビル、バタームート・レーン、 15012 (72)発明者 ネイグル,ティモシー・イー アメリカ合衆国、55425 ミネソタ州、ブ ルーミントン、イー・オールド・シュコッ ピー・ロード、1641 【要約の続き】 きる。本発明によって、パッキングエンジンにより使用 される制約を宣言的に定義する能力が得られ、確実に正 しいコンフィギュレーションが得られるようになる。

Claims (1)

  1. 【特許請求の範囲】 1.接続されたコンポーネントからなる有効コンフィギュレーションを発生する ためのエキスパートシステムであって、 コンフィギュレータデベロッパにより宣言的に特定されるコンポーネントの定 義を記憶するためのアプリオリデータベース手段を含み、前記コンポーネントの 定義およびそれらの使用について暗示される要件が第1の二部グラフにおけるノ ードとして表わされ、さらに コンフィギュレータユーザによって対話的に選択される前記アプリオリデータ ベース手段において定義されるコンポーネントのインスタンスを記憶するための インスタンスデータベース手段を含み、前記インスタンスおよび前記インスタン ス間の相互接続が第2の二部グラフにおけるノードとして表わされ、さらに 前記アプリオリデータベース手段と前記インスタンスデータベース手段とに結 合されて前記コンフィギュレータユーザからの選択されたコンポーネントを構成 する要求を受け入れ、前記要求を前記アプリオリデータベース手段により記憶さ れる前記コンポーネントの定義にマッチングさせ、前記アプリオリデータベース 手段における前記コンポーネントの定義および以前のコンフィギュレータユーザ による要求に基づき前記インスタンスの創出および接続が有効であれば、前記選 択されたコンポーネントの前記インスタン スを創出しかつ接続し、かつ前記要求から生じるコンフィギュレーションをコン フィギュレータユーザに報告するための処理手段とを含む、エキスパートシステ ム。 2.前記アプリオリデータベース手段に結合されてコンフィギュレータデベロッ パにより特定される前記コンポーネントの定義をテキストベースの外部フォーマ ットからグラフベースの内部フォーマットへ変換しかつグラフベースの内部フォ ーマットにおいて表わされる前記コンポーネントの定義を前記アプリオリデータ ベース手段へロードするためのローダ手段をさらに含む、請求項1に記載のエキ スパートシステム。 3.前記処理手段に結合されて、コンフィギュレータユーザからの選択されたコ ンポーネントを構成する前記要求を受け入れ、前記要求を前記処理手段へ転送し 、かつ前記処理手段から受けたコンフィギュレーションをコンフィギュレータユ ーザに対し表示するためのインタフェース手段をさらに含む、請求項2に記載の エキスパートシステム。 4.前記ローダ手段および前記処理手段によって参照されるネット定義知識ベー ス手段をさらに含み、前記ネット定義知識ベース手段は前記コンポーネントの定 義を表わし得る各タイプのオブジェクトに関連する少なくとも1つの知識を有す る、請求項3に記載のエキスパートシステム。 5.前記処理手段が、前記第1および第2の二部グラフに固有のノード間の関係 を分析することによって前記選択さ れたコンポーネントを接続する前記要求の有効性を決定する、請求項4に記載の エキスパートシステム。 6.接続されたコンポーネントからなる完全で、有効で、最適に近いコンフィギ ュレーションを発生するためのコンフィギュレータエキスパートシステムであっ て、前記コンフィギュレータエキスパートシステムはコンフィギュレータデベロ ッパにより所与のコンフィギュレーションドメインについてカスタマイズされて おりかつコンフィギュレータユーザにより作動されて、ユーザの要求と、コンポ ーネントの定義に含まれる予め定められたコンポーネントの要件および接続の制 約に基づきコンフィギュレーション解答を発生し、前記コンフィギュレータエキ スパートシステムは、 前記コンフィギュレータデベロッパにより宣言的に特定されるコンポーネント の定義を含むアプリオリデータベースを含み、前記コンポーネントの定義および それらの使用について暗示されている要件が第1の二部グラフにおけるノードと して表わされ、さらに コンフィギュレータユーザにより対話的に選択される前記アプリオリデータベ ースにおいて定義されるコンポーネントのインスタンスを含むインスタンスデー タベースを含み、前記インスタンスおよび前記インスタンス間の相互接続が第2 の二部グラフにおけるノードとして表わされ、さらに 前記アプリオリデータベースと前記インスタンスデータベースとに結合された ロジックエンジンを含み、前記ロジックエンジンが前記コンフィギュレータユー ザからの選択されたコンポーネントを接続する要求を受け入れて、前記要求を前 記アプリオリデータベースに記憶される前記コンポーネントの定義にマッチング し、前記インスタンスの創出および接続が前記アプリオリデータベースにおける 前記コンポーネントの定義および以前のコンフィギュレータユーザの要求に基づ き有効であれば、前記インスタンスデータベースにおける前記選択されたコンポ ーネントの前記インスタンスを創出しかつ接続し、かつ前記要求から生じるコン フィギュレーションを前記コンフィギュレータユーザに報告する、コンフィギュ レータエキスパートシステム。 7.前記アプリオリデータベースに結合されて、前記コンフィギュレータデベロ ッパにより特定される前記コンポーネントの定義をテキストベースの外部フォー マットからグラフベースの内部フォーマットに変換し、かつ前記グラフベースの 内部フォーマットにおいて表わされる前記コンポーネントの定義を前記アプリオ リデータベースへロードするためのローダモジュールをさらに含む、請求項6に 記載のコンフィギュレータエキスパートシステム。 8.前記ローダモジュールと前記ロジックエンジンとに結合されたインタフェー スモジュールをさらに含み、前記インタフェースモジュールが前記コンフィギュ レータデベロ ッパから前記コンポーネントの定義を受け、前記コンポーネントの定義を前記ロ ーダモジュールへ転送し、前記コンフィギュレータユーザから選択されたコンポ ーネントを接続する前記要求を受け入れ、前記要求を前記ロジックエンジンへ転 送し、かつ前記ロジックエンジンから受けたコンフィギュレーションをコンフィ ギュレータユーザに対し表示する、請求項7に記載のコンフィギュレータエキス パートシステム。 9.前記ローダモジュールおよび前記ロジックエンジンが参照するネット定義知 識ベースをさらに含み、前記ネット定義知識ベースが前記コンポーネントの定義 を表わし得るオブジェクトのタイプに関連する少なくとも1つの知識を有する、 請求項8に記載のコンフィギュレータエキスパートシステム。 10.前記ロジックエンジンが前記第1および第2の二部グラフに含まれるノー ド間の関係を分析することによって前記選択されたコンポーネントを接続する前 記要求の有効性を決定する、請求項9に記載のエキスパートシステム。 11.接続されて、コンピュータシステムを形成するコンポーネントの有効コン フィギュレーションを発生するためのコンフィギュレータエキスパートシステム であって、 コンフィギュレータデベロッパにより宣言的に特定されるコンピュータシステ ムコンポーネントの定義を記憶するためのアプリオリデータベース手段を含み、 前記コンポー ネントの定義およびそれらの使用について暗示される要件が第1の二部グラフに おけるノードとして表わされ、さらにコンフィギュレータユーザにより対話的に 選択される前記アプリオリデータベース手段において定義されるコンピュータシ ステムコンポーネントのインスタンスを記憶するためのインスタンスデータベー ス手段を含み、前記インスタンスおよび前記インスタンス間の相互接続が第2の 二部グラフにおけるノードとして表わされ、さらに 前記アプリオリデータベース手段と前記インスタンスデータベース手段とに結 合されて、前記コンフィギュレータユーザからの、選択されたコンピュータシス テムコンポーネントを構成する要求を受け入れ、前記要求を前記アプリオリデー タベース手段により記憶される前記コンピュータシステムコンポーネントの定義 にマッチングさせ、前記インスタンスの創出および接続が、前記アプリオリデー タベース手段における前記コンピュータシステムコンポーネントの定義および以 前のコンフィギュレータユーザの要求に基づき有効であれば、前記インスタンス データベース手段における前記選択されたコンピュータシステムコンポーネント の前記インスタンスを創出および接続し、かつ前記要求より生じるコンフィギュ レーションを前記コンフィギュレータユーザに報告する、コンフィギュレータエ キスパートシステム。 12.前記アプリオリデータベースに結合されて、前記コ ンフィギュレーションデベロッパにより特定される前記コンピュータシステムコ ンポーネントの定義をテキストベースの外部フォーマットからグラフベースの内 部フォーマットへ変換し、かつグラフベースの内部フォーマットにおいて表わさ れる前記コンピュータシステムコンポーネントの定義を前記アプリオリデータベ ース手段にロードするローダ手段をさらに含む、請求項11に記載のコンフィギ ュレータエキスパートシステム。 13.前記処理手段に結合されて、前記コンフィギュレータユーザからの選択さ れたコンピュータシステムコンポーネントを構成する前記要求を受け入れ、前記 要求を前記処理手段へ転送し、かつ前記処理手段から受けたコンフィギュレーシ ョンを前記コンフィギュレータユーザに対し表示するインタフェース手段をさら に含む、請求項12に記載のコンフィギュレータエキスパートシステム。 14.前記ローダ手段と前記処理手段とに結合されたネット定義知識ベース手段 をさらに含み、前記ネット定義知識ベース手段は前記コンピュータシステムコン ポーネントの定義を表わし得る各タイプのオブジェクトに関連しかつ前記ローダ 手段および前記処理手段によって参照される少なくとも1つの知識を有する、請 求項13に記載のコンフィギュレータエキスパートシステム。 15.前記処理手段が前記第1および第2の二部グラフに固有のノード間の関係 を分析することによって前記選択さ れたコンピュータシステムのコンポーネントを接続する前記要求の有効性を決定 する、請求項14に記載のコンフィギュレータエキスパートシステム。 16.接続されたコンポーネントからなる完全で、有効で、最適に近いコンフィ ギュレーションを発生するためのコンピュータベースのコンフィギュレータエキ スパートシステムであって、前記コンフィギュレータエキスパートシステムはコ ンフィギュレータデベロッパによる所与のコンフィギュレーションドメインにつ いてカスタマイズされており、かつコンフィギュレータユーザにより作動されて 、コンフィギュレータユーザの要求、予め定められたコンポーネントの要件およ びコンポーネントの定義に含まれる接続の制約に基づきコンフィギュレーション の解答を発生し、前記コンフィギュレータエキスパートシステムは、 前記コンフィギュレータデベロッパにより宣言的に特定されるコンポーネント の定義を表わすことができるアプリオリデータベースを含み、前記コンポーネン トの定義が前記コンポーネント定義の使用によって暗示されるリソースに論理的 に結合されて第1の活性度伝播二部グラフを構成し、さらに 前記コンフィギュレータユーザにより対話的に選択された前記アプリオリデー タベースにおいて定義されるコンポーネントのインスタンスを表わすことができ るインスタンスデータベースを含み、前記インスタンスが前記暗示され たリソースのインスタンスに論理的に結合されて第2の二部グラフを構成し、か つさらに 前記アプリオリデータベースと前記インスタンスデータベースとに結合された ロジックエンジンを含み、前記ロジックエンジンが前記コンフィギュレータユー ザからの選択されたコンポーネントを接続する要求を受け入れ、前記要求を前記 第1の活性度伝播二部グラフにおける前記コンポーネントの定義にマッチングし 、前記インスタンスの創出および接続が前記コンポーネントの定義および以前の コンフィギュレータユーザの要求に基づき有効であれば前記選択されたコンポー ネントの前記インスタンスを創出かつ接続し、有効性が前記第1の活性度伝播二 部グラフおよび前記第2の二部グラフに含まれるノード間の関係を分析すること によって決定され、かつ前記要求から生じるコンフィギュレーションを前記コン フィギュレータユーザに対し報告する、コンピュータベースのコンフィギュレー タエキスパートシステム。 17.前記アプリオリデータベースに結合されるローダモジュールをさらに含み 、前記ローダモジュールが前記コンフィギュレータデベロッパにより宣言的に特 定される前記コンポーネントの定義をテキストベースの外部フォーマットから前 記第1の活性度伝播二部グラフベースの内部フォーマットに変換し、かつ前記第 1の活性度伝播二部グラフベースの内部フォーマットにおいて表わされる前記コ ンポ ーネントの定義を前記アプリオリデータベースへロードする、請求項16に記載 のコンピュータベースのコンフィギュレータエキスパートシステム。 18.前記ローダモジュールと前記ロジックエンジンとに結合されたインタフェ ースモジュールをさらに含み、前記インタフェースモジュールが前記コンフィギ ュレータデベロッパからの前記コンポーネントの定義を受け入れ、前記コンポー ネントの定義を前記ローダモジュールへ転送し、前記コンフィギュレータユーザ からの選択されたコンポーネントを接続する前記要求を入力装置を介して受入れ 、前記要求を前記ロジックエンジンへ転送し、かつ前記ロジックエンジンから受 けたコンフィギュレーションを表示手段上にコンフィギュレータユーザに対し表 示する、請求項17に記載のコンピュータベースのコンフィギュレータエキスパ ートシステム。 19.前記ローダモジュールと前記ロジックエンジンとにより参照されるネット 定義知識ベースをさらに含み、前記ネット定義知識ベースが前記コンポーネント の定義を表わし得るタイプのオブジェクトに関連する少なくとも1つの知識を有 する、請求項18に記載のコンピュータベースのコンフィギュレータエキスパー トシステム。 20.接続されたコンピュータシステムを構成するコンポーネントからなる完全 で、有効な、最適に近いコンフィギュレーションを発生するためのコンピュータ ベースのコン フィギュレータエキスパートシステムであって、前記コンフィギュレータエキス パートシステムはコンフィギュレータデベロッパにより所与のコンピュータシス テムコンフィギュレーションドメインについてカスタマイズされており、コンフ ィギュレータユーザにより作動されてコンフィギュレータユーザの要求、予め定 められたコンピュータシステムコンポーネントの要件およびコンピュータシステ ムコンポーネントの定義に含まれる接続の制約に基づきコンフィギュレーション の解答を発生し、さらに 前記コンフィギュレータデベロッパにより宣言的に特定されるコンピュータシ ステムコンポーネントの定義を表わすことができるアプリオリデータベースをさ らに含み、前記コンピュータシステムコンポーネントの定義は前記コンピュータ システムコンポーネントの定義を使用することにより暗示されるリソースに論理 的に結合されて第1の活性度伝播二部グラフを構成し、さらに 前記コンフィギュレータユーザにより対話的に選択される前記アプリオリデー タベースにおいて定義されるコンピュータシステムコンポーネントのインスタン スを表わすことができるインスタンスデータベースを含み、前記インスタンスが 前記暗示されたリソースのインスタンスに論理的に結合されて第2の二部グラフ を構成し、さらに 前記アプリオリデータベースと前記インスタンスデータベースとに結合される ロジックエンジンを含み、前記ロジ ックエンジンが前記コンフィギュレータユーザからの選択されたコンピュータシ ステムコンポーネントを接続する要求を受け入れ、前記要求を前記第1の活性度 伝播二部グラフにおける前記コンピュータシステムコンポーネントの定義とマッ チングさせ、前記インスタンスの創出および接続が、前記コンピュータシステム コンポーネントの定義および以前のコンフィギュレータユーザの要求に基づき有 効であれば、前記第2の二部グラフにおける前記選択されたコンピュータシステ ムコンポーネントの前記インスタンスを創出しかつ接続し、有効性が前記第1の 活性度伝播二部グラフおよび前記第2の二部グラフに固有のノード間の関係を分 析することによって決定され、かつ前記ロジックエンジンがさらに前記要求から 生じるコンフィギュレーションをコンフィギュレータユーザに報告する、コンピ ュータベースのコンフィギュレータエキスパートシステム。 21.前記アプリオリデータベースに結合されたローダモジュールをさらに含み 、前記ローダモジュールが前記コンフィギュレータデベロッパにより宣言的に特 定される前記コンピュータシステムコンポーネントの定義をテキストベースの外 部フォーマットから前記第1の活性度伝播二部グラフベースの内部フォーマット に変換し、前記第1の活性度伝播二部グラフによる内部フォーマットにおいて表 わされるコンピュータシステムコンポーネントの定義を前記アプリオリデータベ ースへロードする、請求項20に記載の コンピュータベースのコンフィギュレータエキスパートシステム。 22.前記ローダモジュールと前記ロジックエンジンとに結合されたインタフェ ースモジュールをさらに含み、前記インタフェースモジュールが前記コンフィギ ュレータユーザからの選択されたコンピュータシステムコンポーネントを接続す る前記要求を入力装置を介して受け入れ、前記要求を前記ロジックエンジンに転 送し、前記ロジックエンジンより受けたコンフィギュレーションを表示手段上に 前記コンフィギュレータユーザに対し表示する、請求項21に記載のコンピュー タベースのコンフィギュレータエキスパートシステム。 23.前記ローダモジュールおよび前記ロジックエンジンにより参照されるネッ ト定義知識ベースをさらに含み、前記ネット定義知識ベースは前記コンピュータ システムコンポーネントの定義を表わし得る各タイプのオブジェクトに関連する 少なくとも1つの知識を有する、請求項22に記載のコンピュータベースのコン フィギュレータエキスパートシステム。 24.前記インタフェースモジュールが前記コンフィギュレータユーザからの入 力を受け入れかつ前記コンフィギュレータユーザに対しアイコン、メニュー、デ ータエントリウィンドウを表示するためのグラフィカルユーザインタフェースを さらに含む、請求項23に記載のコンピュータベ ースのコンフィギュレータエキスパートシステム。 25.前記エキスパートシステムが前記第1の活性度伝播二部グラフおよび前記 第2の二部グラフのコンフィギュレーション知識に基づきノンルールベースシス テムアーキテクチャを利用する、請求項24に記載のコンピュータベースのコン フィギュレータエキスパートシステム。 26.前記アプリオリデータベースがテキストエディタおよび前記ローダモジュ ールを介して前記コンフィギュレータデベロッパにより宣言的に定義、修正、更 新または維持され得る、請求項24に記載のコンピュータベースのコンフィギュ レータエキスパートシステム。 27.前記インスタンスデータベースが、前記インタフェースモジュールを介し て前記コンフィギュレータユーザにより修正、更新かつ維持され得る、請求項2 6に記載のコンピュータベースのコンフィギュレータエキスパートシステム。 28.接続されたコンポーネントからなる完全で、有効で最適に近いコンフィギ ュレーションを発生するためのコンピュータにより実現される方法であって、各 コンポーネントがコンポーネントの定義によって記述可能であり、前記方法が、 (a) 構成されるコンポーネントを宣言的に定義するステップと、 (b) 前記コンポーネントの定義とそれらの使用によ って暗示されるリソースとを第1の活性度伝播二部グラフにおけるノードとして 表わすステップと、 (c) コンフィギュレータユーザからの選択されたコンポーネントを構成す る要求を受け入れるステップと、 (d) 前記要求に応答して、前記選択されたコンポーネントのインスタンス と前記第1の活性度伝播二部グラフにおいて定義される前記リソースとを第2の 二部グラフにおけるノードとして創出および接続するステップと、 (e) 前記コンポーネントの定義、以前のコンフィギュレータユーザの要求 および前記第2の二部グラフの現在の状態に基づき前記インスタンスの創出およ び接続が有効であるかどうかを決定するステップと、 (f) 前記インスタンスの前記創出および接続が先行するステップにおいて 無効であると決定された場合に前記インスタンスを前記第2の二部グラフから除 去するステップと、 (g) 前記要求により生じた前記第2の二部グラフにより表わされるコンフ ィギュレーションをコンフィギュレータユーザに報告するステップとを含む、コ ンピュータにより実現される方法。 29.前記表わすステップが、 (a) 前記コンフィギュレータデベロッパにより供給されるコンポーネント の定義のテキストベースのファイルから現在のコンポーネントの定義を得るステ ップと、 (b) 前記現在のコンポーネントについて前記第1の活性度伝播二部グラフ におけるアイテムノードを創出するステップと、 (c) 前記現在のコンポーネントを前記第1の活性度伝播二部グラフにおけ る他のコンポーネントに接続する際前記要件と制約とを記述する情報を前記アイ テムノードにロードするステップと、 (d) 前記現在のコンポーネントの使用により暗示されるリソースを表わす 1以上のリソースノードを創出するステップと、 (e) 前記アイテムノードを前記リソースノードおよび前記アイテムノード により消費されるリソースを供給するいずれかの既に存在するアイテムノードに 接続するステップと、 (f) 前記コンフィギュレータデベロッパにより定義されるすべてのコンポ ーネントについて(a)から(e)のステップを繰返すステップとを含む、請求 項28に記載のコンピュータにより実現される方法。 30.前記受けるステップが (a) グラフィカルユーザインタフェースの一部としてメニュー、アイコン およびデータエントリウィンドウを前記コンフィギュレータユーザに対し表示す るステップと、 (b) 前記メニュー、アイコン、およびデータエントリウィンドウを介して エントりされたコマンドとデータと に応答することによってコンポーネントを構成するコンフィギュレータユーザの 要求を受け入れるステップをさらに含む、請求項28に記載のコンピュータによ り実現される方法。 31.前記報告ステップが、 (a) 前記第2の二部グラフのノードをグラフィカルユーザインタフェース により表示することができる表示物体へ変換するステップと、 (b) 前記コンフィギュレータユーザによる観察のために前記表示物体をデ ィスプレイ上に表示するステップとを含む、請求項28に記載のコンピュータに より実現される方法。 32.接続されてコンピュータシステムを構成するコンポーネントからなる、完 全で、有効で、最適に近いコンフィギュレーションを発生するためのコンピュー タにより実現される方法であって、各コンピュータシステムのコンポーネントが コンピュータシステムコンポーネントの定義により記述可能で、前記方法が、 (a) 構成するコンピュータシステムのコンポーネントを宣言的に定義する ステップと、 (b) 前記コンピュータシステムコンポーネントの定義とそれらの使用によ り暗示されるリソースとを第1の活性度伝播二部グラフにおけるノードとして表 わすステップと、 (c) コンフィギュレータユーザからの選択されたコンピュータシステムコ ンポーネントを構成する要求を受け入れるステップと、 (d) 前記要求に応答して、前記第1の活性度伝播二部グラフにおいて定義 される前記選択されたコンピュータシステムのコンポーネントと前記リソースの インスタンスを第2の二部グラフにおけるノードとして創出しかつ接続するステ ップと、 (e) 前記コンピュータシステムコンポーネントの定義、以前のコンフィギ ュレータユーザの要求、および前記第2の二部グラフの現在の状態に基づき前記 インスタンスの前記創出および接続が有効であるかどうかを決定するステップと 、 (f) 前記インスタンスの前記創出および接続が先行するステップにおいて 無効であると決定された場合には前記インスタンスを前記第2の二部グラフから 除去するステップと、 (g) 前記要求から生じた前記第2の二部グラフにより表わされる前記コン ピュータシステムコンフィギュレーションを前記コンフィギュレータユーザに対 し報告するステップとを含む、コンピュータにより実現される方法。 33.前記表わすステップが、 (a) 前記コンフィギュレータデベロッパにより供給されるコンピュータシ ステムコンポーネントの定義のテキ ストベースのファイルから現在のコンピュータシステムコンポーネントの定義を 得るステップと、 (b) 前記現在のコンピュータシステムのコンポーネントについて前記第1 の活性度伝播二部グラフにおけるアイテムノードを創出するステップと、 (c) 前記現在のコンピュータシステムコンポーネントを前記第1の活性度 伝播二部グラフにおける他のコンピュータシステムのコンポーネントに接続する 際に、前記要求および制約を記述する情報を前記アイテムノードにロードするス テップと、 (d) 前記現在のコンピュータシステムコンポーネントの使用により暗示さ れるリソースを表わす1以上のリソースノードを創出するステップと、 (e) 前記アイテムノードを前記リソースノードおよび前記アイテムノード により消費されるリソースを供給するいずれかの既に存在するアイテムノードに 接続するステップと、 (f) 前記コンフィギュレータデベロッパにより定義されるすべてのコンピ ュータシステムコンポーネントについて(a)から(e)のステップを繰返すス テップとを含む、請求項32に記載のコンピュータにより実現される方法。 34.前記受け入れるステップが、 (a) グラフィカルユーザインタフェースの一部とし てメニュー、アイコンおよびデータエントリウィンドウを前記コンフィギュレー タユーザに対して表示するステップと、 (b) 前記メニュー、アイコンおよびデータエントリウィンドウを介してエ ントリされるコマンドおよびデータに応答することによってコンピュータシステ ムコンポーネントを接続するコンフィギュレータユーザの要求を受け入れるステ ップとを含む、請求項32に記載のコンピュータにより実現される方法。 35.前記報告するステップが、 (a) 前記第2の二部グラフのノードをグラフィカルユーザインタフェース により表示することができる表示物体へ変換するステップと、 (b) 前記コンフィギュレータユーザによる観察のために前記表示物体をデ ィスプレイ上に表示するステップとを含む、請求項32に記載のコンピュータに より実現される方法。 36.パッキング動作の実行によりパッキング問題を解決することによって接続 されたコンポーネントからなるコンフィギュレーションを発生するためのコンフ ィギュレータエキスパートシステムであって、前記コンフィギュレータエキスパ ートシステムはコンフィギュレータデベロッパによりコンポーネントの所与のド メインについてカスタマイズされ、コンフィギュレータユーザにより作動されて ユー ザの要求、予め定められたコンボーネントの要件およびコンポーネントの定義に より特定される接続の制約に基づきコンフィギュレーションの解答を発生し、前 記コンフィギュレータエキスパートシステムは前記コンフィギュレータデベロッ パにより宣言的に特定される前記コンポーネントの定義および制約の式を記憶す るための第1のデータベースと、前記コンフィギュレータユーザにより対話的に 選択された前記第1のデータベースにおいて定義されるコンポーネントのインス タンスを記憶するための第2のデータベースと、前記コンフィギュレータユーザ からの要求を受け入れ、前記要求を前記第1のデータベースに記憶される前記コ ンポーネントの定義にマッチングし、前記コンポーネントの定義および以前のコ ンフィギュレータユーザの要求に基づき創出および接続が有効であれば前記第2 のデータベースにおける選択されたコンボーネントのインスタンスを創出および 接続し、かつ前記要求から結果として生じるコンフィギュレーションを前記コン フィギュレータユーザに対し報告することができる処理モジュールとを有し、前 記コンフィギュレータエキスパートシステムが、 前記処理モジュールに結合されて、前記第1のデータベースにおけるコンポー ネントの定義に付加され得るパッキング動作のタイプに関連する少なくとも1つ の知識を記憶しかつ検索するためのパッキング定義手段と、 前記処理モジュール、前記第1のデータベースおよび前 記第2のデータベースに結合されて、同時に複数のパッキング動作を行なって、 前記第1のデータベースに記憶される制約式の形で前記コンフィギュレータデベ ロッパにより宣言的に特定される基準によって選択されたコンポーネントの他の 選択されたコンポーネントへの接続を定義するパッキング処理手段とを含む、コ ンフィギュレータエキスパートシステム。 37.前記パッキング処理手段と前記処理モジュールとに結合されて制約式を評 価しかつ前記パッキング処理手段および前記処理モジュールに結果信号を返すた めの式ハンドリング手段をさらに含む、請求項36に記載のコンフィギュレータ エキスパートシステム。 38.前記パッキング処理手段が、 前記制約式に従い前記第2のデータベースにおけるインスタンスの状態に基づ き選択されたコンポーネントを構成するコンフィギュレータユーザの要求の影響 を分析するための複数のパッカー手段とを含み、前記パッカー手段の各々がコン フィギュレータユーザ要求に応答して前記第2のデータベースを修正するための ビッドを発生するための手段を含み、さらに 前記パッカー手段の各々に結合されて、前記パッカー手段の各々の動作を調整 制御し、かつ予め定められた基準に従い前記ビッドのうちどれを実現すべきかを 選択するためのマスタスケジューラ手段とを含む、請求項36に記載の コンフィギュレータエキスパートシステム。 39.前記マスタスケジューラ手段が、 前記パッカー手段の各々に結合されて、前記ビッドのうち実現する最重要ビッ ドを前記予め定められた基準に従い決定するためのスーパーバイザ手段と、 前記パッカー手段の各々に結合されて、前記パッカー手段の各々に質問をし、 前記最重要ビッドが前記パッカー手段のすべてにとって許容可能なものであるか どうかを決定するマスタコンサルタント手段とを含む、請求項38に記載のコン フィギュレータエキスパートシステム。 40.前記パッカー手段が、 前記スーパーバイザ手段に結合されて、前記ビッドを選択しかつ前記ビッドを その望ましさと重要度の観点から数値的にレイティングするための選択プロポー ザ手段と、 前記スーパーバイザ手段と前記マスタコンサルタント手段とに結合されて、前 記ビッドを仮に実現して前記第2のデータベースを修正し、かつ前記ビッドを実 際に実現することが前記パッカー手段のすべてにとって許容可能であることを確 実にするための割当プロポーザ手段と、 前記選択プロポーザ手段と、前記割当プロポーザ手段と、前記マスタコンサル タント手段とに結合されて、前記第2のデータベースにおけるインスタンスのグ ローバル状態を検討し、前記パッカー手段に関して前記最重要ビッドを実現した 後の前記第2のデータベースの現在の状態の正当性 を確証し、かつ正当性の結果を前記マスタコンサルタント手段に報告するための コンサルタント手段と、 前記スーパーバイザ手段に結合されて、前記パッカー手段の各々の前記コンサ ルタント手段が許容可能な正当性の結果を報告する場合前記第2のデータベース におけるインスタンスを前記最重要ビッドに従い永久的に修正するためのインプ リメンタ手段とを含む、請求項39に記載のコンフィギュレータエキスパートシ ステム。 41.パッキング動作を実行することによりパッキング問題を解決することによ って、接続されてコンピュータシステムを形成するコンポーネントのコンフィギ ュレーションを発生するためのコンフィギュレータエキスパートシステムであっ て、前記コンフィギュレータエキスパートシステムはコンフィギュレータデベロ ッパにより所与のコンピュータシステムコンフィギュレーションドメインについ てカスタマイズされており、かつコンフィギュレータユーザにより作動されて、 ユーザの要求、予め定められたコンピュータシステムコンポーネントの要件、コ ンピュータシステムコンポーネントの定義により特定される接続の制約に基づき コンピュータシステムコンフィギュレーションの解答を発生し、前記コンフィギ ュレータエキスパートシステムは前記コンピュータシステムコンポーネントの定 義と前記コンフィギュレータデベロッパにより宣言的に特定される制約式を記憶 するための第1のデータベースと、前記コン フィギュレータユーザにより対話的に選択される前記第1のデータベースにおい て定義されるコンピュータシステムコンポーネントのインスタンスを記憶するた めの第2のデータベースと、選択されたコンピュータシステムコンポーネントを 接続する前記コンフィギュレータユーザからの要求を受け入れて、前記要求を前 記第1のデータベースに記憶される前記コンピュータシステムコンポーネントの 定義にマッチングし、創出および接続が前記コンピュータシステムコンポーネン トの定義および以前のコンフィギュレータユーザの要求に基づいて有効であれば 、前記第2のデータベースにおける選択されたコンピュータシステムコンポーネ ントのインスタンスを創出し接続し、かつ前記要求から結果として生じる前記コ ンピュータシステムコンフィギュレーションを前記コンフィギュレータユーザに 報告することができる処理モジュールとを有し、 前記コンフィギュレータエキスパートシステムが、 前記処理モジュールに結合されて、前記第1のデータベースにおける前記コン ピュータシステムコンポーネントの定義に付加し得るタイプのパッキング動作に 関連する少なくとも1つの知識を記憶するためのパッキング定義知識ベース手段 と、 前記処理モジュール、前記第1のデータベース、および前記第2のデータベー スに結合されて、複数のパッキング動作を同時に実行して、前記第1のデータベ ースに記憶さ れる制約式で前記コンフィギュレータデベロッパにより宣言的に特定される基準 に従い選択されたコンピュータシステムコンポーネントを他のコンピュータシス テムコンポーネントに接続することを定義するためのパッキング処理手段とを含 む、コンフィギュレータエキスパートシステム。 42.前記パッキング処理手段と前記処理モジュールとに結合されて、前記制約 式を評価しかつ結果信号を前記パッキング処理手段と前記処理モジュールとに返 すための式ハンドリング手段をさらに含む、請求項41に記載のコンフィギュレ ータエキスパートシステム。 43.前記パッキング処理手段が、 前記制約式に従い前記第2のデータベースにおけるインスタンスの状態に対す る、選択されたコンピュータシステムコンポーネントを構成するコンフィギュレ ータユーザの要求の影響を分析するための複数のパッカー手段を含み、前記パッ カー手段の各々がコンフィギュレータユーザの要求に応答して前記第2のデータ ベースを修正するためのビッドを発生する手段を含み、さらに 前記パッカー手段の各々の動作を調整かつ制御し、かつ前記ビッドのうちどれ を行なうかを予め定められた基準に従って選択するためのマスタスケジューラ手 段とを含む、請求項41に記載のコンフィギュレータエキスパートシステム。 44.前記マスタスケジューラ手段が、 前記パッカー手段の各々に結合されて、前記予め定められた基準に従い実現す る前記ビッドのうち最重要ビッドを決定するためのスーパーバイザ手段と、 前記パッカー手段の各々に結合されて前記パッカー手段の各々に質問をして前 記最重要ビッドが前記パッカー手段のすべてにとって許容可能なものであるかど うかを決定するためのマスタコンサルタント手段とを含む、請求項43に記載の コンフィギュレータエキスパートシステム。 45.前記パッカー手段が、 前記スーパーバイザ手段に結合されて前記ビッドを選択しかつ前記ビッドを望 ましさと重要度の観点から数値的にレイティングするための選択プロポーザ手段 と、 前記スーパーバイザ手段と前記マスタコンサルタント手段とに結合されて、前 記ビッドを仮に実現して前記第2のデータベースを修正し、かつ前記ビッドを実 際に実現することが前記パッキング手段のすべてにとって許容可能であることが 確実になるようにするための割当プロポーザ手段と、 前記選択プロポーザ手段と、前記割当プロポーザ手段と、前記マスタコンサル タント手段とに結合されて、前記第2のデータベースにおけるインスタンスのグ ローバル状態を検討し、前記パッカー手段に関連して、前記最重要ビッドを実現 した後の前記第2のデータベースの現在の状態の正当性を確証し、かつ前記マス タコンサルタント手段に対し 正当性の結果を報告するためのコンサルタント手段と、 前記スーパーバイザ手段に結合されて、前記パッカー手段の各々の前記コンサ ルタント手段が許容可能な正当性の結果を報告する場合前記最重要ビッドに従い 前記第2のデータベースにおけるインスタンスを永久的に修正するためのインプ リメンタ手段とを含む、請求項44に記載のコンフィギュレータエキスパートシ ステム。 46.前記パッキング処理手段がビンパッキング、ケーブリング、ラックパッキ ング、およびコンピュータシステムコンポーネントストリンギングコンフィギュ レーション問題を同時に解決するために複数のパッキング動作を行なう、請求項 45に記載のコンフィギュレータエキスパートシステム。 47.パッキング動作を実行することによってパッキング問題を解決することに より接続されたコンポーネントからなるコンフィギュレーションを発生するため のコンピュータベースのコンフィギュレータエキスパートシステムであって、前 記コンフィギュレータエキスパートシステムはコンフィギュレータデベロッパに より所与のコンフィギュレータドメインについてカスタマイズされ、かつコンフ ィギュレータユーザにより作動されて、コンフィギュレータユーザの要求、予め 定められたコンポーネントの要件、およびコンポーネントの定義により特定され る接続の制約に基づきコンフィギュレーションの解答を発生し、前記コンフ ィギュレータエキスパートシステムが、 前記コンフィギュレータデベロッパにより宣言的に特定されるコンポーネント の定義と制約式とを含むアプリオリデータベースを含み、前記コンポーネントの 定義は前記コンポーネントの定義の使用によって暗示されるリソースに論理的に 結合されて第1の活性度伝播二部グラフを形成し、さらに 前記コンフィギュレータユーザにより対話的に選択される前記アプリオリデー タベースにおいて定義されるコンポーネントのインスタンスを含むインスタンス データベースを含み、前記インスタンスは前記暗示されたリソースのインスタン スに論理的に結合されて第2の二部グラフを形成し、さらに 前記アプリオリデータベースと前記インスタンスデータベースとに結合された ロジックエンジンを含み、前記ロジックエンジンは選択されたコンポーネントを 構成する前記コンフィギュレータユーザからの要求を受け入れ、前記要求を前記 第1の活性度伝播二部グラフにおける前記コンポーネントの定義にマッチングし 、前記インスタンスの創出および接続が前記コンポーネントの定義と以前のコン フィギュレータユーザの要求とに基づいて有効であれば前記選択されたコンポー ネントの前記インスタンスを創出かつ接続し、有効性は前記第1の活性度伝播二 部グラフと前記第2の二部グラフとに固有のノード間の関係を分析すること によって決定され、かつさらに前記要求から結果として生じるコンフィギュレー ションを前記コンフィギュレータユーザに報告し、さらに 前記ロジックエンジンに応答して前記アプリオリデータベースにおける前記ア イテムに付加され得るタイプのパッキング動作に関連する少なくとも1つの知識 を記憶するためのパッキング定義知識ベース手段と、 前記ロジックエンジン、前記アプリオリデータベース、およびインスタンスデ ータベースに結合されて、前記インスタンスデータベースに記憶される前記制約 式で前記コンフィギュレータデベロッパにより宣言的に特定される基準に従い前 記選択されたコンポーネントを他の選択されたコンポーネントに接続することを 定義するための複数のパッキング動作を同時に行なうためのパッキングエンジン 手段とを含む、コンピュータベースのコンフィギュレータエキスパートシステム 。 48.前記パッキングエンジン手段と前記ロジックエンジンとに結合されて、前 記制約式を評価しかつ結果信号を前記パッキングエンジン手段と前記ロジックエ ンジンとに返すための式ハンドリング手段とをさらに含む、請求項47に記載の コンピュータベースのコンフィギュレータエキスパートシステム。 49.前記パッキングエンジン手段が、 前記選択されたコンポーネントを構成するコンフィギュ レータユーザの要求の前記制約式に従う前記第2の二部グラフの状態に対する影 響を分析するための複数のパッカー手段を含み、前記パッカー手段の各々がコン フィギュレータユーザ要求に応答して前記インスタンスデータベースに記憶され る前記第2の二部グラフを修正するためのビッドを発生するための手段を含み、 さらに 前記パッカー手段の各々に結合されて前記パッカー手段の各々の動作を調整か つ制御し、かつ予め定められた基準に従って、前記ビッドのうちのどれを実現す べきかを選択するためのマスタスケジューラ手段とを含む、請求項47に記載の コンピュータベースのコンフィギュレータエキスパートシステム。 50.前記マスタスケジューラ手段が、 前記パッカー手段の各々に結合されて、前記予め定められた基準に従い実行す る前記ビッドのうちの最重要ビッドを決定するためのスーパーバイザ手段と、 前記パッカー手段の各々に結合されて、前記パッカー手段の各々に質問して、 前記最重要ビッドが前記パッカー手段のすべてにとって許容可能であるかどうか を決定するためのマスタコンサルタント手段とを含む、請求項48に記載のコン フィギュレータエキスパートシステム。 51.前記パッカー手段が、 前記スーパーバイザ手段に結合されて前記ビッドを選択しかつ前記ビッドを望 ましさと重要度の観点からレイティ ングするための選択プロポーザ手段と、 前記スーパーバイザ手段と前記マスタコンサルタント手段とに結合されて、前 記インスタンスデータベースに記憶される前記第2の二部グラフを修正するため の前記ビッドを仮に実現しかつ前記ビッドの実際の実現がパッカー手段のすべて にとって許容可能であることを確実にするための割当プロポーザ手段と、 前記選択プロポーザ手段と、前記割当プロポーザ手段と、前記マスタコンサル タント手段とに結合されて、前記第2の二部グラフのグローバル状態を検討し、 前記パッカー手段に関連して前記最重要ビッドの実行の正当性を確証し、かつ正 当性の結果を報告するためのコンサルタント手段と、 前記スーパーバイザ手段に結合されて、前記パッカー手段の各々の前記コンサ ルタント手段が許容可能な正当性の結果を報告する場合には前記最重要ビッドに 従い前記インスタンスデータベースに記憶される前記第2の二部グラフを永久的 に修正するためのインプリメンタ手段とを含む、請求項50に記載のコンピュー タベースのコンフィギュレータエキスパートシステム。 52.パッキング動作を実行することによってパッキング問題を解決することに より、接続されてコンピュータシステムを構成するコンポーネントからなるコン フィギュレーションを発生するためのコンピュータベースのコンフィギュレータ エキスパートシステムであって、前記コンフィギ ュレータエキスパートシステムはコンフィギュレータデベロッパにより所与のコ ンピュータシステムコンフィギュレータドメインについてカスタマイズされて、 かつコンフィギュレータユーザにより作動されてコンフィギュレータユーザの要 求、予め定められたコンピュータシステムのコンポーネントの要件、およびコン ピュータシステムコンポーネントの定義により特定される接続の制約に基づきコ ンピュータシステムコンフィギュレーションの解答を発生し、前記コンフィギュ レータエキスパートシステムが、 前記コンフィギュレータデベロッパにより宣言的に特定されるコンピュータシ ステムコンポーネントの定義と制約式とを含むアプリオリデータベースを含み、 前記コンピュータシステムコンポーネントの定義は前記コンピュータシステムコ ンポーネントの定義を使用することによって暗示されるリソースに論理的に結合 されて第2の活性度伝播二部グラフを構成し、さらに 前記コンフィギュレータユーザにより対話的に選択される前記アプリオリデー タベースにおいて定義されるコンピュータシステムコンポーネントのインスタン スを含むインスタンスデータベースを含み、前記インスタンスは前記暗示される リソースのインスタンスに論理的に結合されて第2の二部グラフを構成し、さら に 前記アプリオリデータベースと前記インスタンスデータベースとに結合された ロジックエンジンを含み、前記ロジ ックエンジンは選択されたコンピュータシステムコンポーネントを構成する前記 コンフィギュレータユーザからの要求を受け入れ、前記要求を前記第2の活性度 伝播二部グラフにおける前記コンピュータシステムコンポーネントの定義にマッ チングし、前記インスタンスの創出および接続が、前記コンピュータシステムコ ンポーネントの定義および以前のコンフィギュレータユーザの要求に基づき有効 であれば、前記第2の二部グラフにおける前記選択されたコンピュータシステム コンポーネントの前記インスタンスを創出しかつ接続し、有効性は前記第1の活 性度伝播二部グラフおよび前記第2の二部グラフに固有のノード間の関係を分析 することによって決定され、かつ前記ロジックエンジンがさらに前記要求から結 果として生じる前記コンピュータシステムコンフィギュレーションを前記コンフ ィギュレータユーザに報告し、 前記ロジックエンジンに応答して前記アプリオリデータベースにおける前記ア イテムに付加され得るタイプのパッキング動作に関連する少なくとも1つの知識 を記憶するためのパッキング定義知識ベース手段と、 前記ロジックエンジン、前記アプリオリデータベース、およびインスタンスデ ータベースに結合されて、複数のパッキング動作を同時に行ない、前記インスタ ンスデータベースに記憶される前記制約式で前記コンフィギュレータデベロッパ により宣言的に特定される基準に従い前記選択さ れたコンピュータシステムコンポーネントを他の選択されたコンピュータシステ ムコンポーネントに接続することを定義するためのパッキングエンジン手段とを 含む、コンピュータベースのコンフィギュレータエキスパートシステム。 53.前記パッキングエンジン手段と前記ロジックエンジン手段とに結合されて 、前記制約式を評価しかつ結果信号を前記パッキングエンジン手段と前記ロジッ クエンジン手段とに返すための式ハンドリング手段をさらに含む、請求項52に 記載のコンピュータベースのコンフィギュレータエキスパートシステム。 54.前記パッキングエンジン手段が、 前記選択されたコンピュータシステムコンポーネントを構成するコンフィギュ レータユーザの要求の、前記制約式に従い前記第2の二部グラフの状態に対する 影響を分析するための複数のパッカー手段を含み、前記パッカー手段の各々がコ ンフィギュレータユーザの要求に応答して前記インスタンスデータベースに記憶 される前記第2の二部グラフを修正するためのビッドを発生するための手段を含 み、さらに 前記パッカー手段の各々に結合されて、前記パッカー手段の各々の動作を調整 かつ制御し、かつ予め定められた基準に従い、前記ビッドのうちどれを実現すべ きかを選択するためのマスタスケジューラ手段とを含む、請求項52に記載のコ ンピュータベースのコンフィギュレータエキスパ ートシステム。 55.前記マスタスケジューラ手段が、 前記パッカー手段の各々に結合されて、前記予め定められた基準に従い実行さ れる前記ビッドのうちの最重要ビッドを決定するためのスーパーバイザ手段と、 前記パッカー手段の各々に結合されて、前記パッカー手段の各々に質問して、 前記最重要ビッドが前記パッカー手段のすべてにとって許容可能なものであるか どうかを決定するマスタコンサルタント手段とを含む、請求項54に記載のコン ピュータベースのコンフィギュレータエキスパートシステム。 56.前記パッカー手段が、 前記スーパーバイザ手段に結合されて、前記ビッドを選択しかつ前記ビッドを 望ましさと重要度の観点からレイティングするための選択プロポーザ手段と、 前記スーパーバイザ手段と前記マスタコンサルタント手段とに結合されて、前 記インスタンスデータベースに記憶される前記第2の二部グラフを修正するため の前記ビッドを仮に実現し、かつ前記ビッドを実際に実現することがパッカー手 段のすべてにとって許容可能であることを確実にするための割当プロポーザ手段 と、 前記選択プロポーザ手段、前記割当プロポーザ手段、および前記マスタコンサ ルタント手段に結合されて、前記第2の二部グラフのグローバル状態を検討し、 前記パッカー 手段に関連して前記最重要ビッドの実行の正当性を確証し、かつ正当性の結果を 報告するためのコンサルタント手段と、 前記スーパーバイザ手段に結合されて 、前記パッカー手段の各々の前記コンサルタント手段が許容可能な正当性の結果 を報告する場合には前記最重要ビッドに従い前記インスタンスデータベースに記 憶されている前記第2の二部グラフを永久的に修正するためのインプリメンタ手 段とを含む、請求項55に記載のコンピュータベースのコンフィギュレータエキ スパートシステム。 57.複数の相互作用するパッキング処理モジュールを使用することによって接 続されたコンポーネントからなるコンフィギュレーションを発生するためのコン ピュータで実現される方法であって、各コンポーネントはコンポーネントの定義 によって記述することが可能であり、前記方法が、 (a) 構成するコンポーネントを宣言的に定義するステップと、 (b) 前記コンポーネントの定義とそれらの使用によって暗示されるリソー スとを第1の活性度伝播二部グラフにおけるノードとして表わすステップと、 (c) 前記第1の活性度伝播二部グラフにおける選択されたノードに対しパ ッキング処理モジュールを割当てるステップと、 (d) コンフィギュレータユーザからの選択されたコンポーネントを接続す る要求を受け入れるステップと、 (e) 前記コンフィギュレータユーザの要求に従いパッキング処理モジュー ルの組を選択するステップと、 (f) 選択されたパッキング処理モジュールの前記組の各々に従い前記要求 を実現するための最重要動作を識別するステップと、 (g) 各選択されたパッキング処理モジュールについての前記最重要動作に 対し、前記最重要動作の望ましさと制約の度合いを表わす数値の重みを割当てる ステップと、 (h) 前記選択されたパッキング処理モジュールによって割当てられた前記 数値の重みを比較して前記選択されたパッキング処理モジュールのうちの1つを 選択し前記選択されたコンポーネントのインスタンスと第2の二部グラフにおけ るノードとして前記第2の活性度伝播二部グラフにおいて定義される前記リソー スとを創出かつ接続することによって前記最重要動作を試験的に行なうステップ と、 (i) 前記第2の二部グラフにより表わされる前記コンフィギュレーション が各パッキング処理モジュールに従い有効であるかどうかを決定するステップと 、 (j) 選択されたパッキング処理モジュールの前記組の各々が前記最重要動 作の実現を承認する場合には前記最重要動作の実現の結果として生じる前記第2 の二部グラフにおける変化を永久のものにするステップと、 (k) 前記要求により結果として生じた前記第2の二部グラフにより表わさ れるコンフィギュレーションを前記 コンフィギュレータユーザに報告するステップとを含む、コンピュータにより実 現される方法。 58.前記表わすステップが、 (a) コンポーネントの定義から現在のコンポーネントの定義を供給するス テップと、 (b) 前記現在のコンポーネントについて前記第1の活性度伝播二部グラフ におけるアイテムノードを創出するステップと、 (c) 第2の二部グラフにおいて前記現在のコンポーネントを他のコンポー ネントに接続する際に前記要件および制約を記述する情報を前記アイテムノード にロードするステップと、 (d) 前記リソースノードが以前に創出されたことがなければ、前記現在の コンポーネントの使用によって暗示されるリソースを表わす1以上のリソースノ ードを創出するステップと、 (e) 前記リソースノードを伴う前記アイテムノードを前記アイテムノード により消費されるリソースを供給するいずれかの既に存在するアイテムノードと 接続するステップと、 (f) (a)から(e)までのステップを前記コンフィギュレータデベロッ パにより定義されるすべてのコンポーネントについて繰返すステップとを含む、 請求項57に記載のコンピュータにより実現される方法。 59.前記受け入れるステップが、 (a) 前記コンフィギュレータユーザに対しメニュー、アイコン、およびデ ータエントリウィンドウをグラフィカルユーザインタフェースの一部として表示 するステップと、 (b) 前記メニュー、アイコンおよびデータエントリウィンドウによりエン トリされるコマンドとデータとに応答することによって、コンポーネントを構成 するコンフィギュレータユーザの要求を受け入れるステップとを含む、請求項5 7に記載のコンピュータで実現される方法。 60.前記報告するステップは、 (a) 前記第2の二部グラフのノードをグラフィカルユーザインタフェース により表示することができる表示物体に変換するステップと、 (b) 前記コンフィギュレータユーザによる観察のために前記表示物体をデ ィスプレイ上に表示するステップとを含む、請求項57に記載のコンピュータで 実現される方法。 61.複数の相互作用するパッキング処理モジュールを使用することによって、 接続されてコンピュータシステムを構成するコンポーネントからなるコンフィギ ュレーションを発生するためのコンピュータにより実現される方法であって、各 コンピュータシステムコンポーネントが、コンピュータシステムコンポーネント の定義により記述可能で、前記方法が、 (a) 構成するコンピュータシステムコンポーネントを宣言的に定義するス テップと、 (b) 前記コンピュータシステムコンポーネントの定義およびそれらの使用 によって暗示されるリソースを、第1の活性度伝播二部グラフにおけるノードと して表わすステップと、 (c) 前記第1の活性度伝播二部グラフにおける選択されたノードにパッキ ング処理モジュールを割当てるステップと、 (d) コンフィギュレータユーザからの選択されたコンピュータシステムコ ンポーネントを接続する要求を受け入れるステップと、 (e) 前記コンフィギュレータユーザの要求に従いパッキング処理モジュー ルの組を選択するステップと、 (f) 選択されたパッキング処理モジュールの前記組の各々に従い前記要求 を実現するための最重要動作を識別するステップと、 (g) 各選択されたパッキング処理モジュールについての前記最重要動作に 対し前記最重要動作の望ましさおよび制約の度合いを表わす数値の重みを割当て るステップと、 (h) 前記選択されたパッキング処理モジュールによって割当てられた前記 数値の重みを比較して前記選択されたパッキング処理モジュールのうちの1つを 選択し、前記選択されたコンポーネントのインスタンスおよび第2の二 部グラフにおけるノードとして前記第1の活性度伝播二部グラフにおいて定義さ れる前記リソースを創出および接続することによって前記最重要動作を試験的に 行なうステップと、 (i) 前記第2の二部グラフにより表わされる前記コンピュータシステムコ ンフィギュレーションが各パッキング処理モジュールに従い有効であるかどうか を決定するステップと、 (j) 選択されたパッキング処理モジュールの各々が前記最重要動作の実現 を承認する場合には、前記最重要動作の実現の結果として生じる前記第2の二部 グラフにおける変化を永久のものにするステップと、 (k) 前記要求により結果として生じた前記第2の二部グラフにより表わさ れるコンピュータシステムコンフィギュレーションを前記コンフィギュレータユ ーザに報告するステップとを含む、コンピュータにより実現される方法。 62.前記表わすステップが、 (a) コンピュータシステムコンポーネントの定義から現在のコンピュータ システムコンポーネントの定義を供給するステップと、 (b) 前記現在のコンピュータシステムコンポーネントについて前記第1の 活性度伝播二部グラフにおけるアイテムノードを創出するステップと、 (c) 第2の二部グラフにおいて前記現在のコンピュ ータシステムコンポーネントを他のコンピュータシステムコンポーネントに接続 する際に前記要件と制約とを記述する情報を前記アイテムノードにロードするス テップと、 (d) 前記リソースノードが以前に創出されたものでなければ、前記現在の コンピュータシステムコンポーネントの使用によって暗示されるリソースを表わ す1以上のリソースノードを創出するステップと、 (e) 前記リソースノードを伴う前記アイテムノードと前記アイテムノード により消費されるリソースを供給するいずれかの既に存在するアイテムノードと を接続するステップと、 (f) 前記コンフィギュレータデベロッパにより定義されるすべてのコンポ ーネントについて(a)から(e)のステップを繰返すステップとを含む、請求 項61に記載のコンピュータにより実現される方法。 63.前記受け入れるステップが、 (a) 前記コンフィギュレータユーザに対しグラフィカルユーザインタフェ ースの一部としてメニュー、アイコンおよびデータエントリウィンドウを表示す るステップと、 (b) 前記メニュー、アイコンおよびデータエントリウィンドウによりエン トリされたコマンドおよびデータに応答することによってコンピュータシステム コンポーネントを構成するコンフィギュレータユーザの要求を受け入れるステッ プとを含む、請求項61に記載のコンピュータに より実現される方法。 64.前記報告するステップが、 (a) 前記第2の二部グラフのノードをグラフィカルユーザインタフェース により表示することができる表示物体へ変換するステップと、 (b) 前記コンフィギュレータユーザによる観察のために前記表示物体をデ ィスプレイ上に表示するステップとを含む、請求項61に記載のコンピュータに より実現される方法。
JP8505061A 1994-07-13 1995-06-30 協働する複雑なシステムを構築するための汎用同時コンフィギュレータ Pending JPH10503040A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US08/274,618 1994-07-13
US08/275,194 US5617514A (en) 1994-07-13 1994-07-13 Generalized configurator using multiple interacting packers and declaratively defined constraint expressions
US08/274,618 US5630025A (en) 1994-07-13 1994-07-13 Generalized configurator using a declaratively constructed two-level bi-partite graph as a knowledge representation
US08/275,194 1994-07-13
PCT/US1995/008386 WO1996002882A1 (en) 1994-07-13 1995-06-30 A generalized concurrent configurator for constructing a cooperating complex system

Publications (1)

Publication Number Publication Date
JPH10503040A true JPH10503040A (ja) 1998-03-17

Family

ID=26956950

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8505061A Pending JPH10503040A (ja) 1994-07-13 1995-06-30 協働する複雑なシステムを構築するための汎用同時コンフィギュレータ

Country Status (4)

Country Link
EP (1) EP0770239B1 (ja)
JP (1) JPH10503040A (ja)
DE (1) DE69505537D1 (ja)
WO (1) WO1996002882A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5980078A (en) * 1997-02-14 1999-11-09 Fisher-Rosemount Systems, Inc. Process control system including automatic sensing and automatic configuration of devices
US6058262A (en) * 1997-04-18 2000-05-02 Geargarage.Com Inc. Computer-aided-design method and apparatus for networks
US6035305A (en) * 1997-08-29 2000-03-07 The Boeing Company Computer-based method of structuring product configuration information and configuring a product
NZ507462A (en) * 1998-03-16 2002-11-26 Array Technology Aps A database useful for configuring and/or optimizing a system and a method for generating the database
US6219659B1 (en) * 1998-07-08 2001-04-17 Electronics For Imaging, Inc. Configuration description language system
WO2000072174A2 (de) * 1999-05-20 2000-11-30 Siemens Aktiengesellschaft Verfahren und anordnung zur modellierung eines technischen systems durch einen rechner
AU7271000A (en) * 1999-09-22 2001-04-24 Array Technology Aps Methods for colligation and linking of relations in a database useful for configuring and/or optimizing a system
EP1191465A1 (de) * 2000-09-22 2002-03-27 KERMI GmbH Rechnergestützte Konfigurationssysteme und Verfahren
WO2002046980A2 (en) 2000-12-08 2002-06-13 Configit Software A/S A method of configuring a product using a directed acyclic graph
AT500188B1 (de) * 2001-09-14 2007-03-15 Voest Alpine Ind Anlagen Rechnergestützter konfigurator zum konfigurieren einer anlage der grundstoffindustrie
US6895573B2 (en) 2001-10-26 2005-05-17 Resultmaker A/S Method for generating a workflow on a computer, and a computer system adapted for performing the method
US9087164B2 (en) 2008-01-26 2015-07-21 National Semiconductor Corporation Visualization of tradeoffs between circuit designs
DE102010011200A1 (de) * 2010-03-05 2011-09-08 Siemens Aktiengesellschaft Anlagenkonfigurator für eine gekapselte Schaltanlage und Verfahren zum Konfigurieren einer gekapselten Schaltanlage
US8712741B2 (en) 2010-06-28 2014-04-29 National Semiconductor Corporation Power supply architecture system designer
EP2881899B1 (de) 2013-12-09 2018-09-12 Deutsche Telekom AG System und Verfahren zur automatisierten Aggregation von Beschreibungen individueller Objektvarianten
US9378029B2 (en) 2014-03-17 2016-06-28 Sharp Laboratories Of America, Inc. Rules based user interface architecture
US10318701B2 (en) 2016-01-19 2019-06-11 Ford Motor Company Resolving configuration conflicts using a multi-valued decision diagram
CN107423073A (zh) * 2017-08-11 2017-12-01 广东天波信息技术股份有限公司 ***的定制方法和***
CN111176617B (zh) * 2019-12-10 2022-05-17 中国航空工业集团公司成都飞机设计研究所 一种面向多种***构型的技术状态管理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4884218A (en) * 1987-10-01 1989-11-28 International Business Machines Corporation Knowledge system with improved request processing
DE3911465C2 (de) * 1989-04-06 1996-03-28 Licentia Gmbh Verfahren zur automatischen Konfiguration technischer Systeme aus Komponenten
US5225987A (en) * 1991-05-20 1993-07-06 Westinghouse Electric Corp. System for implementing a PC computer configuration system for assembling and mounting of a complex product in situ

Also Published As

Publication number Publication date
EP0770239A1 (en) 1997-05-02
EP0770239B1 (en) 1998-10-21
WO1996002882A1 (en) 1996-02-01
DE69505537D1 (de) 1998-11-26

Similar Documents

Publication Publication Date Title
US5630025A (en) Generalized configurator using a declaratively constructed two-level bi-partite graph as a knowledge representation
JPH10503040A (ja) 協働する複雑なシステムを構築するための汎用同時コンフィギュレータ
Griffiths et al. Teallach: a model-based user interface development environment for object databases
Goguen Reusing and interconnecting software components
US7761281B2 (en) System and method for performing compound computational experiments
US5768586A (en) Net change management for object-oriented modeling
Jäger et al. Using UML for software process modeling
US6957206B2 (en) Computer system and method with adaptive N-level structures for automated generation of program solutions based on rules input by subject matter experts
EP1061431A2 (en) Configuring computer systems
Puerta et al. Beyond data models for automated user interface generation
König et al. Explaining non-bisimilarity in a coalgebraic approach: Games and distinguishing formulas
Zamli Process modeling languages: A literature review
Design et al. MIT Architecture
Brough Methods for CASE: a generic framework
Clements et al. Discovering a system modernization decision framework: a case study in migrating to distributed object technology
Lansky Localized planning with action-based constraints
Van Deursen et al. Domain-specific languages
Gulla et al. Experiences with the use of a configuration language
Hoyos Rodriguez Synthesis of Execution Plans for the QVT Core Language
Zhang et al. Controllability for discrete event systems modelled in VeriJ
Mansour KDPMEL: A Knowledge Discovery Process Modeling and Enacting Language
Amaral Increasing productivity in high energy physics data mining with a domain specific visual query language
Nóbrega SDK development for bridging heterogeneous data sources through connect bridge platform
Morad Geometric-based reasoning system for project planning utilizing AI and CAD technologies
Katalagarianos et al. Employing genericity and case-based reasoning to effectively reuse code

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050906

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20051205

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060130

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060303

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060509