JP2004523026A - 製品の構成方法 - Google Patents
製品の構成方法 Download PDFInfo
- Publication number
- JP2004523026A JP2004523026A JP2002548633A JP2002548633A JP2004523026A JP 2004523026 A JP2004523026 A JP 2004523026A JP 2002548633 A JP2002548633 A JP 2002548633A JP 2002548633 A JP2002548633 A JP 2002548633A JP 2004523026 A JP2004523026 A JP 2004523026A
- Authority
- JP
- Japan
- Prior art keywords
- dag
- options
- node
- product
- component
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/08—Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/04—Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/15—Vehicle, aircraft or watercraft design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99935—Query augmenting and refining, e.g. inexact access
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99937—Sorting
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Entrepreneurship & Innovation (AREA)
- General Business, Economics & Management (AREA)
- Development Economics (AREA)
- Geometry (AREA)
- Tourism & Hospitality (AREA)
- Quality & Reliability (AREA)
- Operations Research (AREA)
- Finance (AREA)
- Game Theory and Decision Science (AREA)
- Accounting & Taxation (AREA)
- General Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Aviation & Aerospace Engineering (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Stored Programmes (AREA)
- Crystals, And After-Treatments Of Crystals (AREA)
- Separation Using Semi-Permeable Membranes (AREA)
- External Artificial Organs (AREA)
- Immobilizing And Processing Of Enzymes And Microorganisms (AREA)
- Auxiliary Devices For And Details Of Packaging Control (AREA)
Abstract
Description
【0001】
本発明は、一般に、幾つかの部品で構成される製品を構成するタスクに関する。複数の部品は相互依存性を有し、その結果、動作する製品を構築するための部品の選択に関して、所定の必要条件が存在する。一般に、複数の部品にてなる集合物が一体となって動作するか否かを決定する処理は複雑なタスクであり、このタスクを解決することを補助するためにコンピュータプログラムがしばしば使用される。このようなコンピュータプログラムは、相互依存性をもって、効率的でしかも精密な方法で動作するものでなければならない。本発明は、このようなコンピュータプログラムが実装されうる方法に関する。
【0002】
本発明は、計算機で支援された製品構成(computer assisted product configuration)を実行する方法に関する。
【背景技術】
【0003】
複合製品(complex product)は、幾つかの構成要素(components)で構成される。複合製品の製品モデルは、その製品を幾つかの汎用の「構成要素」で構成されたものとして捉えることにより作成される場合が多い。これらの構成要素には各々、複数の特定の「選択肢」にてなるグループが存在する。
【0004】
自転車の製品モデルの一例を挙げると、自転車は下記の構成要素、即ち、フレームと、前輪と、後輪と、ギヤセットとから組み立てられる。フレーム構成要素には、下記の選択肢、即ち、カーボンの男性用と、標準型の女性用と、標準型の男性用と、オフロードとが存在する。前輪構成要素には、スリックと、オフロードとが存在する。後輪構成要素には、スリックと、オフロードとが存在する。最後にギヤ構成要素には、内装3速と、外装10速とが存在する。
【0005】
構成のコンテキストにおいて、“構成要素”という用語は、物理的な構成要素の総称的説明としてのみ理解されるべきではない。これは、色と形状や、ギヤ数及び馬力等のパラメータといった属性でもあり得る。構成要素はまた、製品の特性ではなく、自転車のタイプ(オフロード、シティサイクル、過酷な作業に使用するための自転車(heavy duty bike)など)、ユーザの好み(ファッショナブル、クラシック、子供っぽい)、又は価格や重量、もしくは製品のユーザにとって興味のある同様の特性のような、構成装置(コンフィギュレータ)のユーザからのニーズを表す“必要属性”として理解される場合もある。
【0006】
複合製品を組み立てるためには、構成要素の各々について特定の選択肢が選択される必要がある。「選択」の個数は、製品の「部分構成」と呼ばれる。各構成要素の選択肢の完全な選択は、製品の「完全構成(又は単に構成)」と呼ばれる。
【0007】
製品の可能な構成の個数は、製品を構成する構成要素の個数が増えるとともに急激に増大する。例えば、上記例の自転車を構成するためには、4つのフレーム、2つの前輪、2つの後輪及び2つのギヤの中から選択する必要がある。従って、この場合は4×2×2×2=32個の異なる構成が存在する。実際の例では、この個数はすぐ何百万以上にも増大する。
【0008】
非互換性などに起因して、選択肢の組み合わせの全てが機能するわけではない。上述の自転車の例について考えると、これは、前輪と後輪が同じタイプでなければならない場合かもしれない。もう1つの必要条件として、カーボンの男性用フレームのみが外装10速ギヤを可能にするフレームであるという可能性がある。各選択肢間のこれらの非互換性の記述(descriptions)は、製品必要条件と呼ばれる。製品必要条件は、各構成要素間の互換性を定義するルールとして表される場合が多い。全ての必要条件が満たされるときに、構成は「整合されている(consistent)」と呼ばれる。上述の自転車の例の場合、32個の可能性のうちで、10種類の異なる整合された構成(内装3速ギヤを備えた8個の構成、外装10速ギヤを備えた2個の構成)が存在する。
【発明の開示】
【発明が解決しようとする課題】
【0009】
一般に、上記必要条件は複雑であって人による概観が困難である可能性があり、整合された構成を決定することは複雑なタスクである。構成の間はコンピュータプログラムが大きな手助けとなる可能性があり、当該コンピュータプログラムは、一般にユーザの選択をルールに照らしてチェックことによって動作する。チェックすることに非現実的なほど長時間かかりうるか、もしくはチェックの結果が不正確になりうるかのいずれかであって、このチェックは一般に実行が困難である。ルールの取扱い方法には、少なくとも下記の異なる2つがある。
【0010】
明示的列挙:この方法は、典型的には複数のビットベクトルを使用して、可能性のある全ての整合された構成を表現する。可能性のある全ての構成がルールに照らしてテストされ、整合されていることが判明した構成が、典型的には複数のビットベクトルのハッシュテーブルを使用してリストに列挙される。このアプローチによる1つの重要な制約事項は、利用可能な構成要素の個数が増えるときに構成の個数が急速に増大する(典型的には、構成の個数は構成要素の個数に対して指数関数的に増大する)ことにある。このことは、必要とされるメモリ量が極端に大きいことを意味し、当該方法は大きな製品モデルには適用できない。もう1つの問題点は、構成の個数が少なくメモリに十分に保持できる場合であっても、アルゴリズムは可能性のある各構成を独立に探索(traverse)しかつ処理する必要があり、構成の個数に対して線形な実行時間をもたらすということにある。
【0011】
ルール/拘束条件の伝搬:構成の選択が実行されると、整合性をチェックするためにルールデータベースが検索される。検索時間は予測不可能であり、ゆえに、ユーザへのタイムリーな応答を保証するために、許容される時間消費量に対して制限が課される場合が多い。この時間制限を守るために、検索は、完全かつ正確な結果を知ることなく、早まって終了されなければならないことが多い。検索は、決定された複数の選択に対してルールベース(rule base)からのルールを反復して適用することによる、情報の蓄積に基づいている。これは、コストが非常に高くなる場合が多い。さらに、検索時間と、従って検索の品質とは、そのルールが正確にはどのように定式化されているかということに大きく依存する。
【0012】
現状における当該技術のツールは、上述の2つの技術を適用している。これらは販売補助(sales assistant)ツールとして開発され、現在ではインターネットに適応化されている。インターネット上には、情報の不正確さ及び欠如を補償するために利用可能な人間としての販売補助員は存在しない。ユーザは、販売過程の全体を自分自身で実行することになるが、このことは販売システムの品質に厳しい要求を課す。システムは、速い応答時間を有することと、しかも結果が正確であることを保証することとを必要がある。例えば、ユーザが、ユーザの以前の選択に整合しない(即ち、ルールのうちのいくつかを侵害した状態になる)選択肢を選択させられることは「決して」あってはならない。
【0013】
現状における当該技術のツールは、(複雑な製品を取り扱い、かつシステムが多数の同時発生的ユーザを処理できるようにする上で)正確な結果を取得し、同時に望ましい応答時間を保証することが困難である。
【0014】
多数の特許が製品構成に関連している。
【0015】
米国特許第6,115,547号の明細書は、以前の構成をキャッシュメモリに記憶する特殊な方法を含む製品構成であって、構成プログラムの性能を改善させるものを開示している。
【0016】
米国特許第5,675,784号の明細書は、製品をモデリングすることに使用されるデータ構造(“3層の階層的なデータ構造”)を含む製品構成を開示している。
【0017】
欧州特許出願公告第0770239B1号の明細書は、エキスパートシステムを備えた製品構成を開示している。この構成方法は、ルール/拘束条件の伝搬に関連している。
【0018】
米国特許第5,206,949号の明細書は、データベース探索及び検索システムを備えた製品構成を開示している。
【0019】
米国特許第5,844,554号の明細書は、製品モデルを設計するためのグラフィカルユーザインターフェースの方法を含む製品構成を開示している。
【0020】
米国特許第5,987,473号の明細書は、ネットワークを介する対話型の構成を実行する方法を含む製品構成を開示している。
【0021】
米国特許第5,995,979号の明細書は、ユーザがネットワーク上でデータベースにおけるエントリを選択できるようにする方法を含む製品構成を開示している。
【0022】
米国特許第5,996,114号の明細書は、可能性のある多くの構成を取り扱う方法を含む製品構成を開示している。この構成方法は、明示的列挙に関連している。
【0023】
米国特許第5,745,765号の明細書は、ユーザが整合された構成を選択できるようにする方法を含む製品構成を開示している。
【0024】
本願明細書に記載された発明は、ハードウェア回路の形式的検証で知られる「シンボルモデルチェック」という既知の技術を適用して、計算機支援構成のためのプログラムを開発することに固有の計算上の課題を解決する。シンボルモデル検査は、[ケー.エル.マクミラン(K. L. McMillan)の、シンボルモデル検査:状態爆発問題へのアプローチ(Symbolic Model Checking: An Approach to the State Explosion Problem)]に記載されている。
【課題を解決するための手段】
【0025】
従って、第1の態様において、本発明は、多数の構成要素を備えた製品を構成する方法に関し、上記方法は、
・各構成要素に対して、上記構成要素に対する複数の選択肢にてなるグループに関連した情報を提供することと、
・異なる複数の構成要素からの複数の選択肢間の互換性に関連したルールを定義することと、
・有向非循環グラフ(DAG)に上記ルールを表現することとを含み、
・−1つの構成要素を選定することと、
−この構成要素の複数の選択肢にてなるグループから1つの選択肢を選択することと、
−選択された選択肢が他の構成要素から選定された他の選択肢との互換性を有するか否かについて上記DAGをチェックすることと
を繰り返すことによって、上記製品を反復的に構成することを含む。
【0026】
本コンテキストにおける“構成要素”という用語は、物理的な構成要素の総称的説明としてのみ理解されるべきではない。これは、色と形状や、ギヤ数及び馬力等のパラメータといった属性でもあり得る。構成要素はまた、製品の特性ではなく、自転車のタイプ(オフロード、シティサイクル、過酷な作業に使用するための自転車など)、ユーザの好み(ファッショナブル、クラシック、子供っぽい)、又は価格や重量、もしくは製品のユーザにとって興味のある同様の特性のような、構成装置(コンフィギュレータ)のユーザからのニーズを表す“必要属性”として理解される場合もある。
【0027】
ルールは、例えば製品の異なる2つの構成要素からの1つの選択肢の互換性に関連することが可能である。しかしながら、ルールは、より多数の構成要素からの1つの選択肢の互換性に関連することが好ましい可能性がある。極端ではあるが決して想定不可能ではない場合において、ルールは、各構成要素からの1つの選択肢を含む製品に関連している。
【0028】
本来、選択肢に関する情報又は複数の選択肢にてなるグループに関する情報は、その類似点又は相違点に関する情報である可能性がある。通常、この情報は、他の構成要素及び/又は複数の他の構成要素の選択肢に対する関連した情報になる。
【0029】
DAGにルールが表現されると、もはや(通常は非常に多くの個数の)ルールをチェックする必要はない。代わりに、DAGは、選択(select)/選定(choose)された複数の選択肢に関連した情報に従って探索され、解析され、もしくは訂正さえされてもよい。この手順は、多数のルールを個別にチェックすることより格段に速く実行可能である。
【0030】
本コンテキストにおいて、選択肢は、これが“選択”されて、構成されるようとしている組み立てられる製品の一部であることがわかると、即ち選択された選択肢が少なくとも1つの選定された選択肢との互換性を有することがわかると、“選定”される。
【0031】
反復的に構成することは、各構成要素に対して1つの選択肢が選定されたときに終了されることが可能であり、好適には、選定された複数の構成要素の各選択肢が互換性のあるときに終了されることが可能である。
【0032】
選択肢を選択する前に、構成要素のうちの少なくとも1つについて、DAGを使用して当該構成要素に対する複数の選択肢のうちのサブセットを決定することで、当該サブセットにおける選択肢の各々が他の構成要素から選定された他の選択肢に対して互換性を有するようにし、この情報をユーザに提供することが望ましい場合がある。
【0033】
こうした状況において、ユーザは、与えられた構成要素に対する多数の選択肢との互換性−既に選定された選択肢との互換性−に関連した情報を所望し、通常はそのグループから互換性のある選択肢を選択することができる。このサブセットは、寸法、色、製造業者、製造場所などのような、ユーザの嗜好に関連してもよい。
【0034】
ユーザへの情報がコンピュータで生成された音声として提供されれば、システムとの対話を簡単化することができる。このことは、音声合成器を有するシステムを提供することによって行われ、ユーザに情報を提供することは、
・上記音声合成器によって生成される音声によって上記情報を提供することをさらに含む。
【0035】
それに代わって、構成要素及び選択肢を選択するステップは、上記各構成要素に関して、
・上記DAGを使用して、上記構成要素のどの選択肢が他の各構成要素(即ち、その選択肢が既に選定されているもの)の少なくとも1つの選定された選択肢に対して互換性を持つかをチェックすることと、
・ユーザにこの情報を提供することと、
・他の構成要素の選定された個々の選択肢のうちの少なくとも1つとの互換性を有した選択肢のうちの1つを、上記ユーザが選択できるようにすることとをさらに含んでもよい。
【0036】
従って、この方法では、構成要素に対する全ての選択肢の、既に選定された選択肢との互換性に関連した情報が提供されることで、ユーザは製品の構成を迅速に進めていくことができる。
【0037】
しかしながら、それに代わって、もしくはそれに加えて、選択肢を選択するステップ及びDAGをチェックするステップは、
・選定された構成要素に対する選択肢のうちのサブグループを選択するか又は定義するステップと、
・上記サブグループ内の選択肢のうちのどれが、他の構成要素から選定された選択肢との互換性を有するかということに関して、上記DAGをチェックするステップと、
・上記サブグループ内の選択肢のうちのどれが他の構成要素の選定された選択肢との互換性を有するかということに関する情報を提供するステップとをさらに含むことが望ましい場合がある。
【0038】
このことが好都合となりうる1つの状況は、ユーザが特定の選択肢に関する決断を未だ下していないが、他の構成要素の選定された選択肢との互換性がチェックされた選択肢のうちのサブグループを彼が提示しているという状況である。この情報は、構成の間にユーザをさらにガイドするために使用可能である。
【0039】
有益となりうるもう1つのアプローチは、
・少なくとも一度、少なくとも1つの上記構成要素の選択肢を制限することに関連した情報を定義することと、
・上記構成要素のどの選択肢が上記制限する情報に整合するかということに関して上記DAGをチェックすることである。
【0040】
この制限する情報はユーザによって提供されることが可能であり、構成要素のどの選択肢が上記制限する情報に整合するかということに関する情報は、ユーザに提供されることが可能である。
【0041】
このような制限する情報は、ユーザによって所望された異なる複数のグループからの選択肢間の互換性に関連した情報であってもよい。
【0042】
反復的に構成することはまた、ユーザからの要求を受けて、通常は、そこに、各構成要素に対する選択肢が選定/選択されていない時点で、又は選択/選定された選択肢が完全な互換性を持たない時点で終了されることが可能である。次に、選択肢が既に選定されている製品の各々について、少なくとも1つの選定された選択肢を含む、互換性を有するすべての可能な製品に関連した情報が提供されてもよく、この情報はユーザに提供されてもよい。
【0043】
こうして、ユーザは構成を終了することが可能であり、次いで、選定された選択肢を含む、利用可能な、互換性を有する製品の総数について通知されることが可能である。
【0044】
また、反復的に構成することは、選択肢が選定されている製品の各々について、少なくとも1つの選定された選択肢を含む、互換性のある、すべての可能な製品の個数を取得し、かつこの情報をユーザに提供するステップを含んでもよい。この方法では、ユーザは、選定された選択肢を含む利用可能な製品の個数について常時通知されることが可能である。ユーザは、与えられた1つの構成要素に対して、実際には1つよりも多くの選択肢を選択又は選定できるという点は注意される必要がある。この状況においては、互換性のチェックはこのような選択肢の各々に関するチェックとなり、潜在的な最終製品の総数はこれらの選択肢のうちの1つを備えた潜在的な最終製品の総和に関連する。
【0045】
一般に、DAGに上記複数のルールを表現するステップは、グラフに上記複数のルールを表現することを含み、上記グラフは、
・少なくとも1つの終端ノードと、
・複数のノードであって、
−複数の可能な排反する結果を有する数学的な表現式(又は数式)と、
−上記式の可能な結果の個数に対応する多数のポインタとを含む複数のノードとを備え、
・上記ノードのうちの少なくとも1つのノードのポインタは、上記ノードのうちのもう1つのものを示し、
・上記ノードのうちの少なくとも1つのノードのポインタは、上記少なくとも1つの終端ノードのうちの1つを示し、
・上記ノードのうちの少なくとも1つのノードは最上位置(top-most)のノードであり、1つ又は複数のパスは、上記最上位置のノードから、上記少なくとも1つの終端ノードのうちの1つへ、上記ノードのうちの1つ又は複数のノード及びそれらのポインタを介して画成され、各ノードは少なくとも1つのパスの一部である。
【0046】
これは、DAGにルールを表現する標準的な方法である。こうして、ルールは数式で表されて1つ又は複数のノードに導入される。各ルールは1つ又は複数の結果を含み、ノードのポインタは各々このような1つの結果に関連している。従って、ルールの異なる結果は、グラフ/DAGを介して横断する異なるパスをもたらす。
【0047】
従って、DAGにルールを表現するステップは、1つの数学的演算子をそれぞれ含む数式を上記ノードのうちの1つ又は複数のノードに提供することを含んでもよく、各演算子は、関連するノードのポインタで示されたノードによって表現されるルールを組み合わせて、複数のルールにてなる組み合わされたセットを表現する方法を記述している。
【0048】
DAGにルールを表現するステップは、多数のノードを含むグラフに当該ルールを表現することを含んでもよく、それの数式はブール式及び/又は変数である。
【0049】
また、DAGにルールを表現するステップは、ルールを複数のノードを含むグラフに表現することを含んでもよく、それの数式は、各ノードに関して、実際のノードの式が、当該実際のノードのポインタで示された任意のノードの式より低位になるように、所定の順序付けに従って順序付けされる。
【0050】
順序付けを提供することは、DAGにおいて検索することや2つのDAGを結合することのような、DAGに対する多数の演算を容易化する。
【0051】
適正なDAGを維持するために、上記DAGに上記ルールを表現することはさらに、
・同一の式を有する第1及び第2のノードであって、かつそれらのポインタは同一のノードを示す第1及び第2のノードを識別するステップと、
・上記第1のノードを示すポインタに、上記第2のノードを示させるステップとを含む。
【0052】
こうした状況では、実際に同一の内容を表す2つのノードは1つだけに減らされる。
【0053】
DAGを提供する好適な一方法は、上記DAGに上記ルールを表現するステップが、
・各ルールを論理式で表すことと、
・各論理式から、上記式に対する可能な複数の解にてなるセットを表す、部分的なDAGを構成することと、
・論理式の各々を表す上記複数の部分的なDAGから、全てのルールを表すDAGを構成することとを含む方法である。
【0054】
上記方法は、1つのルールから部分的なDAGを構成することが通常は簡単なタスクであり、かつ、複数のDAGの組み合わせは公知技術であって、これは、上述の複数の式の順序付けが使用される場合には実際に簡単化されるという点で、非常に簡単である。
【0055】
好適には、各構成要素に対する上記複数の選択肢に関連した情報を提供するステップは、
・上記構成要素の個別の選択肢を表現する複数のブール変数を選択することと、
・上記構成要素の個別の選択肢の各々の符号化を、上記複数のブール変数に対するブール値の組み合わせとして提供することを含んでいる。
【0056】
次に、各ルールを論理公式/式として表すステップは、当該ルールが関連する複数の選択肢に関連した複数のブール変数を提供することと、上記複数の変数を上記ルールに従って相互に関係させることとを含んでもよい。
【0057】
一般に、DAGにルールを表現するステップは、好適には、少なくとも1つのタイプの終端ノードを提供することを含み、このような終端ノードを含む各パスに関して、全ての式と当該パスのポインタに関する全ての関連する結果との組み合わせは、互換性のある製品又は互換性を持たない製品の何れかに関連している。
【0058】
上記のことより、1つのパスに係る複数のノードの数式の変数は、複数の構成要素に係る多数の選択肢に関連しているということは明らかである。また、パスは複数のノードを互いにリンクするポインタによっても画成されるということと、これらのポインタは各々、1つの数式の結果に関連し、従って各変数間の与えられた関係に関連するということも明らかである。従って、終端ノードの情報を含む1つのパスの情報は、好適には、1つの製品と、その複数の選択肢と、それらの間の互換性とに関する情報を提供する。
【0059】
好適には、上記DAGに上記ルールを表現するステップは第1及び第2のタイプの終端ノードを提供することを含み、
・上記第1のタイプの終端ノードを含む各パスに関して、全ての式と、当該パスのポインタに関する全ての関連する結果との組み合わせは、互換性のある製品に関連し、かつ、
・上記第2のタイプの終端ノードを含む各パスに関して、全ての式と、当該パスのポインタに関する全ての関連する結果との組み合わせは、互換性を持たない製品に関連する。
【0060】
この状況では、第1のタイプの終端ノードは“真”、“一”又は“1”を表現するように適応化されることが可能であり、第2のタイプの終端ノードは“偽”、“ゼロ”又は“0”を表現するように適応化されることが可能である。
【0061】
一般に、1つの選択肢を選択するステップは、構成要素の他の(複数の)任意の選択肢に関連したブール変数と、このような他の(複数の)選択肢に関連した式を含むノードとを識別することと、DAGにおいて、このようなノードを含むパスを識別することと、上記第1のタイプのその任意の(複数の)終端ノードを上記第2のタイプの(複数の)終端ノードに変更することとを含む可能性がある。従って、このようなパスは、次に、“互換性を持たない製品”と直接関連付けられてもよいが、これは、これらの製品がもはや興味あるものでなく、選択された選択肢は、通常、同じ構成要素に対する他の複数の選択肢との互換性を持たないからである。ユーザが、その構成要素に対する複数の選択肢のうちのサブグループを選択すれば、当然ながら、続いて、そのサブグループには存在しない構成要素の選択肢について同じ手順が実行される。
【0062】
この状況では、異なる選択を行う可能な場合(possibilities)の個数を計算することは、上記DAGに適用されかつ各最上位置ノードに関する下記ステップ、即ち、
・最上位置ノードから開始し、かつ、
−当該ノードが終端ノードである場合に、上記終端ノードが上記第1のタイプであれば“1”を提供し、それが上記第2のタイプであれば“0”を提供するステップと、
−その他の場合に、上記実際のノードのポインタで示された各ノードによって表現される上記可能な場合の個数を発見して、その結果からそのノードによって表現される上記可能な場合の個数を計算するステップと
を実行することにより、上記実際のノードで表現される上記可能な場合の個数を反復して発見するステップによって実行される可能性がある。
【0063】
通常、例えば1つのポインタで表現された第1の可能な場合の個数と、もう1つのポインタによる第2の可能な場合の個数とを有するノードによって表現される可能な場合の個数は、第1の可能な場合の個数と第2の可能な場合の個数との和として計算可能である。しかしながら、(“ローカルな削減”のような)DAGのサイズ削減のために、実際のノードと、第1及び/又は第2のノードによって示された(複数の)ノードとの間に暗黙的ノードが(暗黙的に)配置されていれば、実際のノードによって表現される可能な場合の個数を求める際には、これらの暗黙的ノードが考慮される必要がある。
【0064】
構成の間に、選択された選択肢が選択された他の選定された選択肢との互換性を持たない場合、上記DAGをチェックするステップは、
・上記選択された選択肢との互換性を持たない、他の選定された選択肢に関連した情報を提供することと、
・この情報をユーザに提供することとをさらに含んでもよい。
【0065】
この状況では、ユーザは、上記選択された選択肢を実際に入力する、もしくは選定/選択することを選び、次にこれとの互換性を持たない(複数の)選択肢の選択を取り消してもよい。
【0066】
互換性に関連したルールを実際に提供するための多数の方法が存在する。ある好適な方法は、上記ルールのうちの少なくとも1つのルールが、
・データベースに質問することにより、1つ又は複数の構成要素に関する選択肢に関連した情報、及び/又は異なる複数の選択肢に対する2つ以上の選択肢間の互換性に関連した情報を取得することと、
・上記データベースから取得された情報から1つ又は複数のルールを構築することとによって画成される方法である。
【0067】
これを実行するある簡単な方法は、上記データベースが2次元テーブルを備え、上記2次元テーブルは、その複数の行の各々に各構成要素からの選択肢を含む製品に関連した情報を有し、上記複数の選択肢は互換性を有する方法であり、上記ルールを提供するステップは、各行の情報に関連したルールを提供することを含み、上記DAGに複数のルールを表現するステップは上記複数のルールの排反を提供することを含む。
【0068】
従って、上記テーブルの各行は、各構成要素に対して1つの選択肢を含む完全な製品に関連した情報を備え、各製品の全ての選択肢は完全な相互の互換性を有する。単一の行の情報は、単一のルールとして容易に提供されることが可能であり、これは続いてDAGに導入される。
【0069】
構成される製品を提供するエンティティの側から見れば、これには、ルールが、予め決められた範囲の識別された製品にのみ関連しているため、これらの製品のみが構成されうるという優位点がある。従って、構成を実行するユーザの側からすれば、構成が互換性以外の何物によっても制限されないように思えるとしても、構成は常に、供給業者によって識別される製品となって終わる。
【0070】
好適には、上記DAGをチェックして選択された選択肢が上記選定された複数の選択肢との互換性を有するか否かを決定するステップは、上記DAGにおいて、ある最上位置のノードから終端ノードまでのパスを検索することを含み、上記検索は、
・実際のノードとして上記最上位置のノードから開始することと、
・上記実際のノードが終端ノードになるまで、
−上記実際のノードにおける数式を評価して、その結果を、他の構成要素から選定された選択肢を考慮して決定することと、
−上記結果を表現するノードのポインタを選択することと、
−上記選択されたポインタによって示されるノードを実際のノードとして選択することとを反復することと、
・上記選定された選択肢に関連した情報を提供することと、
・上記パスに関連した情報は、上記選定が互換性を有することを表現することとを含む。
【0071】
DAGにおける1つのパスからの情報を提供する簡単な1つの方法は、上記パスのノードの式から、与えられた構成要素のどの(複数の)選択肢が選定されているかということに関する情報を提供する方法であり、これらの選択肢を含む製品の互換性に関する情報は、上記パスの終端ノードの表現によって与えられる。
【0072】
従って、個別の選択肢に関連した情報は、複数のノードの式と、複数のノードを相互に接続するポインタとから導出され、互換性情報はパスの終端ノードでわかる。
【0073】
従って好適には、DAGのノードに関する式はブール変数であり、終端ノードは“真”又は“偽”の何れかを表現し、1つのパスは、1つの数式と、パス内のもう1つのノード又は終端ノードへのポインタとをそれぞれ備えた1つ又は複数のノードを含み、上記パスの情報は、上記パスの(複数の)ノードの(複数の)数式における複数の変数の恒等式及びその値又は従属関係に関連し、上記恒等式及び値/従属関係は複数の構成要素の選定された選択肢に関連し、上記選定された構成要素は、上記パスの終端ノードが“真”を表現すれば互換性を有し、上記選定された構成要素は、上記パスの終端ノードが“偽”を表現すれば互換性を持たない。
【0074】
構成要素が、本来は構成の間に考慮されなければならないが構成を実行するユーザにとって参考にならないかもしくは上記ユーザに関係のない場合があるタイプであるような、特殊な状況も存在する。従って、構成の間にこのような構成要素を“隠蔽する”ことが望ましい場合がある。
【0075】
隠蔽される可能性のある構成要素の一例として、自転車の車輪のハブの幅がある。この幅は、これがフレームと車輪との互換性を説明していることから非常に重要であるが、自転車を構成するユーザがこの点に関心を払う必要はない。システムは、単にこの構成要素を隠蔽して、暗黙に選択されたハブ幅(既に選定されたフレーム又は車輪によって画成されたもの等)と相反する選択をユーザが実行できなくなるように保証してもよい。
【0076】
こうした状況において、上記DAGに上記ルールを表現するステップは、
・実際のDAGに上記ルールを表現することと、
・上記複数構成要素のうちの、隠蔽される少なくとも1つの構成要素を選択することと、
・上記実際のDAGを、
−上記実際のDAGにおける、上記選択された(複数の)構成要素に関連した複数の式を含む関連した複数のノードを識別することと、
−これらのノードを上記実際のDAGから除去することと、
−これらの(複数の)構成要素によって暗示された互換性が上記実際のDAGによって反映されるように、上記選択された(複数の)構成要素に関連した複数の式を含まない複数のノードを上記実際のDAGに追加することと
によって変更することと、
・上記実際のDAGを、上記ルールを表現するDAGとして提供することとを含んでもよい。
【0077】
従って、DAGは以下の方法で簡単に変更される。すなわち、他の構成要素に対する複数の選択肢を暗黙的に選択する、隠蔽された構成要素に係る1つの選択肢が、後続の互換性チェックが上記“隠蔽された”構成要素にも関連するが、ただしユーザはこれを検証できないように、上記他の構成要素に対するこれらの選択肢を暗黙的に選択する。
【0078】
可能な限り早い段階で上記“隠蔽された”構成要素を除去することによって、上記DAGを変更することが好ましい。これは、
・上記ルールの各々に関して、当該ルールを表現する部分的なDAGを構成することと、
・上記構成要素のうちの、隠蔽される少なくとも1つの構成要素を識別することと、
・複数の上記識別された構成要素の順序付けを選択することと、
・まず何のルールも表現しない実際のDAGを構成し、次に、
−最下位の選択されていない構成要素を選択し、
−上記選択された構成要素に関連した式を含む部分的なDAGが全て選定されるまで、
*上記選択された構成要素に関連した式を含む部分的なDAGを選定し、
*上記実際のDAGを上記選定された部分的なDAGと組み合わせて新たな実際のDAGにすることを繰り返し、
−上記実際のDAGを、
*上記実際のDAGにおける、上記識別された構成要素に関連した複数の式を含む複数のノードを識別し、
*これらのノードを上記実際のDAGから除去し、
*上記識別された構成要素によって暗示された互換性が上記実際のDAGによって反映されるように、上記識別された構成要素に関連した式を含まないノードを上記実際のDAGに追加することによって変更することとを反復することと、
・上記実際のDAGを、全ての選定されていない部分的なDAGと組み合わせて上記DAGを提供することによって行われうる。
【0079】
一般に、上記方法は、
・ユーザを識別することと、
・上記ユーザによって制御される装置と反復的な構成が実行されるもう1つの装置との間の通信を行うことにより、上記ユーザにより、構成要素の選択肢を選択するステップを実行することと、
・上記DAGをチェックすることに関連した情報を、上記ユーザに送信することをさらに含んでもよい。
【0080】
従って、計算負荷の主要部分は、すなわち、ルール及びDAGを導出することとともにDAGを反復的にチェックすることは、ユーザによって遠隔から実行され、結果のみがユーザに送信される。このことは、例えばインターネット上の帯域幅を節約し、ここで、上記インターネットでは、仮想的に任意のタイプの製品に対してもこのような構成が実行可能になる。
【0081】
また、上記方法は、
・ユーザを識別することと、
・上記反復的な構成の前に、
−ユーザによって制御される装置へ上記DAGを送信し、
−上記ユーザの装置上で上記反復的な構成を実行することをさらに含んでもよい。
【0082】
この方法では、DAGはユーザに送信され、次いで、それは、クライアント上で、即ちユーザによって制御されるか、場合によってはユーザによって所有されたコンピュータ上で、DAGでの構成を実行する。
【0083】
ある特に好適な実施形態は、上記反復的な構成の間に、
・選択肢が全く選定されていない構成要素に対する1つ又は複数の選択肢に関連した情報を取得するステップを含み、上記1つ又は複数の選択肢の各々は上記選定された選択肢との互換性を有し、
・この情報を上記ユーザに提供するステップを含むものである。
【0084】
従って、妥当な選択肢のみが表示されるので、従って、構成は、格段に高速に実行可能であり、かつ、互換性を持たない選択肢同士を組み合わせようとすることによってユーザが間違いを犯すことなしに、実行可能である。
【0085】
ユーザが製品構成と対話する有益な方法は、上記方法が音声認識装置を備えたシステムを提供することをさらに含み、かつ上記製品を反復的に構成するステップは、
・上記音声認識装置によって認識されたテキストから構成要素を選定することと、
・上記音声認識装置によって認識されたテキストからの、この構成要素の複数の選択肢にてなるグループから、1つの選択肢を選択することをさらに含む場合である。
【0086】
この方法では、選択肢は音声によって選択されるが、電話を介する製品構成等のアプリケーションでは、このことは非常に好ましい。
【0087】
構成される製品が所定の装置であるアプリケーションでは、上記方法が、構成可能な装置及びインターフェース装置を識別することと、
・上記構成可能な装置に関するルールを表現するDAGを記憶することと、
・上記DAGを上記構成可能な装置から上記インターフェース装置へアップロードすることと、
・上記製品を反復的に構成するステップにおいて、上記インターフェース装置上で、選択された選択肢が他の構成要素からの選定された他の選択肢との互換性を有するか否かということに関してDAGのチェックを実行することとをさらに含んでいれば有益である。
【0088】
この方法では、上記構成可能な装置の構成に関連した全ての情報は、上記装置内に記憶されることが可能であり、かつ任意のインターフェース装置からアクセス可能であり、このとき、上記インターフェース装置は上記構成可能な装置に関する特別な知識を持たない(without)。
【0089】
上記選択肢のうちの幾つかが上記構成可能な装置自体によって決定されうる状況においては、上記方法が、上記構成可能な装置における予め決められた構成要素のリストを識別することと、上記構成可能な装置におけるこれらの構成要素に対する予め決められた選択肢のリストを識別することとをさらに含み、上記製品を反復的に構成するステップは、
・上記インターフェース装置上で、上記選択された選択肢が、他の構成要素からの選定された他の選択肢との互換性を有し、かつ予め決められた選択肢との互換性を有するか否かということに関して、上記DAGのチェックを実行することをさらに含んでいれば有益である。
【0090】
予め決められた選択肢は、実行されなければならない選択肢の選定が少なくなることから、ユーザにとって容易になる。
【0091】
多数の製品の製品構成において、上記構成要素のうちのいくつかはオブザーバ的な構成要素であって、上記オブザーバ的な構成要素に対しては、ユーザは選択肢を選定せず、何が互換値(compatible value)であるかについてのみ関心を持つということを観察することが有益である。これは、上記方法がさらに、オブザーバ的な構成要素のリスト及びオブザーバ的でない構成要素のリストを識別することを含み、かつ、
・上記オブザーバ的でない構成要素に対するルールをDAGに表現することと、
・上記各オブザーバ的な構成要素について、ルールのサブセットを決定し、(such that)これらのルールから、上記オブザーバ的でない構成要素に対する選択肢との互換性を有する上記オブザーバ的な構成要素に対する選択肢を決定することができるようにすることと、
・各オブザーバ的な構成要素について、上記ルールのサブセットをオブザーバ的DAGとして表現することと、
・上記製品を反復的に構成するステップにおいて、
−選択された選択肢が、他の構成要素からの選定された他の選択肢との互換性を有するか否かということに関してDAGをチェックし、
−各構成要素について、上記選定された全ての選択肢との互換性を有する選択肢は1つのみであるか否かを決定することにより、システムによって決定された複数の選択肢にてなるセットを決定し、
−上記オブザーバ的な構成要素のうちの少なくとも1つについて、上記オブザーバ的な構成要素のオブザーバ的DAGをチェックし、選定された他の選択肢と上記システムによって決定された複数の選択肢にてなるセットとの互換性を有する選択肢は1つのみであるか否かを決定し、
−この情報をユーザに提供することと
を含む場合に利用されることが可能である。
【0092】
複数のルールを異なる複数のDAGに表現することは、このことがDAGの合計のサイズを低減し、必要な記憶量を減少して性能を改善するということの利点をもたらすので有益である。
【0093】
上記製品を反復的に構成するステップが、
・構成要素と選択肢との対のそれぞれについて、上記対の状態の分類を提供することと、
・複数の結果にてなるリストのうちの1つに、ブロックされた状態、選択可能な状態、ユーザが選択した状態、システムが選択した状態、又は強制状態を含む分類を採用することと、
・他の構成要素に対する選択肢の選定を考慮するまでもなく、上記構成要素に対して上記選択肢が選定されることが不可能な場合は、ブロックされた状態の分類を提供することと、
・上記構成要素に対する選択肢が上記他の構成要素からの選定された選択肢との互換性を有する場合は、選択可能な状態の分類を提供することと、
・上記構成要素に対して上記選択肢が既に選定されている場合は、ユーザが選択した状態の分類を提供することと、
・上記選択肢が上記構成要素にとって唯一の選択肢であり、これが他の構成要素からの選定された選択肢との互換性を有する場合は、システムが選択した状態の分類を提供することと、
・上記構成要素に対して上記選択肢が選択可能であるが、これは他の構成要素の選択肢に係る他の選定のうちのいくつかとの互換性を持たない場合は、強制状態の分類を提供することと、
・上記分類に関する情報を上記ユーザに提供することと
をさらに含む場合は、ユーザにさらに有益な情報を与えることができる。
【0094】
分類は、ユーザインターフェースにおいて、可能性のある選択肢の選定の効果に関する有益な情報をユーザに提供することによって使用可能である。いくつかは不可能であり、いくつかは直接選択することが可能であり、その他はユーザ又はシステムによって既に選択済みであり、最後の幾つかは強制可能であって、これは、ユーザが以前のいくつかの選定を取り消す用意があればそれらが選択可能であるということを意味する。
【0095】
本発明の第2の態様は、当該プログラムがコンピュータ上で実行されるときに上記方法に係るすべてのステップを実行するように適応化されたコンピュータプログラムコード手段を備えたコンピュータプログラムに関連している。
【0096】
本発明はまた、コンピュータが読み取り可能な媒体上に具現されたコンピュータプログラムと、上記コンピュータプログラムを備えたコンピュータが読み取り可能な媒体とに関する。
【発明を実施するための最良の形態】
【0097】
以下、付録及び図面に関連して、本発明に係る好ましい実施形態を説明する。
【0098】
次に、本発明を、本発明によって扱われる課題の起源である、幾つかの部品で構成される複合製品に係る、対話式の、計算機で支援された構成に適用された好適な実装に関連して説明する。しかしながら、当業者には、本発明はこの特定のアプリケーションに限定されるものではなく、当該構成を実行する方法と構成される製品の構造との両方に関する、より広範なアプリケーションを有するということが理解されるであろう。
【0099】
本発明は、製品を構成する方法を含んでいる。本発明を限定することなく、「製品モデル」は、製品の関連した複数の態様をモデル化するために使用される。本製品モデルにおいて、製品は多数の構成要素で構成され、かつこれらの構成要素の各々について複数の「選択肢」にてなるグループが存在する。各構成要素は、典型的には、色、動作、重量、インターフェースなどのような当該構成要素の関連した態様を記述する「属性」を有する。これらの属性の各々について、複数の具体的な「値」にてなるグループが存在する。例えば、色の属性は、赤、青又は緑の値を有する可能性がある。さらに、異なる構成要素に対する選択肢間には、互換性に関連したルールが存在する。
【0100】
この製品を構成するための方法は、下記のことを含む。
【0101】
・製品の関連した態様を「製品モデル」として指定すること。上記製品モデルは、構成要素、これらの構成要素に対する属性を記述するとともに、各構成要素に対する選択肢及び各属性の値を記述している。さらに上記製品モデルは、複数の構成要素と複数の属性との間の互換性に関連した複数のルールにてなるグループを備えている。
・この製品モデルを、上記製品モデルの整合された構成を表現する仮想テーブルとして符号化すること。
・上記仮想テーブルを使用して、整合された構成をもたらす製品を構成すること。典型的には、これは、ユーザと構成プログラムとの間の対話式セッションにおいて行われる。
【0102】
図1は、これらのステップを略示している。この図は、特定の製品(自転車)、特定の形式の製品モデル(テキストの記述)、特定の仮想テーブル(ブール決定ダイヤグラム(Boolean Decision Diagram))、及び特定の対話式の構成処理を示している。当業者には、本発明がこれらの特定の選定に限定されないということは明白である。
【0103】
・まず、この場合では自転車である具体的な製品の製品モデルが生成される。この具体的な製品モデルは、2つの異なるフレームが存在しかつ2つの異なるギヤが存在することを表現している。さらに、本製品モデルは、ルールから、外装ギヤが選定されれば、フレームはカーボンフレームでなければならないということを表現している。
【0104】
・製品モデルは、仮想テーブルとして符号化される。本仮想テーブルは、全ての整合された構成を表現する有向非循環グラフ(directed acyclic graph)である。この具体的な有向非循環グラフは、2つの変数、即ち、外装(external;選択されたギヤが外装ギヤであることを表す)とカーボン(carbon;カーボンフレームが選択されたことを表す)とを有するブール決定ダイヤグラム(BDD)(「シンボルモデル検査」の分野の当業者に知られている)である。くだいた言い方をすると、BDDと製品モデルとは、「外装」及び「カーボン」へのブール値の割り当てが終端1に至る場合かつその場合に限り、対応する構成には整合性がある、という関係にある。
・次に、自転車に対する、計算機で支援された構成が実行される。コンピュータプログラムは、各構成要素に対する可能な選択肢を示す。コンピュータプログラムのユーザは、1つの構成要素を選択し、この構成要素に対する可能な選択肢の中から1つを選択する。例えば、ユーザはギヤ構成要素を選定可能であるが、そのギヤは外装ギヤであるとする。このユーザの選択に基づき、コンピュータプログラムは仮想テーブルを使用し、次にどんな選択をすれば整合された構成になるかを発見する。例えば、コンピュータプログラムは仮想テーブルを使用して、外装ギヤの選択はフレームがカーボンフレームでなければならないことを暗示するという決定を下す。この対話式処理は、各構成要素について1つの選択肢が選択されるまで続く。この構成処理の結果、整合された製品構成がもたらされる。
【0105】
以下の3つのセクションにおいて、製品モデル、符号化処理及び最終的な構成処理をさらに詳述する。各セクションにおいて、好適な実施形態が提示される。
【0106】
製品モデル.
一般に、「製品モデル」は、製品が何の構成要素から構成されているかということと、これらの構成要素間の相互の従属関係とを記述するために使われる。
【0107】
本発明の本質は、製品モデルに対して特別な限定を課さない。しかしながら、製品モデルは、本発明を限定することなく、複数の「製品変数」にてなるセット、これらの変数の各々の「領域」、及び複数のルールにてなるセットをしばしば画成する。各製品変数は、構成要素又は属性を表す。構成要素を表す製品変数の場合、製品変数の領域は、当該構成要素に対する可能な選択肢に対応する。属性を表す製品変数の場合、製品変数の領域は当該属性に対する可能な値に対応する。製品変数の可能な領域は、離散的な領域を含むとともに、連続的な領域を含む。構成要素と属性との間の相互従属関係はルールとして表現され、かつ典型的には、複数の製品変数に関する式(又は公式)として定式化される。
【0108】
製品モデルの一例は、マザーボード(異なる3つの選択肢)、CPU(2つの選択肢)及びハードディスク(2つの選択肢)で構成されるコンピュータの製品モデルである。CPUはスロットを使用してマザーボードへ接続されるので、スロットのタイプはCPU及びマザーボードの両方にとって重要な属性であり、また、ハードディスクは特定のコントローラタイプを使用してマザーボードへ接続されるので、コントローラタイプもまた重要な属性である。以下は、コンピュータ製品モデルのテキストの一例である。
【0109】
[製品モデル1]
【0110】
最初のセクションは、製品変数のタイプを定義するために使用されるタイプを宣言する。次のセクションは、製品変数を宣言する。これらの変数は各々、識別子とタイプとを有する。この例の場合のタイプシステムは、原子的な構成と、レコード構成({…})と、列挙されたタイプ(…│…│…)とを備えている。例えば、cpuは、name(名前)とslot(スロット)より成るレコードを備えた製品変数であり、このスロットはcpu−slot−tのタイプである。cpu−slot−tは、次の2つの選択肢、即ちSLOT−1及びSLOT−Aを備えた列挙タイプとして宣言される。プライベート(private)修飾子及びパブリック(public)修飾子は、構成の間にエンドユーザに対してどの構成要素又は属性が提示されるかを制御するために使用される(詳細は後述する)。第3のセクションは、複数のルールを宣言する。これらのルールは、製品変数に関する一般的なブール式であり、整合された構成のためには全てのルールが満たされる必要がある。一般に、ルールは複数の製品変数間の任意の関係を表現できるが、この例に提示されている具体的なルールは、下記の2つの異なるカテゴリーに分けられるものとして考えることができる。
【0111】
属性ルール:特定の選択肢に関する所定の属性の値を指定する。例えば、Aopen−AX6BP−ATXマザーボードのスロットタイプは、SLOT−1であると指定される。
互換性ルール:異なる構成要素からの複数の選択肢/属性間の一般的な相互の従属関係を指定する。例えば、ハードディスクのコントローラタイプはマザーボードのコントローラタイプと同じでなければならないと指定されている。
【0112】
このセットアップでは、構成は、製品変数の全てのパブリック部分に関する具体的な値の選択を含んでいる。このコンピュータの例では、これは、マザーボードの名前、CPUの名前及びハードディスクの名前の選択を含んでいる。本コンピュータの整合された構成は、コンピュータの製品モデルに係るルールを満たす構成である。整合された構成の一例は、motherboard.nameをAbit−BX6−ATXにして、cpu.nameをIntel−Celeron−A−366MHzにして、かつharddisk.nameをIBM−Deskstar−25GP−10,1GBにする選択である。
【0113】
上述の例では、製品モデルはテキストで表現されている。しかしながら、本発明はこのような表現に限定されない。それに代わって、製品モデルの完全な表現は多数の表現間で分割されることが可能である。本発明のある態様は、製品説明を製品テーブルと組み合わせて完全な製品モデルを得ている。製品説明は一般に、構成要素及びそれらの属性を定義することによって製品の構造を表現するために使用され、製品テーブルは一般に、構成要素に対する具体的な選択肢を表現するとともに属性の具体的な値を表現するために使用される。
【0114】
このアプローチにより、通常は包含することが困難になるであろう製品データの巨大なテーブルを、計算機で支援された構成のための製品モデルにすることが可能である。これのアプリケーションは不動産販売店の構築を含み、ここでは、家屋の潜在的購入者にとっては彼が彼自身の家を“構成”しているように見える。実際には、彼は、全ての整合された選定を表す簡単なドロップダウンメニューを使用して、例えば10,000軒の家屋から選定する。この例において、属性は、価格の範囲、場所、ガレージ、水泳用のプール、部屋数、面積などを含む。
【0115】
例示となるコンピュータ製品モデルは、1つの製品説明と3つの製品テーブルとに分割されることが可能である。製品説明は、元のコンピュータ製品モデルと同じセクションで構成されるが、属性ルールは除去されている。
【0116】
[製品モデル2]
【0117】
最初のテーブルは、マザーボード構成要素の属性を定義する。
【0118】
【表1】
【0119】
第2のテーブルは、ハードディスク構成要素の属性を定義する。
【0120】
【表2】
【0121】
第3の最後のテーブルは、cpu構成要素の属性を定義する。
【0122】
【表3】
【0123】
テキストによる製品モデルは、下記の方法により、1つの製品説明と、複数の製品テーブルにてなる1つのセットとから取得されることが可能である。
【0124】
・各テーブルについて、当該テーブルをルールに翻訳する。
・先行するステップで取得されたルールを、製品説明に追加する。
【0125】
テーブルは、テーブルを論理和標準形上の表現(expression)として見ることができるという、鍵となる観察事実を使用してルールに翻訳される。n個の行とm個の列を有するテーブルは、下記のように翻訳される。
【0126】
・行i及び列jにおける、yjというラベルを有する列において内容xj iを有するセルは、yj=xj iという原子的なルールに翻訳される。
・n個の行のうちで行iについて、この行上のセルから取得される全ての原始的なルールが、これらの原始的なルールを互いに結合することにより組み合わされて、サブルールが形成される(y1=x1 i∧…∧ym=xm i)。
・n個のサブルールは全て、これらのサブルールを互いに直和することにより組み合わされ、1つの大きなルール
【数1】
が生成される。
・この1つの大きなルールが、ルールに翻訳されたテーブルである。
【0127】
例えば、コンピュータ製品モデルの最後のテーブルは、下記のように翻訳される。
【0128】
[製品モデル3]
【0129】
便利な拡張方法は、製品テーブルにおける値を製品説明における値にマッピングする「テーブルフィルタ」を追加するものである。このようなフィルタの一例は、製品テーブルにおける特定の価格($100、$223、$817等)を製品説明における価格のレベル(安価(cheap)、手頃な価格(reasonable)及び高価(expensive)等)にマッピングする。このようなマッピングは、典型的には、与えられた区間における全ての価格を同じ価格のレベルにマップする。
【0130】
ルールへの翻訳は、明示的に実行される必要はない。本発明のある態様では、この翻訳は、代わって、仮想テーブルの構築の間にオン・ザ・フライで実行可能である。
【0131】
製品モデルの好ましい実施形態.
製品モデルの好適な実施形態は、1つの製品説明と、複数の製品テーブルにてなるセットとで構成される。製品説明は、XML 1.0の文書として与えられる。製品テーブルは、ODBCデータソースとSQL質問との組み合わせである。
【0132】
XML文書は、付録A 10に示されている文書型宣言(DTD)を使用して定義される。基本的には、製品説明は下記のものを含む。
【0133】
定数宣言:定数は、明示的に特定可能であるか(constant)、又は、評価されるときに正確に1つのセルに戻さなければならないSQL質問として特定可能である(dbconstant)。
型宣言:型宣言(type)は、基本的には型識別子を特定のタイプに対する省略表記として宣言する(以下を参照)。
製品変数:製品変数(productvariable)は、パブリック又はプライベートを宣言でき、これは所定のタイプに属する(以下を参照)。
ルール:ルールは、構成が整合されたものであるために満たされる必要がある製品変数に関するブール式である。この式は、明示的に特定されるか(rule)、又は、評価されるときに、ルールに翻訳されうるテーブルを戻さなければならないSQL質問を使用して特定されるか(dbrule)の何れかであることが可能である。
データベースの詳細:最後に、下記のようないくつかの追加の情報の部分、即ち、ODBCデータソースを定義するエイリアス(別名)定義(alias)、SQL質問定義(sqlqueries)、及びデータベースにおける値と製品説明における値との間のマッピングに使用可能なフィルタ(filter)を提供することができる。
【0134】
ルールは、次のような構造化された式、即ち、ブール値(true(真),false(偽))、有界なサブレンジからの値(0,1,…,n)のような原子的な式と、複数のアレーから構築された複合式(compound expression)と、レコード式と、列挙(総和(sum))式とを含んでいる。さらに、算術演算子及びブール演算子が提供される。本好適な実施形態では、許容された算術演算は加算、減算及び乗算を含み、乗算演算は、少なくとも1つのオペランドが定数である場合にのみ許容される。許容されたタイプの算術演算子は最初は奇妙に思えるが、後に明らかとなるように、この選定は、本好適な実施形態と協働するとき仮想テーブルにとって非常に好首尾に機能する。
【0135】
製品説明用の言語としてのXMLの選定は、コンピュータ上への表現のためのテキストフォーマットとツリーデータ構造との両方への直接的な翻訳を可能にしたものである。
【0136】
製品説明を作成するための本好適な方法は、グラフィカルユーザインターフェースを使用するものである。コンフィジットスタジオ(ConfigItStudio)は、このようなグラフィカルユーザインターフェースである。図2のスクリーンショットを参照されたい。このスクリーンショットは、pcの製品モデルを編集中のコンフィジットスタジオの製品モデルエディタを示している。スクリーンショットの左側の領域におけるツリー表示は製品説明のツリー表示であり、XML文書型宣言に密接に関連している。(このスクリーンショットでは、型宣言に“テンプレート(template)”という用語が使用され、ルールには“拘束条件(constraint)”という用語が使用されている。)右側の領域は、ツリー内の選択された頂点に関する詳細を示し、頂点を操作するために使用可能である。このスクリーンショットの上部のメニューは、製品モデル(以下を参照)用の仮想テーブルを構築することと(“コンパイル”メニュー)、インターネットを介した対話式構成(以下を参照)用の仮想テーブルサーバを動作させること(“実行”メニュー)とに使用可能である。
【0137】
仮想テーブルとしての製品モデルの符号化.
本発明の重要な態様は、製品モデルをコンパクト「かつ」効率的な表現に変換する処理である。この処理を「仮想作表(virtual tabulation)」と呼び、結果として得られる表現を「仮想テーブル」と呼ぶ。この変換を実行できる多数の方法が存在する。変換の目的は、まず、構成問題を符号化して当該構成問題に対するすべての解を求める方法を発見し、次に、上記構成問題に関連した情報を仮想テーブルへの効率的な質問によって取得できるように、これらを仮想テーブルにおいて仮想的に作表することにある。符号化は、製品モデルの構成要素に係る符号化と、ルールの対応した符号化とを発見すること含む。ルールに対する有効な解に関する照会が効率的に実行されうるように、DAGは全てのルールを表現する。仮想テーブルは、このDAGと、製品モデルとDAGとの間の関係に関する情報とで構成される。
【0138】
現状における当該技術を凌ぐ本発明の利点は、すべての解にてなるテーブルが実際に存在しているかのような効率的な照会を実行できるように、DAGを使用して全てのルールを表現するステップに由来する。テーブルの全体は、ほとんど常に、大きすぎて実用的なものではないが、それに対して、適切に選定された符号化は、小さなDAGをもたらすことができると同時に、全ての解を作表していることによって精度を維持することができる。
【0139】
仮想テーブルの最も重要な部分は、整合された構成を1つ1つ表現するDAGである。実在の製品モデルに関しては、こうした構成が途方もなく多数存在するので、DAGは何とかしてこれらの構成を暗黙的に表現する必要がある。しかも、DAGはこれらの構成を「正確に」(即ち、“精度を下げることなく”)表現する必要がある。DAGに対する必要条件は、次の2つのカテゴリーに分類することができる。
【0140】
機能の必要条件:DAGは、当該各構成が製品変数の各々に対する値を定義する、「複数の構成にてなるセット」を表現できる必要がある。DAG上の基本的なアルゴリズムは、このような構成セットに対する演算及び機能を模倣し、下記を達成しなければならない。
【0141】
・複数の構成セットにてなるグループの和集合を構築しかつ共通集合を構築し、2つの構成セットの差集合を構築し、構成セット内の変数の可能な値を変化させ、制限し、又は拡張する、など。
・セットが空集合であること、セットの包含関係及びセットの同値関係をチェックする。変数の可能な値を決定し、かつ構成セットにおける構成の個数を決定する。
効率の必要条件。製品モデルにおけるルールの本質/構成は、上で紹介されたアルゴリズムの多くが、製品変数の個数に関して(少なくとも)指数関数的である、典型的な最悪の場合の実行時間を有することになる点を暗示している。DAGのサイズも、典型的な最悪の場合で、製品変数の個数に関して(少なくとも)指数関数的になる。それにも関わらず、実在の製品モデルでは、アルゴリズムは「効率的」に動作し、DAG表現は「コンパクト」である、というのが実情でなければならない。
【0142】
これらの必要条件は、最初は満たすことが困難であるように思える可能性もあるが、実在の製品モデルではこのようなDAGが実際に存在することが分かる。
【0143】
ブール決定ダイヤグラム(BDD)は、単一のブール変数をそれぞれ含む複数のノードを備えたDAGである。ハードウェア回路の形式的検証の分野から、BDDを使用して次式のタイプの任意のブール関数を符号化できるということが知られている(ここで、nはブール変数の個数である)。
【0144】
【数2】
【0145】
これらの関数は、“ブール製品モデル”に対する構成セットと同形である。(“ブール製品モデル”によって、われわれは、製品変数の値が真及び偽に制限されている製品モデルを指す。)従って、一般的な製品モデルをこのようなブール製品モデルとして符号化することが可能であれば、かつさらに、必要な構成アルゴリズムを基本的なBDD演算の形で表すことができれば、1)BDDを使用して一般的な製品モデルの仮想テーブルを表現し、かつ2)この仮想テーブルを使用して一般的な製品の実際の構成を実行することが可能である。
【0146】
BDDに関しては、これらの必要条件が全て満たされることが分かり、かつさらに、大部分の実在する製品モデルに関して、本アルゴリズムは効率的であり、DAGはコンパクトである。事実、BDDはDAGの好適な実施形態である。
【0147】
しかしながら、本発明はこのようなDAGに限定されない。他の多くのDAGが、各々セット及びセットに対する演算として捉えることのできる表現及びアルゴリズムを有している。DAGは、製品モデルにおいてルールを表現する言語に基づいて注意深く選定される必要がある。
【0148】
例えば、差決定ダイヤグラム(メラー(Moeller)ほか,差決定ダイヤグラム(Difference Decision Diagrams),欧州計算機科学論理(CSL)学会年次会議論文集(proceedings Annual Conference of the European Association for Computer Science Logic (CSL)),1999年9月20−25日,スペイン,マドリッドを参照)は、
【数3】
のタイプの関数(のうちのサブセット)を表現するために使用可能であると同時に、必要なアルゴリズムも提供する。その直接的な優位点は、これにより、ルールが連続的な領域を有する変数に対する存在記号化された式(の制限されたサブセット)で構成される場合の、製品モデルを符号化する方法が存在することにある。反対に、本アルゴリズムは効率が劣る(符号化され得るルールの充足可能性(satisfiability)はpspace困難であることが分かる)という欠点もある。
【0149】
製品モデルのルールがより多くの一般的な算術演算を含む場合に適切なもう1つのアプローチは、翻訳されたブール変数に対してBDDを使用するものである(316−327ページ,ダブリュー.チャン(W. Chan),アール.ジェイ.アンダーソン(R. J. Anderson),ピー.ビーム(P. Beame),及びディー.ノトキン(D. Notkin),非線形拘束条件を有するシステムのクラスに対する拘束条件解法とシンボルモデルチェックとの組み合わせ(Combining constraint solving and symbolic model checking for a class of systems with non-linear constraints),オー.グルムバーグ(O. Grumbreg)編集,計算機支援検証(Computer Aided Verification),第9回国際会議(9th International Conference),CAV’97論文集(CAV'97 Proceedings),計算機科学講義録第1254巻(volume 1254 of Lecture Note in Computer Science),ハイファ,イスラエル,1997年6月,シュプリンガー・フェアラーク(Springer-Verlag)を参照)。各ブール変数は式を表し、DAG内のパスはこのような式の結合(conjunction)を表し、このようなパスの充足可能性は、例えば線形プログラミングを使用して決定されることが可能である。
【0150】
次に、製品モデルを仮想テーブルとして符号化することについて、(BDDを使用する)その好適な実施形態で説明する。しかしながら、当業者であれば、異なる基礎的なデータ構造、例えば上述の2つのデータ構成のうちの一方を使用するようにアルゴリズムを微調整することができる。
【0151】
製品モデルを仮想テーブルとして符号化するための好適な実施形態.
製品モデルを仮想テーブルとして符号化するための好適な実施形態は、下記のステップを含む。
【0152】
静的拡張:製品モデルは、タイプの階層を平坦化することによって拡張される。その結果、平坦化された製品モデルと、製品モデルを平坦化された製品モデルに接続するシンボルテーブルとが得られる。
BDDの符号化:各ルールについてBDDが構築され、全ての整合された構成を表現する1つの大きなBDDが構築される。
【0153】
以下、最初に、静的拡張を実行する方法を示す。平坦化された製品モデルはこの静的拡張の結果であり、BDDを使用する符号化に適合するように生成されている。
【0154】
静的拡張.
静的拡張は、タイプの階層を平坦化することによって実行される。その結果、平坦化された製品モデルと、製品モデル及び平坦化された製品モデルを関連付けるシンボルテーブルとが得られる。
【0155】
平坦化された製品モデルは、1)レコード式の除去と、2)領域の簡単化と、3)ブール形式の符号化とによって取得される。レコードタイプの除去は、レコードタイプを含む各製品変数について、製品変数を、平坦化された変数にてなるリストで置換することにより実行される。さらに、この製品変数に対する全ての式は、平坦化された変数に対する式によって置換される。この置換の後には、全てのレコードが製品モデルから除去されている。コンピュータの製品モデルの場合、このステップは結果として下記のような製品モデルをもたらす。(motherboard(マザーボード)は、name(名前)、slot(スロット)及びcontroller(コントローラ)より成るレコードタイプの製品変数であったことを想起されたい。)
【0156】
[製品モデル4]
【0157】
製品モデルを平坦化する第2のステップは、平坦化される変数の領域の簡単化を含んでいる。平坦化された値は全て数に変換され、平坦化された変数の各々の領域は区間に変換される。例えば、cpu_slotについて言えば、(cpuスロットに対する第1の選択肢であった)SLOT−1に代えて値0が使用され、SLOT−A(第2の選択肢)に代えて値1が使用される。コンピュータの製品モデルの場合は、次のような製品モデルが結果としてもたらされる。
【0158】
[製品モデル5]
【0159】
製品モデルを平坦化する最後のステップは、製品モデルをブール形式で符号化することを含んでいる。平坦化された各変数はブール変数にてなるリストで置換され、各ルールは、これらのブール変数に対する新しいルールで置換される。
【0160】
タイプ0..nの領域を有する平坦化された変数は、
【数4】
個のブール変数
によって置換される。n+1個の値の各々について、これらのブール変数に対する固有の割り当てが選定される。例えば、motherboard_nameの平坦化される変数に係る3つの値を有する領域(n=2)を符号化するためには、2つのブール変数、X0及びX1が必要である。領域内の各値について、ブール変数の割り当てが選定される、即ち、値0にはX0=0,X1=0が、値1にはX0=0,X1=1が、最後に値2にはX0=1,X1=0が選定される。各ルールはここで、平坦化された製品モデルを取得しているブール変数に対する新たなルールで置換される。例えば、コンピュータ製品モデルの平坦化された製品モデルは次のようになる。
【0161】
[製品モデル6]
【0162】
製品モデルの平坦化の間に、シンボルテーブルが構築される。このシンボルテーブルは2つのテーブルを備えている。第1のテーブルは、タイプと、平坦化される変数の各々の領域と、この変数の値を符号化するために使用されるブール変数とに関する情報を含む。コンピュータ製品モデルの場合、このテーブルは下記の通りである。
【0163】
【表4】
【0164】
第2のテーブルは、平坦化される値、それらの整数値、及び固有のブール割り当てに関するものである。コンピュータ製品モデルの場合、このテーブルは下記の通りである。
【0165】
【表5】
【0166】
BDD符号化.
次に、DAGの構築が実行される。好適な実施形態は、(既約の順序を有する)二分決定ダイヤグラムである。
【0167】
ブール決定ダイヤグラムを使用してブール式を表現することは公知である。ブール決定ダイヤグラムの概論については、[クリストフ・マイネル(Cristoph Meinel)及びソーステン・セオバルド(Thorsten Theobald),VLSI設計におけるアルゴリズムとデータ構成(Algorithms and Data Structures in VLSI Design),シュプリンガー(Springer),1998年]を参照されたい。われわれは、下記の(公知の)BDDのテキスト表現を用いる。
【0168】
・0は、終端BDD0(真)を表す。
・1は、終端BDD1(偽)を表す。
・
【数5】
は、a及びbに対して、演算子
【数6】
で示された任意の2進ブール演算子を適用することによって求められるBDDを表す。
・∃x.aは、BDDaから変数xを存在記号化することによって求められるBDDを表す。
・(x→a,b)は、xであればaであり、xでなければbである式を表すBDDであり、これはより簡単な演算子の形で(x∧a)∨(¬x∧b)のように表すこともできる。
【0169】
BDDは、公知のグラフ表現を有する。図5はこの表現の一例である。この図は、2つの変数X0及びX1に対するBDDである。変数の選定された順序付け
【数7】
は
【数8】
であり、BDDは次式を表す。
【0170】
【数9】
【0171】
BDDの構築及び分解のためのBDDに対する基本的な演算は、アルゴリズム1に概説されている。アルゴリズムMKは頂点の構築に使用され、アルゴリズムAPPLYは2つの頂点に演算子を適用するために使用され、アルゴリズムEXISTSは、BDDにおける変数の存在記号化を表すBDDを構築するために使用される。アルゴリズムVAR、LOW及びHIGHはBDDを分解するために使用される簡単な関数であり、VAR(u)は頂点uに関連付けられた変数を返し、LOW(u)は頂点uに関連付けられた低い息子(low-son)を返し、HIGH(u)は頂点uに関連付けられた高い息子(high-son)を返す。アルゴリズムFULLONESAT(u)は、BDDuが、所定の条件を満たす正確に1つの割り当てを有するように(通常、uは、少なくとも1つの解を含む実現可能なものでなければならない)、v→uを満たす新しいBDDであるvを計算する。アルゴリズムANYSAT(u)は、u(この場合もuは実現可能なものでなければならない)における変数に対する値に係る、所定の条件を満たす割り当てを返す。最後に、アルゴリズムSATCOUNT(u)はuを満たす割り当ての個数を返す。
【0172】
BDD表現の構築は、平坦化された製品モデルに基づいている。まず、ブール変数の適正な順序付けが選定される。この順序付けの選定は、構成されるBDDのサイズにとって重要である。好適な実施形態において、順序付けは、同じ平坦化された変数を表現するブール変数を、それらが互いに隣接するように保持することによって選定される。コンピュータ製品モデルの場合の適正な順序付けは、次式になる。
【0173】
【数10】
【0174】
順序付けが選定されると、ルールの各々がBDDとして符号化される。例えば、第3のルールのBDDである(X0=0 /\ X1=0)=>(X4=0 /\ X6=0)は、(図4に示された)次式を符号化することによって構築される。
【0175】
【数11】
【0176】
符号化は、公知のMK及びAPPLYアルゴリズムを使用して実行される。以下では、セットRは複数のルールにてなるセットを表し、各ルールはBDDとして符号化されている。
【0177】
その後、各平坦化される変数について、可能なブール変数割り当てを表す領域拘束条件が生成される。例えば、平坦化される変数motherboard_nameには3つの可能な値(0,1及び2)が存在する。従って、2つのブール変数を使用して、割り当て(X0=0,X1=0)、(X0=0,X1=1)及び(X0=1,X1=0)をそれぞれ用いることによって、領域が符号化される。図5には、motherboard_nameに対する領域拘束条件のBDDが示されている。残りの(未使用の)割り当て(X0=1,X1=1)は、終端0に至ることが観察される。平坦化される他の全ての変数の領域サイズは(単一のブール変数に対応する)2であることから、他の全ての領域拘束条件のBDDは終端BDD1によって表現されることになる。これらのBDDを構築するためのこの好適な方法は、MK及びAPPLYアルゴリズムもまた使用する。以下、セットDは領域拘束条件にてなるセットを表し、各領域拘束条件はBDDとして符号化されている。
【0178】
このステージで構築されるBDDは、全てのルールR及び全ての領域拘束条件Dを表現する1つの大きなBDDを生成するためのビルディングブロックとして使用される。このBDDは、まず個別のルールに対する複数のBDDを結合し、1つのBDDである次式のRallにすることによって構築される。
【数12】
【0179】
ここで、∧r∈Rrは、Rからの全ての要素rを互いに結合した結果を示す。
【0180】
図6は、コンピュータ製品の場合のこのBDDを示す。このBDDでは、X0=1及びX1=1を選択しても終端1に至ることが実際に可能である点に留意されたい。これは、領域拘束条件が考慮されていないという事実によって生じる。従って、全ての領域拘束条件を含むBDDであるDallは、次式のように構築される。
【数13】
【0181】
全ての可能な整合された構成を表すBDDは、次式のように全てのルール及び全ての領域拘束条件に対する全てのBDDを結合することによって求められる。
【0182】
【数14】
【0183】
コンピュータ製品モデルの場合、このBDDは図7に示されている。全ての変数を含む正確に3つの異なるパスが、終端1に至ることが観察される。従って、このコンピュータ製品モデルの場合は、正確に3つの整合された製品構成が(異なる各マザーボードにつき1つずつ)存在する。
【0184】
Rall、Dall及びCallを構築する好適な方法は、アルゴリズム2に示されたアルゴリズムMULTIAPPLYを使用するものである。結合的法則を満たしかつ可換な演算子
【数15】
と、頂点のセットU={u1,…,un}とが与えられたとして、本アルゴリズムは、次式を表すBDDを返す。
【0185】
【数16】
【0186】
上述したように、平坦化されたパブリック変数のみが、構成の間にエンドユーザにとって利用可能であると考えられる。必要な情報を捨て去ることなく、これらの変数のみに関する、より小さなBDDを構築することが可能である。このBDDは、好適にはアルゴリズム3に示されたMULTIEXISTSアルゴリズムを使用し、平坦化されたプライベート変数にてなるセット(セットVprivと呼ばれる)を存在記号化することによって、次式のように構築される(Vpriv Bは、Vprivを表すブール変数にてなるセットを示すものとする)。
【0187】
【数17】
【0188】
ここで、
変数の有限セットW={x1,…,xm}に対する∃Wを、m個の存在記号∃x1,…,∃xmの省略表記として使用する。
【0189】
コンピュータの製品モデルの場合、結果として得られるものは、図8に示されたBDDである。この図では、最上位置の頂点から終端1に至る任意のパスが、当該コンピュータの整合された構成を構成する、ブール変数の1つ又は複数の割り当てを表している。いくつかの変数がパス上に存在しないならば、さらに多くの割り当てが表現される。これらは、値0又は1の何れをも取ることが可能であり、しかも整合された割り当てを結果としてもたらす。シンボルテーブルを使用すれば、この情報をもとの平坦化された変数に関連付けることができる。
【0190】
早期の存在記号化(Early Quantification).
大型の製品モデルの場合、「最初」に整合された構成の全体のセットに関するBDDを構築し、「その後」で、プライベート変数を存在記号化することが、構成の間に非常に大きなBDDを生じさせるということが分かる。早期の存在記号化として知られる技術を符号化処理に適合化させることによって、さらなる優位点を得ることができる([ジェイ.アール.バーチ(J. R. Burch),イー.エム.クラーク(E. M. Clarke),ディー.イー.ロング(D. E. Long),区分化された遷移関係を用いたシンボルモデルチェック(Symbolic Model Checking with Partitioned Transition Relations),1991年VLSI国際会議論文集(Proceedings of the 1991 International Conference on VLSI)]を参照)。鍵となる観察事実は、変数が、あるルールにおいて自由でなければ、次式のように、存在記号化を、ルールの連接的組み合わせ(conjunctive combination)における論理積より下に“移動”させることができるということである。
【0191】
【数18】
【0192】
この技術の適応化の好適な実施形態は、次のようなものである。即ち、グラフ(V,E)は、1つの平坦化された変数でそれぞれラベル付けされた頂点Vと、1つのルールでそれぞれラベル付けされた辺Eとを備えて構成される。グラフは配向されていないが、2つの頂点を2つ以上の辺で接続することができる(マルチグラフ)。当該グラフは、
・平坦化された各プライベート変数vについて、vとラベル付けされた頂点と(この頂点を頂点vと呼ぶ)、
・頂点v,w及びルールrの各対について、平坦化された変数v及びwが共にrにおいて自由である場合のvとwの間の辺(この辺を辺(v,r,w)と呼ぶ。)と
を含む。
【0193】
構成されたグラフに基づいて、強く接続された構成要素グラフが生成される(例えば[コーメン(Cormen),レイザーソン(Leiserson),リベスト(Rivest),アルゴリズム入門(Introduction to Algorithms),488−490ページ]を参照)。Sは、強く接続された構成要素にてなるセットを示すものとする。強く接続された構成要素の各々は、サブグラフ(部分グラフ)を備えている。Gi=(Vi,Ei)は、これらのサブグラフのうちのi番目のサブグラフを含むものとする(1≦i≦|S|とする)。Viはこのサブグラフにおける平坦化されたプライベート変数であり、
【数19】
はこのサブグラフにおけるルールである。
【0194】
ここで、グラフGiにおける平坦化されたプライベート変数は、構成上、Gi内に存在しない全てのルールにおいては自由ではない。式1に示された観察を使用すれば、このことは次式を意味する(Vi BはViを表すブール変数であるものとする)。
【0195】
【数20】
【0196】
次に、下記のステップを実行することにより、複数のルールの順序付けと平坦化された変数とが生成される。
【0197】
・各サブグラフGiに関して、当該サブグラフに固有な複数の平坦化された変数Viの順序付けを選定する。Oiは、これらの平坦化された変数の順序付けされたリストであるものとする。
・全ての平坦化された変数の順序付けされたリストを次式で定義する。
【0198】
【数21】
【0199】
・順序付けOに基づいて複数のルールをソートする。
【0200】
最後のステップは、好適には、アルゴリズム4に示されたアルゴリズムORDERRULESによって実行される。このアルゴリズムは、入力として、1)順序付けされた複数の平坦化された変数のリストOと、2)辺Eとを取る。ORDERRULES(O,E)の呼び出しは、ルールのセットにてなるリストF=<F1,…,F|V|>を返す。ここで、次式が常に成り立つ。
【0201】
【数22】
【0202】
次に、式1と式2を組み合わせれば、1)領域拘束条件Dallに対するBDDから開始し、2)i(1≦i≦│V│)を増大させながら、このBDDに対して、反復して、まずFiにおける複数のルールを結合し、その後viを表すブール変数を存在記号化することにより、整合された構成にてなるセットCpubを決定することができる。このタスクは、好適にはアルゴリズム5に示されたように実装されるアルゴリズムCONJOINEXISTSによって実行される。整合された構成にてなるセットは、次式になる(ここで、OBは、Oを符号化するためのブール変数のベクトルにてなるリスト<v1 B,…,v|V| B>である)。
【数23】
【0203】
大部分のBDDパッケージでは、宣言される変数の個数は、初期設定時に例えばnとして与えられる。よって変数は、0からn−1までのインデックスを使用して示される。宣言される変数の個数は、例えばSATCOUNTアルゴリズムにおいて使用される。パブリックブール変数の中にCpubの自由変数のみが存在するとしても、単にSATCOUNTを使用することで、整合された構成の個数を計数することはできない。これをすると、jをプライベートブール変数の個数として、係数2jだけ大きな個数がもたらされることになる。整合された状態の正しい個数を得るためには、結果をこの係数で除算する必要があるが、代替として、パブリックブール変数の個数に等しい宣言された変数の個数を使用してBDDパッケージを初期化し直すこともできる(次いで、BDD wrt.を新しい変数のインデックスに符号化し直す必要がある)。ここでは、後者のアプローチを選ぶことにする。
【0204】
算術演算の符号化.
コンピュータ製品モデルは、いかなる算術演算も含まない。しかしながら、上述したように、製品モデルの本好適な実施形態は、注意深く選択された所定の算術演算、即ち2つの式の加算、2つの演算の減算、及び式と定数との乗算を可能にして「いる」。これらの算術演算が可能にされる理由は、1)製品のモデル化の間にはこれらが有益となり、2)同時に、このような式を符号化するための効率的なBDD演算が存在することにある。
【0205】
鍵となる観察事実は、静的拡張の間であってかつ製品モデルがブール形式に符号化される直前には、全てのルールにおける全ての式は、これらの基本的な算術演算と平坦化された変数に対する(不)等式とのブール結合であるということにある。標準的なブール等価(equivalences)を使用すれば、全てのルールを、下記の文法(BNF形式で書かれている)によって生成される形式で書き表すことができる。
【0206】
【数24】
【0207】
ここで、constantは定数を表し、variableは平坦化された変数を表す。
【0208】
BDDにおいて、これらの算術演算を符号化する方法は公知である。参考文献には、[アラン・ジョン・フー(Alan John Hu),二分決定ダイヤグラムを使用する効率的な形式検証技術(Techniques for Efficient Formal Verification Using Binary Decision Diagrams),スタンフォード大学計算機科学科博士学位論文(Ph. D. thesis, Stanford University, Department of Computer Science),テクニカル・レポート第CS−TR−95−156号]及び[ヨルン・ボー・リンド−ニールセン(Joern Bo Lind-Nielsen),大型状態/イベント・システムの検証(Verification of Large State/Event Systems),コペンハーゲン工科大学情報技術科博士学位論文(Ph. D. Thesis, Department of Information Technology, Technical University of Copenhagen),IT−TR:2000−032]の2つがある。
【0209】
製品テーブルの符号化.
上述したように、(典型的にはデータベースで表現される)製品テーブルは、ルールを適正な方法で表現するために使用可能である。最初に製品テーブルをテキストのルールに明示的に翻訳してその後に上記ルールをBDDに翻訳するということは必要ではない。代わりに、製品テーブルから直接にBDDを構築することができる。
【0210】
この処理の好適な実施形態は、アルゴリズム6に示されたアルゴリズムVIRTUALIZETABLEである。このアルゴリズムは、各セルを作表し、このセルについてBDDを構築し、作表の結果を一時的なBDDノードに累積する。補助関数VIRTUALIZECELLは、特定セルに対するBDDを構築する。このアルゴリズムの実装は、平坦化された変数をブール変数にマップする方法を発見するために、シンボルテーブルを使用する。
【0211】
この方法には、テーブルフィルタに関する情報をシンボルテーブルに追加し、かつこの情報を使用するように補助関数VIRTUALIZECELLを変更することによって、テーブルフィルタを容易に追加することができる。
【0212】
サムタイプの符号化.
コンピュータ製品モデルは、列挙されたタイプの値(例えば[IDE│SCSI])を含んでいる。同じくBDDを使用して符号化されることが可能なより一般的なタイプは、(多くの古典的なタイプのシステムから知られた)サムタイプ(sum type)である。この複合タイプは、(列挙の場合におけるような)タグと、(任意のタイプをとることが可能な)値とを許容する。追加のハードディスクが存在しないか又は(特定のタイプで)存在するかのいずれかが可能なサムタイプのモデル化の一例は、次の通りである。
【0213】
[製品モデル7]
【0214】
extraharddiskの可能な値は、ABSENT(存在しない)、PRESENT(存在する)(IDE)、及びPRESENT(SCSI)である。これらの値のうちの1つを符号化したい場合は、1)ABSENTタグを選択しているのかそれともPRESENTタグを選択しているかということについて検索し、かつ2)後者の場合はどちらの部分値(IDE又はSCSI)を選択しているかということについて検索する必要がある。好ましい本実施形態は、これらの2つの部分を別個に符号化する。この特定の場合では、1つのブール値(P)は追加のハードディスクがPRESENTであることを示し、1つのブール変数(T)はタイプがSCSIであることを示す。
【0215】
この符号化を使用すると、P=偽であればTの値は意味を成さないということが観察される。(P=偽であれば、2つの異なる値の割り当て、即ちP=偽、T=偽と、P=偽、T=真とが存在する。)表現のサイズを制限しかつ意味のある割り当ての個数を計数できるように、各部分値に対して「デフォルト値」を選定する。次に、この部分値が選択「されない」場合にはいつでも部分値はデフォルト値をとらなければ「ならない」ことを表わす「正規化拘束条件」を定義する。extraharddiskの例では、Tのデフォルト値を偽として選定している。よって、正規化拘束条件は次式になる。
【0216】
【数25】
【0217】
このようなサムタイプが発生する場合は、全ての正規化拘束条件はBDD Cpub上で結合(conjoin)されて、複数の整合された構成にてなるセットを表現する最終的なBDDが取得される必要がある。
【0218】
仮想テーブルを使用する対話式構成.
次に、仮想テーブルを使用して構成を実行する。本発明を限定することなく、ユーザは、通常、この処理に関与する。ユーザは、仮想テーブルにインターフェースで接続するコンピュータプログラムである構成アシスタントと対話する。一般に、ユーザとコンピュータプログラムとによって実行される構成セッションは、構成アシスタントが下記のような構成処理を用いてユーザをガイドする対話式の反復的な構成であると考えることができる。
【0219】
・構成アシスタントは、仮想テーブルを使用することで、ユーザに提供される情報を発見し、
・ユーザは、彼/彼女の希望に関連した情報を提供する。
【0220】
このような構成セッションのための“プロトコル”は、多くの方法で構成されることが可能である。本発明を限定することなく、本セッションは、典型的には(構成アシスタントの視点から捉えられた)下記のステップを含む反復的な処理である。
【0221】
1.仮想テーブルを検査するステップ。仮想テーブル固有の情報量は、一般に膨大である。従って、構成アシスタントは仮想テーブルから限定された量の情報のみを抽出可能である必要がある。しかも、提供されるその情報は、与えられたコンテキストに関連しかつ十分なものである必要がある(ここで、コンテキストは、典型的には先に選択されている)。
2.ユーザにこの情報を提供するステップ。これは、ユーザが、与えられた時刻に彼/彼女がどのオプションを有しているかということと、構成される製品の整合性に選択がどのような影響を与えるかということとを告げることができるように提供される必要がある。
3.ユーザが(複数の)選択を実行する/取り消すことを可能にするステップ。構成アシスタントは、この段階ではユーザに既に情報を提供しているため、ユーザが整合された選択を行うことは容易であるが、ユーザが、以前の選択との互換性を持たない選択をとにかく行ってしまうという場合もある。構成アシスタントは、このようなあらゆる場合に道理合理的な対応をしなければならない。何を以て合理的とするかは、アプリケーションに依存する。しかしながら、構成アシスタントは、もう1度整合された複数の選択にてなるセットに到達するために、先行するいくつかの選択を犠牲にせざるを得ない場合も多い(これらの犠牲についてユーザに通知する)。
4.仮想テーブルを使用して、ユーザによって行われた選択の結果を計算するステップ。
【0222】
この反復的な処理は、ユーザがセッションの終了を決定するまで続く。この段階で整合されかつ完全な構成が発見されていれば、これを発注システム(order placement system)などに提供することができる。
【0223】
ユーザと構成アシスタントとの間の通信は、ユーザインターフェースを介して実行される。図3は、pc製品モデルのためのユーザインターフェースのスクリーンショットである。このユーザインターフェースにより、ユーザは、既に実行された選択を見ることができ(例えば、ユーザは、構成要素ハードディスク(Harddisk)1に、選択肢IBM DeskStar 25GP 10,1GBを選択している)、(ここでは、目下CPUの選択肢を示している“ポップアップ”ウィンドウにより)何の選択肢が利用可能であるかということを見ることができ、(ここでは、黒の背景色を使用して)これらのうちのどの選択肢が先行する全ての選択との互換性を有するかということを見ることができる。ユーザは、構成要素に対する1つの選択肢を選択することや、先に行った構成の選択を取り消すことなどができる。下記の2つの追加機能により、ユーザの作業はさらに楽になる。
【0224】
・ユーザが希望する全ての選択を彼/彼女が実行すると、(選択が行われなかった全ての構成要素の整合された選択を実行することにより)構成アシスタントに構成を終了させるボタン(コンフィジット!(ConfigIt!))が設けられる。
・他のボタンにより、ユーザは、例えばpcショップの標準型のワークステーションのような予め構成された選択肢から選ぶことができる。ユーザはこのワークステーションを後でさらに変更することも随意に可能であり、しかも構成アシスタントからの援助も得られる。
【0225】
一般的な場合は、このようなユーザインターフェースをウェブブラウザに提示するものであり、明らかに通信のためのインターネットの使用を可能にする。仮想テーブルは、「仮想テーブルサーバ」上、又はウェブブラウザを実行するクライアント上の何れかに配置されることが可能である。第1の場合では、構成アシスタントは、(並列して動作し、インターネットを介して通信する)サーバとクライアントスレッドとを備える。第2の場合では、構成アシスタントは、典型的には、ウェブブラウザの内部で単独で動作する。両方のアプローチとも実現可能であり、配備の方法は、与えられた構成セッションにはどの特性が必要であるかということに基づく必要がある。しかしながら、第1のアプローチが好ましい実施形態である。
【0226】
われわれの枠組みにおいては、構成要素は平坦化された製品変数に対応し、選択肢は値に対応することを想起されたい。本発明を限定することなく、下記の擬似コードは、一般的に構成アシスタントが動作する方法を記述している(明らかに、詳細は多くの方法で取り扱われることが可能であり、ユーザが利用できる正確なコマンドは異なるものである可能性があり、システムからのフィードバックは異なる可能性があり、関連したステップのうちの多くのものの順序は変更される可能性がある)。
【0227】
[擬似コード1]
【0228】
変数Sは、複数の選択にてなる順序付けされたリストであり、各選択は対(v,d)を含んでいる。ここで、vは平坦化された変数であり、dは平坦化された値である。選択は、一般に、仮想テーブルにおいて利用可能な、複数の整合された構成にてなる空ではないセットを表現している。
【0229】
初期状態では何の選択も行われていないので、Sは空のリストであり、仮想テーブルにおける整合された構成の完全なセットを表している。
【0230】
これで、S及び仮想テーブルから取得されうる情報がユーザに提示される。典型的には、各平坦化された変数について、Sと互換性を有する可能な選択がユーザに示される。
【0231】
ここで、ユーザはコマンドCに関して質問される。コマンドは、Sとの互換性を有した選択のうちの1つの「選択」であるか、既にSに存在する選択の「選択取り消し」であるか、選択の「強制」であるか、又は、選択が全ての平坦化されたパブリック変数に関して行われる場合は、構成を「終了」することである可能性がある。
【0232】
コマンドC及び先行する選択Sに基づいて、下記のように新しい選択リストが計算される。
【0233】
・「選択」の場合では、新しい選択はSとの互換性を有する。従って、この新しい選択は単にSの終わりに追加される。これで、Sは、複数の構成にてなる、より小さい(又は同等の)セットを表すことになる。
・先の選択の「選択取り消し」では、選択は単にリストSから除去される。これで、Sは、複数の構成にてなる、より大きい(又は同等の)セットを表すことになる。
・選択の「強制」の場合は、少しばかり複雑である。強制とは、“この選択が他の選択との互換性を持たないとしても、Sにおける他の選択を犠牲にしてこの選択を「強制する」”ことを意味する。新しいS’は、下記によって求められる。
1.新しい選択をSの「前」に追加する。(Sは「順序付けされた」リストであることを想起されたい。)
2.S’を新しい空のリスト<>に初期化する。
3.Sの前から開始して、Sにおける各選択sについて、
−sがS’における選択との互換性を持てば、sをS’の終わりに追加し、
−sがS’における選択との互換性を持たなければ、廃棄する。
4.新しい選択がS’になる。
・「終了」の場合では、作業は終了し、整合されかつ完全な構成Sが返され、かつ例えば発注システムへと廻される。
【0234】
ユーザと構成アシスタントとの間の通信に関する詳細が変更されるとしても、擬似コードを実装するための仮想テーブルに関する基本アルゴリズムは、多かれ少なかれ同じものであることが分かる。一般的には、以下の主要なアルゴリズムが必要とされる。
【0235】
・仮想テーブルを1つ又は複数の選択と組み合わせ、その組み合わせに整合性があるか否かをチェックするための(複数の)アルゴリズム。
・仮想テーブルと、優先順位を与えられた、整合性を持たない可能な構成にてなるリストとに関して、どの選択が許容され得るものであるかということと、その選択を整合されたものにするためにはどの選択が“犠牲”にされるかということとを決定できるアルゴリズム。
・仮想テーブル及び幾つかの整合された選択に関して、選択されていない全ての構成要素にとって整合された選択を決定するアルゴリズム。
・与えられた選択にてなるセットにとって整合された構成の個数を計数するアルゴリズム。
・所定の変数に関して、先の選択との互換性を有する可能な選択を決定するアルゴリズム。
【0236】
これらのアルゴリズムは、一般に、仮想テーブルにおけるDAGの基本的なアルゴリズム(BDDの場合では、アルゴリズム1に示されたアルゴリズム)を利用して実装される。
【0237】
対話式構成の好適な実施形態.
対話式構成システムの好適な実施形態は、仮想テーブルサーバ上とウェブブラウザの中とでそれぞれ動作するサーバとクライアントスレッドとを備えた構成アシスタントである。まず、仮想テーブル上の主要なアルゴリズムの好適な実施形態を提示する。次に、サーバとクライアントのアルゴリズムを提示する。
【0238】
基本的なBDDアルゴリズムは、ダイナミック・プログラミングとして知られるプログラミング技術を利用している。従って、BDD上での計算結果は(利用可能なメモリなどに依存して)キャッシュされている。これは、同じ引数による再計算は一般に一定の時間で実行されるということを含意している。いくつかのアルゴリズムはこれを使用し、一時的なBDDを有するテーブルを維持する代わりに、基礎となる演算が(同じ引数によって)呼び出され、その結果は(一般に)一定時間利用可能である。このアプローチは、“状態なし(ステートレス)”サーバの実装をさらに可能にしている。
【0239】
最初の4つの主要なアルゴリズムは、仮想テーブルと選択との組み合わせに関するものである。
【0240】
アルゴリズム7に示された第1のアルゴリズムCONFIG1は、仮想テーブル(Cactual)を1つの選択と組み合わせるために使用される。上記選択は、平坦化された変数vと値dとを含んでいる。最初に、上記選択を表現するBDDであるuが構築される。このBDDは、1)(シンボルテーブルに質問することによって)vを表すブール変数<v1,…,vn>と、dを表すブール値<d1,…,dn>とを決定することと、2)ブール変数と値との各対(vi,di)に関して、(vi=di)に対するBDDを構築することと、3)MULTIAPPLY(→,・)を使用してこれらのBDDを組み合わせ、1つのBDDを取得することとによって構築される。この後、uは仮想テーブルを表すBDDと結合され、新しいBDDが発生される。このBDDは、(例えば製品モデルのルールを表す)元の仮想テーブルと表すとともに選択(v=d)を表す、整合された構成にてなるセットである。但し、構成の空のセットはBDD 0で表されるということを注意する。従って、結果的に得られるBDDが0であれば、その仮想テーブルは選択との互換性を持たない。
【0241】
以前に議論された例示となるコンピュータ製品モデルを想起していただきたい。図8には、ルール及び領域拘束条件を表すBDDが示されていた。ハードディスクがSeagate−Barracuda−9−9,1GBに選択されたときの整合された構成にてなるセットを表すBDDは、CONFIG1によって決定されることが可能である。図9にその結果が示されている。但し、1に至るパスは1つのみであるということを注意する。これは、他の全ての構成要素がハードディスクの選択によって暗黙的に選定されることを意味する。英文明細書29ページのシンボルテーブルを調べると、これがAopen−AX6BP−ATXのマザーボードと、(当然ながら)Seagate−Barracuda−9−9,1GBのハードディスクと、Intel−Celeron−A−366MHzのcpuとに対応することは容易に分かる。
【0242】
アルゴリズム8に示されたアルゴリズムCONFIGCONSISTENTは、幾つかの選択Snewを表すBDDを構築する。本アルゴリズムは単にCONFIG1を反復して適用し、漸次小さくなる構成のセットを表すBDDを発生する。但し、各選択が互換性を持たなければ、返されるBDDは0であり、“いつ”問題が発生したかということについて知ることは不可能である。
【0243】
これに対処するのは、アルゴリズム9に示されたアルゴリズムCONFIGCHECKである。Snewにおける選択の順序付けは、複数の選択に優先順位を与えるために使用される。先のアルゴリズムの場合と同様、個別の選択にCONFIG1が適用される。選択が整合されているものである限り、その選択は、整合された選択にてなるリストに追加される。しかしながら、ある選択が先の選択と整合しないことが分かれば、その選択は“拒絶”され、先行する構成のセットが維持される。拒絶された選択は、1つのリストにまとめられる。アルゴリズムが終了すると、空ではない構成のセットを表すBDDが返される。初期状態の仮想テーブルは空でないという(妥当な)仮定の下で、このアルゴリズムは、空ではない構成のセットを表すBDDを常に返す。さらに、整合されかつ拒絶された選択のリストが返される。
【0244】
アルゴリズム10に示された次のアルゴリズムCONFIGITは、1)互換性を有する選択にてなるセットに基づいて、構成にてなるセットを制限し、かつ2)残りの製品変数に対する互換値を自動的に選択するために使用される。本アルゴリズムはCONFIGCONSISTENTとして開始し、空ではない解のセットCactualを表すBDDを発生する。その後、既知のBDDアルゴリズムFULLONESATが使用される。このアルゴリズムは、Cactualから単一のパスを含むBDDを構築する。このBDDは、正確に1つの構成を表現する。次に、既知のBDDアルゴリズムANYSATが使用され、このパスによって表されるブール選択が取得される。シンボルテーブルの“後ろ向き”の使用により、製品選択が決定される。
【0245】
次の2つのアルゴリズムは、仮想テーブルについて質問するために使用される。
【0246】
アルゴリズム11に示されたアルゴリズムCONFIGCOUNTは、仮想テーブルにおける整合された構成の個数を計数する。この個数を決定するためにアルゴリズムSATCOUNTが使用される。しかしながら、単にこの個数を返すことができるようになるためには、下記の3つの重要な詳細事項が存在する。
【0247】
1.仮想テーブルを符号化することに係る好適な実施形態においては、仮想テーブル上に領域拘束条件が結合された。領域拘束条件がなければ、“不当な”パスが存在することになり、誤った構成個数が生じる。
2.仮想テーブルを符号化することに係る好適な実施形態においては、全てのサムタイプが正規化された。正規化なしでは、(英文明細書35ページの例より)値ABSENTに関する変数に係る2つ以上のブール選択が存在することになり、誤った構成個数が生じる。
3.仮想テーブルを符号化することに係る好適な実施形態においては、仮想テーブルを構築した後にBDDパッケージが再度初期化され、これにより、プライベートブール変数が除去された。BDDパッケージが再度初期化されない場合では、SATCOUNTから取得された数を2nで除算する必要がある。ここで、nは、(シンボルテーブルを検査することによって取得される)プライベートブール変数の個数である。
【0248】
コンピュータ製品モデルの仮想テーブルを表すBDD上でCONFIGCOUNTを使用することは、コンピュータの整合された構成の個数、すなわち3を返す。この個数は、1に至るパスの個数を計数することによっても求めることができる。
【0249】
アルゴリズム12に示されたアルゴリズムDETERMINEDOMAINは、与えられた平坦化される変数viと仮想テーブルCactualとに関して、どの可能な値が選択されるるかということを決定する。本アルゴリズムは、viを表すブール変数vi Bを除く全てのブール変数Xを存在記号化することによって動作する。これらの存在記号化の結果は、構成の視点からすると仮想テーブルを表すBDDである。この仮想テーブルは、それが1つの列(viの可能な値を有する列)のみを含むという、優れた特性を有する。製品変数は仮想テーブルの形状に起因して他の変数とのいかなる相互従属関係も持ちえない(1列のみがある)ので、領域は、単に仮想テーブルにおける要素をリストに列挙するだけで決定可能である。これは、1)仮想テーブルにおけるブール変数vi Bの割り当てにてなるセットを発見し、2)これらの各々を平坦化された値に翻訳することによって行われる。
【0250】
ある例示となる例は、コンピュータ製品モデルの初期状態の仮想テーブルに関して、motherboard_nameの平坦化された変数の領域を決定するものである。motherboard_nameを表すブール変数は、X0及びX1である。他の全てのブール変数は存在記号化され、図10(図5と等価な構成)に示されたBDDを生じる。このBDDは、ブール変数X0及びX1の3つの割り当て、(0,0)、(0,1)及び(1,0)を有する。シンボルテーブルを使用することによって、対応する平坦化された値を決定することができる。
【0251】
上述のアルゴリズムは、多くの異なる構成システムを実装するために使用可能である。次に、インターネット等のネットワークを介したサーバとクライアントスレッドとの通信を含む構成アシスタントにおいて、これらが如何に使用されるかを示す。仮想テーブルは、構成の間に必要な計算を実行する「仮想テーブルサーバ」上に配置されている。「クライアント」は、構成処理に関する情報をユーザに提示することや、選択に関して質問することなどのために使用される。
【0252】
本好適な実装は、2つのスレッドのCONFIGCLIENT(クライアント側)とアルゴリズムCONFIGSERVER(サーバ側)とを含んでいる。この2つのアルゴリズムは、各々アルゴリズム13及びアルゴリズム14に示されている。
【0253】
CONFIGCLIENTは、1つの構成セッションの間に実行される。ユーザが適切な構成を発見してその構成セッションを停止することを希望すると、本アルゴリズムは取得された構成を返す。(“返す”とは、実際に、典型的には、結果を発注モジュールなどに送信することによって置き換えられる。)
【0254】
CONFIGSERVERアルゴリズムは「終了することがない」。起動するとループに入り、サービスを提供すべきクライアントを待機する。これがクライアントから構成コマンドを受信すると、これは結果を計算し、この結果を即座にクライアントに返す。その後は、開始にループして戻り、新たなクライアントからの(又は同じクライアントからの可能性もある)新たなコマンドを待つ、等々が続く。
【0255】
通信は、SEND(送信)及びRECEIVE(受信)等の標準的なプリミティブ(基本要素)を使用して特定される。プロトコルは次のようになる。まず、クライアントがサーバに構成コマンドを送信する。サーバは、この構成コマンドを受信し、結果を計算する。この結果は、クライアントに返信される。クライアントは結果を受信し、ユーザに情報を提供してユーザにユーザコマンド(選択、終了など)について質問する。このユーザコマンドを受信すると、新しい構成コマンドがサーバに送信される、等々が続く。
【0256】
クライアントには、単一の引数、即ち平坦化されたパブリック変数にてなるセットが提供される。アルゴリズムは、以下のように実行される。
【0257】
1.まず、“空の選択リストに関する情報を私にください”という構成コマンドがサーバに送信される。
2.その後で、サーバから下記のものを含む情報が受信される。
Sactual ユーザによって既に行われた選択にてなるリスト。
Srejected 強制(Force)演算(詳細は後述する)を行うことにより得られる非互換性に起因して拒絶された選択にてなるリスト。
N 既に行われた選択に関する整合された構成の個数。
<D1,…,Dn> 各平坦化されたパブリック変数viに関する、整合性のない構成に至ることなく選択されることが可能な値にてなるセット。
3.この情報が、ユーザに提示される。
4.ユーザからのコマンドが受信されるI。可能なユーザコマンドは、以下のものである。
【0258】
・Select(v,d).平坦化されたパブリック変数の選択vに値dを加える(即ち、対(v,d))。ユーザインターフェースは、vが変数viであればd∈Diである(ゆえに、この選択は整合された構成をもたらす)ことを保証する必要がある。
・Force(v,d).平坦化されたパブリック変数の選択vに値dを加える。この選択が先の選択s’に整合しなければ、ユーザはs’が拒絶されることを希望する。
・Deselect(v).平坦化されたパブリック変数の選択vを除去する。
・Reset.全ての選択を除去する。
・PreConfigure(S).全ての選択を除去し、代わりに標準的な選択にてなるリストS(例えば、標準的なワークステーション)を選ぶ。
・ConfigIt.値が選択されていない全ての平坦化されたパブリック変数に関して、構成プログラムに任意の整合された選択を選ばせる。
・Stop.対話式構成を終了する。サーバに、例えば発注システムである呼び出しプログラムに実際の選択を返させる。ユーザインターフェースは、現在の選択が完全な選択を含んでいることを保証する必要がある(即ち、Nは1でなければならない)。
【0259】
5.ここで、ユーザコマンドがStopであれば、アルゴリズムは終了し、取得された選択を返す。
6.そうでなければ、構成コマンドが構成されてサーバに送られる。可能な構成コマンドは、以下のものがある。
【0260】
・Config(S).(おそらくは整合されていない)選択Sに関する情報を計算するコマンドをサーバに送る。選択Sは、次のように構成される。
−ユーザコマンドがSelectであれば、新しい選択が単に選択リストの終わりに追加される。
−ユーザコマンドがForceであれば、新しい選択が、代わって、選択リストの前に追加される。非整合性が存在すれば、強制された選択が受け入れられ、他の選択(後に選択のリストに配置される)は拒絶される。
−ユーザコマンドがDeselectであれば、関連した平坦化された変数が選択リストから単に除去される。
−Resetであれば、新しい選択は空である。
−PreConfigureであれば、新しい選択は標準的なリストに基づいて行われる。
・ConfigIt.整合された選択Sに関する情報を計算する。値が選択されていない全ての平坦化されたパブリック変数に関して、任意の整合された選択を行う。
【0261】
7.その後で、再度サーバから情報が受信される、等々が続く。ステップ2を参照。
【0262】
サーバアルゴリズムの目的は、クライアントアルゴリズムのための計算上の必要性を満たすことにあり、かつ、クライアントと上述した主要な構成アルゴリズムとの間のグルー(glue)コードとして捉えることができる。サーバアルゴリズムには、次のような引数が提供される。
Cbasic 仮想テーブルを表すBDDであるCpub。
<v1,…,vn> 平坦化されたパブリック変数にてなるリスト。
Y シンボルテーブル。
【0263】
計算の間において、変数Sactualは、ユーザが行った選択の(順序付けされた)リストである。これらの選択の各々は対(v,d)を含んでいる。ここで、vは平坦化されたパブリック変数であり、dはvの領域からの値である。BDDであるCactualは、実際の選択Sactualに関する全ての整合された構成を表している。
【0264】
本アルゴリズムは、次のように実行される。
【0265】
・サーバは、構成コマンドと、選択の順序付けされたリストSnewとを受信する。
・コマンドがConfigであれば、Snewは整合されていない可能性もある。従って、アルゴリズムCONFIGCHECKを使用して、整合された構成にてなるセットを構築し、かつ受け入れられた選択及び拒絶された選択のリストを構築する。
・代替として、コマンドがConfigItであれば、Snewは整合されているが、残りの選択が実行される必要がある。これは、CONFIGITコマンドを使用して行われる。
・その後に、整合された構成の実際の個数が決定される。
・また、各変数に関して、実際の可能な値が決定される。
・計算された情報はサーバに返信され、アルゴリズムはループして新しいコマンドを待機する。
【0266】
最後に、インターネット上に構成アシスタントを配備する好適な方法について記述する。上記方法は、下記の通りである。
【0267】
・構成を実行することを希望するユーザは、まずウェブサーバに接続する。
・ウェブサーバは、ユーザのブラウザにおいて実行されるCONFIGCLIENTの実装を返す(好適には、ジャバ・スクリプト(Java Script)で実装される)。
・クライアントのウェブブラウザにおいてCONFIGCLIENTが開始されると、これは、仮想テーブルを保持しかつCONFIGSERVERアルゴリズムを実行する仮想テーブルサーバ(必ずしもウェブサーバである必要はない)に接続する。
・クライアント及びサーバスレッドは前述したように通信する。
【0268】
付録Aでは、“製品説明”の好適な実施形態(XML文書タイプの宣言)が示されている。
【0269】
付録A:製品説明のXML文書型宣言
[製品モデル8]
【0270】
付録Bでは、下記の多数のアルゴリズムの好適な実施形態が示されている。
アルゴリズム1:基本的なBDD演算。
アルゴリズム2:MULTIAPPLY.頂点にてなるセットに演算子を適用する。
アルゴリズム3:MULTIEXISTS.変数にてなるセットの存在記号化。
アルゴリズム4:ORDERRULES.プライベート変数により複数のルールを順序付ける。
アルゴリズム5:CONJOINEXISTS.複数のBDDを結合し、変数を存在記号化する。
アルゴリズム6:VIRTUALIZETABLE.テーブルを表現するBDDを構築する。
アルゴリズム7:CONFIG1.選択に関連して仮想テーブルを制限する。
アルゴリズム8:CONFIGCONSISTENT.複数の選択にてなるリストに関連して仮想テーブルを制限する。
アルゴリズム9:CONFIGCHECK.複数の選択にてなるリストに関連して仮想テーブルを制限し、空でないことを保証する。
アルゴリズム10:CONFIGIT.互換性のある複数の選択にてなるリストに関連して仮想テーブルを制限し、残りの製品変数に対して互換値を選択する。
アルゴリズム11:CONFIGCOUNT.仮想テーブルにおける整合された構成の個数を計数する。
アルゴリズム12:DETERMINEDOMAIN.仮想テーブルにおける平坦化された変数の可能な値を決定する。
アルゴリズム13:CONFIGCLIENT.対話式の構成、クライアント。
アルゴリズム14:CONFIGSERVER.対話式の構成、サーバ。
【0271】
【表6】
【0272】
【表7】
【0273】
【表8】
【0274】
【表9】
【0275】
【表10】
【0276】
【表11】
【0277】
【表12】
【0278】
【表13】
【0279】
【表14】
【0280】
【表15】
【0281】
【表16】
【0282】
【表17】
【0283】
【表18】
【0284】
【表19】
【図面の簡単な説明】
【0285】
【図1】構成処理の概観を示す図である。
【図2】コンフィジットスタジオを用いた製品モデルの生成を示す図である。
【図3】PCの対話的な構成を示す図である。
【図4】PCの例を示し、第3のルールを表現するBDDを例示する図である。
【図5】もう1つのPCの例を示し、領域拘束条件を表現するBDDを例示する図である。
【図6】もう1つのPCの例を示し、ルールを表現するBDDを例示する図である。
【図7】もう1つのPCの例を示し、パブリック変数及びプライベート変数の両方が含まれた、ルール及び領域拘束条件を表現するBDDを例示する図である。
【図8】もう1つのPCの例を示し、パブリック変数のみが含まれた、ルール及び領域拘束条件を表現するBDDを有する仮想テーブルを例示する図である。
【図9】もう1つのPCの例を示し、シーゲート−バラクーダ−9−9(Seagate-Barracuda-9-9),1GBハードディスクを選択した場合の整合された構成を表現するBDDを例示する図である。
【図10】もう1つのPCの例を示し、X0及びX1を除く全ての変数の存在記号化されている仮想テーブルを例示する図である。
【符号の説明】
【0286】
X0,X1…ブール変数。
Claims (42)
- 多数の構成要素を備えた製品の構成方法であって、
・各構成要素に対して、上記構成要素に対する複数の選択肢にてなるグループに関連した情報を提供することと、
・異なる複数の構成要素からの複数の選択肢間の互換性に関するルールを定義することと、
・上記ルールを有向非循環グラフ(DAG)に表現することとを含み、
・−構成要素を選定することと、
−この構成要素に対する複数の選択肢にてなるグループから1つの選択肢を選択することと、
−上記選択された選択肢が他の構成要素からの他の選定された選択肢との互換性を有するか否かについてDAGをチェックすることと
を繰り返すことにより、上記製品を反復的に構成することを含む方法。 - 上記反復的に構成することは、各構成要素について1つの選択肢が選定された時点であって、かつ上記複数の構成要素に係る選定された複数の選択肢が互換性を有する時点において終了される請求項1記載の製品の構成方法。
- 上記選択肢を選択するステップは、上記選択肢の選択以前に、
・上記DAGを使用して、上記構成要素のうちの少なくとも1つの構成要素について、上記構成要素に対する選択肢にてなるサブセットを、上記サブセットにおける選択肢の各々が他の構成要素からの選定された選択肢との互換性を有するように決定することと、
・この情報をユーザに提供することとを含む請求項1乃至2のうちのいずれかの請求項に記載の製品の構成方法。 - 上記方法は音声合成器を有するシステムを提供することをさらに含み、上記ユーザに情報を提供することはさらに、
・上記音声合成器によって発生される音声によって上記情報を提供することを含む請求項3記載の製品の構成方法。 - 上記構成要素と選択肢とを選定するステップはさらに、上記構成要素の各々について、
・上記DAGを使用して、上記構成要素のどの選択肢が他の構成要素の各々の少なくとも1つの選定された選択肢との互換性を有するかをチェックすることと、
・ユーザにこの情報を提供することと、
・上記ユーザが、上記他の構成要素の各々に対する選定された選択肢のうちの少なくとも1つとの互換性を備えた選択肢のうちの1つを選択できるようにすることとを含む請求項1乃至4のうちのいずれかの請求項に記載の製品の構成方法。 - 上記選択肢を選択するステップと、上記DAGをチェックするステップとはさらに、
・上記選定された構成要素に対する選択肢のうちのサブグループを選択するか又は定義するステップと、
・上記サブグループにおけるどの選択肢が他の構成要素からの選定された選択肢との互換性を有するかについて上記DAGをチェックするステップと、
・上記サブグループにおけるどの選択肢が他の構成要素の選定された選択肢との互換性を有するかに関する情報を提供するステップとを含む請求項1乃至5のうちのいずれかの請求項に記載の方法。 - 上記反復的な構成はさらに、
・少なくとも一度、上記構成要素のうちの少なくとも1つの構成要素の選択肢を制限することに関連した情報を定義することと、
・上記構成要素のどの選択肢が上記制限する情報と整合するかについて上記DAGをチェックすることとを含む請求項1乃至6のうちのいずれかの請求項に記載の製品の構成方法。 - 上記反復的な構成はユーザからの要求があった時点で終了され、選択肢が選定される製品の各々について少なくとも1つの選定された選択肢を含む全ての可能な互換性を有する製品に関する情報が提供され、この情報はユーザに提供される請求項1乃至7記載の製品の構成方法。
- 上記反復的な構成は、選択肢が選定される製品の各々について少なくとも1つの選定された選択肢を含む全ての可能な互換性を有する製品の個数を取得するステップと、この情報をユーザに提供するステップとを含む請求項1乃至8のうちのいずれかの請求項に記載の製品の構成方法。
- 上記ルールを上記DAGにおいて表現するステップは、上記ルールを、
・少なくとも1つの終端ノードと、
・−複数の可能な互いに素な結果を有する数式、及び、
−上記式の可能な結果の個数に対応する多数のポインタを備えた複数のノードとを備えたグラフにおいて表現することを含み、
・上記ノードのうちの少なくとも1つのノードのポインタは他のノードを示し、
・上記ノードのうちの少なくとも1つのノードのポインタは少なくとも1つの終端ノードのうちの1つを示し、
・上記ノードのうちの少なくとも1つのノードは最上位置のノードであり、1つ又は複数のパスはこの最上位置のノードから上記少なくとも1つの終端ノードのうちの1つへ上記ノードのうちの1つ又は複数のノードとそのポインタとを介して画成され、各ノードは少なくとも1つのパスの一部である先行するいずれかの請求項に記載の方法。 - 上記ルールを上記DAGにおいて表現するステップは、上記ノードのうちの1つ又は複数のノードに、1つの数学的演算子をそれぞれ備えた数式を提供することを含み、各演算子は、関連するノードの複数のポインタによって示された複数のノードにより表現される複数のルールが組み合わされた方法を記述することで、複数のルールにてなる組み合わされたセットを表現する請求項10記載の製品の構成方法。
- 上記ルールを上記DAGにおいて表現するステップは、上記ルールを多数のノードを備えたDAGにおいて表現することを含み、上記ノードの数式はブール式である請求項10乃至11のうちのいずれかの請求項に記載の製品の構成方法。
- 上記ルールを上記DAGにおいて表現するステップは、変数である数式をそれぞれ備えた多数のノードを備えたDAGにおいて、上記ルールを表現することを含む請求項10乃至12のうちのいずれかの請求項に記載の製品の構成方法。
- 上記ルールを上記DAGにおいて表現するステップは、複数のノードを備えたDAGにおいて上記ルールを表現することを含み、上記複数のノードの数式は、各ノードについて、実際のノードの式が上記実際のノードのポインタによって示された任意のノードの式より低位であるように所定の順序付けに従って配列される請求項10乃至13のうちのいずれかの請求項に記載の製品の構成方法。
- 上記ルールを上記DAGにおいて表現することは、さらに、
・同一の式と、同一のノードを示すそれらのポインタとを有する第1及び第2のノードを識別するステップと、
・上記第1のノードを示すポインタに上記第2のノードを示させるステップとを含む請求項10乃至14のうちのいずれかの請求項に記載の製品の構成方法。 - 上記ルールを上記DAGにおいて表現するステップは、
・各ルールを論理式として表現することと、
・各論理式から、上記式に対する可能な解にてなるセットを表現する部分的なDAGを構成することと、
・上記論理式の各々を表現する上記部分的なDAGから全てのルールを表現するDAGを構成することとを含む請求項10乃至15のうちのいずれかの請求項に記載の製品の構成方法。 - 上記各構成要素に対する複数の選択肢に関連した情報を提供するステップは、
・上記構成要素の個別の選択肢を表現する複数のブール変数を選択することと、
・上記構成要素の選択肢の各々に関する符号化を、上記複数のブール変数のブール値の組み合わせとして提供することを含む請求項16記載の製品の構成方法。 - 上記各ルールを論理公式/式として表現するステップは、上記ルールが関連する複数の選択肢に関連した複数のブール変数を提供することと、上記ルールに従って上記複数の変数を相互に関連させることとを含む請求項17記載の方法。
- 上記ルールを上記DAGにおいて表現するステップは少なくとも1つのタイプの終端ノードを提供することを含み、このような終端ノードを備えた各パスについて、上記パスのポインタに関する全ての式と全ての関連した結果との組み合わせは、互換性のある製品又は互換性を持たない製品の何れかに関連する請求項10記載の方法。
- 上記ルールを上記DAGにおいて表現するステップは第1及び第2のタイプの終端ノードを提供することを含み、
・上記第1のタイプの終端ノードを備えた各パスについて、上記パスのポインタに関する全ての式と全ての関連した結果との組み合わせは、互換性を有する製品に関連し、
・上記第2のタイプの終端ノードを備えた各パスについて、上記パスのポインタに関する全ての式と全ての関連した結果との組み合わせは、互換性を持たない製品に関連する請求項19記載の製品の構成方法。 - 上記第1のタイプの終端ノードは“真”、“一”又は“1”を表現するように適応化され、上記第2のタイプの終端ノードは“偽”、“ゼロ”又は“0”を表現するように適応化される請求項20記載の方法。
- 上記選択肢を選択するステップは、上記構成要素の他の(複数の)選択肢に関するブール変数とこのような他の(複数の)選択肢に関する式を含むノードとを識別することと、上記DAGにおいて、このようなノードを備えたパスを識別することと、その第1のタイプの任意の(複数の)終端ノードを第2のタイプの(複数の)終端ノードに変更することとを含む請求項17と請求項20乃至21のうちのいずれかの請求項とに記載の方法。
- 異なる選定の可能な場合の個数の計算は、DAGに適用されかつ各最上位置のノードに関する下記のステップ、即ち、
・最上位置のノードから開始して、
−上記ノードが終端ノードであれば、上記終端ノードが第1のタイプのとき“1”を提供し、第2のタイプのとき“0”を提供するステップと、
−その他であれば、上記実際のノードのポインタによって示された各ノードにより表現される可能な場合の個数を発見し、そこから上記ノードによって表現される上記可能な場合の個数を計算するステップとを実行することにより、実際のノードによって表現される可能な場合の個数を反復的に発見するステップによって実行される請求項9及び請求項20記載の製品の構成方法。 - 上記DAGをチェックするステップはさらに、上記選択された選択肢が他の選定された選択肢との互換性を持たなければ、
・上記選択された選択肢との互換性を持たない他の選定された選択肢に関連した情報を提供することと、
・この情報をユーザに提供することを含む先行するいずれかの請求項に記載の製品の構成方法。 - 上記ルールを定義するステップは、
・データベースに質問することにより、1つ又は複数の構成要素に関する選択肢に関連する情報及び/又は異なる構成要素の2つ以上の選択肢間の互換性に関連する情報を取得することと、
・上記データベースから取得された情報から1つ又は複数のルールを構築することとを含む先行するいずれかの請求項に記載の製品の構成方法。 - 上記データベースは、各構成要素からの1つの選択肢をそれぞれ含む製品に関する情報をその複数の行の各々に有する2次元テーブルを備え、上記複数の選択肢は互換的であり、上記ルールを提供するステップは各行の情報に関するルールを提供することを含み、上記ルールを上記DAGにおいて表現するステップは排反したルールを提供することを含む請求項25記載の製品の構成方法。
- 上記選択肢が互換的であるか否かについて上記DAGをチェックするステップは、最上位置のノードから終端ノードまでのパスに関して上記DAGを検索することを含み、上記検索は、
・実際のノードとして最上位置のノードから開始することと、
・上記実際のノードが終端ノードになるまで、
−上記実際のノードにおける数式を評価して、その結果を他の構成要素から選定された選択肢に照らして決定し、
−上記結果を表現するノードのポインタを選択し、
−上記選択されたポインタによって示されるノードを実際のノードとして選択することを反復することと、
・上記選定された選択肢に関する情報を提供することと、
・上記パスに関する情報は上記選定が互換的であることを表現することとを含む請求項10記載の製品の構成方法。 - 情報は、上記パスのノードの式から、所定の構成要素のどの(複数の)選択肢が選定されているかに関する情報を提供することによって上記DAGにおけるパスから提供され、これらの選択肢を含む製品の互換性に関する情報は、上記パスの終端ノードの表現によって与えられる請求項20記載の製品の構成方法。
- 上記DAGのノードの式はブール変数であり、上記終端ノードは“真”又は“偽”の何れかを表現し、パスの情報は、上記パスの(複数の)ノードの(複数の)数式における変数の恒等式とその値又は従属関係とに関連し、上記恒等式及び値/従属関係は複数の構成要素の選定された選択肢に関連し、上記選定された複数の構成要素は上記パスの終端ノードが“真”を表現すれば互換的であり、かつ上記選定された複数の構成要素は上記パスの終端ノードが“偽”を表現すれば非互換的である請求項28記載の製品の構成方法。
- 上記ルールを上記DAGにおいて表現するステップは、
・実際のDAGに上記ルールを表現することと、
・上記構成要素のうちで隠蔽されるべき少なくとも1つの構成要素を選択することと、
・上記実際のDAGを、
−上記実際のDAGにおける、上記選択された(複数の)構成要素に関連した複数の式を含む関連した複数のノードを識別し、
−これらのノードを上記実際のDAGから除去し、
−これらの構成要素によって暗示された互換性が上記実際のDAGによって反映されるように、上記選択された(複数の)構成要素に関連した式を含まないノードを上記実際のDAGに追加することによって変更することと、
・上記実際のDAGを、上記ルールを表現するDAGとして提供することとを含む請求項10記載の製品の構成方法。 - 上記ルールを上記DAGにおいて表現するステップは、
・上記ルールの各々に関して、上記ルールを表現する部分的なDAGを構成することと、
・上記構成要素のうちで隠蔽されるべき少なくとも1つの構成要素を識別することと、
・上記識別された構成要素の順序付けを選択することと、
・最初に、ルールを表現しない実際のDAGを構成し、次に、
−選択されていない最下位の構成要素を選択し、
−上記選択された構成要素に関連した式を含む部分的なDAGが全て選定されるまで、
*上記選択された構成要素に関連した式を含む部分的なDAGを選定することと、
*上記実際のDAGを上記選定された部分的なDAGと組み合わせて新たな実際のDAGにすることとを繰り返し、
−上記実際のDAGを、
*上記実際のDAGにおける、上記識別された構成要素に関連した式を含むノードを識別することと、
*これらのノードを上記実際のDAGから除去することと、
*上記識別された構成要素によって暗示された互換性が上記実際のDAGによって反映されるように、上記識別された構成要素に関連した式を含まないノードを上記実際のDAGに追加することとによって変更することを反復することと、
・上記実際のDAGを、選択されていない全ての部分的なDAGと組み合わせることによって上記DAGを提供することとを含む請求項10記載の製品の構成方法。 - 上記方法はさらに、
・ユーザを識別することと、
・上記ユーザによって制御される装置と上記反復的な構成が実行されるもう1つの装置との間の通信を行うことにより、上記ユーザにより、構成要素の選択肢を選択するステップを実行することと、
・上記DAGのチェックに関連した情報を上記ユーザに送信することとを含む先行するいずれかの請求項に記載の製品の構成方法。 - 上記方法はさらに、
・ユーザを識別することと、
・上記反復的な構成の前に、
−上記ユーザによって制御される装置へ上記DAGを送信し、
−上記ユーザの装置上で上記反復的な構成を実行することとを含む先行するいずれかの請求項に記載の製品の構成方法。 - 上記反復的な構成の間に、
・選択肢が選定されていない構成要素に対する1つ又は複数の選択肢に関連した情報を取得するステップを含み、上記1つ又は複数の選択肢の各々は選定された選択肢との互換性を有し、
・この情報をユーザに提供するステップとを含む先行するいずれかの請求項に記載の製品の構成方法。 - 上記方法はさらにシステムに音声認識装置を提供することを含み、上記製品を反復的に構成するステップはさらに、
・上記音声認識装置によって認識されたテキストから構成要素を選定することと、
・上記音声認識装置によって認識されたテキストによるこの構成要素に対する複数の選択肢にてなるグループから1つの選択肢を選択することを含む先行するいずれかの請求項に記載の製品の構成方法。 - 上記方法はさらに構成可能な装置とインターフェース装置とを識別することと、
・上記構成可能な装置に関するルールを表現するDAGを記憶することと、
・上記DAGを上記構成可能な装置から上記インターフェース装置へアップロードすることと、
・上記製品を反復的に構成するステップにおいて、上記インターフェース装置上で、選択された選択肢が他の構成要素の選定された他の選択肢との互換性を有するか否かということに関して上記DAGをチェックすることを含む先行するいずれかの請求項に記載の製品の構成方法。 - 上記方法はさらに、上記構成可能な装置における予め決められた構成要素にてなるリストを識別することと、上記構成可能な装置におけるこれらの構成要素に対する予め決められた選択肢にてなるリストを識別することを含み、上記製品を反復的に構成するステップはさらに、
・上記インターフェース装置上で、選択された選択肢が他の構成要素の選定された他の選択肢との互換性を有しかつ上記予め決められた選択肢との互換性を有するか否かということに関して上記DAGのチェックを実行することを含む請求項36記載の製品の構成方法。 - 上記方法はさらに、オブザーバ的な構成要素にてなるリスト及びオブザーバ的でない構成要素にてなるリストを識別することを含み、かつ、
・上記オブザーバ的でない構成要素用のルールをDAGに表現することと、
・各オブザーバ的な構成要素について、上記ルールのサブセットを決定し、これらのルールから、上記オブザーバ的でない構成要素に対する選択肢との互換性を有する上記オブザーバ的な構成要素に対する選択肢を決定することができるようにすることと、
・各オブザーバ的な構成要素について、上記ルールのサブセットをオブザーバ的DAGとして表現することと、
・上記製品を反復的に構成するステップにおいて、
−選択された選択肢が他の構成要素の選定された他の選択肢との互換性を有するか否かということに関して上記DAGをチェックし、
−各構成要素について、選定された全ての選択肢との互換性を有する選択肢は1つのみであるか否かを決定することにより、システムによって決定された選択肢にてなるセットを決定し、
−少なくとも1つのオブザーバ的な構成要素について、上記オブザーバ的な構成要素のオブザーバ的DAGをチェックすることで、選定された他の選択肢及び上記システムによって決定された選択肢にてなるセットとの互換性を有する選択肢は1つのみであるか否かを決定し、
−この情報をユーザに提供することを含む先行するいずれかの請求項に記載の製品の構成方法。 - 上記製品を反復的に構成するステップは、さらに、
・構成要素と選択肢の各対について、上記対の状態に係る分類を提供することと、
・複数の結果にてなるリストのうちの1つに、ブロックされた状態、選択可能な状態、ユーザが選択した状態、システムが選択した状態、又は強制状態を含む分類を採用することと、
・他の構成要素に対する選択肢の選定を考慮するまでもなく、上記構成要素に上記選択肢を選定することができない場合は、ブロックされた状態の分類を提供することと、
・上記構成要素に対する選択肢が他の構成要素の選定された選択肢との互換性を有する場合は、選択可能な状態の分類を提供することと、
・上記構成要素に上記選択肢が既に選定されている場合は、ユーザが選択した状態の分類を提供することと、
・上記選択肢が、他の構成要素の選定された選択肢との互換性を有する上記構成要素にとって唯一の選択肢であり、かつ上記選択肢がユーザによってまだ選択されていない場合は、システムが選択した状態の分類を提供することと、
・上記構成要素に上記選択肢を選定可能であるが、これが他の構成要素の選定された他の選択肢の幾つかとの互換性を持たない場合は、強制状態の分類を提供することと、
・上記分類に関する情報をユーザに提供することを含む先行するいずれかの請求項に記載の製品の構成方法。 - コンピュータ上で実行されると、先行するいずれかの請求項に記載の方法に係る全てのステップを実行するように適応化されたコンピュータプログラムコード手段を備えたコンピュータプログラム。
- コンピュータが読み取り可能な媒体上に具現された請求項40記載のコンピュータプログラム。
- 請求項40記載のコンピュータプログラムを備えたコンピュータが読み取り可能な媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US25186200P | 2000-12-08 | 2000-12-08 | |
PCT/DK2001/000801 WO2002046980A2 (en) | 2000-12-08 | 2001-11-30 | A method of configuring a product using a directed acyclic graph |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004523026A true JP2004523026A (ja) | 2004-07-29 |
JP2004523026A5 JP2004523026A5 (ja) | 2005-05-26 |
Family
ID=22953710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002548633A Pending JP2004523026A (ja) | 2000-12-08 | 2001-11-30 | 製品の構成方法 |
Country Status (10)
Country | Link |
---|---|
US (1) | US7584079B2 (ja) |
EP (2) | EP1342200A2 (ja) |
JP (1) | JP2004523026A (ja) |
KR (1) | KR20030074647A (ja) |
CN (1) | CN1479904A (ja) |
AT (1) | ATE554462T1 (ja) |
AU (1) | AU2002220525A1 (ja) |
CA (1) | CA2431209A1 (ja) |
DK (1) | DK1796005T3 (ja) |
WO (1) | WO2002046980A2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009238113A (ja) * | 2008-03-28 | 2009-10-15 | Fujitsu Ltd | 設計支援システム、設計支援方法、及び設計支援プログラム |
JP2014531637A (ja) * | 2011-08-31 | 2014-11-27 | ザズル インコーポレイテッド | 製品オプションフレームワークおよびアクセサリー |
Families Citing this family (104)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7062456B1 (en) | 1999-02-09 | 2006-06-13 | The Chase Manhattan Bank | System and method for back office processing of banking transactions using electronic files |
US20080021795A1 (en) * | 2004-03-01 | 2008-01-24 | Hardi Hungar | Device for generating selection structures, for making selections according to selection structures, and for creating selection descriptions |
US9141708B2 (en) * | 2001-02-23 | 2015-09-22 | Metaframe Technologies Gmbh | Methods for generating selection structures, for making selections according to selection structures and for creating selection descriptions |
US7188091B2 (en) * | 2001-03-21 | 2007-03-06 | Resolutionebs, Inc. | Rule processing system |
US7761397B2 (en) * | 2001-03-21 | 2010-07-20 | Huelsman David L | Rule processing method and apparatus providing automatic user input selections |
US8306795B2 (en) * | 2001-09-25 | 2012-11-06 | Numatics, Incorporated | Product configuration method and system |
US7171400B2 (en) * | 2001-10-04 | 2007-01-30 | Sun Microsystems, Inc. | Inheritance and relationship to directory information in an e-commerce application |
US6795832B2 (en) * | 2001-10-09 | 2004-09-21 | Hewlett-Packard Development Company, L.P. | Rule based compatibility module |
US6988111B2 (en) * | 2001-11-29 | 2006-01-17 | I2 Technologies Us, Inc. | Mapping between part numbers that are based on different part numbering schemes |
US7188333B1 (en) * | 2001-12-28 | 2007-03-06 | Sprint Communications Company L.P. | Product incompatibility system |
US20030163461A1 (en) * | 2002-02-08 | 2003-08-28 | Decode Genetics, Ehf. | Method and system for defining sets by querying relational data using a set definition language |
US7062478B1 (en) * | 2002-03-20 | 2006-06-13 | Resolutionebs, Inc. | Method and apparatus using automated rule processing to configure a product or service |
US7953779B1 (en) * | 2002-10-08 | 2011-05-31 | Trilogy Development Group, Inc. | Configuration representation and modeling using configuration spaces |
US8032439B2 (en) | 2003-01-07 | 2011-10-04 | Jpmorgan Chase Bank, N.A. | System and method for process scheduling |
CN1717680A (zh) * | 2003-01-30 | 2006-01-04 | 国际商业机器公司 | 文本分析的系统和方法 |
US7152073B2 (en) | 2003-01-30 | 2006-12-19 | Decode Genetics Ehf. | Method and system for defining sets by querying relational data using a set definition language |
US20040194032A1 (en) * | 2003-03-31 | 2004-09-30 | Peiya Liu | Systems and methods for attribute-based product document profiling |
US7596473B2 (en) * | 2003-05-20 | 2009-09-29 | Interlego Ag | Method of constructing a virtual construction model |
US7480597B2 (en) * | 2003-05-20 | 2009-01-20 | Lego A/S | Method, system and storage medium for generating virtual brick models |
US6983187B2 (en) * | 2003-08-14 | 2006-01-03 | Sap Aktiengesellschaft | Method and system for automatically generating selection conditions in a product configuration system |
US7225038B2 (en) * | 2003-09-26 | 2007-05-29 | Sap Ag | Method and system for checking consistency and completeness of selection conditions in a product configuration system |
US7552102B2 (en) * | 2003-09-29 | 2009-06-23 | Huelsman David L | Rule processing method, apparatus, and computer-readable medium to provide improved selection advice |
US7587380B2 (en) * | 2003-09-29 | 2009-09-08 | Huelsman David L | Rule processing method, apparatus, and computer-readable medium to generate valid combinations for selection |
US7565337B2 (en) * | 2003-09-29 | 2009-07-21 | Huelsman David L | Batch validation method, apparatus, and computer-readable medium for rule processing |
US6983190B2 (en) * | 2003-10-22 | 2006-01-03 | International Business Machines Corporation | Method for optimizing material substitutions within a supply chain |
US7159196B2 (en) * | 2004-02-04 | 2007-01-02 | Hewlett-Packard Development Company, L.P. | System and method for providing interface compatibility between two hierarchical collections of IC design objects |
US7725299B2 (en) * | 2004-03-01 | 2010-05-25 | Purdue Research Foundation | Multi-tier and multi-domain distributed rapid product configuration and design system |
US9734222B1 (en) | 2004-04-06 | 2017-08-15 | Jpmorgan Chase Bank, N.A. | Methods and systems for using script files to obtain, format and transport data |
US7739080B1 (en) | 2004-04-19 | 2010-06-15 | Versata Development Group, Inc. | Consolidation of product data models |
US8578389B1 (en) * | 2004-05-04 | 2013-11-05 | Oracle America, Inc. | Method and system for merging directed acyclic graphs representing data flow codes |
US7567922B1 (en) | 2004-08-12 | 2009-07-28 | Versata Development Group, Inc. | Method and system for generating a normalized configuration model |
US20060058989A1 (en) * | 2004-09-13 | 2006-03-16 | International Business Machines Corporation | Symbolic model checking of generally asynchronous hardware |
US7734559B2 (en) * | 2004-09-28 | 2010-06-08 | Huelsman David L | Rule processing method and apparatus providing exclude cover removal to simplify selection and/or conflict advice |
US8590011B1 (en) * | 2005-02-24 | 2013-11-19 | Versata Development Group, Inc. | Variable domain resource data security for data processing systems |
DE102005012970A1 (de) * | 2005-03-21 | 2006-10-05 | Sitech Sitztechnik Gmbh | Vorrichtung und Verfahren zur Verwaltung von Daten, die einem komplexen Gegenstand zugeordnet sind |
US9824183B1 (en) | 2005-05-12 | 2017-11-21 | Versata Development Group, Inc. | Augmentation and processing of digital information sets using proxy data |
US7860691B2 (en) * | 2005-11-28 | 2010-12-28 | Autodesk, Inc. | Dynamic blocks |
US7978206B2 (en) * | 2005-11-28 | 2011-07-12 | Autodesk, Inc. | Look-up table action |
US7999827B2 (en) * | 2005-11-28 | 2011-08-16 | Autodesk, Inc. | Method and system for generating dynamic blocks |
US8185418B2 (en) * | 2006-01-18 | 2012-05-22 | Google Inc. | Multi-passenger multi-route travel planning |
US8306835B2 (en) * | 2006-01-18 | 2012-11-06 | Google Inc. | User interface for inputting multi-passenger multi-route travel planning query |
US8005696B2 (en) * | 2006-01-18 | 2011-08-23 | Ita Software, Inc. | Incremental searching in multi-passenger multi-route travel planning |
US8005695B2 (en) | 2006-01-18 | 2011-08-23 | Ita Software, Inc. | Bias of queries for multi-passenger multi-route travel planning |
US8589195B2 (en) * | 2006-01-18 | 2013-11-19 | Google Inc. | Multi-passenger multi-route travel planning |
US8185419B2 (en) * | 2006-01-18 | 2012-05-22 | Google Inc. | Incremental searching with partial solutions for multi-passenger multi-route travel planning |
US20070168854A1 (en) * | 2006-01-18 | 2007-07-19 | De Marcken Carl G | User interface for presentation of solutions in multi-passenger multi-route travel planning |
US7921022B2 (en) * | 2006-01-18 | 2011-04-05 | Ita Software, Inc. | Multi-passenger multi-route travel planning |
US20070174781A1 (en) * | 2006-01-25 | 2007-07-26 | Catalog Data Solutions | Parameter visualization |
US7987149B2 (en) * | 2006-03-10 | 2011-07-26 | Trilogy Intellectual Property Holdings, Inc. | Configuration mapping using a multi-dimensional rule space and rule consolidation |
US8762214B1 (en) * | 2006-11-14 | 2014-06-24 | Nvidia Corporation | Configuration based hierarchical product selection and product e-commerce agent management |
US7636697B1 (en) * | 2007-01-29 | 2009-12-22 | Ailive Inc. | Method and system for rapid evaluation of logical expressions |
US8595171B2 (en) * | 2007-03-23 | 2013-11-26 | Siemens Product Lifecycle Management Software Inc. | System and method for rule set validation |
DE102007035374A1 (de) * | 2007-07-25 | 2009-01-29 | Sitech Sitztechnik Gmbh | Vorrichtung und Verfahren zum Verwalten von Daten |
US8195599B2 (en) * | 2008-02-21 | 2012-06-05 | Adventium Enterprises | Inferring system-level properties |
US8135664B2 (en) * | 2008-05-30 | 2012-03-13 | International Business Machines Corporation | Change management using collective data |
KR100892290B1 (ko) * | 2008-06-16 | 2009-04-08 | 주식회사 다나와 | 온라인 주문을 위한 부품 추천 시스템 및 그 방법 |
US8335987B2 (en) * | 2008-08-07 | 2012-12-18 | Oracle International Corporation | Interactive product configurator |
US8694893B2 (en) * | 2008-08-08 | 2014-04-08 | Oracle International Corporation | Interactive product configurator with persistent component association |
US8464156B2 (en) * | 2008-08-08 | 2013-06-11 | Oracle International Corporation | Interactive product configurator with default decisions |
US9524506B2 (en) | 2011-10-21 | 2016-12-20 | Bigmachines, Inc. | Methods and apparatus for maintaining business rules in a configuration system |
US8453119B2 (en) * | 2009-10-14 | 2013-05-28 | GM Global Technology Operations LLC | Online formal verification of executable models |
US8412668B2 (en) * | 2009-10-14 | 2013-04-02 | GM Global Technology Operations LLC | Offline formal verification of executable models |
US8935129B1 (en) * | 2010-06-04 | 2015-01-13 | Bentley Systems, Incorporated | System and method for simplifying a graph'S topology and persevering the graph'S semantics |
US8290822B2 (en) | 2010-08-20 | 2012-10-16 | Valuemomentum, Inc. | Product configuration server for efficiently displaying selectable attribute values for configurable products |
US8566714B1 (en) * | 2010-09-20 | 2013-10-22 | Insignia Group, L.C. | Catalog accessories meta-configurator, and its use thereof |
US9038177B1 (en) | 2010-11-30 | 2015-05-19 | Jpmorgan Chase Bank, N.A. | Method and system for implementing multi-level data fusion |
WO2012095978A1 (ja) * | 2011-01-13 | 2012-07-19 | 三菱電機株式会社 | ネットワーク選定支援方法 |
FR2975202B1 (fr) * | 2011-05-10 | 2013-05-10 | Cameleon Software | Dispositif d'elaboration d'une definition d'une version d'un produit |
US9292588B1 (en) | 2011-07-20 | 2016-03-22 | Jpmorgan Chase Bank, N.A. | Safe storing data for disaster recovery |
US20130061146A1 (en) * | 2011-09-07 | 2013-03-07 | Cisco Technology, Inc. | System and method for developing architectural designs |
US9805412B1 (en) * | 2012-05-08 | 2017-10-31 | Level 3 Communications, Llc | Systems and methods for strategic customer order capture |
US9250931B2 (en) * | 2012-07-06 | 2016-02-02 | Nvidia Corporation | System, method, and computer program product for calculating settings for a device, utilizing one or more constraints |
US9201670B2 (en) * | 2012-07-06 | 2015-12-01 | Nvidia Corporation | System, method, and computer program product for determining whether parameter configurations meet predetermined criteria |
US10540373B1 (en) | 2013-03-04 | 2020-01-21 | Jpmorgan Chase Bank, N.A. | Clause library manager |
US10235649B1 (en) * | 2014-03-14 | 2019-03-19 | Walmart Apollo, Llc | Customer analytics data model |
US20140304104A1 (en) * | 2013-04-08 | 2014-10-09 | Amazon Technologies, Inc. | Identifying part interchanges at electronic marketplaces |
US20140372083A1 (en) * | 2013-06-13 | 2014-12-18 | International Business Machines Corporation | Derived restrictions in a combinatorial model |
US20150066437A1 (en) * | 2013-08-30 | 2015-03-05 | Siemens Aktiengesellschaft | Graphic product generator |
US10049396B2 (en) | 2013-10-31 | 2018-08-14 | Configit A/S | Product configuration |
EP2869257A1 (en) * | 2013-10-31 | 2015-05-06 | Configit A/S | Product configuration |
US20150213154A1 (en) * | 2014-01-28 | 2015-07-30 | Stephan Toebben | Transitioning cad model data into variant configurations |
US10565538B1 (en) | 2014-03-14 | 2020-02-18 | Walmart Apollo, Llc | Customer attribute exemption |
US10346769B1 (en) | 2014-03-14 | 2019-07-09 | Walmart Apollo, Llc | System and method for dynamic attribute table |
US10235687B1 (en) | 2014-03-14 | 2019-03-19 | Walmart Apollo, Llc | Shortest distance to store |
US10733555B1 (en) | 2014-03-14 | 2020-08-04 | Walmart Apollo, Llc | Workflow coordinator |
US9442968B2 (en) | 2014-03-31 | 2016-09-13 | Sap Se | Evaluation of variant configuration using in-memory technology |
EP2945104A1 (en) | 2014-05-16 | 2015-11-18 | Configit A/S | Product configuration |
US10303808B2 (en) | 2014-05-16 | 2019-05-28 | Configit A/S | Product configuration |
US10713699B1 (en) * | 2014-11-14 | 2020-07-14 | Andersen Corporation | Generation of guide materials |
US11386512B2 (en) * | 2015-02-06 | 2022-07-12 | Sunrun, Inc. | Systems and methods for generating permit sets |
US9836695B2 (en) * | 2015-03-24 | 2017-12-05 | International Business Machines Corporation | Automated decision support provenance and simulation |
US10318703B2 (en) | 2016-01-19 | 2019-06-11 | Ford Motor Company | Maximally standard automatic completion using a multi-valued decision diagram |
KR101710445B1 (ko) * | 2016-03-02 | 2017-02-27 | (주)로직소프트 | 갱신 문장들을 조합 및 검증하는 장치 |
CN107577629B (zh) * | 2017-09-25 | 2019-12-31 | 北京因特睿软件有限公司 | 一种数据接口处理方法、装置、服务器及介质 |
CN112771550B (zh) | 2018-09-06 | 2024-06-07 | 奥普塔姆软件股份有限公司 | 高效规则集实现方式的自动生成 |
FR3092184A1 (fr) | 2019-01-25 | 2020-07-31 | Psa Automobiles Sa | Méthode et dispositif de traitement de données d’organes consommateurs d’un véhicule automobile |
FR3092192A1 (fr) | 2019-01-25 | 2020-07-31 | Psa Automobiles Sa | Methode de fabrication d’un vehicule comprenant une phase de selection d’une batterie d’accumulateurs electriques |
FR3092181A1 (fr) | 2019-01-25 | 2020-07-31 | Psa Automobiles Sa | Methode d’optimisation d’un dimensionnement energetique d’une batterie d’accumulateurs electriques d’un vehicule |
FR3092183A1 (fr) | 2019-01-25 | 2020-07-31 | Psa Automobiles Sa | Méthode d’affectation d’un dispositif source d’énergie électrique à un véhicule automobile |
FR3092193B1 (fr) | 2019-01-25 | 2021-07-30 | Psa Automobiles Sa | Methode de fabrication d’un vehicule comprenant une phase de selection d’un alternateur |
FR3092182A1 (fr) | 2019-01-25 | 2020-07-31 | Psa Automobiles Sa | Methode d’optimisation d’un dimensionnement energetique d’un alternateur d’un vehicule |
US20210342761A1 (en) * | 2020-04-30 | 2021-11-04 | Hexagon Technology Center Gmbh | System for mapping model, cost, and schedule of large-scale capital project |
US20220036419A1 (en) * | 2020-07-31 | 2022-02-03 | Dell Products L.P. | Automatically tailored user experience for product configuration |
CN112702201A (zh) * | 2020-12-23 | 2021-04-23 | 中移(杭州)信息技术有限公司 | 参数配置方法及系统、通信设备和计算机可读存储介质 |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5206949A (en) | 1986-09-19 | 1993-04-27 | Nancy P. Cochran | Database search and record retrieval system which continuously displays category names during scrolling and selection of individually displayed search terms |
IL93220A0 (en) | 1989-02-03 | 1990-11-05 | Bang & Olufsen As | Signal processing apparatus and method |
GB8902414D0 (en) | 1989-02-03 | 1989-03-22 | Bang & Olufsen As | Signal processing apparatus and method |
DE3911465C2 (de) | 1989-04-06 | 1996-03-28 | Licentia Gmbh | Verfahren zur automatischen Konfiguration technischer Systeme aus Komponenten |
AU1893392A (en) | 1991-05-03 | 1992-12-21 | Storage Technology Corporation | Knowledge based resource management |
US5297150A (en) * | 1992-06-17 | 1994-03-22 | International Business Machines Corporation | Rule-based method for testing of programming segments |
AU4843693A (en) | 1992-09-01 | 1994-03-29 | Bertram G Brehm | Information model based on a physical system |
US5446883A (en) * | 1992-10-23 | 1995-08-29 | Answer Systems, Inc. | Method and system for distributed information management and document retrieval |
US5515524A (en) * | 1993-03-29 | 1996-05-07 | Trilogy Development Group | Method and apparatus for configuring systems |
US6115547A (en) | 1993-03-29 | 2000-09-05 | Trilogy Development Group, Inc. | Flash configuration cache |
US5522073A (en) | 1993-11-22 | 1996-05-28 | Hewlett-Packard Company | Method and apparatus for automating and controlling execution of software tools and tool sets via when/then relationships |
US5523942A (en) * | 1994-03-31 | 1996-06-04 | New England Mutual Life Insurance Company | Design grid for inputting insurance and investment product information in a computer system |
US5500802A (en) | 1994-05-31 | 1996-03-19 | Morris; James M. | System and method for creating configurators using templates |
WO1996002882A1 (en) | 1994-07-13 | 1996-02-01 | Unisys Corporation | A generalized concurrent configurator for constructing a cooperating complex system |
US6115764A (en) * | 1994-09-27 | 2000-09-05 | International Business Machines Corporation | Acyclic cable bus having redundant path access |
US5715444A (en) | 1994-10-14 | 1998-02-03 | Danish; Mohamed Sherif | Method and system for executing a guided parametric search |
US5675784A (en) | 1995-05-31 | 1997-10-07 | International Business Machnes Corporation | Data structure for a relational database system for collecting component and specification level data related to products |
US5745765A (en) | 1995-10-23 | 1998-04-28 | Calico Technology, Inc. | Method and apparatus for automatic and interactive configuration of custom products |
US6343313B1 (en) * | 1996-03-26 | 2002-01-29 | Pixion, Inc. | Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability |
US5768581A (en) | 1996-05-07 | 1998-06-16 | Cochran; Nancy Pauline | Apparatus and method for selecting records from a computer database by repeatedly displaying search terms from multiple list identifiers before either a list identifier or a search term is selected |
US5825651A (en) * | 1996-09-03 | 1998-10-20 | Trilogy Development Group, Inc. | Method and apparatus for maintaining and configuring systems |
US5844554A (en) * | 1996-09-17 | 1998-12-01 | Bt Squared Technologies, Inc. | Methods and systems for user interfaces and constraint handling configurations software |
US5873081A (en) * | 1997-06-27 | 1999-02-16 | Microsoft Corporation | Document filtering via directed acyclic graphs |
US6247128B1 (en) * | 1997-07-22 | 2001-06-12 | Compaq Computer Corporation | Computer manufacturing with smart configuration methods |
US6230200B1 (en) * | 1997-09-08 | 2001-05-08 | Emc Corporation | Dynamic modeling for resource allocation in a file server |
US6272390B1 (en) | 1997-09-09 | 2001-08-07 | Beologic A/S | Method for interactive configuration and computer readable medium encoded with a program for performing said method |
US5987473A (en) | 1997-09-09 | 1999-11-16 | Beologic A/S | Interactive configuration via network |
US6223170B1 (en) | 1997-09-09 | 2001-04-24 | Baan Development B.V. | Method and apparatus for inference of partial knowledge in interactive configuration |
US6192355B1 (en) * | 1997-09-09 | 2001-02-20 | Baan Development B.V. | Method of configuring a set of objects in a computer |
US5996090A (en) * | 1997-10-29 | 1999-11-30 | International Business Machines Corporation | Method and apparatus for quantitative diagnosis of performance problems using external representations |
WO1999048031A1 (en) * | 1998-03-16 | 1999-09-23 | Array Technology Aps | A database useful for configuring and/or optimizing a system and a method for generating the database |
US6567814B1 (en) * | 1998-08-26 | 2003-05-20 | Thinkanalytics Ltd | Method and apparatus for knowledge discovery in databases |
WO2000013113A1 (en) * | 1998-08-27 | 2000-03-09 | Configit Software Aps | A data structure and its use |
US6167383A (en) * | 1998-09-22 | 2000-12-26 | Dell Usa, Lp | Method and apparatus for providing customer configured machines at an internet site |
US6430531B1 (en) * | 1999-02-04 | 2002-08-06 | Soliloquy, Inc. | Bilateral speech system |
US20020065818A1 (en) * | 2000-08-23 | 2002-05-30 | Starr Ronald E. | Computerized method and applications generator system for developing a customizable electronic records management system |
US6813693B2 (en) * | 2000-12-11 | 2004-11-02 | Microsoft Corporation | System and method for the discovery and use of repetitively accessed data |
US20020107763A1 (en) * | 2000-12-13 | 2002-08-08 | Itt Manufacturing Enterprises, Inc. | Web based system and method for configuring and determining availability of configurable products |
US6965887B2 (en) * | 2001-03-21 | 2005-11-15 | Resolutionebs, Inc. | Rule processing methods for automating a decision and assessing satisfiability of rule-based decision diagrams |
US7171400B2 (en) * | 2001-10-04 | 2007-01-30 | Sun Microsystems, Inc. | Inheritance and relationship to directory information in an e-commerce application |
US7062478B1 (en) * | 2002-03-20 | 2006-06-13 | Resolutionebs, Inc. | Method and apparatus using automated rule processing to configure a product or service |
US20030236707A1 (en) * | 2002-06-19 | 2003-12-25 | Cheney Douglas A. | Configuring a product with user settings during a network purchase |
US7200582B1 (en) * | 2003-03-31 | 2007-04-03 | Trilogy Development Group, Inc. | Configuration model consistency checking using flexible rule space subsets |
US7440955B2 (en) * | 2005-01-14 | 2008-10-21 | Im2, Inc | Method and system to compare data objects |
-
2001
- 2001-11-30 CN CNA01820158XA patent/CN1479904A/zh active Pending
- 2001-11-30 EP EP01999902A patent/EP1342200A2/en not_active Ceased
- 2001-11-30 JP JP2002548633A patent/JP2004523026A/ja active Pending
- 2001-11-30 KR KR10-2003-7007563A patent/KR20030074647A/ko not_active Application Discontinuation
- 2001-11-30 DK DK07002181.1T patent/DK1796005T3/da active
- 2001-11-30 AU AU2002220525A patent/AU2002220525A1/en not_active Abandoned
- 2001-11-30 AT AT07002181T patent/ATE554462T1/de active
- 2001-11-30 EP EP07002181A patent/EP1796005B1/en not_active Expired - Lifetime
- 2001-11-30 CA CA002431209A patent/CA2431209A1/en not_active Abandoned
- 2001-11-30 US US09/996,745 patent/US7584079B2/en active Active
- 2001-11-30 WO PCT/DK2001/000801 patent/WO2002046980A2/en not_active Application Discontinuation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009238113A (ja) * | 2008-03-28 | 2009-10-15 | Fujitsu Ltd | 設計支援システム、設計支援方法、及び設計支援プログラム |
JP2014531637A (ja) * | 2011-08-31 | 2014-11-27 | ザズル インコーポレイテッド | 製品オプションフレームワークおよびアクセサリー |
Also Published As
Publication number | Publication date |
---|---|
EP1796005B1 (en) | 2012-04-18 |
AU2002220525A1 (en) | 2002-06-18 |
EP1796005A3 (en) | 2007-07-04 |
ATE554462T1 (de) | 2012-05-15 |
EP1796005A2 (en) | 2007-06-13 |
CA2431209A1 (en) | 2002-06-13 |
EP1342200A2 (en) | 2003-09-10 |
US7584079B2 (en) | 2009-09-01 |
CN1479904A (zh) | 2004-03-03 |
KR20030074647A (ko) | 2003-09-19 |
WO2002046980A2 (en) | 2002-06-13 |
WO2002046980A3 (en) | 2002-09-26 |
US20020165701A1 (en) | 2002-11-07 |
DK1796005T3 (da) | 2012-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004523026A (ja) | 製品の構成方法 | |
US10685030B2 (en) | Graphic representations of data relationships | |
Verkerke et al. | The RooFit toolkit for data modeling | |
US7533366B2 (en) | Object oriented based methodology for modeling business functionality for enabling implementation in a web based environment | |
RU2340937C2 (ru) | Декларативная последовательная параметризация отчетов | |
US11720631B2 (en) | Tool to build and store a data model and queries for a graph database | |
US20150310061A1 (en) | Query relationship management | |
US7814044B2 (en) | Data access service queries | |
JP5349581B2 (ja) | 照会処理視覚化システム、照会処理を視覚化する方法及びコンピュータ・プログラム | |
CN110222194B (zh) | 基于自然语言处理的数据图表生成方法和相关装置 | |
EP1875456A2 (en) | System and method for managing complex relationships over distributed heterogeneous data sources | |
US9760614B2 (en) | Method and tool for browsing semantic data and creating queries using a domain/range representation | |
KR20060030028A (ko) | 수수료-기반 액세스의 제공 방법, 추상적 질의의 형성방법, 물리적 데이터의 수정 방법, 로직 프레임워크 제공방법, 컴퓨터 판독 가능 매체, 컴퓨터 및 수수료 정보의디스플레이 방법 | |
US20070240099A1 (en) | Flexible attribute management in workflow processing systems | |
WO2007089350A1 (en) | Displaying game asset relationships in a game development environment | |
Barzdins et al. | Domain specific languages for business process management: a case study | |
US9747358B2 (en) | Pattern analysis for a multi-dimensional analytical system | |
Paternò | Tools for Task Modelling: Where we are, Where we are headed. | |
Proper | Interactive query formulation using point to point queries | |
US8910183B2 (en) | Access to context information in a heterogeneous application environment | |
de Souza Bomfim et al. | Design and implementation of linked data applications using shdm and synth | |
van der Meer et al. | Efficient interactive configuration of unbounded modular systems | |
Poinet et al. | Schema-based workflows and inter-scalar search interfaces for building design | |
Choirat et al. | Interpreting Zelig: Everyone’s Statistical Software | |
Stamoulou et al. | Foodie: An Online Hybrid Recommendation System for Recipes Using Spring-Boot and Neo4j |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041109 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070417 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070713 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070822 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080304 |