(57)【要約】【課題】本発明は、コンポーネントライブラリを自動設計するためのシステム及び方法を提供する。【解決手段】システムは、各々が一定の関数を実行する複数のコンポーネントと、複数のコンポーネントを維持するコンポーネントライブラリと、コンポーネント生成モジュールとを有する。コンポーネント生成モジュールは、コンポーネントライブラリ内の複数のコンポーネントのサブセットを選択し、複数のコンポーネントのサブセットを無作為に組み合わせることによって組み合わせを生成し、組み合わせを複数の目標に対して評価し、組み合わせを新しいコンポーネントにカプセル化し、組み合わせが１つまたはそれ以上の基準に合致する場合にそれをコンポーネントライブラリ内に加える。【選択図】図２
2007128517.tif 000002
【特許請求の範囲】
【請求項１】
自動コンポーネントライブラリ設計をサポートするシステムであって、
各々が一定の関数を実行する複数のコンポーネントと、
前記複数のコンポーネントを維持するコンポーネントライブラリと、
コンポーネント生成モジュールであって、
前記コンポーネントライブラリ内の前記複数のコンポーネントのサブセットを選択し、
前記複数のコンポーネントの前記サブセットを無作為に組み合わせることによって組み合わせを生成し、
前記組み合わせを複数の目標に対して評価し、
前記組み合わせを新しいコンポーネントにカプセル化し、前記組み合わせが１つまたはそれ以上の基準に合致する場合に、それを前記コンポーネントライブラリ内に加えるコンポーネント生成モジュールと、
を具備するシステム。
【請求項２】
前記複数のコンポーネントの各々は、ソフトウェアコンポーネント、デジタル回路、電子コンポーネント、プロセスコンポーネント、機械コンポーネント、アーキテクチャ設計、および、階層的に構成されコンピュータシステムで表示され操作されることができる人工生成物のうちの１つである請求項１記載のシステム。
【請求項３】
前記ソフトウェアコンポーネントは、サブプログラム、オブジェクト、モジュール、および、パッケージのうちの１つである請求項２記載のシステム。
【請求項４】
前記複数のコンポーネントの各々は、コストに関連づけることができる請求項１記載のシステム。
【請求項５】
前記目標は、形式論理言語を経由してユーザによって特定されることができる請求項１記載のシステム。
【請求項６】
前記コンポーネント生成モジュールは、さらに、前記コンポーネントライブラリを複数のプリミティブコンポーネントで初期化する請求項１記載のシステム。
【請求項７】
前記コンポーネント生成モジュールは、さらに、前記組み合わせによって包含されるかまたは前記目標および前記組み合わせに整合しないかのいずれかである前記複数のコンポーネント内の１つのコンポーネントを置き換える請求項１記載のシステム。
【請求項８】
前記コンポーネント生成モジュールは、さらに、前記組み合わせを生成するときに前記複数のコンポーネントの前記サブセットにおいて一定のコンポーネントを別のものよりも優先する請求項１記載のシステム。
【請求項９】
前記コンポーネント生成モジュールは、さらに、前記新しいコンポーネントを観測するインタフェースを指定する請求項１記載のシステム。
【請求項１０】
前記組み合わせは、前記複数のコンポーネントの前記サブセット内の前記コンポーネントのいずれよりも複雑である請求項１記載のシステム。
【請求項１１】
前記１つまたはそれ以上の基準の各々は、
前記組み合わせが有効な関数を有する、
前記組み合わせが前記複数のコンポーネントのいずれよりも安価なコストを有する、および、
前記組み合わせが前記複数のコンポーネントのいずれよりも良好に前記目標に関係する、
のうちの１つである請求項１記載のシステム。
【請求項１２】
自動コンポーネントライブラリ設計をサポートする方法であって、
複数のコンポーネントをコンポーネントライブラリ内に維持するステップであって、前記複数のコンポーネントの各々が一定の関数を実行する、該維持するステップと、
前記コンポーネントライブラリ内の前記複数のコンポーネントのサブセットを選択するステップと、
前記複数のコンポーネントの前記サブセットを無作為に組み合わせることによって組み合わせを生成するステップと、
前記組み合わせを複数の目標に対して評価するステップと、
前記組み合わせを新しいコンポーネントにカプセル化し、前記組み合わせが１つまたはそれ以上の基準に合致する場合に、それを前記コンポーネントライブラリ内に加えるステップと、
を含む方法。
【請求項１３】
形式論理言語を経由してユーザによって１つまたはそれ以上の目標を特定するステップをさらに含む請求項１２記載の方法。
【請求項１４】
前記コンポーネントライブラリを複数のプリミティブコンポーネントで初期化するステップをさらに含む請求項１２記載の方法。
【請求項１５】
前記組み合わせによって包含されるかまたは前記目標および前記組み合わせに整合しないかのいずれかである前記複数のコンポーネント内の１つのコンポーネントを置き換えるステップをさらに含む請求項１２記載の方法。
【請求項１６】
前記組み合わせを生成するときに前記複数のコンポーネントの前記サブセットにおいて一定のコンポーネントを別のものよりも優先するステップをさらに含む請求項１２記載の方法。
【請求項１７】
前記新しいコンポーネントを観測するインタフェースを指定するステップをさらに含む請求項１２記載の方法。
【請求項１８】
前記複数のコンポーネントの前記サブセット内の前記コンポーネントのいずれよりも複雑である前記組み合わせを生成するステップをさらに含む請求項１２記載の方法。
【請求項１９】
自動コンポーネントライブラリ設計をサポートするためのシステムによって実行することのできる命令からなるプログラムであって、
複数のコンポーネントをコンポーネントライブラリ内に維持するステップであって、前記複数のコンポーネントの各々が一定の関数を実行する、該維持するステップと、
前記コンポーネントライブラリ内の前記複数のコンポーネントのサブセットを選択するステップと、
前記複数のコンポーネントの前記サブセットを無作為に組み合わせることによって組み合わせを生成するステップと、
前記組み合わせを目標に対して評価するステップと、
前記組み合わせを新しいコンポーネントにカプセル化し、前記組み合わせが１つまたはそれ以上の基準に合致する場合にそれを前記コンポーネントライブラリ内に加えるステップと、
を含むプログラム。
【請求項２０】
自動コンポーネントライブラリ設計をサポートするシステムであって、
複数のコンポーネントをコンポーネントライブラリ内に維持するための手段であって、前記複数のコンポーネントの各々が一定の関数を実行する、該維持するための手段と、
前記コンポーネントライブラリ内の前記複数のコンポーネントのサブセットを選択するための手段と、
前記複数のコンポーネントの前記サブセットを無作為に組み合わせることによって組み合わせを生成するための手段と、
前記組み合わせを複数の目標に対して評価するための手段と、
前記組み合わせを新しいコンポーネントにカプセル化し、前記組み合わせが１つまたはそれ以上の基準に合致する場合に、それを前記コンポーネントライブラリ内に加えるための手段と、
を具備するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンポーネントライブラリの自動設計の分野に関し、さらに詳細には自動コンポーネントライブラリ設計をサポートするシステム、方法、該システムによって実行することのできる命令からなるプログラムに関する。
【背景技術】
【０００２】
コンピュータシステムがより普及してきているため、ソフトウェア構築の経済的なやり方がますます重要になる。従来、ソフトウェアのコストを下げるために、数種類のアプローチ、すなわち、再使用可能なソフトウェアコードのライブラリ、ドメイン特化技術および言語、進化的アプローチ、および、演繹的な論理ベースの方法がとられている。これらの従来のソフトウェアコンポーネントライブラリは、多大なコストで手動で形成される。デジタル回路の分野では、コンポーネントライブラリが長い間、使用されてきている。有用であるデジタルコンポーネントは、集積回路としてカプセル化される。事実上、すべてのデジタル設計が、ライブラリまたは集積回路のカタログで構築される。形式仕様から設計された人工生成物（アーチファクト）を生成するために、多くの研究が、数学的論理の使用に集中している。この作業は、今までのところデジタル回路の分野では成功しているが、ソフトウェアコードの構築では限られた成功を収めているだけである。
【０００３】
課題を解決する非線形遺伝的アルゴリズムが提供されている（例えば、特許文献１参照）。複雑な構造を設計するために用いられる自動設計処理および装置が提供されている（例えば、特許文献２参照）。
【特許文献１】米国特許第５，１３６，６８６号明細書
【特許文献２】米国特許第５，８６７，３９７号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、上記に鑑み、コンポーネントライブラリを自動設計するためのシステム、方法、該システムによって実行することのできる命令からなるプログラムを提供する。
【課題を解決するための手段】
【０００５】
本発明の様々な実施の形態は、上述の公知の技術のすべての態様に、コンポーネントのライブラリを自動的に形成する新規の再帰的アセンブリプロセスを結合し、それは、コンピュータソフトウェアコンポーネント、デジタル回路、機械的およびアーキテクチャ設計、または、階層的に構成されることができ且つコンピュータシステムで表示され操作されることができる他の種類の人工生成物でありうるが、それらに限定されない。本発明は、ビルディングブロックとして使用される簡単なコンポーネントで開始し、これらを無作為により複雑なものへ繰り返し組み合わせることによって進行する。コンポーネントのこれらの無作為な組み合わせの有用性および性質は、機能的な目標（goal）のセットに対して測定される。次いで、有用な組み合わせがライブラリ内の新しいコンポーネントになり、それを、さらなる無作為組み合わせのためのビルディングブロックとして使用することができる。このようにして、本発明は、自力でより簡単なコンポーネントからより複雑なものの集合になる有用なコンポーネントのライブラリを提供する。既存のコンポーネントは、より良好な解が見出されたときに、置き換えられる。ユーザによって選ばれた機能的な目標のセットは、特定のクラスの問題を解決するコンポーネントを生成するようシステムを方向づける。
【０００６】
本発明の第１の態様は、自動コンポーネントライブラリ設計をサポートするシステムであって、該システムは、各々が一定の関数を実行する複数のコンポーネントと、前記複数のコンポーネントを維持するコンポーネントライブラリと、コンポーネント生成モジュールであって、前記コンポーネントライブラリ内の前記複数のコンポーネントのサブセットを選択し、前記複数のコンポーネントの前記サブセットを無作為に組み合わせることによって組み合わせを生成し、前記組み合わせを複数の目標に対して評価し、前記組み合わせを新しいコンポーネントにカプセル化し、前記組み合わせが１つまたはそれ以上の基準に合致する場合に、それを前記コンポーネントライブラリ内に加えるコンポーネント生成モジュールとを具備する。
【０００７】
本発明の第２の態様は、第１の態様のシステムであって、前記複数のコンポーネントの各々は、ソフトウェアコンポーネント、デジタル回路、電子コンポーネント、プロセスコンポーネント、機械コンポーネント、アーキテクチャ設計、および、階層的に構成されコンピュータシステムで表示され操作されることができる人工生成物のうちの１つである。
【０００８】
本発明の第３の態様は、第２の態様のシステムであって、前記ソフトウェアコンポーネントは、サブプログラム、オブジェクト、モジュール、および、パッケージのうちの１つである。
【０００９】
本発明の第４の態様は、第１の態様のシステムであって、前記複数のコンポーネントの各々は、コストに関連づけることができる。
【００１０】
本発明の第５の態様は、第１の態様のシステムであって、前記目標は、形式論理言語を経由してユーザによって特定されることができる。
【００１１】
本発明の第６の態様は、第１の態様のシステムであって、さらに、前記コンポーネントライブラリを複数のプリミティブコンポーネントで初期化する。
【００１２】
本発明の第７の態様は、第１の態様のシステムであって、前記コンポーネント生成モジュールは、さらに、前記組み合わせによって包含されるかまたは前記目標および前記組み合わせに整合しないかのいずれかである前記複数のコンポーネント内の１つのコンポーネントを置き換える。
【００１３】
本発明の第８の態様は、第１の態様のシステムであって、前記コンポーネント生成モジュールは、さらに、前記組み合わせを生成するときに前記複数のコンポーネントの前記サブセットにおいて一定のコンポーネントを別のものよりも優先する。
【００１４】
本発明の第９の態様は、第１の態様のシステムであって、前記コンポーネント生成モジュールは、さらに、前記新しいコンポーネントを観測するインタフェースを指定する。
【００１５】
本発明の第１０の態様は、第１の態様のシステムであって、前記組み合わせは、前記複数のコンポーネントの前記サブセット内の前記コンポーネントのいずれよりも複雑である。
【００１６】
本発明の第１１の態様は、第１の態様のシステムであって、前記１つまたはそれ以上の基準の各々は、前記組み合わせが有効な関数を有する、前記組み合わせが前記複数のコンポーネントのいずれよりも安価なコストを有する、および、前記組み合わせが前記複数のコンポーネントのいずれよりも良好に前記目標に関係する、のうちの１つである。
【００１７】
本発明の第１２の態様は、自動コンポーネントライブラリ設計をサポートする方法であって、該方法は、複数のコンポーネントをコンポーネントライブラリ内に維持するステップであって、前記複数のコンポーネントの各々が一定の関数を実行する、該維持するステップと、前記コンポーネントライブラリ内の前記複数のコンポーネントのサブセットを選択するステップと、前記複数のコンポーネントの前記サブセットを無作為に組み合わせることによって組み合わせを生成するステップと、前記組み合わせを複数の目標に対して評価するステップと、前記組み合わせを新しいコンポーネントにカプセル化し、前記組み合わせが１つまたはそれ以上の基準に合致する場合にそれを前記コンポーネントライブラリ内に加えるステップとを含む。
【００１８】
本発明の第１３の態様は、第１２の態様の方法であって、形式論理言語を経由してユーザによって１つまたはそれ以上の目標を特定するステップをさらに含む。
【００１９】
本発明の第１４の態様は、第１２の態様の方法であって、前記コンポーネントライブラリを複数のプリミティブコンポーネントで初期化するステップをさらに含む。
【００２０】
本発明の第１５の態様は、第１２の態様の方法であって、前記組み合わせによって包含されるかまたは前記目標および前記組み合わせに整合しないかのいずれかである前記複数のコンポーネント内の１つのコンポーネントを置き換えるステップをさらに含む。
【００２１】
本発明の第１６の態様は、第１２の態様の方法であって、前記組み合わせを生成するときに前記複数のコンポーネントの前記サブセットにおいて一定のコンポーネントを別のものよりも優先するステップをさらに含む。
【００２２】
本発明の第１７の態様は、第１２の態様の方法であって、前記新しいコンポーネントを観測するインタフェースを指定するステップをさらに含む。
【００２３】
本発明の第１８の態様は、第１２の態様の方法であって、前記複数のコンポーネントの前記サブセット内の前記コンポーネントのいずれよりも複雑である前記組み合わせを生成するステップをさらに含む。
【００２４】
本発明の第１９の態様は、自動コンポーネントライブラリ設計をサポートするためのシステムによって実行することのできる命令からなるプログラムであって、該プログラムは、複数のコンポーネントをコンポーネントライブラリ内に維持するステップであって、前記複数のコンポーネントの各々が一定の関数を実行する、該維持するステップと、前記コンポーネントライブラリ内の前記複数のコンポーネントのサブセットを選択するステップと、前記複数のコンポーネントの前記サブセットを無作為に組み合わせることによって組み合わせを生成するステップと、前記組み合わせを目標に対して評価するステップと、前記組み合わせを新しいコンポーネントにカプセル化し、前記組み合わせが１つまたはそれ以上の基準に合致する場合にそれを前記コンポーネントライブラリ内に加えるステップとを含む。
【００２５】
本発明の第２０の態様は、自動コンポーネントライブラリ設計をサポートするシステムであって、該システムは、複数のコンポーネントをコンポーネントライブラリ内に維持するための手段であって、前記複数のコンポーネントの各々が一定の関数を実行する、該維持するための手段と、前記コンポーネントライブラリ内の前記複数のコンポーネントのサブセットを選択するための手段と、前記複数のコンポーネントの前記サブセットを無作為に組み合わせることによって組み合わせを生成するための手段と、前記組み合わせを複数の目標に対して評価するための手段と、前記組み合わせを新しいコンポーネントにカプセル化し、前記組み合わせが１つまたはそれ以上の基準に合致する場合に、それを前記コンポーネントライブラリ内に加えるための手段とを具備する。
【発明の効果】
【００２６】
本発明によれば、コンポーネントのライブラリを自動的に形成することができる。
【発明を実施するための最良の形態】
【００２７】
本発明は、例のために、限定のためではなく、添付の図面の図に例示され、類似参照符号が類似要素を示す。本開示における「１つの」または「いくつかの」実施の形態に対する参照は、必ずしも同一の実施の形態に対するものではなく、そのような参照は、少なくとも１つを意味することに注意しなければならない。
【００２８】
また、本発明の上記及び下記の例示的な実施形態は、情報処理装置によって実行されてもよい。当該情報処理装置は、例えば、目標を受け取る入力部、プロセッサによる実行の際の作業領域を形成するとともにモジュールや処理対象としてのコンポーネントやコンポーネントライブラリ等のデータを格納する記憶部、処理内容や処理結果を表示する表示部、及び、データを通信網などに出力する出力部などを含む。プロセッサは、モジュールを読み出し実行することにより、処理対象のデータ等に対して当該プログラムの手順に対応した処理をする。
【００２９】
図１は、本発明の１つの実施の形態における好適な自動コンポーネントライブラリ設計システムの例示である。この線図は、コンポーネントを機能的に別個のものとして描いているが、そのような描写は、単に例示目的のためである。この図に描かれたコンポーネントが、任意に組み合わされることができるか、または、別個のソフトウェア、ファームウェア、ハードウェアのコンポーネントに分割されることができることは、当業者には明らかである。さらに、そのようなコンポーネントは、どのように組み合わされるかまたは分割されるかにかかわらず、同一のコンピュータデバイスまたは複数のコンピュータデバイス上で実行することができ、複数のコンピュータデバイスは、１つまたはそれ以上のネットワークによって接続されることができることもまた、当業者には明らかである。
【００３０】
図１を参照すると、本発明は、仕様から、コンポーネントライブラリ１０１を自動的に構築することが可能である。これらのライブラリは、静的ではなく、経時的に、より良好により効率的にコンポーネントが発展するにつれて、自動的に改良する。下記は、特定のアプリケーション分野とは無関係に、本発明の操作の原則を一般的な用語で説明する。
・コンポーネント１０２は、一定の関数を実行することができる。本発明は、ライブラリにおける所与のコンポーネントまたはコンポーネントの組み合わせ用の関数を決定することが可能であることを必要とする。コンポーネントのいくつかは、プリミティブであるとみなされ、すなわち、公知の基本的なビルディングブロックである。目標は、ユーザ１０３によって規定された所望のコンポーネントの関数の形式仕様である。コンポーネント生成モジュール１０４は、数コンポーネントを使用することができ、一定の設計ルールを受ける組み合わせを形成する。非限定的な例では、デジタルコンポーネントの組み合わせは、コンポーネントを一緒にワイヤで結ぶことによって形成されることができる。ソフトウェアコンポーネントの組み合わせは、サブプログラムを呼び出すことによって形成されることができる。コンポーネント生成モジュールは、どれほどよくコンポーネントまたは組み合わせが目標を満足させるかを測定することもできる。コンポーネントおよび組み合わせを比較して、一方が他方より良好に目標を満足させるか否かを決定することができる。すべてのコンポーネントおよび組み合わせをこのように比較することができるわけではなく、すなわち、すべての点で他のものよりもよいものがなくてもよい（数学的に、それらの関係は、半順序である）。
・その関数とは別に、各コンポーネントで関連づけられたコストがある。デジタル回路では、コストは、それを構築するのに必要なコンポーネントの数であり、ソフトウェアコンポーネントのコストは、その計算効率であってもよい。組み合わせは、コンポーネント生成モジュールによってカプセル化することができ、組み合わせにインタフェース１０５を指定することによって新しいコンポーネント１０６を形成し、その新しいコンポーネントをライブラリへ戻って加える。組み合わせ、その構造およびサブコンポーネントは、新しいコンポーネントの設計と呼ばれる。事実上、新しいコンポーネントは、インタフェースのみが観測できる（observable）隠された設計を備えたブラックボックスである。これは、さらなる組み合わせで使用することができる。このようにして、有用な組み合わせが、ライブラリの新しいコンポーネントになることができる。したがって、コンポーネントは、コンポーネントの組み合わせから構築された再帰的アセンブリであり、これは、今度は、コンポーネントの組み合わせから構築されることができる等である。
【００３１】
図２は、本発明の１つの実施の形態における自動コンポーネントライブラリ設計の好適なプロセスを例示するフローチャートである。この図は、例示の目的のために特定の順序の機能的なステップを描いているが、プロセスは、ステップのいずれの特定の順序または配列に限定されない。この図に描かれた様々なステップは、様々なやり方で、省略され、再配列され、組み合わされ、および適合されることの少なくともひとつが可能であることが当業者には明らかである。
【００３２】
図２を参照すると、プロセスは、１セットの目標および１セットのプリミティブコンポーネントを入力とする。ステップ２０１で、ライブラリを、その中に置かれた小セットのプリミティブコンポーネントの小セットで初期化する。ステップ２０２で、ライブラリのコンポーネントのいくつかがビルディングブロックとして選択され、それは、ステップ２０３で無作為に組み合わされる。結果は、ステップ２０４でユーザ指定の目標に対して評価され、ステップ２０５で有用であると決定される場合には、全体としてステップ２０６で示されるように、新しいコンポーネントとしてライブラリに加えられ、将来のコンポーネント用に可能なビルディングブロックとなる。そうでない場合には、組み合わせは、ステップ２０７で捨てられる。これらのステップは、満足のいくコンポーネントライブラリが得られるまで繰り返すことができる。
【００３３】
図２の個別ステップは、下記のようにより詳細に説明することができる。
・ライブラリを初期化する（２０１）。所与のプリミティブコンポーネントがライブラリに加えられる。
・いくつかのコンポーネントを選択する（２０２）。このステップで（図３に示される好適なフローチャートによって詳述される）、選択関数に基づいて、小さな数のコンポーネントがライブラリから選択される。選択関数は、下記により詳細に説明され、コンポーネントを無作為に選択するが、いくつかのコンポーネントを他のものよりも優先させてもよく、すなわち、いくつかのコンポーネントは、他のものよりも高い確率で選択されてもよい。選択されるコンポーネントの正確な数は、コンポーネントの性質および利用可能な組み合わせ演算子に依存する。本発明の１つの実施の形態において、この数ｎは、ステップ３０２で無作為に選ばれ、各選択ステップで、２から１２の間であった。最良の範囲ｎは、操作されているコンポーネントの性質に依存してもよい。コンポーネントは次いで、ステップ３０３で選択されることができ、ｎ個のコンポーネントが選ばれるまでプロセスが続く。このステップで、同一のコンポーネントを数回選択することができることに注意されたい。
・選択されたコンポーネントを無作為に組み合わせる（２０３）。選択されたコンポーネントは、ドメインの組み合わせルールを受けて無作為に組み合わせることができる。１つの実施の形態において、コンポーネントは、一緒にワイヤで結んで回路を形成することができる。このワイヤ結合は、２つの出力ピンを接続することができないというルールがあってもよいが、これに限られない。ルールは、組み合わせを構築しながらテストされてもよく、または、ひとたび組み合わせが形成されてからテストされてもよい。たとえば、ソフトウェアコンポーネントの場合には、コンパイラまたは類似分析ツールを使用して、組み合わせが有効なソフトウェアコードを構成しているか否かを決定することができる。そのようなテストで不合格だった場合には、異なる組み合わせが試される。
・組み合わせを評価する（２０４）。組み合わせの関数が決定され、この関数が所与の目標にどのように関係するかがさらに決定される。組み合わせは無作為に生成されるため、その関数が、所与の目標にまったく関係しなくてもよい。この場合、組み合わせは、有用ではないとみなされる。
・組み合わせが有用であり（２０５）、ライブラリに加えられなければならない（２０６）。組み合わせは、既存のコンポーネントを包含するか（２０８）。組み合わせが既存のコンポーネントに機能的に等価である場合で、且つ、新しい組み合わせが既存のコンポーネントよりも安価にこの関数を実行する場合には、新しい組み合わせは既存のコンポーネントを包含する。
・包含されたコンポーネントの設計を、新しい組み合わせによって置き換える（２０９）。新しい組み合わせは既存のコンポーネントと同一の関数を実行するがより安価にこれを行うため、これは、すべての点で既存のコンポーネントよりも好ましい。このステップで、既存のコンポーネントの設計は、新しい組み合わせ、新しい設計で置き換えられる。この置き換えは、包含されたコンポーネントで構築されたすべてのコンポーネントに影響を与える。
・新しいコンポーネントを形成する（２１０）。このステップで、新しい組み合わせは、新しいコンポーネントとしてカプセル化される。新しいコンポーネントは、その関数にもっとも緊密に整合する目標に関連づけられる。
・新しいコンポーネントをライブラリへ加える（２１１）。
・改良されたコンポーネントを置き換える（２１２）。新しいコンポーネントとして同一の目標に整合するライブラリ内のすべてのコンポーネントは、新しいコンポーネントがその目標によりよく整合するか否かが確かめられる。そうである場合、既存のコンポーネントは、ライブラリから除去される（したがって、これは、さらなる組み合わせのために選択されることには考慮されない）。しかし、（上記包含されたコンポーネントの置き換えとは対照的に）既存のコンポーネントを他のコンポーネントの設計に使用することには影響しない。
【００３４】
このアプローチは、本発明の連続的なプロセスおよび絶対に終結しない改良とみなされる。言い換えると、これは、目標の所与のセットに基づいて、ライブラリ内のコンポーネントを絶えず改良する。時折、ユーザは、新しい目標を加えてもよく、プロセスは、その点でこの目標を満足させる新しいコンポーネントを見出すように試みる。そのように所望される場合には、プロセスは、すべての目標が十分に低コストのコンポーネントによって満足させられたときに、終結してもよい。
【００３５】
従来の方法は、適合性に基づいて無作為の構造物を使用しおよび選択する進化技術を採用することが多い。本発明によるコンポーネントの目標指向の組み合わせを新しいより複雑なコンポーネントに使用することは、新規であり、既存のコンポーネントをより良好なものによって置き換える概念は新しい。これは、使用される無作為の演算の種類、適合性が決定されるやり方、および、目標の構造が、基本的に異なる。ユーザが設けた目標は、形式論理言語を使用して規定することができる。従来の合成において行われるように、これらの形式仕様を合致するコンポーネントに変換しようと試みるよりはむしろ、本発明は、本発明に記載された再帰的アセンブリプロセスによって生成されたコンポーネントの性質を測定するためにのみ仕様を使用する。本発明は、したがって、仕様から生成された設計への建設的なやり方が知られていない状況に適用可能である。本発明が良好なコンポーネントを見出す効率は、ユーザによって与えられる機能的目標に依存する。一般に、最良の性能は、困難さが増大する多くの目標で達成される。
【００３６】
本発明の潜在的なユーザは、構築されているライブラリコンポーネントの種類に依存して変動し、それは下記でありうるが、それらに限定されない。すなわち、
・ビジネスプロセスオートメーション。企業は、本発明を使用して、ビジネスプロセスのライブラリを形成し、顧客用にカスタマイズされたビジネスプロセスの自動化を提供する。プリミティブビジネスプロセスステップで開始し、より複雑な自動化されたビジネスプロセスが、この場合はカスタマーのニーズおよび必要条件である目標に基づいて、構築される。このようにして、企業のサービスの多くを自動化することができ、以前のクライアント用に開発されたプロセスを再使用することができる。
・ソフトウェア開発。カスタムソフトウェアの開発者は、特に、ロボット工学および制御システムを含むがそれらに限定されない専門技術の狭い領域に集中する者は、カスタマーのニーズによって動かされるますます複雑なソフトウェアソリューションのライブラリを蓄積することによって、本発明を使用することができ、新しいオーダーに即座に且つ安価に応える。
・電子設計。電子装置の設計者は、既存の集積回路（ＩＣ）を組み合わせることによって、新しい回路を構築する。そのようにしながら、彼らは、サブアセンブリを構築し、繰り返し再使用される設計パターンを開発する。本発明は、ますます複雑な回路を維持するライブラリでこの活動をサポートすることができる。プリミティブとして既存のＩＣで開始して、新しい回路またはサブアセンブリが構築され、古いものは自動的に改良される。このプロセスを動かす目標は、設計者のカスタマーの機能的な必要条件である。
類似の潜在的なユーザを、機械設計およびコンピュータ支援設計方法を使用する他の専門分野等の領域で見出してもよい。
【００３７】
本発明の様々な実施の形態において、コンポーネント構築プロセスは、興味のある領域を特定する１セットのユーザが設けた目標によってガイドされる。目標自体は、厳密な数学的記述を有することができ、ドメイン特化言語および狭いアプリケーションドメインに集中する形式化を使用し、さらなる自動化を可能にする。ユーザが設けた目標は、形成すべきコンポーネントのドメインを決定する。ライブラリのコンポーネントは、算術演算用のデジタル回路であってもよく、一方、異なるセットの目標が、マルチプレクサ用の回路のライブラリに導いてもよいが、これらに限られない。
【００３８】
非環状デジタル回路の非限定的な例の自動設計用の１つの実施の形態は、下記に詳細に説明される。この実施の形態において、回路の要素は、下記のように実現することができる。
・コンポーネント。コンポーネントは、変動する数の入力および出力のピンを備えたカプセル化されたデジタル回路である。すべての回路は、非環状且つ非同期である（クロック信号は使用されない）。コンポーネントの入力および出力は、それぞれ、入力および出力として指定されるピンである。これらを従来の集積回路として考えることができる。電力および接地接続は示されていない。
・プリミティブ。ＮＡＮＤゲートが唯一のプリミティブコンポーネントである。
・目標。目標は、論理関数のベクトルであり、二分決定グラフ（ＢＤＤ）のベクトルとして表され、各関数に１つのＢＤＤである。目標は、指定されるべき集積回路の仕様として考えることができる。これは、すべての出力ピン用の論理関数を入力ピンの値によって特定する。
・組み合わせ。組み合わせは、ワイヤで一緒に結ばれた数コンポーネントである。組み合わせの入力は、出力に結合されていないいずれのその構成コンポーネントのすべての入力である。組み合わせの出力は、すべてのその構成コンポーネントのすべての出力である。
【００３９】
好適な実施の形態のためのコンポーネント構築プロセスのステップの特定の詳細は、下記のようでありうる。
・ライブラリを初期化する。ＮＡＮＤゲートがライブラリに加えられる。
・いくつかのコンポーネントを選択する。２から１２の間の数ｎを無作為に決定することができる。次いで、ｎ個のコンポーネントがライブラリから無作為に選択され、すなわち、選択関数が無作為に選択される。
・選択されたコンポーネントを無作為に組み合わせる。組み合わせは、選択されたコンポーネントの１つで開始し、引き続いて図４に示された好適なフローチャートによって説明されるように無作為なワイヤ結合を通してさらに選択されたコンポーネントを加えることによって、形成されることができる。各追加コンポーネントは、図５に示された好適なフローチャートによって説明されるように無作為なワイヤ結合を通して加えることができる。非限定的な例では、入力が底部に引かれ出力が各コンポーネントおよび組み合わせの頂部に引かれる図６に示されるように、３つのコンポーネントがワイヤで一緒に結ばれてもよい。
・組み合わせを評価する。組み合わせの関数は、各出力用に、この出力の関数を回路のすべての入力によって記述するＢＤＤを計算することによって、決定することができる。このステップは、当業者に公知である標準回路分析を使用し、ここではさらには記述されない。組み合わせは、それがコンポーネントを包含する場合に（下記参照）、または、すべての既存のコンポーネントよりも良好にいくつかの目標に近づく場合に、有用である。
・関数ｆおよび目標の１つの関数ｇを備えた組み合わせの少なくとも１つの組み合わせがあり、ｆとｇとの間の差が、コンポーネントのいずれの出力のいずれの関数とｇとの間の差よりも小さいような場合に、組み合わせは、既存のコンポーネントよりも良好に目標に近づくことに注意されたい。図７は、この計算を記述する好適なフローチャートを示す。
・２つの論理関数の差は、２つの関数の出力が異なる入力値のパーセンテージである。この計算は、２つの関数を記述するＢＤＤに基づいて効率的に行うことができる。このステップは、直接ＢＤＤの理論に従い、ここではさらには記述されない。
・組み合わせは、既存のコンポーネントを包含する。組み合わせは、コンポーネント各出力用に、２つの出力が同一の関数すなわち同一のＢＤＤを有するように組み合わせの出力がある場合で、且つ、組み合わせのコストがコンポーネントのコストよりも低い場合に、既存のコンポーネントを包含する。組み合わせのコストは、そのコンポーネントのコストの合計であり、コンポーネントのコストは、今度は、１＋その設計のコンポーネントの数である。図８は、組み合わせがコンポーネントを包含するか否かをどのように決定するかを記述する好適なフローチャートを示す。
・包含されたコンポーネントの設計を新しい組み合わせによって置き換える。コンポーネントの設計を新しい組み合わせで置き換えるために、新しい組み合わせの出力および入力をコンポーネントの出力および入力に関連づけることができ、コンポーネントの設計は、関数が不変のままであるように新しい組み合わせで置き換えられる。
・新しいコンポーネントを形成する。組み合わせが有用であり既存のコンポーネントを包含しないため、これは、すべての既存のコンポーネントよりも良好にいくつかの目標に近づく。組み合わせは、下記のように、新しいコンポーネントとしてカプセル化されることができる：
・新しいコンポーネントの設計は組み合わせである。
・新しいコンポーネントのインタフェースは、下記のように、入力および出力から構成される。
・新しいコンポーネントの入力は、組み合わせの入力である。
・目標の各関数ｇ用に、その関数がすべての出力のｇに対する最小差を有する組み合わせの出力が選択される。新しいコンポーネントの出力は、このように選択された組み合わせの出力である。
・改良されたコンポーネントを置き換える。新しく形成されたコンポーネントが既存のコンポーネントよりも良好にいくつかの目標に近づく場合には、この既存のコンポーネントは、ライブラリから除去される。
【００４０】
いくつかの実施の形態において、組み合わせが２つ以上の目標に有用であることが発生しうる。この場合、各目標につき１回、数回カプセル化される。この場合、結果として得られるコンポーネントは、それらが異なるインタフェースを有してもよく且つ各々に組み合わせの異なる出力が使用されてもよいため、一般に非常に異なる。図９は、新しいコンポーネントとして組み合わせをカプセル化する例を示す。組み合わせのすべての入力がコンポーネントの入力である一方、組み合わせのすべての出力が、コンポーネントの出力として使用されるわけではない。これは、冗長な不使用の部品を含む設計を備えたコンポーネントへ導くこともある。これが発生する場合には、本発明のアルゴリズムは、やがて、より効率的である機能的に等価な組み合わせを見出す。
【００４１】
図１０は、簡単な目標のために生成されたいくつかの好適なコンポーネントを示す。例は、初期のコンポーネントで起こるいくつかの冗長性を例示し、たとえば、等価を構築するための加算の使用である。この種類の不十分さは、やがて、置き換えによって排除される。プリミティブコンポーネントの異なるセットで開始することによって類似の結果が達成されることを認識すべきである。
【００４２】
いくつかの実施の形態において、本発明は、ソフトウェアコンポーネントに適用されることができ、それは、いくつかのプログラミング言語におけるソフトウェアコードである。コンポーネントの正確な性質は、特定の言語によってサポートされるコンポーネントの種類に依存する。したがって、コンポーネントは、フォートランおよびＣでありうるがそれらに限定されないサブプログラム、Ｊａｖａ（登録商標）およびＣ＋＋でありうるがそれらに限定されないオブジェクト、Ａｄａ等でありうるがそれに限定されないパッケージであってもよい。公理的意味論および述語変換でありうるがそれに限定されない様々な形式仕様形式化を、方法とともに使用することができる。
【００４３】
いくつかの実施の形態において、本発明は、プロセスコンポーネントに適用されることができ、これは、独立して操作しメッセージを交換することによってコミュニケートするプロセスである。プリミティブプロセスのインタフェースは、送信し受信することができるメッセージの種類によって決められる。プロセスは、単一のプロセスとしてプロセスのクラスターを処理することによって作ることができる。この新しいプロセスのインタフェースは、送信し受信することができるメッセージの種類を制限する。コミュニケーティングシステムの計算（ｃａｌｃｕｌｕｓ  ｏｆ  ｃｏｍｍｕｎｉｃａｔｉｎｇ  ｓｙｓｔｅｍｓ、ＣＣＳ）、コミュニケーティングシーケンシャルプロセス（ｃｏｍｍｕｎｉｃａｔｉｎｇ  ｓｅｑｕｅｎｔｉａｌ  ｐｒｏｃｅｓｓｅｓ、ＣＳＰ）およびπ計算でありうるがそれに限定されない様々な形式記述技術を使用することができる。
【００４４】
いくつかの実施の形態において、本発明は、並列計算を使用することができ、図１１の好適なシステムによって示されるようなライブラリおよび目標のための共有ストレージを共有する多くのプロセッサを有するコンピュータシステムを効率的に使用する。個別のプロセッサは、互いに無関係に新しい組み合わせを構築し、評価する。したがって、自動設計を加速するのに使用することができるプロセッサの数に制限はない。データをキャッシュに格納し複製するための標準ソフトウェア技術を使用して、メモリコンテンションを最小限にすることができ、インターネットで広域ネットワーク（ＷＡＮ）を通して接続されたプロセッサを使用することを可能にする。
【００４５】
いくつかの実施の形態において、本発明は、プログラムテストと一緒に使用することができる。この場合、目標の各々は、ユーザによって与えられたテストケースのセットである。組み合わせの適合性は、各々でテストケースを実行することによって決定される。しかし、２つのコンポーネントが機能的に等価であるか否かを決定することが可能ではないため、プロセスを修正しなければならない。テストケースのセットで２つのコンポーネントが同一に振る舞ったとしても、テストされていない入力では異なることもある。したがって、コンポーネントを、機能的に等価なより効率的なものによって置き換えることは可能ではない。代わりに、置き換え後の結果が、いずれのそのような置き換え前のテストを依然として満足させるか否かを決定しなければならない。
【００４６】
いくつかの実施の形態において、本発明は、代替選択を使用することができる。無作為に組み合わせ用のコンポーネントを選択するよりむしろ、一定のコンポーネントが好ましいこともある。他のコンポーネントを構築するのに成功しているコンポーネントが、好適であってもよいが、これに限られない。あるいは、最近形成されたコンポーネントが、組み合わせに好適であってもよい。そのような好みを利用するために、コンポーネントの無作為選択を、図１２に示された好適なフローチャートに記述されるように、トーナメント選択によって置き換えることができる。第１のコンポーネントは、ステップ１２０１で無作為に選択され、１２０２で選択された第２の無作為コンポーネントとステップ１２０３で繰り返し比較される。第２のコンポーネントが第１のものよりも組み合わせ用に好適である場合には、ステップ１２０４で第１のコンポーネントに取って代わり、そうでなければステップ１２０５で捨てられる。ｋmaxコンポーネントの合計を比較することができる。ｋmaxの正確な値は、コンポーネントの種類に依存し、１から４の間でなければならない。
【００４７】
いくつかの実施の形態において、本発明は、交叉演算で結合することができる。上述のように、本発明は、より簡単なコンポーネントから新しい組み合わせを構築する。遺伝的プログラミングで使用される種類の交叉技術をさらに使用して、同一の目標のための２つのコンポーネントの設計を２つの組み合わせに結合することが可能である。
【００４８】
コンピュータ業界の当業者に明らかであるように、従来の汎用または本開示の教示にしたがってプログラムされた特化型のデジタルコンピュータまたはマイクロプロセッサを使用して、１つの実施の形態が実施されてもよい。ソフトウェア業界の当業者に明らかであるように、適切なソフトウェアコーディングは、本開示の教示に基づいて熟練したプログラマーによって容易に準備されることができる。本発明はまた、当業者には容易に明らかであるように、集積回路を準備することによって、または、従来のコンポーネント回路の適切なネットワークを相互接続することによって、実施されてもよい。
【００４９】
１つの実施の形態は、ここに呈された特徴のいずれを実行するために１つまたはそれ以上のコンピュータデバイスをプログラムするために使用することができる命令を格納して有する機械読取可能媒体であるコンピュータプログラム製品を含む。機械読取可能媒体は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブおよび光磁気ディスクを含む１つまたはそれ以上の種類のディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス、磁気または光カード、ナノシステム（分子メモリＩＣを含む）、または、命令およびデータの少なくとも１つを格納するのに適切ないずれの種類の媒体またはデバイスを含むことができるが、それらに限定されない。コンピュータ機械読取可能媒体のいずれの１つに格納されるため、本発明は、汎用型のハードウェア、特化型のコンピュータまたはマイクロプロセッサの両方を制御するための、および、コンピュータまたはマイクロプロセッサが本発明の結果を使用する人間のユーザまたは他の機構と相互作用するのを可能にするためのソフトウェアを含む。そのようなソフトウェアは、デバイスドライバ、オペレーティングシステム、実行環境／コンテナ、および、アプリケーションを含むが、それらに限定されない。
【００５０】
本発明の好適な実施の形態の先の記載は、例示および説明のために提供されてきた。これは、網羅的であることを意図せず、または、本発明を開示された正確な形態に限定することを意図しない。多くの修正例および変形例が、当業者には明らかである。特に、「モジュール」という概念が上述のシステムおよび方法の実施の形態に使用されているが、そのような概念は、ビーン、クラス、メソッド、タイプ、コンポーネント、オブジェクトモデル、および、他の適切な概念等の等価の概念と交換可能に使用されることができることが明らかである。実施の形態は、本発明の原則およびその実際的な用途を最良に記載するために選ばれ記載され、それによって、本発明、様々な実施の形態、および、企図された特定の使用に適切である様々な修正例を他の当業者が理解するのを可能にした。本発明の範囲は、下記の特許請求の範囲およびその均等物に規定されることが意図される。
【図面の簡単な説明】
【００５１】
【図１】本発明の１つの実施の形態において好適な自動ライブラリ設計システムを例示する図である。
【図２】本発明の１つの実施の形態において自動コンポーネントライブラリ設計の好適なプロセスを例示するフローチャートである。
【図３】本発明の１つの実施の形態においてコンポーネント選択の好適なプロセスを例示するフローチャートである。
【図４】本発明の１つの実施の形態において組み合わせを形成するためにコンポーネントを続けて加える好適なプロセスを例示するフローチャートである。
【図５】本発明の１つの実施の形態においてコンポーネントおよび組み合わせを無作為にワイヤで結ぶ好適なプロセスを例示するフローチャートである。
【図６】本発明の１つの実施の形態において無作為にワイヤで結ぶことによる３つのコンポーネントの好適な組み合わせの図である。
【図７】本発明の１つの実施の形態において１つの組み合わせが所与の組み合わせよりも良好に目標に近づくか否かを決定するための好適なプロセスを例示するフローチャートである。
【図８】本発明の１つの実施の形態において組み合わせがコンポーネントを包含するか否かを決定するための好適なプロセスを例示するフローチャートである。
【図９】本発明の１つの実施の形態において新しいコンポーネントとして組み合わせをカプセル化する例の図である。
【図１０】本発明の１つの実施の形態において簡単な目標のために生成されたいくつかの好適なコンポーネントを示す図である。
【図１１】本発明の１つの実施の形態においてライブラリおよび目標のために共通ストレージを共有する多くのプロセッサを有する好適なプロセッサを示す図である。
【図１２】本発明の１つの実施の形態においてトーナメント選択の好適なプロセスを例示するフローチャートである。
【図１】
2007128517.tif 000003
【図２】
2007128517.tif 000004
【図３】
2007128517.tif 000005
【図４】
2007128517.tif 000006
【図５】
2007128517.tif 000007
【図６】
2007128517.tif 000008
【図７】
2007128517.tif 000009
【図８】
2007128517.tif 000010
【図９】
2007128517.tif 000011
【図１０】
2007128517.tif 000012
【図１１】
2007128517.tif 000013
【図１２】
2007128517.tif 000014