JP3958793B2 - 遺伝的プログラミングを使用した複雑な構造の自動設計の方法および装置 - Google Patents
遺伝的プログラミングを使用した複雑な構造の自動設計の方法および装置 Download PDFInfo
- Publication number
- JP3958793B2 JP3958793B2 JP53106797A JP53106797A JP3958793B2 JP 3958793 B2 JP3958793 B2 JP 3958793B2 JP 53106797 A JP53106797 A JP 53106797A JP 53106797 A JP53106797 A JP 53106797A JP 3958793 B2 JP3958793 B2 JP 3958793B2
- Authority
- JP
- Japan
- Prior art keywords
- function
- circuit
- node
- component
- generation
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/36—Circuit design at the analogue level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/06—Multi-objective optimisation, e.g. Pareto optimisation using simulated annealing [SA], ant colony algorithms or genetic algorithms [GA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2113/00—Details relating to the application field
- G06F2113/16—Cables, cable trees or wire harnesses
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Genetics & Genomics (AREA)
- Physiology (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Description
本発明の分野は、電気回路など複雑な構造の自動設計である。より詳細には、本発明は、コンピュータに実装した遺伝的アルゴリズムを使用して、電気回路など複雑な構造を設計することである。
発明の背景
設計者の要件を満足する複雑な構造の自動設計は、通常人間の知性を必要とすると考えられる困難な課題である。
電気技術者は、しばしばいくつかの設計目的または要件を満足する回路を設計するよう要求される。電気回路は、抵抗、コンデンサ、インダクタ、ダイオード、トランジスタ、変換器、エネルギー源を含めて、非常に様々な異なるタイプの構成要素から構成される。電気回路の個々の構成要素は、回路を形成する特定の「トポロジ」に構成される。
様々なタイプの構成要素が回路のトポロジ構成中の各位置に挿入される。さらに、各構成要素はさらに一組の構成要素値(一般に数字)によって指定(「寸法決定」)される。電気回路の完全な仕様は、そのトポロジ、トポロジ構成中の各位置に挿入すべき構成要素タイプの選択、およびすべてのその構成要素の寸法決定を含む。
回路を設計する場合、目的は、1つまたは複数の観測可能な量(例えば、回路中のあるプローブ・ポイントでのいくつかの時刻またはいくつかの周波数での電圧の観測されるパターン)のいくつかの所望の値を達成することである。しばしば1つまたは複数の追加の考慮事項(例えば、回路中の構成要素の数、構成要素のコストなど)がある。
同様に、機械及び民間技術者は、しばしばいくつかの設計目的または要件を満足する物理構造を設計するよう要求される。電気回路など物理構造は、様々な異なるタイプの構成要素から構成される。これらの個々の構成要素は、全体的な複雑な物理構造を形成する特定のトポロジに構成される。様々なタイプの構成要素がトポロジ構成中の各位置に挿入される。全体的な構造中の各構成要素はさらに一組の構成要素値(一般に数字)によって指定される。例えば、機械技術者は、堅い荷重支持金属ビームや荷重支持フレキシブル・ケーブルなどの構成要素から構成されるトラスとして設計すること望むであろう。その設計目的は、特定の荷重または複数の荷重を支持すること、または各バーまたはケーブル上の応力で堅いバーまたはフレキシブル・ケーブルが破壊されるほど大きくならないようにする要件を満足するものである。最後に、トラス中に含まれる材料の全重量を最小限に抑えるなど、物理構造全体があるコスト要件を満足する追加の設計目的がある。所望のトラスを設計するために、設計者は、構成要素の適切なトポロジ構成(すなわち構成要素の数やどのようにそれらを接続するか)を生成し、トポロジ構成中に挿入すべき構成要素タイプ(すなわち堅いビームやフレキシブル・ケーブル)を選択し、各構成要素ごとに適切な数値(すべてのそれらの厚さ)を選択しなければならない。
上記の電気および機械設計問題ならびに多数の他の分野からの多数の他の設計問題は、設計者が構成要素の適切なトポロジ構成を生成し、トポロジ構成中に挿入すべき構成要素タイプを選択し、全体的な複雑な構造中の各構成要素ごとに適切な数値を選択する必要がある共通の特徴を共有する。
自然界における自然淘汰プロセス
自然界において、生体は、様々な環境中で生き残り、繁栄する非常に様々な構造を示す。生体をそれらの自然環境の要件を満足するように設計する自然界の方法は、複雑な構造を設計するための有用なモデルを与える。
生物中のたいていの構造および挙動はタンパク質の作用反作用の結果である。実際、タンパク質は、生体の構造および機能が主としてタンパク質によって決定されると言えるほど非常に様々な生物構造および挙動の原因である。タンパク質は、アミノ酸の配列から構成されるポリペプチド分子である。タンパク質分子がそこから構成される(文字A、C、D、E、F、G、H、I、K、L、M、N、P、Q、R、S、T、V、W、およびYによって示される)20個のアミノ酸残基がある。タンパク質分子は、平均約300個のそのようなアミノ酸残基から構成される(大きいタンパク質は数千個のアミノ酸残基を含む)。単純なバクテリアは1800個程度の異なるタンパク質とともに生命を維持し、人間は推定100000個のタンパク質を有する。
タンパク質は、組織の染色体DNA中に含まれる命令および情報に従って製造される。DNA(デオキシリボ核酸)は、遺伝情報を伝える能力およびそれ自体の複製の生成用のモデルの役目をする能力を有する長い糸状の生物分子である。この惑星上のすべての既知の生命形態(バクテリア、菌類、植物、動物、人間を含む)は、DNA分子に基づいている。自然界では、遺伝子は、遺伝情報がそれによって親から子孫に伝えられる基本的な機能単位である。遺伝子は、デオキシリボ核酸(DNA)の分子に沿って特定の場所に現れる。
DNA分子に関係するわゆる「遺伝コード」は、DNA分子に沿って様々な遺伝子座に現れる4つの可能な値の長いストリング(シーケンス)から構成される。DNAの場合、4つの可能な値は、アデニン、グアニン、シトシン、チミン(通常それぞれA、G、C、Tと略される)と呼ばれる4つの「ベース」をさす。したがって、DNA中の「遺伝コード」はCTCGACGGTなど長いストリングから構成される。生きた細胞が繁殖するとき、DNA中の遺伝コードが読み取られる。3つのDNAベースから構成される(「コドン」と呼ばれる)サブシーケンスは、20個のアミノ酸の1つを指定する。したがって、遺伝コードは、DNA分子中に含まれる情報および命令からタンパク質の構造を指定し、制御するために使用される。
組織は、それぞれ数千個の相互作用するタンパク質を含む生きた細胞から構成され、それらの生命をそれらの環境を処理しようと試みることに費やす。いくつかの組織は、それらの環境の処理を他の組織よりもよく行う。特に、いくつかの組織は、繁殖年齢まで生き延び、そのときそれによりそれらの遺伝構成(すべてのそれらの遺伝子)をそれらの子孫に伝えることができる。自然淘汰は、その特性が繁殖年齢までの生存を容易にする組織がそれらの遺伝構成の全部または一部を子孫に伝えるプロセスである(ダーウィン1859年)。ある時間期間および多数の世代にわたって、ポピュレーションは全体として進化し、したがって生き残ったポピュレーション中の個体中の染色体ストリングは、組織がその環境中で生き残るために貢献する特性を永続させる。すなわち、自然淘汰プロセスは、ある時間期間にわたって、それらの環境を効果的に処理するように設計される構造を進化させる傾向がある。
遺伝的アルゴリズム
遺伝的アルゴリズムは、所与の一組の物体を改善する方法を与える。自然淘汰および適者生存のプロセスは、遺伝的アルゴリズムの理論ベースを与える。Professor John H.Holland(1975)著、Adaptation in Artificial and Natural Systemsは、自然システムならびに人工システムの適合の全体的な数学的理論を要約し、提示するものである。Hollandの文献の重要な部分には、生物適合の自然の方法に習ってパターン化される「遺伝的アルゴリズム」が記載されている。後者の作業中、Holland(1986)には、遺伝的アルゴリズムおよび問題を解決するためのバケット・ブリゲート・アルゴリズムを使用した選別システムが記載されている。米国特許出願第4697242号(Holland他)および米国特許出願第4881178号(Holland他)には、遺伝的アルゴリズムとともに固定長二進ストリングを使用する選別システムが記載されている。
遺伝的プログラミング
「遺伝的プログラミング」(以前は「非線形遺伝的アルゴリズム」または「階層遺伝的アルゴリズム」とも呼ばれた)が文献Genetic Programming:On the Programming of Computers by Means of Natural Selection(Koza1992)、文献Genetic Programming II:Automatic Discovery of Reusable Programs(Koza1992)および、米国特許出願第4935877号、第5136686号、第5148513号、および第5343554号に記載されている。
遺伝的プログラミングは、1975年にHollandによって記述された最初の遺伝的アルゴリズムが(性質が染色体に似ている)文字の線形ストリングに基づいて動作したので「非線形」または「階層」と呼ばれるが、遺伝的プログラミングは、様々なサイズおよび形状の階層プログラム・ツリー上で動作する。
遺伝的プログラミングは、様々な分野からの様々な問題を解決するか、またはほぼ解決するコンピュータ・プログラムを進化させることができる。遺伝的プログラミングは、使用できるプログラマティック成分から構成されるランダムに生成されたプログラムの原始分泌から始まり、次いでプログラムの新しい(そしてしばしば改善される)ポピュレーションを繁殖させるために家畜学原理を適用する。繁殖は、ダーウィンの適者生存の原理、クロスオーバの自然に発生する遺伝動作の類似物(性繁殖)、および突然変異を使用して、ドメインと無関係な形で行われる。クロスオーバ動作は有効な子孫プログラム(一組の成分中の所与の閉鎖)をシンタックス的に生成するように設計される。遺伝的プログラミングは、コンピュータ・プログラムの明示的なハイレベル記号表示をHollandの遺伝的アルゴリズムに関連する学習の最適に近い効率と組み合わせる。所与の問題を解決(またはほぼ解決)するプログラムは、しばしばこのプロセスから発生する。
文献Genetic Programming II:Automatic Discovery of Reusable Programs(Koza1994)で証明されているように、遺伝的プログラミングは、主プログラムおよび1つまたは複数の再使用可能なパラメータ化された階層的と呼ばれるサブプログラム(自動定義関数またはADFと呼ばれる)から構成されるマルチパート・プログラムを進化させることができる。
遺伝的プログラミングは、以下のステップを実行することによって問題を解決するコンピュータ・プログラムを繁殖させる。
(1)問題の関数および終端のランダムな組成の初期ポピュレーションを生成するステップ(例えばコンピュータ・プログラム)
(2)終了基準が満足されるまで以下のサブステップを繰り返し実施するステップ
(A)ポピュレーション中の各プログラムを実行し、それに適応基準を使用して適応度値を割り当てるステップ
(B)以下の動作を適用することによってコンピュータ・プログラムの新しいポピュレーションを生成するステップ。動作は、適応度に基づく確率を有するポピュレーションから選択されるコンピュータ・プログラムに適用される。
(i)繁殖。既存のプログラムを新しいポピュレーションにコピーする。
(ii)クロスオーバ。2つの既存のプログラムのランダムに選択された部分を再結合することによって新しいポピュレーション用の新しい子孫プログラムを生成する。
(iii)突然変異。1つの既存のプログラムのランダムに選択された部分をランダムに突然変異させることによって新しいポピュレーション用の新しい子孫プログラムを生成する。
(3)結果選定の方法(例えば、今まで最も良い個体)によって識別されたプログラムは、実行用の遺伝的アルゴリズムの結果に選定される。この結果は、問題に対する解決策(またはおおよその解決策)になる。
他の遺伝的プログラミング・プロセスは、「順列」、「ビルディング・ブロックを定義する」(「カプセル化」とも呼ばれる)、後述するアーキテクチャ変更操作(オペレーション)など追加の操作を使用する。
ニューラル・ネットワークの細胞符号化
ニューラル・ネットワークは1つまたは複数の神経処理単位(ニューロン)から構成される構造である。ニューラル・ネットワークは線ラベル付けされ、点ラベル付けされた有向グラフによって表示できる。グラフの点は、ニューラル・ネットワーク中の神経処理単位、入力点、または出力点である。線は、2つの点間の重み付けされた接続を表すために数字重みでラベル付けされる。神経処理単位は、処理単位のしきい値およびバイアスを示す2つの数字でラベル付けされる。
ニューラル・ネットワーク中の構成要素の唯一のタイプは神経処理単位である。ニューラル・ネットワークは、将来の時刻でのネットワークの状態が現在の時刻でのネットワークの状態と現在の時刻でのネットワークへの入力に依存する意味でダイナミックなシステムである。ニューラル・ネットワーク中には情報の方向性流れがある。フィードフォワード・ニューラル・ネットワークでは、情報は、ネットワークを表す有向グラフ中のサイクルなしに入力からネットワークまで、ニューロンを介して、ネットワークの出力まで流れる。再帰ニューラル・ネットワークでは、ネットワーク中の1つまたは複数の個々のニューロンの特定の時刻での出力は、ネットワークを表す有向グラフ中にサイクルを生成するために他の神経処理単位の将来の時刻での入力になるように返送される。
固定長文字ストリング上で動作する従来の遺伝的アルゴリズムは、接続用の数字重みならびにニューラル・ネットワークのしきい値およびバイアスを発見するために重みベクトルの高度線形多次元探索空間を探索する方法を与える。しかしながら、ニューラル・ネットワークのアーキテクチャは予め指定されなければならない(SchafferおよびWhitley1992年)。遺伝方法を使用したアーキテクチャの発見を自動化する場合の難点は、遺伝的アルゴリズムによって実行される演算の種類を受け入れるニューラル・ネットワークを表す線ラベル付けされ、点ラベル付けされたグラフ用の順応性のある表示を見つけることに焦点を置いた。
ある初期の研究では、「ビルディング・ブロックを定義する」(「カプセル化」とも呼ばれる)遺伝的プログラミングの操作(KozaおよびRice1991年)を使用して、ニューラル・ネットワークのアーキテクチャならびに重みを発見する問題に遺伝的プログラミングを適用した。文献「The Algorithmic Beauty of PlantsにはLindenmayerシステム(Lシステム)および文法書き換え規則が記載されている。これらのシステムは、初期(またはエンブリオニック)パターンに書き換え規則を適用することによって複雑なパターンを開発する方法を与える。
彼のCellular Encoding of Genetic Neutral Networks、Frederic Gruau(1992a)には、遺伝的プログラミングを使用して、ニューラル・ネットワーク中の個々のニューロンの重み、しきい値、およびバイアスとともに、ニューラル・ネットワークのアーキテクチャを同時に進化させる細胞符号化と呼ばれる技法が記載されている。この技法では、ポピュレーション中の各個々のプログラム・ツリーは、単一のニューロンから構成される非常に単純なニューラル・ネットワークから完全なニューラル・ネットワークを開発する仕様である。遺伝的プログラミングは、当該の問題を解決することができるニューラル・ネットワークを進化させるためにこれらのネットワーク構成プログラム・ツリーのポピュレーションに適用される。Gruau1992b、1993、1994a、1994bも参照されたい。
細胞符号化では、各プログラム・ツリーは構成関数の構成物である。プログラム・ツリーは遺伝子型であり、ツリーの命令に従って構成されたニューラル・ネットワークは表現型である。ポピュレーション中の個々のプログラム・ツリーの適応度は、プログラム・ツリー中含まれる命令に従って構成されたニューラル・ネットワークが所望のタスクをどのくらいうまく実行するかによって測定される。これは、一般にニューラル・ネットワークを入力の可能な組合せのすべて(または大きいサンプリング)に触れさせ、ニューラル・ネットワークの出力が入力の特定の組合せに対して正確な出力に一致するかどうかをテストすることによって実施される。多数の問題に対して、ニューラル・ネットワークからの正確な出力および不正確な出力の数から適応度を計算する。遺伝的プログラミングは、次いでダーウィンの繁殖、クロスオーバ、および突然変異の通常の遺伝操作を使用して、プログラム・ツリーのポピュレーションを繁殖させる。
細胞符号化では、ニューラル・ネットワークの構成プロセスは、単一のニューロンから構成されるニューラル・ネットワークから始まる。このニューロンはしきい値0を有する。そのバイアスは0である。その入力は、重み+1を有する接続を有するすべてのネットワークの入力ノードに接続される。その出力はすべてのネットワークの出力ノードに接続される。プログラム・ツリー中の関数は、次いでこのニューロンをどのようにして全ニューラル・ネットワーク中に成長させるかを指定する。いくつかの内容に関係ない関数は特定のニューロンを平行または連続的な形で分割することを可能にする。他の関数は、ニューロンのしきい値、接続の重み、またはニューロンに対するバイアスを変更することができる。
電気回路用のSPICEシミュレータ
工学の多数の分野では、コンピュータベースのシミュレータを使用して、複雑な物理現象をシミュレートできる。電気工学の分野では、SPICE(Simulation Program with Integrated Circuit Emphasisの頭文字)は、アナログ、ディジタル、混合アナログ/ディジタル電気回路のシミュレーション用に米国バークレーのカリフォルニア大学で数十年にわたって書かれたプログラムの大規模ファミリーである。
SPICE3(Quarles他1994年)はSPICEの最新バージョンである。SPICE3は、様々な回路要素を含む回路に対して様々なタイプの分析を実施する。回路要素は、抵抗、コンデンサ、インダクタ、スイッチ、ダイオード、トランジスタ、電圧源および電流源、伝送線、および多数の他のデバイスを含む。SPICEは、DC分析、過渡分析、ポールゼロ分析、小信号歪み分析、感度分析、雑音分析、AC小信号分析、および他のタイプの分析を実施できる。SPICE3プログラムは、Cソース・コードの約217000本の線を含む878個の別々のファイル上に広がった約6.1メガバイトのソース・コードから構成される。
SPICEシミュレーションへの入力は、分析すべき回路を記述するネットリスト、および実行すべき分析のタイプおよび生成すべき出力の性質に関してSPICEに命令するいくつかのコマンドから構成される。
同様のシミュレータが多数の工学分野に存在する。例えば、機械工学の分野では、(それぞれ異なる数字パラメータおよび非数字パラメータによってさらに指定される)様々なタイプの物理構成要素のトポロジ構成をシミュレータに与え、それにより物理構造を次いでシミュレートできるようにする多数のシミュレータが存在する。
自動回路設計
純粋にディジタルな回路用にいくつかの設計問題を自動化することはかなり進歩した。しかしながら、アナログ回路および混合アナログディジタル回路の設計は自動化が可能であることが証明されていない(Rutenbar 1993年)。「アナログ・ジレンマ」を論じる場合、AaserudおよびNielsen(1995年)は次のように述べている。
「アナログ設計者はごく少数である。ディジタル設計に対比して、アナログ回路の大部分はまだアナログ設計の専門家またはいわゆるアナログ設計の「zah」によって製造されている。設計プロセスは、経験と勘の組合せによって特徴付けられ、プロセス特性および実際の製品の詳細な仕様の完全な知識を必要とする。」
「アナログ回路設計は通常かなりの時間期間にわたって延び、相当の技術を有する設計者によって実施される知識集中的、多相、反復作業であることが知られている。したがって、科学というよりも芸術の形態であると多くの人によって考えられている。」
アナログ回路および混合アナログディジタル回路の設計プロセスを自動化する多数の努力がなされている。次に、これらの努力の一部について以下で説明する。
IDAC(Degrauwe 1987年)と呼ばれるアナログ集積回路用の対話型設計ツールでは、ユーザは、回路用の可能な様々なトポロジを選択することから始める。IDACは、次いで(所望の挙動特性に関して)各回路中の構成要素の値を決定する。ユーザは最良回路を選択する。
OASYS(Harjani、Rutenbar、Carley 1989年)およびOPASYN(Koh、Sequin、Gray 1990年)では、トポロジが予めヒューリスティック規則に基づいて選択され、合成ツールが回路を寸法決定しようと試みる。合成ツールが選択されたトポロジを正確に寸法決定できない場合、ツールは他のヒューリスティック規則を使用して新しいトポロジを生成し、プロセスが継続する。これらのシステムの成功はヒューリスティック規則の知識ベースの有効性に依存する。
SEAS(Ning、Kole、Mouthaan、Wallings 1992年)では、進化を使用してトポロジを修正し、シミュレート・アニーリングを使用して回路を寸法決定する。
Maulik、Carley、Rutenbar(1992年)は、専門設計知識を使用して、トポロジ選択および回路寸法決定を同時に処理しようとする。
Nielsen(1995年)は、アナログ・フィルタ回路を設計するために使用できる連続時間フィルタ設計ツール(彼の「C−Tコンパイラ」)を開発した。Nielsenのプロセスは原型フィルタを手動で設計することから始まる。次いで、構成要素値およびトポロジを調整して、当該の問題の設計要件との追従を達成する。
遺伝的アルゴリズムおよび自動回路設計
DARWIN(KruiskampおよびLeenaerts 1995年)では、二進文字ストリングに対して作用する遺伝的アルゴリズムを使用して、演算増幅器(オペアンプ)回路を設計する。DARWINの初期ポピュレーションを生成する場合、初期ポピュレーション中の各回路がオペアンプの働きをするように事前に確立された手動設計された一組の24個のトポロジからポピュレーション中の各オペアンプのトポロジをランダムに取り出す。さらに、すべてのトランジスタがそれらの適切な範囲内で動作し、かつすべてのトランジスタ・サイズが最大値と最小値との間に入るように一組の問題固有の制約を解決する。小信号評価回路およびオペアンプ回路に対して特殊化された分析計算を使用して、各オペアンプの挙動を評価する。回路の実際の挙動と所望の挙動との間のずれ、回路の電力消費を含めて、ファクタの組合せを使用して、各オペアンプの適応度を計算する。オペアンプを記述する二進染色体ストリング用のクロスオーバ操作および突然変異操作を使用して、子孫二進染色体ストリングを生成する。
Hemmi、Mizoguchi、Shimohara(1994年)、Higuchi他(1993年)、Mizoguchi、Hemmi、Shimohara(1994年)は、ハードウェア記述言語(HDL)を使用して、遺伝方法をディジタル回路の設計に利用した。これらの手法では、文法を使用して、ディジタル回路の設計の開発を駆り立てる。
発明の概要
アナログおよびディジタル回路など、複雑な構造の自動設計の方法および装置。ただし、これに限定されない。本発明は、様々なサイズおよび形状のエンティティのポピュレーションを有するシステムとともに動作する。ポピュレーション中のエンティティは構成処置(constructing action)を含む。本発明は、一連のステップが反復する事前に指定された設計目的を満足する構造の設計を生成する反復プロセスを実行する方法および装置を含む。一実施態様では、本発明は、それぞれ構成要素値に関連する、トポロジに構成された多数のタイプの構成要素を有する構造を開発するためにポピュレーション中のエンティティ中の構成処置を繰り返し実行する方法および装置を含む。本発明はまた、前記開発した構造の挙動を決定する方法および装置を含む。
図面の説明
本発明は、以下に示す詳細な説明および本発明の好ましい実施形態の添付の図面からより完全に理解できよう。ただし、これらは、本発明を特定の実施形態に限定するものではなく、説明および理解のためのものにすぎない。
第1A図は、本発明の流れ図である。
第1B図は、電気回路を設計するための遺伝的プログラミングの流れ図である。
第2図は、拘束構文構造の一実施形態を示す図である。
第3図は、1入力1出力エンブリオニック(embryonic)電気回路の一実施形態を示す図である。
第4図は、変更可能ワイヤZ0を含む回路を示す図である。
第5図は、抵抗(R)関数を変更可能ワイヤに適用した結果を示す図である。
第6図は、コンデンサ(C)関数を変更可能ワイヤに適用した結果を示す図である。
第7図は、ダイオード関数を変更可能ワイヤに適用した結果を示す図である。
第8図は、接地トランジスタ関数を変更可能ワイヤに適用した結果を示す図である。
第9図は、QP関数を変更可能ワイヤに適用した結果を示す図である。
第10図は、QT0関数を変更可能ワイヤに適用した結果を示す図である。
第11図は、QT8関数を変更可能ワイヤに適用した結果を示す図である。
第12図は、度数2の2つのノードに接続された抵抗R1を示す図である。
第13図は、活動ノードならびに非活動ノードが度数2であるときにQT7関数を適用した結果を示す図である。
第14図は、FLIP関数をダイオードD1に適用した結果を示す図である。
第15図は、直列分割関数SERIESを抵抗に適用した結果を示す図である。
第16図は、並列分割関数PSSを抵抗R1に適用した結果を示す図である。
第17図は、並列分割関数PSLを抵抗R1に適用した結果を示す図である。
第18図は、ノード1およびノード2が度数2である回路にPSSまたはPSLを適用した結果を示す図である。
第19図は、ノード1が度数3であり、ノード2が度数2である抵抗R1を含む回路を示す図である。
第20図は、ノード1が度数3であり、ノード2が度数2である回路にPSSを適用した結果を示す図である。
第21図は、CUTを抵抗R1に適用した結果を示す図である。
第22図は、VIA0関数を抵抗R1に適用した結果を示す図である。
第23図は、THVIA0関数を抵抗R1に適用した結果を示す図である。
第24図は、世代0の最良回路のプログラム・ツリーを示す図である。
第25図は、最初の2つの書込みヘッドを有する1入力1出力エンブリオニック回路を示す図である。
第26図は、コンデンサC3を生成するために変更可能ワイヤZ0に作用するC関数を実行した結果を示す図である。
第27図は、FLIP関数を実行した結果を示す図である。
第28図は、SERIES関数を実行した結果を示す図である。
第29図は、FLIP関数を実行した結果を示す図である。
第30図は、SERIES関数を実行した結果を示す図である。
第31図は、コンデンサを新しいインダクタに変換するためにコンデンサに作用するL関数を実行した結果を示す図である。
第32図は、L関数を実行した結果を示す図である。
第33図は、L関数を実行した結果を示す図である。
第34図は、L関数を実行した結果を示す図である。
第35図は、世代0の最良回路を示す図である。
第36図は、並列遺伝的プログラミング・システムを示す図である。
第37図は、64個の処理ノードそれぞれの4つのプロセスを示す図である。
第38図は、世代32からの最良実行「7段はしご」回路を示す図である。
第39図は、世代76からの最良実行「19段はしご」回路を示す図である。
第40図は、世代64からの「ブリッジT」回路を示す図である。
第41図は、世代58からの最良実行回路を示す図である。
第42図は、世代212からの最良実行回路を示す図である。
第43図は、世代53からの最良実行回路を示す図である。
第44図は、4つの関数定義ブランチおよび2つの結果作成ブランチを有するプログラムを示す図である。
第45図は、2回使用され、自動的に定義される関数ADF3および世代9を示す図である。
第46図は、2回使用され、自動的に定義される関数ADF0および世代9を示す図である。
第47図は、5回使用される世代31からの自動的に定義される関数ADF0を示す図である。
第48図は、世代31の最良回路を示す図である。
第49図は、ADF0によって生成された遺伝3ポート・サブ構造を示す図である。
第50図は、世代35からの最良実行回路のADF0の編集バージョンを示す図である。
第51図は、世代35からの最良実行回路を示す図である。
第52図は、世代35からの最良実行個体を示す図である。
第53図は、1入力1出力エンブリオニック回路を示す図である。
第54図は、C関数を実行した結果を示す図である。
第55図は、THVIA関数を実行した結果を示す図である。
第56図は、FLIP関数を実行した結果を示す図である。
第57図は、3つのEND関数を実行した結果を示す図である。
第58図は、PSS関数を実行した結果を示す図である。
第59図は、PSS関数を実行した結果を示す図である。
第60図は、PSS関数を実行した結果を示す図である。
第61図は、FLIP関数、END関数、PSS関数を実行した結果を示す図である。
第62図は、ADFを適用しようとしているところの回路を開発する破断図である。
第63図は、ADF中でNOP関数およびL関数を実行した結果を示す図である。
第64図は、ADF中で第1のSERIES関数を実行した結果を示す図である。
第65図は、ADF中で第2のSERIES関数を実行した結果を示す図である。
第66図は、ADF中でL関数を実行した結果を示す図である。
第67図は、ADF中でL関数を実行した結果を示す図である。
第68図は、ADF中でPSS関数を実行した結果を示す図である。
第69図は、ADF中でC関数を実行した結果を示す図である。
第70図は、ADFによって生成された3ポート・サブ構造を示す図である。第71図は、世代35からの最良実行回路の異なる図である。
第72図は、世代77からの最良実行回路の自動的に定義されたADF0を示す図である。
第73図は、世代77からの最良実行回路を示す図である。
第74図は、世代37からの最良世代回路を示す図である。
第75図は、世代52からのより倹約した回路を示す図である。
第76図は、1入力2出力エンブリオニック電気回路を示す図である。
第77図は、L関数、C関数、C関数を実行した結果を示す図である。
第78図は、世代0の最良回路を示す図である。
第79図は、世代79の最良回路を示す図である。
第80図は、世代137からの最良実行回路を示す図である。
第81図は、1入力3出力エンブリオニック電気回路を示す図である。
第82図は、ロボット用の2入力2出力コントローラ用のエンブリオニック回路を示す図である。
第83図は、QVIAC7関数を適用した結果を示す図である。
第84図は、QVIAB7関数を適用した結果を示す図である。
第85図は、QVIAE7関数を適用した結果を示す図である。
第86図は、TRANFORMER0関数を適用した結果を示す図である。
第87図は、TRANFORMER1関数を適用した結果を示す図である。
第88図は、TRANFORMER2関数を適用した結果を示す図である。
第89図は、TRANFORMER3関数を適用した結果を示す図である。
第90図は、TRANFORMER4関数を適用した結果を示す図である。
第91図は、TRANFORMER5関数を適用した結果を示す図である。
第92図は、抵抗R1を有する回路を示す図である。
第93図は、FIVE_LEAD_OPAMP1関数を抵抗R1に適用した結果を示す図である。
第94図は、STAR1分割関数を抵抗R1に適用した結果を示す図である。
第95図は、活動ノード(ノード1)が度数3のときにTRIANGLE1分割関数を抵抗R1に適用した結果を示す図である。
第96図は、活動ノード(ノード1)が度数2のときにTRIANGLE1分割関数を抵抗R1に適用した結果を示す図である。
第97図は、世代45からの遺伝的に進化した最良世代増幅器を示す図である。
第98図は、遺伝的に進化した増幅器の電圧利得段を示す図である。
第99図は、遺伝的に進化した増幅器のダーリントン・エミッタ・フォロワ・セクションを示す図である。
第100図は、遺伝的に進化した増幅器の他の図である。
第101図は、8つの剛性ビームおよび2つの負荷を支持する2つの可撓性ケーブルから構成されるトラスを示す図である。
第102図は、2つのスプリング、2つのダッシュ・ポット、2つのマスを含む機械システムを示す図である。
第103図は、楕円5低域フィルタ・サブ回路ELIP5_LP_1を示す図である。
第104図は、楕円5高域フィルタ・サブ回路ELIP5_HP_1を示す図である。
第105図は、世代45からの遺伝的に進化した最良世代多帯域フィルタを示す図である。
第106図は、ディジタルINVERTER関数を修正可能なワイヤZ0に適用した結果を示す図である。
第107図は、ディジタルAND6関数を修正可能なワイヤZ0に適用した結果を示す図である。
第108図は、ディジタルOR6関数を修正可能なワイヤZ0に適用した結果を示す図である。
第109図は、THREE_LEAD_OPAMP1関数を変更可能ワイヤZ0に適用した結果を示す図である。
第110図は、TWO_LEAD_OPAMP1関数を適用した結果を示す図である。
第111図は、フィールド・プログラマブル・ディジタルまたはアナログ・アレイを使用して、所望の回路を物理的に実現する方法を示す図である。
第112図は、5個の構成要素、10個のインタフェース・ポイント、7個のアークから構成される電気構造を示す図である。
第113図は、7個の構成要素、11個のインタフェース・ポイント、6個のアークから構成される機械構造を示す図である。
第114図は、13個の構成要素および24個のインタフェース・ポイントから構成される機械構造を示す図である。
発明の詳細な説明
複雑な構造を設計する方法および装置について述べる。設計すべき複雑な構造は、電気回路、物理構造、機械構造、または特定のトポロジ構成に従ってインタフェースされ、かつ数値パラメータまたは他のタイプのパラメータに関して寸法決定される複数のタイプの構成要素から構成される他の複雑な構造である。
本発明の以下の詳細な説明では、本発明を完全に理解できるように多数の特定の詳細を記載する。しかしながら、本発明は、これらの特定の詳細なしに実施できることが当業者には明らかであろう。いくつかの例では、周知の構造および装置は、本発明を曖昧にするのを回避するために、詳細ではなく、ブロック図で示してある。
以下の詳細な説明の一部は、アルゴリズムおよびコンピュータ・メモリ中のデータ・ビットに対する動作の記号表示に関して提示される。これらの演算記述および表示は、データ処理技術の当業者が当業者の研究の要旨を当業者に最も効果的に伝えるために使用する手段である。アルゴリズムは、ここでは、一般に、所望の結果をもたらすステップの自己矛盾のないシーケンスであると考えられる。ステップは、物理量の物理的操作を必要とするステップである。通常、必ずしもそうではないが、これらの量は、記憶、転送、結合、比較、他の形の操作が可能な電気信号または磁気信号の形をとる。主として一般的な用法の理由で、これらの信号をビット、値、要素、記号、文字、項、数などと呼ぶことが時々便利であることが分かっている。
しかしながら、上記および同様のすべての用語は適切な物理量に関連すべきであり、これらの量に付けられた便利なラベルにすぎないことを念頭に置かれたい。以下の議論から明らかなように別段に詳述されていない場合、本発明では、「処理」、「コンピューティング」、「計算」、「決定」、「表示」などの用語を使用する議論は、コンピュータ・システムのレジスタおよびメモリ中の物理(電子)量として表されるデータを操作し、コンピュータ・システム・メモリまたはレジスタまたは他のそのような情報記憶装置、伝送装置または表示装置中の物理量として同様に表される他のデータに変換するコンピュータ・システムまたは同様の電子計算装置の処理およびプロセスをさす。
本発明はまた、ここに示される操作(オペレーション)を実施する装置にも関する。この装置は、所要の目的のために特別に構成されるか、またはコンピュータ中に記憶されたコンピュータ・プログラムによって選択的に活動化するか、または再構成される汎用コンピュータを含む。本明細書で提示するアルゴリズムおよびディスプレイは、本来特定のコンピュータまたは他の装置に関連しない。本明細書の教示に従うプログラムとともに様々な汎用マシンが使用でき、また所要の方法ステップを実施するためにより特殊化された装置を構成することが便利であることが分かる。様々なこれらの機械に必要な構造は以下の説明から明らかになろう。さらに、本発明は、特定のプログラミング言語に関連して説明されない。様々なプログラミング言語を使用して、本明細書に記載の本発明の教示を実施できることを理解されたい。
本発明の概要
本発明は、電気回路(例えば、アナログ回路、機械構造、またはいくつかの設計制約を満足する他の物理構造)など複雑な構造を設計する方法を提供する。
本発明の電気回路は、抵抗、コンデンサ、インダクタ、ダイオード、トランジスタ、エネルギー源を含めて、非常に様々な異なるタイプの構成要素を含む。ただし、これらに限定されない。個々の構成要素は、回路を形成する特定の「トポロジ」に構成される。さらに、各構成要素は、一組の構成要素値(一般に数値)によってさらに指定(寸法決定)される。回路は、一般に、1つまたは複数の入力源から入力信号を受信し、1つまたは複数の出力ポートで出力信号を発生する。一実施形態では、回路は、少なくとも1つのエネルギー源(例えば、着信信号、電源など)を有する。したがって、本発明は、電気回路をそのトポロジならびにすべてのその構成要素の寸法決定に関して完全に指定する。
一実施形態では、「構成要素」は、タイプ、構成要素をさらに指定するいくつかの構成要素値、およびいくつかのインタフェース・ポイントを有するオブジェクトである。例えば、抵抗について考えてみる。抵抗は、タイプ「抵抗」のオブジェクトであるので構成要素である。これは、1000オームの単一の構成要素数値を有し、2つのインタフェース・ポイント(リード線、エンド)を有する。
構成要素のインタフェース・ポイントは、(例えば、抵抗の2つのリード線のように)操作上識別できないか、または(例えば、トランジスタのコレクタ、ベース、エミッタのように)操作上異なる。
「回路」は、構成要素のインタフェース・ポイント間に(1)一組の構成要素および(2)一組の無方向線線(アーク)を含む。各無方向線線は、ある構成要素のインタフェース・ポイントと(一般に他の構成要素の)他のインタフェース・ポイントとの間の接続の存在を示す。
物理構造(トラスなど)に関係する場合、異なるタイプの構成要素は、堅い荷重支持ビームおよびフレキシブル荷重支持ケーブルを含む。ただし、これらに限定されない。
機械構造に関係する場合、構成要素のタイプは、スプリング、マス、ダッシュ・ポットを含む。ただし、これらに限定されない。
ユーザが設計すべき複雑な構造の設計目的を指定した後、本発明の自動設計プロセスは完全な設計を生成する。すなわち、本発明は、トポロジならびに複雑な構造の寸法決定を生成する目的駆動方法である。本発明は目的駆動設計を達成する方法を提供する。
第1A図に、遺伝的プログラミングを使用した本発明のプロセスを示す。このプロセスは、複雑な構造(例えば、トラス、回路など)を表すエンティティのポピュレーション(例えば、プログラム・ツリー)に適用される。ポピュレーションは、様々な形で(例えば、ランダムに)生成されることもあり、プロセスを開始するために供給されることもある。エンティティのポピュレーションを使用して、プロセスは、構造を開発するためにポピュレーションの各エンティティ中の構成処置(constructiong action)を実行することから始まる(処理ブロック101)。本発明では、構造は、トポロジに構成された複数のタイプの構成要素を含む。構成要素値がある場合、それらはトポロジ中の構成要素に関連する。一実施形態では、構成処置は、実行中に、すべてのエンティティに共通であるか、または最初に異なるエンティティ間で異なるエンブリオニック構造(embryonic structure)に適用される。
構成処置を実行した後、ポピュレーション中の各開発された構造の挙動を決定する(処理ブロック102)。この決定は、例えば、シミュレーションまたは観測である。ただし、これらに限定されない。挙動を決定した後、適応基準を得るために、それを事前に指定された設計目的と比較する(処理ブロック103)。
次いで、テストによって、以下でさらに論じるように、設計目的または終了基準が満足されているかどうかを決定する(処理ブロック104)。それらが満足されている場合、プロセスは終了する。他方、設計目的または終了基準が満足されていない場合、本発明の進化プロセスを継続するためにポピュレーション中のエンティティに遺伝操作を適用する(処理ブロック105)。遺伝操作を適用した後、プロセスは処理ブロック101に戻り、プロセスは引き続き繰り返す。
本発明のプロセスは、アナログ電気フィルタ回路を設計する問題を含む多数の問題に適用できる。1つのそのようなフィルタは、信号をその入力として受信し、ある指定された周波数範囲(通過帯域)中にある着信信号の周波数成分を通し、かつ他の周波数範囲(阻止帯域)中にある信号の周波数成分を阻止する1入力1出力電子回路である。
遺伝的プログラミングは、順序付けされたブランチを有する根のついた、点ラベルの付いた木のポピュレーション(すなわち円のないグラフ)を繁殖させる。遺伝的プログラミングの現在周知の形態によって繁殖させたツリーの種類と、電気回路の世界で使用されるラベルの付いたサイクリック・グラフの特殊な種類との間にはかなりの差がある。
電気回路はツリーではなく、サイクリック・グラフである。実際、電気回路は、線が円に属するサイクリック・グラフである(例えば、緩いワイヤやたれ下がる構成要素はない)。さらに、電気回路を表すグラフの線は互いにラベル付けされる。通常、各線上に多数のラベルがある。各線上の一次ラベルは、電気構成要素(例えば、ワイヤ、抵抗、コンデンサ、場合によっては構成要素の一部)のタイプを与える。各線上の二次ラベルは構成要素の値を与える(ただし、ダイオードなど、構成要素値を担持しない構成要素は除く)。単一の数値で多数の構成要素(例えば、抵抗、コンデンサ、インダクタ)を指定するのに十分である。他の構成要素(例えば、正弦波源の周波数およびピーク電圧)を指定するためには多数の値が必要である。電気回路中の多数の構成要素は、それらのリード線(例えば、トランジスタのコレクタ、ベース、エミッタ)の極性(例えば、ダイオード)または配向または特徴を有する。電気回路は、少なくとも1つのエネルギー源(例えば、着信信号または内部電源)を有する。いくつかの構成要素値は、エネルギー源が「AC」であるか「DC」であるかなど、数値でない。さらに、構成要素値のグループは、構成要素に適用できる数値を与える「モデル」を参照することによって指定されることが便利である。例えば、トランジスタやダイオードなど複雑な構成要素は、広範なモデルによって記述される。
本発明は、遺伝的プログラミングの世界で使用される点ラベルの付いたツリーの種類と、電気回路を表す線ラベルの付いたサイクリック・グラフとの間でマッピングを確立することによって遺伝的プログラミングを電気回路に適用する。
本明細書で使用される開発成長プロセスは、非常に簡単な、実質上無用な、エンブリオニック電気回路から始まる。エンブリオニック回路の他に、通常遺伝的プログラミングで使用されるタイプのプログラム・ツリーがある。電気回路は、その場合、プログラム・ツリー中の関数が実行され、徐々にエンブリオニック回路(およびその継承者)に適用されるときに開発される。プログラム・ツリー中の関数は、電気回路の重要な特徴を維持する形でエンブリオニック回路(およびその継承者)を操作する。この開発プロセスの最終結果は、回路のトポロジならびにすべてのその構成要素の寸法決定である。第1B図に、電気回路の自動設計用の本発明の方法の一実施形態を示す。(第1B図については以下でより詳細に説明する)。
電気回路について説明する本発明の方法は、機械構造など、他の複雑な構造の自動設計に適用できる。機械構造はツリーではなく、グラフである。機械構造を表すグラフの線にはそれぞれラベルが付けられる。各線上の一次ラベルは構成要素(例えばマス(mass))の名前を与える。各線上の二次ラベルは構成要素の値を与える。
本発明の方法から得られる設計は、実際の構造を実装または構成する機械または装置中に直接的か、または間接的に供給される。そのような機械およびそれらの構成は当技術分野において周知である。例えば、電気回路は、設計ツール、および/または場所ツールおよび経路ツールに基づいて周知の半導体加工技法を使用して製造される。FPGAなどプログラム・デバイスは、ネットリストなどに応答するツールを使用してプログラムされる。機械構造など他の構造は、構成要素の処理、移動、および取付けを実施するコンピュータ制御処理およびハードウェア(例えば、組立ライン技術)を使用して物理的に構成される。
ポピュレーション中のプログラム・ツリーの拘束構文構造
本発明では、プログラム・ツリーは、以下の5つの関数の範疇のいずれかまたはすべてを含む。
(1)エンブリオニック回路からの回路のトポロジを修正する接続生成関数
(2)特定の構成要素をワイヤ(または他の構成要素)の代わりに回路のトポロジ中の位置に挿入し、その演算実行サブツリーが回路中に挿入された各構成要素ごとに数値(寸法決定)を指定する構成要素生成関数
(3)その数およびアリティ(arity)がユーザによって予め指定される自動定義関数
(4)その数およびアリティがユーザによって予め指定されず、アーキテクチャ変更操作の結果として遺伝プログラムの実行中に動的に生じる自動定義関数
一実施形態では、プログラム・ツリーは拘束構文構造に一致する。プログラム・ツリー中の各構成要素生成関数は、0、1つまたは複数の演算実行サブツリーおよび1つまたは複数の構造継続サブツリーを有し、各接続生成関数は1つまたは複数の構造継続サブツリーを有する。各構成要素生成関数の演算実行サブツリーがある場合、演算実行サブツリーは、いっしょに構成要素の数値をもたらす数値定数終端と演算関数の構成物を含む。構造継続サブツリーは回路の構成をどのように継続すべきかを指定する。第2図にプログラム・ツリーの1つの拘束構文構造を示す。この特定の図は、2つの結果作成ブランチおよび4つの自動定義関数の存在を保証する。他の実施形態では、プログラム・ツリーは、この特定の拘束構文構造またはいずれの拘束構文構造に一致しないことがあることに留意されたい。
慣例として、演算実行サブツリーは左側に配置され、構造継続サブツリーは右側に配置される。
初期ポピュレーション(世代0)中のランダム・プログラム・ツリーならびに後の世代で突然変異操作によって生成されるランダム・サブツリーは、この拘束構文構造に一致するように生成される。この拘束構文構造は、(Koza1994年に記載されている)「ポイント・タイピング」を有する構造維持クロスオーバを使用したクロスオーバ操作によって維持される。
1入力1出力エンブリオニック回路
本発明では、プログラム・ツリーを実行することによって電気回路を生成する。ポピュレーション中の各プログラム・ツリーはエンブリオニック電気回路から1つの電気回路を生成する。特定の問題に対して使用されるエンブリオニック回路は、入力信号の数および出力信号(プローブ・ポイント)の数に依存する。これはまた、設計すべき回路に必要な、または望ましいいくつかの固定の構成要素を組み込む。
一実施形態では、エンブリオニック回路は、1つの入力信号、1つのプローブ・ポイント、2つの修正可能なワイヤ、固定のソース抵抗、および固定の負荷抵抗を含む。エンブリオニック回路中で、2つの修正可能なワイヤは、それぞれ最初に本明細書の図で円形ハイライトで表される書込みヘッドを所有する。書込みヘッドが回路構成プログラム・ツリー中の関数に従って指す構成要素を修正することによって回路を開発する。プログラム・ツリー中の各接続生成関数および構成要素生成関数は、開発中の回路中のその関連するハイライトされた構成要素を特定の形で修正し、継承者書込みヘッドがある場合、その将来の配置を指定する。
第3図に、1入力1出力エンブリオニック回路の一実施形態を示す。第3図を参照すると、エネルギー源は、2ボルト電源VSOURCE319であり、その負(−)のエンドはノード300(接地)に接続され、その正(+)のエンドはノード301に接続される。
「エンド」または「リード線」または「インタフェース」なる語は、構成要素が全体的な回路構造中の他の構成要素に接続される場所を説明するために使用していることに留意されたい。
固定の1000オーム・ソース抵抗RSOURCE312がノード301とノード302の間にある。修正可能なワイヤZ1(すなわち書込みヘッドを有するワイヤ)306がノード302とノード303の間にあり、他の修正可能なワイヤZ0 307がノード303とノード304の間にある。修正可能なワイヤZ0およびZ1のまわりに2つの書込みヘッドがそれらを指すことを示す円がある。固定の分離ワイヤZOUT308がノード303とノード305の間にあり、電圧プローブVOUT309がノード305にあり、固定の1000オーム負荷抵抗RLOAD310がノード305とノード300(接地)の間にある。分離ワイヤZGND311がノード304とノード300(接地)の間にある。開発プロセスの初めに、それぞれ2つの修正可能なワイヤZ0およびZ1を指す書込みヘッドがある。回路のすべてのその後の開発は書込みヘッドから生じる。回路構成プログラム・ツリー中の関連する関数に従って書込みヘッドが指している構成要素(時々構成要素とそのノードの1つ)を修正することによって電気回路を開発する。
この特定のエンブリオニック回路は、回路中の任意の1つのノードに当たる線の数が2または3になるように設計される。この条件は、回路構成プログラム・ツリー中のすべての関数によって維持される。
分離ワイヤZOUT308は、プローブ・ポイントVOUT309および負荷抵抗RLOAD310が開発プロセス中に修正されないよう保護し、分離ワイヤZGND311も同様にVSOURCE319の負の終端300および接地を保護する。
このエンブリオニック回路中に入ったドメイン知識はほとんどないことに留意されたい。具体的には、(1)エンブリオニック回路は回路であり、(2)エンブリオニック回路は1つの入力および1つの出力を有し、(3)修正可能な接続が出力とソースの間および出力と接地の間にある。このエンブリオニック回路は任意の1入力1出力回路に適用できることに留意されたい。適応基準が進化探索プロセスを所望の回路に導く。これは、任意の特定の前に見られない問題に対する遺伝プログラムの特定の実行の結果がうまくいく保証があることをいっているのではなく、エンブリオニック回路によって入力および出力の性質を指定し、適応基準によって望まれるものを記述するため以外にユーザが設計プロセス中に導入する情報がほとんどないことをいっている。
人間の設計者は、特定の問題に対してエンブリオニック回路を生成するために彼の特定のフィールドのドメイン知識を適用することが有利であることが分かる。そのような知識は、特定の周知のまたは望ましい特性の方向に満足な設計の探索を偏らせる。また、いくつかの設計問題は、(おそらく特定の形で構成される)特定の構成要素を全体的な設計の一部として含めることを要求する。
一実施形態では、同じエンブリオニック回路がポピュレーション中のすべての個々のプログラム・ツリーの開発のための開始点として使用される。すなわち、ポピュレーション中の各個々のプログラム・ツリーごとに開発プロセス用の開始点である共通のエンブリオニック回路がある。ポピュレーション中の個々のエンティティはプログラム・ツリーから構成される。ポピュレーション中の個々のエンティティを実行するとき、実行は、特定の個々のエンティティ中に含まれるプログラム・ツリーの構成処置を共通のエンブリオニック回路に適用するステップを含む。代替実施形態では、プログラム・ツリーは異なるエンブリオニック回路から始まることに留意されたい。
いくつかの問題について、エンブリオニック回路およびプログラム・ツリーを含む一対のエンティティを同時に共進化させることが有利である。すなわち、ポピュレーション中の各エンティティは、エンブリオニック回路およびプログラム・ツリーから構成される対を有する。ポピュレーション中の個々のエンティティを実行するとき、実行は、特定の個々のエンティティ中に含まれるプログラム・ツリーの構成処置を特定の個々のエンティティ中に含まれる特定のエンブリオニック回路に適用するステップを含む。進化プロセスは、そのエンブリオニック回路およびプログラム・ツリーが互いに関連して作用するときに問題の設計目的をよりより満足するポピュレーション中のエンティティを助ける。
本発明の一実施形態ではエンブリオニック回路を使用しているが、エンブリオニック回路を有する必要は全くないことに留意されたい。代わりに、回路構成関数の組は回路全体を構築する関数を含むことができる。しかしながら、この手法は、回路がいくつかの最小の重要な特徴(例えば、着信信号、接地を含めること、プローブ・ポイントを含めることなど)を有することを保証するのでエンブリオニック回路を別個に与えることが非常に有利である。エンブリオニック回路がない場合、多数の個体は、例えば、着信信号源がない(したがって、問題の設計目的を満足することに関して十分な成績を達成できない)。そのような基本的な特徴を進化させるには、追加の努力の消費が必要である。したがって、一実施形態では、これらの最小の特徴は、予めエンブリオニック回路の形で与えられる。
構成要素生成関数
ポピュレーション中の各個々の回路構成プログラム・ツリーは一般に構成要素生成関数および接続生成関数を含む。
構成要素は構成要素生成関数によって回路のトポロジ中に挿入される。構成要素はまた構成要素生成関数からそれらの寸法決定を得る。プログラム・ツリー中の各構成要素生成関数は、開発中の回路中のハイライトされた構成要素(すなわち書込みヘッドを有する構成要素)を指し、ハイライトされた構成要素を何らかの形で修正する。各構成要素生成関数は1つまたは複数の書込みヘッドを(その構成継続サブツリーを介して)生成する。
各構成要素生成関数は、回路中の任意の1つのノードに当たる線の数を2または3にする。これは必要条件ではないことに留意されたい。
構成要素生成関数の一部は内容に関係なく、一部は内容に即している。構成要素生成関数が内容に関係ない場合、結果は単一のハイライトされた構成要素(すなわち書込みヘッドを有する構成要素)にのみ依存する。構成要素生成関数が内容に即している場合、結果は単一のハイライトされた構成要素にのみ依存するだけでなく、回路構成の他の近くの要素にも依存する。本発明は、内容に即した関数ならびに内容に関係ない関数の実行から得られる複雑な構造の生成を支持する。
表1に電気回路用のいくつかの例示的な構成要素生成関数を記載する。この表には、関数の短い名前、関数のより長い、より記述的な名前、およびそのアリティ(すなわちそれがとる引数の数)が示されている。この表は、電気回路の可能な有用な構成要素生成関数の徹底的なリストではなく、可能な構成要素生成関数の性質を示すためのものである。
各構成要素生成関数の構成継続サブツリーは回路構成プログラム・ツリー中の継承者関数または終端を指す。
構成要素生成関数の演算実行サブツリーは演算関数(加算および減算)の構成物およびランダムな定数(−1.000から+1.000まで)を含む。演算実行サブツリーは浮動小数点値を戻すことによって構成要素の数値を指定する。
電気回路の構成要素の第1の値は多数の桁の範囲に及ぶ。したがって、対数スケール上で構成要素を見ることが有用である。したがって、この設計システムの一実施形態では、演算実行サブツリーによって戻された浮動小数点値を、関連する構成要素の特定のタイプに適切な測定単位を使用して11桁の範囲内の構成要素の値と解釈することが有用であることが分かっている。演算実行サブツリーは浮動小数点値を戻し、これを以下の形で構成要素の値と解釈する。戻り値が−0.5と+0.5の間である場合、Uはサブツリーによって戻された値に等しい。戻り値が−100.0より小さいか、または+100よりも大きい場合、Uは0にセットされる。戻り値が−100と−0.5の間である場合、Uは点(−100、0)と点(−5、−5)を接続する直線から求まる。戻り値が+5.0と+100の間である場合、Uは点(5,5)と点(100,0)を接続する直線から求まる。構成要素の値は、構成要素のタイプに適切な単位で10Uである。このマッピングは、現代の電気工学の文献で多数の実際的な回路を調べた後で決定した適切なまたは所定の値を中心とする値を構成要素に与える。幾分異なる解釈の方法もいくつかの特殊化された用途の範疇(例えば、より極端な値が一般に必要とされる場合)に適切である。
構成要素(例えばダイオード)が数値を有しない場合、残っているサブツリー(引数)はない。構成要素を記述するために通常1よりも大きい数値が必要な場合、多数の演算実行サブツリー(引数)がある。例えば、独立した交流電流正弦波電圧源の完全な仕様には5つの数値構成要素、すなわち電圧源の振幅、その周波数、そのオフセット電圧、その時間遅延、およびその減衰定数が必要である。構成要素は、構成要素の初期条件(例えば、コンデンサの初期電圧、インダクタの初期電流、いくつかの発振回路値のトランジスタの初期電圧)を指定することが必要な状況で追加の構成要素数値を必要とする。
抵抗関数
本発明では、2引数R(「抵抗」)関数はハイライトされた構成要素を抵抗に変化させる。
第4図に、4つのコンデンサを含む部分回路のノード401および402を接続する修正可能ワイヤZ0 403を示す。修正可能なワイヤZ0 403は書込みヘッドを保持する(すなわち円でハイライトされている)。
第5図に、R関数を第4図の変更可能ワイヤZ0に適用し、それにより第4図の修正可能なワイヤZ0 403の代わりにノード401および402を接続する抵抗R1 503を生成した結果を示す。抵抗の極性はその代わりになる修正可能なワイヤZ0の極性に一致することに留意されたい。
この構成要素の値(5オーム)は演算実行サブツリーによって指定される。一実施形態では、抵抗の値はキロオーム(Kオーム)の中間値(U)の真数(ベース10)である。
回路のネットリストは、回路の各構成要素、その構成要素が接続されるノード、およびその構成要素の値を識別するリストである。回路のネットリストは回路が完全に開発されるまで生成されない。さらに電気回路用のSPICEシミュレータに送られるネットリストはワイヤを含まない。しかしながら、議論のために、ネットリストが第4図のために生成された場合、以下の単一の行
Z0 402 401
は修正可能なワイヤZ0に関連する。
ネットリストのこの行の解釈は、回路のノード402とノード401の間に接続されたZ0と呼ばれる構成要素があるということである。構成要素の正の端部はノード402に接続され、負の端部はノード401に接続される。
5オーム抵抗R1を生成するR関数の効果は、この単一の行を以下の行
R1 402 401 5オーム
に変更することである。
ネットリストのこの行の解釈は、回路のノード402とノード401の間に接続されたR1と呼ばれる抵抗があり、かつこの構成要素が5オームの値を有するということである。ネットリスト値の最初に記載されたノードは構成要素の正の端部に接続されたノードであることを想起されたい。
構成要素生成関数(例えば上述のR関数)は、ワイヤが構成要素に変換された後でその構成要素がその後常に回路に残るように定義されたかもしれないことに留意されたい。この代替手法は、新たに生成された構成要素に書込みヘッドを与えない(すなわち、構成要素生成関数用の構成継続サブツリーを有しない)ことによって容易に実施できる。この代替手法の欠点は、抵抗の並列(または直列)構成をどのように生成するかを考えることによって説明できる。この代替手法を使用する場合、この構成物は、まず並列(または直列)分割関数をワイヤに適用し、次いでいま生成されたワイヤを抵抗に変換することによってのみ生成できる。上述の手法は、この構成物を得る第2の方法、すなわちまずあるワイヤを抵抗に変換し、次いで並列(または直列)分割関数をいま生成された抵抗に適用することができるので多数の状況に対してよりフレキシブルである。したがって、一実施形態では、新たに生成された構成要素は書込みヘッドを持っている。
コンデンサ関数
2引数C(「コンデンサ」)関数はハイライトされた構成要素をコンデンサに変化させる。一実施形態では、コンデンサの値は、ナノファラッド(nF)の上述の形で計算した中間値Uの真数(ベース10)である。このマッピングは1nFを中心としてプラスまたはマイナス5桁の範囲内の値をコンデンサに与える。
第6図に、C関数を第4図の修正可能なワイヤZ0に適用し、それによりノード401および402を接続するコンデンサC1 601を生成した結果を示す。
インダクタ関数
2引数L(「インダクタ」)関数はハイライトされた構成要素をインダクタに変化させる。一実施形態では、インダクタの値はマイクロヘンリーの中間値Uの真数(ベース10)である。このマッピングは1マイクロヘンリーを中心としてプラスまたはマイナス5桁の範囲内の値をインダクタに与える。
ダイオード関数
1引数D(「ダイオード」)関数はハイライトされた構成要素をダイオードに変化させる。ダイオードは明示的な構成要素値を有せず、したがって演算実行サブツリーはない。したがって、この関数は構成継続サブツリーのみを有し、1引数関数である。
第7図に、D関数を第4図の修正可能なワイヤZ0に適用し、それによりノード401および402を接続するダイオードD1 701を生成した結果を示す。
D関数によって生成されたネットリスト中の1つの行の一例を以下に示す。
D1 402 401 D1N4148
この行の解釈は、ダイオードD1のアノード(+端部)がノード402に接続され、カソード(−端部)がノード401に接続され、ダイオードがダイオードのD1N4148モデルであるということである。ダイオードは明示的な構成要素数値を有しないが、モデルの仕様はSPICEシミュレータに対して多数のパラメータの値を暗に指定する。実際、ただ1つのダイオード・モデルが特定の設計問題に対して使用できるのが普通である。しかし極端な場合、ダイオード用のモデル中に含まれる多数の別々のパラメータのすべての値が潜在的な構成要素値と見られ(そして別個の演算実行関数が割り当てられる)ことがある。
また、いくつかの問題に対して、モデル自体を構成要素の構成要素値にすることが望ましいことがある。このモデルは非構成要素数値の一例である。このモデルの可能な代替値は構成要素の異なる使用できるモデルに及ぶ。モデルは、同様にいくつかの他のタイプの構成要素(例えば、トランジスタ用のモデルQ2N3904)に関連して本明細書に現れる。
QG関数
2引数QG(「接地されたトランジスタ」)関数はハイライトされた構成要素を、そのエミッタがアースに接続されたトランジスタに変化させる。トランジスタの構成要素値はトランジスタのコレクタでの初期条件(例えば9ボルト)である。初期条件は通常トランジスタで使用されない。しかしながら、それらはいくつかの回路(例えばいくつかの発振器)用のSPICEシミュレータに必要である。初期条件が不要な場合、この関数はただ1つの引数(すなわちその構成継続サブツリーの引数)を有するのでD関数と同じである。
第8図に、QG関数を第4図の修正可能なワイヤZ0に適用し、それによりノード401および402を接続するトランジスタQ1 801を生成した結果を示す。トランジスタのコレクタはZ0の+端部(第4図のノード402)に接続され、ベースはZ0の−端部(第4図のノード401)に接続される。
QG関数によって生成されたネットリスト中の2つの行の一例を以下に示す。
Q1 402 401 Q2N3904
.IC V(402)=9ボルト
第1の行の解釈は、トランジスタQ1のコレクタが第8図のノード402に接続され、ベースが第8図のノード401に接続され、エミッタがノード0(アース)に接続され、トランジスタのモデルがQ2N3904モデルであるということである。他のトランジスタ・モデルの例はQ2N3055、Q2N2222、DH3725Cである。任意選択の第2の行の解釈は第8図のコレクタ・ノード402の任意選択の初期条件が9ボルトであるということである。
QP関数
2引数QP(「正電圧源トランジスタ」)関数はハイライトされた構成要素を、そのコレクタが正電圧源(例えば、第9図のノード50の5ボルトDC)に接続されたトランジスタに変化させる。トランジスタの構成要素値はトランジスタのベースの初期条件(例えば9ボルト)である。初期条件は通常トランジスタで使用されない。しかしながら、それらはいくつかの回路(例えばいくつかの発振器)用のSPICEシミュレータに必要である。初期条件が不要な場合、この関数はただ1つの引数(すなわちその構成継続サブツリーの引数)を有するのでD関数と同じである。
第9図に、QP関数を第4図の修正可能なワイヤZ0に適用し、それによりノード401および402を接続するトランジスタQ1 901を生成した結果を示す。トランジスタのベースはZ0の+端部(第4図のノード402)に接続され、エミッタはZ0の−端部(第4図のノード401)に接続される。コレクタは第9図のノード50の+5ボルトDC正電圧源に接続される。
QG関数によって生成されたネットリスト中の2つの行の一例を以下に示す。
Q1 50 402 401 Q2N3904
.IC V(402)=9ボルト
第1の行の解釈は、トランジスタQ1 901のコレクタが+5ボルトDC電力源に接続され、トランジスタのベースが第9図のノード402に接続され、トランジスタのエミッタがノード401に接続され、トランジスタのモデルがQ2N3904モデルであるということである。第2の行の解釈は(第9図の)ベース・ノード402の初期条件が9ボルトであるということである。
QVIAC関数
(QVIAC0、...、QVIAC7と呼ばれる)0引数関数のQVIAC(「コレクタからビアを有するトランジスタ」)グループ中の8つの関数は、ハイライトされた構成要素を、そのコレクタが(ビアと呼ばれる)番号付きポートに接続されたトランジスタに変化させる。書込みヘッドはQVIAC関数の実行によって失われる。新しいトランジスタ自体上には書込みヘッドがないので、トランジスタは、QVIAC関数(または次のセクションで説明する密に関連するQVIAB関数またはQVIAE関数)によって挿入された後開発中の回路中に残る。
QVIAC関数は、ハイライトされた構成要素を、そのベースがハイライトされた構成要素の負の端部に接続され、そのエミッタがハイライトされた構成要素の正の端部に接続され、そのコレクタが特定の番号の付いたポートに接続されたトランジスタと交換する。このポートは、回路が常駐する仮想的なウエハ中の8つの仮想的なレイヤの指定された1つに接続される。
完全に開発された回路の他の部分がQVIAC(またはQVIABまたはQVIAE)関数によって指定された特定の番号の付いたレイヤに接続しない場合、そのレイヤに接続するポートは無用である。その場合、ポートは削除され、トランジスタのいま取り外されたリード線は、ハイライトされた構成要素の正の端部がそれに接続されたノードに再び取り付けられる。この削除および再取付けは、回路のネットリストの生成の直前に行われる。
第83図に、QVIAC7関数を第4図の修正可能なワイヤZ0に適用し、それによりノード401、ノード402、ポート7の間に配置されたトランジスタQ6を生成した結果を示す。トランジスタのベースはハイライトされた構成要素の負の端部(ノード401)に接続され、エミッタはその正の端部(ノード402)に接続される。コレクタはポート7に接続される。
QVIAB関数
(QVIAB0、...、QVIAB7と呼ばれる)0引数関数のQVIAB(「ベースからビアを有するトランジスタ」)グループ中の8つの関数は、ハイライトされた構成要素を、そのベースが番号付きポート(ビア)に接続されたトランジスタに変化させる。書込みヘッドはQVIAB関数の実行によって失われる。
QVIAB関数は、ハイライトされた構成要素を、そのエミッタがハイライトされた構成要素の負の端部に接続され、そのコレクタがハイライトされた構成要素の正の端部に接続され、そのベースが特定の番号の付いたポートに接続されたトランジスタと交換する。
第84図に、QVIAB7関数を第4図の修正可能なワイヤZ0に適用し、それによりノード401、ノード402、ポート7の間に配置されたトランジスタQ6を生成した結果を示す。
QVIAE関数
(QVIAE0、...、QVIAE7と呼ばれる)0引数関数のQVIAE(「エミッタからビアを有するトランジスタ」)グループ中の8つの関数は、ハイライトされた構成要素を、そのエミッタが番号付きポート(ビア)に接続されたトランジスタに変化させる。書込みヘッドはQVIAE関数の実行によって失われる。
QVIAE関数は、ハイライトされた構成要素を、そのコレクタがハイライトされた構成要素の負の端部に接続され、そのベースがハイライトされた構成要素の正の端部に接続され、そのエミッタが特定の番号の付いたポートに接続されたトランジスタと交換する。
第85図に、QVIAE7関数を第4図の修正可能なワイヤZ0に適用し、それによりノード401、ノード402、ポート7の間に配置されたトランジスタQ6を生成した結果を示す。
QT関数
(QT0、...、QT11と呼ばれる)4引数QT(「トランジスタ」)関数のグループ中の12個の各関数は、ハイライトされた構成要素が現在接続されているノードの1つの代わりにトランジスタを挿入させる(またハイライトされた構成要素を削除する)。各QT関数はまた5つの新しいノードおよび3つの新しい修正可能なワイヤを生成する。QT関数を実行した後、3つの新しい修正可能なワイヤを指す3つの書込みヘッドがある。QT関数の適用によって生じる構成要素値はトランジスタのコレクタの初期条件(例えば9ボルト)である。新しいトランジスタ自体上には書込みヘッドがないので、トランジスタは、(以下で説明するCUT関数がその後その削除を引き起こさない場合)QT関数によって挿入された後開発中の回路中に残る。
12個のQT関数は、元のハイライトされた構成要素の極性、回路中の既存の構成要素の数、およびハイライトされた構成要素がそれに接続されたノードの度数に応じてわずかに異なる形で動作する。
まずハイライトされた構成要素の両方のノード(すなわち第4図のノード401および402)が度数3である場合について考えてみる。理解できるように、12個のQT関数はこの状況で12個の明確な結果をもたらす。
第1の6つの関数(QT0、...、QT5)はトランジスタを、ハイライトされた構成要素の正の端部がそれに接続されたノードに挿入し、第2の6つの関数(QT6、...、QT11)はトランジスタを負の端部に挿入する。すなわちQT0、...、QT5はハイライトされた構成要素の正の端部がそれに接続されたノードを「活動」ノードになるようにし、QT6、...、QT11はハイライトされた構成要素の負の端部がそれに接続されたノードを「活動」ノードになるようにする。
これら2つのサブセット中の6つの関数の動作は、「活動」ノード(すなわち、トランジスタに変換すべきノード)に接続された回路中の3つの既存の樺成要素の番号付けに依存する。3つのオブジェクトの6つの可能な置換があるので、新しいトランジスタのコレクタ、ベース、エミッタを接続する6つの可能な方法がある。
表2に、新しいトランジスタのどのリード線(コレクタ、ベース、エミッタ)を度数3の活動ノードの最小番号、中間番号、最大番号の既存の構成要素に接続すべきかを示す。
例えば、QT0関数が第4図の修正可能なワイヤZ0に適用されたと仮定する。QT0は第1のサブセット(すなわちQT0、...、QT5)中にあるので、QT0は第4図のハイライトされた構成要素Z0の正の端部に対して動作する。すなわち、ノード402はトランジスタに変換される「活動」ノードである(そしてノード401は「非活動」ノードである)。第4図の活動ノード402の3つの既存の構成要素はZ0、C4、およびC5である。表2は、新しいトランジスタのコレクタを最小番号構成要素に接続し、ベースを中間番号構成要素(すなわち第4図のC4)に接続し、エミッタを最大番号構成要素(すなわち第4図のC5)に接続するよう指定する。
第10図に、QT0関数を第4図の修正可能なワイヤZ0に適用し、それによりトランジスタQ6を生成した結果を示す。
第1に、QT0関数は、3つの新しい修正可能なワイヤZ7、Z8、Z9、および5つの新しいノード(1014、1015、1016、1017、1018)を生成する。
第2に、第1の新しいワイヤ(Z7)は非活動ノード(すなわちノード401)および新しいトランジスタの1つのリード線を新しいノード1018に接続する。この新しいワイヤの極性は、非活動ノードに接続された元の梼成要素の端部によって(すなわち元の構成要素Z0の負の端部がノード401にあったことによって)確立される。したがって、ノード401はZ7の負の端部に接続され、ノード1018はZ7の正の端部に接続される。
第3に、活動ノード(すなわちノード402)は2つの新しいノード1014および1016に分割される。
第4に、第2の新しいワイヤ(Z8)は新しいノード1014を新しいトランジスタの1つのリード線の新しいノード1015に接続する。この新しいワイヤは、元のハイライトされた構成要素の正または負の端部が活動ノード(すなわちノード402)で正であったか、または負であったかに基づいてその極性を得る。
第5に、第3の新しいワイヤ(Z9)は新しいノード1016を新しいトランジスタの1つのリード線の新しいノード1017に接続する。この新しいワイヤは、新しいワイヤZ8と同じ形でその極性を得る。
第6に、新しいトランジスタのコレクタ・リード線、ベース・リード線、エミッタ・リード線はそれぞれ、実行中の特定のQT関数に対して表2中のエントリによって指定された形で新しいノード1018、1015、1017に接続される。
以下は、このQT0関数によって生成されたネットリスト中の2つの行の一例である。
Q6 1018 1015 1017 Q2N3904
.IC V(1018)=9ボルト
第1の行の解釈は、トランジスタQ6のコレクタがノード1018に接続され、トランジスタのベースがノード1015に接続され、トランジスタのエミッタがノード1017に接続され、トランジスタのモデルがQ2N3904モデルであるということである。任意選択の第2の行の解釈はコレクタ(ノード1018)の任意選択の初期条件が9ボルトであるということである。
第2の例のように、QT8関数が第4図の修正可能なワイヤZ0に適用されたと仮定する。QT8は第2のサブセット(すなわちQT6、...、QT11)中にあるので、QT8はハイライトされた構成要素Z0の負の端部に対して動作する。すなわち、ノード401はトランジスタに変換される「活動」ノードであり、ノード402は「非活動」ノードである。ノード402の3つの既存の構成要素はZ0、C2、およびC3である。
表2は、新しいトランジスタのベースを最小番号構成要素(すなわちZ0)に接続し、コレクタを中間番号構成要素(すなわちC2)に接続し、エミッタを最大番号構成要素(すなわちC3)に接続することを示す。第11図に、QT8関数を第4図の修正可能なワイヤZ0に適用し、それによりトランジスタQ6を生成した結果を示す。
次に、ハイライトされた構成要素のただ1つのノードが度数3であり、かつ他のノードが度数2である場合について考えてみる。この場合、度数3の一方のノードは活動ノードであり、他方のノードは非活動ノードである。表2は前と同じ形で適用される。
最後に、ハイライトされた構成要素の両方のノードが度数2である場合について考えてみる。第12図に度数2の2つのノードに接続されたハイライトされた構成要素を示す。
前のように、第1の6つの関数(QT0、...、QT5)はトランジスタを、ハイライトされた構成要素の正の端部がそれに接続されたノードに挿入し、第2の6つの関数(QT6、...、QT11)はトランジスタを負の端部に挿入する。
表3に、新しいトランジスタのどのリード線(コレクタ、ベース、エミッタ)をハイライトされた構成要素に接続するか、およびどの2つのリード線を活動ノードの他の構成要素(すなわちハイライトされた構成要素以外の構成要素)に接続すべきかを示す。
例えば、QT7(またはQT10)関数が第12図のハイライトされた構成要素に適用されたと仮定する。QT7は第2のサブセット(すなわちQT6、...、QT11)中にあるので、QT7はハイライトされた構成要素Z0の負の端部に対して動作する。すなわち、ノード1201はトランジスタに変換される「活動」ノードであり、ノード1202は「非活動」ノードである。活動ノード1201の2つの既存の構成要素はR1およびC2である。表3は、新しいトランジスタのベースをハイライトされた構成要素(すなわちR1)に接続し、コレクタおよびエミッタをともに活動ノード(すなわちC2)に接続された他の構成要素に接続することを示す。第13図に、QT7関数を第12図の抵抗R1に適用し、それによりトランジスタQ6を生成した結果を示す。
一実施形態では、世代0の初期ランダムポピュレーションを生成するために、グループの関数の1つを選択する累積確率が関数集合から任意の他の非グループ化関数を選択する確率に等しくなるように、関数のグループに属するすべての関数を重み付けする。したがって、例えば、12個の各QT関数は、いわば、L関数やC関数を選択する確率の1/12に等しい選択される確率を有する。一実施形態では、この重み付けの手法はまた、一般にすべての他の同様の関数グループに使用される。
図示のように、構成要素生成関数のQTグループを定義する場合に使用される一般的な原理は任意の3リード線構成要素(例えば、後述するようにオペアンプ)に適用できる。
ディジタル・インバータ関数
2引数ディジタル・インバータ(否定)関数はハイライトされた構成要素をディジタル・インバータ構成要素に変化させる。
第106図に、ディジタル・インバータ関数を第4図の修正可能なワイヤZ0に適用し、それにより第4図の修正可能なワイヤZ0の代わりにノード1および2を接続するディジタル・インバータNOT1を生成した結果を示す。
ディジタルAND関数
3引数ディジタルAND関数(AND0、...、AND11)のグループ中の12個の関数はハイライトされた構成要素を、QT関数がハイライトされた構成要素を3リード線トランジスタに変換するのと同じ形でディジタルANDゲートに変換する。ディジタルAND関数を実行した後、3つの新しい修正可能なワイヤを指す3つの書込みヘッドがある。
第107図に、ディジタルAND6関数を第4図の修正可能なワイヤZ0に適用し、それによりANDゲートAND6を生成した結果を示す。
ディジタルOR関数
3引数ディジタルOR関数(OR0、...、OR11)のグループ中の12個の関数はハイライトされた構成要素を、QT関数がハイライトされた構成要素を3リード線トランジスタに変換するのと同じ形でディジタルORゲートに変換する。ディジタルOR関数を実行した後、3つの新しい修正可能なワイヤを指す3つの書込みヘッドがある。
第108図に、ディジタルOR6関数を第4図の修正可能なワイヤZ0に適用し、それによりORゲートOR6を生成した結果を示す。
他のディジタル関数
他の純粋にディジタルな関数(例えば、NAND関数、NOR関数、排他的論理和XOR関数、非排他的論理和NXOR関数)が同様に定義できる。さらにフリップフロップなどのディジタル関数も定義できる。
回路のすべての構成要素がディジタル構成要素である場合に回路がディジタルであるという。回路のすべての構成要素がアナログである場合に回路がアナログであるという。回路がアナログ構成要素とディジタル構成要素の両方を含む場合に回路が混合アナログ/ディジタルであるという。SPICEなど電気シミュレータは、ディジタル回路、アナログ回路、混合アナログ/ディジタル回路に適合する。
ネオン電球関数
1引数NE(「ネオン電球」)関数はハイライトされた構成要素をネオン電球に変化させる。ネオン電球は、そのリード線間に67ボルト以上の電圧があるときに点灯する。この電圧は固定であり、ネオン電球は他の構成要素値を有しないので、演算実行サブツリーはない。したがって、この関数は構成継続サブツリーのみを有し、1引数関数である。
DC電源(DC)関数
2引数DC(「DC電源」)関数はハイライトされた構成要素をDC電源に変化させる。構成要素値はそのDC電圧の値である。演算実行サブツリーは浮動小数点値を戻すことによって構成要素の数値を指定する。浮動小数点値は構成要素の値と解釈される。電源の場合、解釈の方法は、抵抗、コンデンサ、インダクタなどの構成要素のそれと異なる。演算実行サブツリーは浮動小数点値を戻し、浮動小数点値は以下の形で構成要素の値と解釈される。戻り値が−100.0と+100.0の間である場合、Uはサブツリーによって戻された値に等しい。戻り値が−100.0より小さい場合、Uは−100.0ボルトDCにセットされる。戻り値が+100.0よりも大きい場合、Uは+100.0にセットされる。この手法は、構成要素に適切な狭い範囲内の電源の電圧レベルをつくり出す。
AC電源(AC)関数
6引数AC(「AC電源」)関数はハイライトされた構成要素をAC正弦波電源に変化させる。AC電源に関連する5つの構成要素値は、そのオフセット電圧、その振幅電圧、その周波数、その時間遅延(秒)、およびその減衰定数である。5つの演算実行サブツリーは、適切な形で解釈される5つの浮動小数点値を戻すことによってこれら5つの数値を指定する。電源の場合、解釈の方法は、抵抗、コンデンサ、インダクタなどの構成要素のそれと異なる。さらに、解釈の方法はこの特定の構成要素生成関数の5つの値に対して異なる。
振幅および周波数の場合、各演算実行サブツリーによって戻された浮動小数点値は以下の形で解釈される。戻り値が−100.0と+100.0の間である場合、Uはサブツリーによって戻された絶対値に等しい。戻り値が−100.0より小さいか、または+100よりも大きい場合、Uは+100.0にセットされる。
オフセット電圧、時間遅延、および減衰定数の場合、各演算実行サブツリーによって戻された浮動小数点値は以下の形で解釈される。戻り値が−100.0と+100.0の間である場合、Uはサブツリーによって戻された値に等しい。戻り値が−100.0より小さい場合、Uは−100.0にセットされる。戻り値が+100.0よりも大きい場合、Uは+100.0にセットされる。
変圧器関数
変圧器は、その2つのコイル上の交流信号の電圧をその「巻線比」に従って変化させる。例えば、変圧器は、その一次コイル上の信号の電圧を10倍に逓昇し、新しいより電圧の高い信号をその二次コイル上で使用できるようにする。「巻線比」は、一般に変圧器に対して固定であり、そのモデルの変圧器の仕様の一部である。
(TRANFORMER0、...、TRANFORMER5と呼ばれる)4引数関数のTRANFORMERグループ中の6つの関数は、8つの新しいノード、4つの新しい修正可能なワイヤを生成し、ハイライトされた構成要素を変圧器に変化させる。TRANFORMER関数を実行した後、4つの書込みヘッドがある。それらは、新しい変圧器の4つのリード線に接続された4つの新しい修正可能なワイヤを指す。新しい変圧器自体上には書込みヘッドがないので、変圧器は、TRANFORMER関数によって挿入された後開発中の回路中に残る。
変圧器の4つのリード線のうち2つのリード線は変圧器の一次コイルに関連し、他の2つのリード線は変圧器の二次コイルに関連する。すなわち、変圧器の2つのコイルは別個であり、交換できない。2つの変圧器中の交流信号の位相が重要である用途では、各コイルの各リード線も別個であり、交換できない。しかしながら、用途によっては、位相は重要でないこともあり、したがって特定のコイルの2つのリード線は交換できると考えてよい。(位相が重要である場合、12個の異なるTRANFORMER関数がある)。本明細書では後者の場合をこの議論のために仮定する。このように仮定すれば、TRANFORMER関数によって生成された6つの潜在的に異なる結果は、4つのオブジェクトを2つのオブジェクトの2つのサブセットに分割する3つの異なる方法、およびより低い電圧およびより高い電圧を2つのコイルに割り当てる2つの異なる方法から生じる。
ハイライトされた構成要素の両方のノード(すなわち第4図のノード401および402)が度数3であるとき、6つのTRANFORMER関数は6つの別個の結果を生じる。いずれかのTRANFORMER関数を第4図のノード401および402に適用した結果を以下に示す。
第1に、TRANFORMER関数は4つの新しい修正可能なワイヤZ6、Z7、Z8、Z9および8つの新しいノード3、4、5、6、14、15、16、17を生成する。
第2に、変圧器の一次コイルの2つのリード線が新しいノード3および4に接続される。
第3に、変圧器の二次コイルの2つのリード線が新しいノード5および6に接続される。
第4に、ノード1がノード14および15に分割され、ノード2がノード16および17に分割される。
表4は、ハイライトされた構成要素の両方のノードが度数3であるときに適用される。表4は、4つの新しいノード3、4、5、6のうち、ハイライトされた構成要素の正の端部の番号のより小さい構成要素、ハイライトされた構成要素の正の端部の番号のより大きい構成要素、ハイライトされた構成要素の負の端部の番号のより小さい構成要素、およびハイライトされた構成要素の負の端部の番号のより大きい構成要素に接続されるべきノードを示す。
第86図に、TRANFORMER0関数を第4図の修正可能なワイヤZ0に適用した結果を示す。
第87図に、TRANFORMER1関数を第4図の修正可能なワイヤZ0に適用した結果を示す。
第88図に、TRANFORMER2関数を第4図の修正可能なワイヤZ0に適用した結果を示す。
第89図に、TRANFORMER3関数を第4図の修正可能なワイヤZ0に適用した結果を示す。
第90図に、TRANFORMER4関数を第4図の修正可能なワイヤZ0に適用した結果を示す。
第91図に、TRANFORMER5関数を第4図の修正可能なワイヤZ0に適用した結果を示す。
ノード401が度数2である場合、ワイヤZ6およびZ8は同じ点で終端する。同様に、ノード402が度数2である場合、ワイヤZ7およびZ9は同じノードで終端する。
4つの挙動の異なるリード線を有する4リード線構成要素の構成要素生成関数の24個のバージョンがある。それを理解すれば、構成要素生成関数のTRANFORMERグループを定義する場合に使用される一般的な原理は任意の4リード線構成要素に適用できることが示せる。
TWO_LEAD_OPAMP関数
オペアンプは(通常使用される)5つのリード線を有する構成要素である。その第1の2つのリード線はオペアンプへの入力である。さらに、第3のリード線は一般に固定の正電圧源に接続され、第4のリード線は一般に固定の負電圧源に接続される。オペアンプはその2つの入力電圧間の差をとり、その差と定数A(増幅定数)との積を第5のリード線への出力として発生する。
これら2つの固定電圧源へのオペアンプの第3および第4のリード線の接続は非常に一般的であるので、これら2つのリード線が全く自由でなく、代わりにこれら2つの固定電圧源にハードワイヤされるオペアンプの特殊なバージョンについて考えることが有用である。さらに、いくつかの回路では、目的は、単に2つの入力電圧間の差をとり、次いでその差を増幅定数Aだけ増幅するのではなく、1つの入力を増幅することである。したがって、TWO_LEAD_OPAMP関数を備えることが有用である。
2引数TWO_LEAD_OPAMP分割関数(TWO_LEAD_OPAMP0およびTWO_LEAD_OPAMP1)のグループ中の2つの関数はハイライトされた構成要素をオペアンプに変換する。TWO_LEAD_OPAMP関数を実行した後、元の構成要素および2つのコピーを指す1つの新しい書込みヘッドがある。
オペアンプの増幅定数Aはそのモデルによって指定される。
TWO_LEAD_OPAMP0関数はハイライトされた構成要素を、その正の入力リード線がハイライトされた構成要素の正の端部(第92図のノード2)に接続され、その出力リード線がハイライトされた構成要素の負の端部(第92図のノード1)に接続されたオペアンプに変換する。TWO_LEAD_OPAMP1関数はオペアンプを反対の方向に挿入する。
第110図に、TWO_LEAD_OPAMP1関数を適用した結果を示す。その正の入力リード線はハイライトされた構成要素の負の端部(第92図のノード1)に接続され、その出力リード線がハイライトされた構成要素の正の端部(第92図のノード2)に接続される。
THREE_LEAD_OPAMP関数
TWO_LEAD_OPAMP関数は、2つの入力電圧間の差をとり、次いでその差を増幅定数Aだけ増幅する必要があるときには十分でない。したがって、THREE_LEAD_OPAMP関数を備えることが有用である。
3引数THREE_LEAD_OPAMP分割関数(THREE_LEAD_OPAMP0、...、THREE_LEAD_OPAMP11)のグループ中の12個の関数はハイライトされた構成要素を、QT関数がハイライトされた構成要素を3リード線トランジスタに変換するのと同じ形でオペアンプに変換する。THREE_LEAD_OPAMP関数を実行した後、3つの新しい修正可能なワイヤを指す3つの書込みヘッドがある。
オペアンプの増幅定数Aはそのモデルによって指定される。
THREE_LEAD_OPAMP関数は実際の回路の広範囲に充分である。
第109図はTHREE_LEAD_OPAMP1関数を適用した結果を示す。
FIVE_LEAD_OPAMP関数
5引数のFIVE_LEAD_OPAMP関数はオペアンプのリード線の割当ての融通性を高める。さらに、5本のリード線を備えたオペアンプの挿入方法は5本のリード線を備えたその他の構成要素、ならびにそれ以上の本数のリード線を備えた構成要素にも拡張できる原理を示している。
オペアンプへの5種類の入力を入れ替えるのには、120通りの方法が考えられる。さらに、ハイライトされた構成要素の各ノードが3度である場合、開発回路にオペアンプを挿入するのには、4種類の異なる方法がある。したがって、480のFIVE_LEAD_OPAMP関数がある。120の組合せのうち1つだけが実施形態の1つで使用され、本明細書で説明される(すなわち、オペアンプの5本のリード線がまったく入れ替えられない場合に適用される480種類のFIVE_LEAD_OPAMP関数のうちの4つ)。
構成要素作成関数のFIVE_LEAD_OPAMPグループを定義する際に使用される原理を、5本の独自のリード線を備えた任意の構成要素に適用できることがわかる。
6引数の関数のFIVE_LEAD_OPAMPグループの4つの関数(FIVE_LEAD_OPAMP0、...、FIVE_LEAD_OPAMP3という)は7つの新しいノード、5本の変更可能ワイヤを作成し、ハイライトされた構成要素を他の既存の構成要素とともにオペアンプへ変更させる。FIVE_LEAD_OPAMP関数の実行後、5つの書込みヘッドが得られる。これらは新しいオペアンプの5本のリード線に接続された新しい5本の変更可能ワイヤをポイントする。新しいオペアンプ自体には書込みヘッドが存在しないため、あるオペアンプをFIVE_LEAD_OPEAMP関数によって挿入された場合、これは開発回路に残る(後述のCUT関数がその後これを削除しない限り)。
オペアンプの増幅度Aはそのモデルによって指定される。
第92図は回路の一部を示している。その回路は、抵抗R1が書込みヘッドを有しており、端部の両方が3度のノードに接続されており、ノード3にある第2の削除対象構成要素(R7)の端部が3度である。抵抗R7が高い番号の構成要素であり、ハイライトされた構成要素(R1)のプラス端部と同じノードに接続されていることに留意されたい。
ハイライトされた構成要素の両方のノード(すなわち、第92図の抵抗R1のノード1および2)が3度である場合、4つのFIVE_LEAD_OPAMP関数(120の組合せの1つに関連付けられた)は4種類の結果を生じる。
FIVE_LEAD_OPAMP関数はハイライトされた構成要素R1、ならびにR1のノードの1つに接続された1つの付加的な構成要素を削除する。FIVE_LEAD_OPAMP0、...、FIVE_LEAD_OPAMP3の間の違いは、第2の削除対象構成要素の同一性である。たとえば、FIVE_LEAD_OPAMP1はR1のプラス端部が接続されているノード、すなわちR7における高い番号の構成要素を削除する。
FIVE_LEAD_OPAMP関数を図のノード1および2に適用した結果は次の通りである。
第1に、FIVE_LEAD_OPAMP関数は5本の新しい変更可能ワイヤZ8、Z9、Z10、Z11およびZ12、ならびに新しいノード15、16、17、18、19、20および21を作成する。
第2に、オペアンプのプラス入力は新しいノード18に接続され、オペアンプのマイナス入力は新しいノード17に接続される。
第3に、通常プラス電圧源(文献では、従来V+で表されている)に接続されるリード線は新しいノード19に接続され、通常マイナス電圧源(文献では、従来V−で表されていた)に接続されるリード線は新しいノード15に接続される。
第4に、オペアンプの出力は新しいノード15に接続される。
第5に、R1のマイナス端部が本来接続されていたノードは、新しいノード20を生じるように分割される。R1のマイナス端部が本来接続されていた低い番号の構成要素(R1を除く)はノード1に接続されたままであるが、高い番号の構成要素は新しいノード20に接続されるようになる。
第6に、第2の削除対象構成要素に接続されているノード(かつ、R1に接続されていない)(たとえば、ノード3)は、新しいノード21を生じるように分割される。ノード3が本来接続されていた低い番号の構成要素(第2の削除対象構成要素を除く)はノード3に接続されたままであるが、高い番号の構成要素は新しいノード21に接続されるようになる。
第7に、ノード2はR1および第2の削除対象構成要素の両方との接続から外される。
第8に、新しい変更可能ワイヤZ8はノード15とノード3の間に接続され、Z9はノード16およびノード21の間に接続され、Z10はノード17とノード20の間に接続され、Z11はノード1とノード18の間に接続され、Z12はノード19とノード2の間に接続される。
第93図はFIVE_LEAD_OPAMP1関数を第92図の抵抗R1に適用した結果を示す。
この関数が内容に即した構成要素作成関数の一例(本明細書ではいくつかあるもののうちの)であることに留意されたい。
SPICEにおけるサブ回路の定義
サブ回路の定義を構成要素作成関数に含めることができる。サブ回路によって、構成要素の組合せを定義してから、回路のネットリストに含めることが可能となる。
SPICEは「subckt」コマンドを使用してサブ回路の定義をサポートする。サブ回路の定義は数値パラメータを含んでいても、含んでいなくてもよい。
サブ回路の定義を自動定義関数と混同してはならない。サブ回路定義は設計する回路のプリミティブ構成要素であるかのように取り扱われる構成要素を定義する。サブ回路は遺伝的プログラミングの実行前に定義される。サブ回路はいったん定義されると、他のすべての構成要素(たとえば、抵抗、コンデンサ)とまったく同様に取り扱われる。対照的に、自動定義関数は作業実行本体が遺伝的プログラミングの実行中に動的に発展する関数定義ブランチである。自動定義関数は通常、接続作成関数と構成要素作成関数の構成要素を含んでいる。ただし、自動定義関数は数値パラメータ(ダミー引数)を含んでいても、含んでいなくてもよい。
他の構成要素作成関数
上記の構成要素作成関数は本発明の自動設計システムの汎用性と融通性を示している。多くの他の構成要素作成関数を作成して、回路の特定のクラスまたは回路要素の特定のトポロジ構成を設計する要件に対処することができる。QT関数によってすでに説明したように、構成要素を挿入して、ノード(点)を置き換えたり、回路図のエッジ(線)を置き換えることができる。内容に即したFIVE_LEAD_OPAMP関数によってすでに説明したように、5本(または、それ以上)のリード線を備えた構成要素を挿入して、ノード(点)、エッジ(線)および他の隣接する構成要素を置き換えることができる。本発明で使用される多くの他の関数は回路図の2つ以上のノード(点)またはエッジ(線)に動作したり、内容に即した態様で動作したりすることができる。
ノードの度数は上記の説明において2または3であるが、他の構成要素作成関数を、他の構成要素作成関数と関連させて、定義して、度数がもっと大きいノードに対処することができる。
接続作成関数
本発明において、接続作成関数が回路のトポロジを変更する。プログラム・ツリー内の各接続作成関数は関連するハイライトされた構成要素(変更可能ワイヤであることがしばしばある)をポイントし、何らかの態様で開発回路のトポロジを改変する。各接続作成関数はゼロ個、1個またはそれ以上の書込みヘッドを生じる。さらに、実施形態の1つにおいて、各接続作成関数は回路内のいずれか1つのノードに影響を与えるラインの数を2または3のいずれかにしておく。他の実施形態において、各接続作成関数の結果として残されるいずれか1つのノードに影響を与えるラインの数は、4以上(たとえば、4、5など)でよい。
接続作成関数のなかには内容に関係の無いものも、内容に即したものもある。接続作成関数が内容に関係のないものである場合、結果は単一のハイライトされた構成要素(すなわち、書込みヘッドを備えた構成要素)のみによって左右される。接続作成関数が内容に即したものである場合、結果は単一のハイライトされた構成要素だけではなく、回路構造の他の近傍の要素にも左右される。本発明は内容に即した関数ならびに内容に関係ない関数を実行することによって生じる複雑な構造の作成をサポートしている。
表5は電気回路に対する若干の例示的な接続作成関数をリストし、関数の短縮名、関数の長い説明的な名前、およびそのアリティを含んでいる。
表5の関数のセットは本発明の自動設計方法で用いられる接続作成関数に考えられる各種の変形を示している。多くの付加的な異なる接続作成関数を特定の問題または状況に合わせて作成することができる。
FLIP関数
2本のリード線(端部、インタフェース)を備えているすべての電気的構成要素は、これらのおのおのが指定されたプラス(+)端部および指定されたマイナス(−)端部を有している意味で、SPICEにおいて極性を有している。回路に対するネットリストの各ラインにおける最初にリストされたノードが構成要素のプラス端部に接続されたノードであり、第2にリストされたノードに構成要素のマイナス端部が接続されていることによって、極性が反映される。極性がダイオードなどの構成要素の問題であることは明らかである。極性は、エンブリオニック回路を完全に開発された回路に開発するプロセスの順次過程にこれが影響を及ぼすため、電気的挙動が構成要素の極性と無関係である構成要素(たとえば、ワイヤ、抵抗)の問題でもある。
本発明において、FLIP関数は2つの端部だけを備えている任意の構成要素の極性を逆転する方法を与える。第14図はFLIP関数を第7図のダイオードD1に適用することにより、極性が逆転されたダイオードD2を作成した結果を示す。
1引数FLIP関数はハイライトされた構成要素のプラス端部を、そのマイナス端部が現在接続されているノードへ、あるいはその逆に接続する。FLIP関数の実行後、1つの書込みヘッドは現在フリップされた元の構成要素をポイントする。
単一の5オーム抵抗のR1を記述している第4図のネットリストの部分は、以下の1行のネットリストからなっている。
R1 402 401 5オーム
ネットリストで最初にリストされたノードが構成要素のプラス端部に接続されたノードであり、したがってノード402にそのプラス端部が、ノード401にそのマイナス端部が接続されているものとして抵抗R1が示されていることを想起されたい。
FLIP関数は上記の1行のネットリストを以下のものに変更する。
R1 401 402 5オーム
SERIES分割関数
3引数のSERIES(「直列分割」)関数は1つのハイライトされた構成要素で動作し、ハイライトされた構成要素、ハイライトされた構成要素のコピー、1つの新しい変更可能ワイヤ、2つの新しいノードを含んでいる直列構成を作成する。SERIES関数の実行後、元の構成要素、新しい変更可能ワイヤ、および元の構成要素のコピーをポイントする3つの書込みヘッドが得られる。
第15図はSERIES分割関数を第4図からの抵抗R1に適用した結果を示す。第1に、SERIES関数は2つの新しいノード、1503と1504を作成する。第2に、SERIESは元の構成要素(図の例ではR1)のマイナス端部(現在、401というラベルがつけられている)を第1の新しいノード1504と名前変更し、そのプラス端部を元のノード402のままにしておく。第3に、SERIESは新しいノード1503と1504の間に新しいワイヤ(図では、Z6と呼ばれている)を作成する。新しいワイヤのマイナス端部は第1の新しいノード1503へ接続され、プラス端部は第2の新しいノード1504へ接続される。第4に、SERIESは元の構成要素の複製(図では、R7と呼ばれれている)を、新しいノード1503と元のノード401の間に挿入する。複製のプラス端部は元のノード401へ接続され、マイナス端部は新しいノード1503へ接続されている。
単一の5オーム抵抗のR1を記述している第4図のネットリストの部分は、以下の1行のネットリストからなっている。
R1 402 401 5オーム
SERIES関数は上記の1行のネットリストを以下の3行に変更する。
R1 402 1504 5オーム
Z6 1504 1503
R7 1503 401 5オーム
変更可能ワイヤ(Z6など)が開発プロセス中でだけ使用されるものであり、すべてのこれらのワイヤがSPICEに対するネットリスの最終的な作成前に編集されることに留意されたい。また、SERIES関数がワイヤに適用され、その結果が3本のワイヤ(各々がそれ自体の書込みヘッドを備えている)の直列構成であることにも留意されたい。すなわち、ワイヤは開発構成要素である。
各タイプの構成要素に対して異なるシリーズの連続した番号を維持するのではなく、構成要素に連続して包括的に番号を振るという規則(たとえば、新しい抵抗をR2ではなく、R7と呼ぶ)に留意されたい。この包括番号付け規則は次の節で説明するいくつかの関数(たとえば、PSSおよびPSL)の動作に役立つ。
PSSおよびPSL並列分割関数
並列分割関数のグループにおける2つの4引数関数(PSSおよびPSL)の各々はハイライトされた構成要素で動作して、元のハイライトされた構成要素、元の構成要素の複製、2本の新しい変更可能ワイヤ、および2つの新しいノードからなる並列構成を作成する。PSSまたはPSLの実行後、4つの書込みヘッドが得られる。これらの書込みヘッドは元の構成要素、2本の新しいワイヤ、および元の構成要素の複製をポイントする。
PSSおよびPSL関数は、元のハイライトされた構成要素が接続されているノードの度数および回路内の既存の構成要素の番号付けによっては、若干異なる態様で動作する。
第1に、ハイライトされた構成要素の両方のノード(すなわち、第4図のノード401および402)が3度である場合を考える。第4図は4個のコンデンサを含んでいる部分回路のノード401および402を接続している抵抗R1を示す。本図において、ノード401は3度であり(R1、コンデンサC2およびコンデンサC3がこれに接続されているため)、ノード402も3度である(R1、コンデンサC4およびコンデンサC5がこれに接続されているため)。第16図および第17図は、ハイライトされた構成要素の両方のノード(すなわち、ノード401および402)が3度である(第4図の場合と同様に)ときに、PSSおよびPSL関数のそれぞれを抵抗R1に適用した結果を示す。
第1に、並列分割関数は2つの新しいノード1603および1604を作成し、また2本の新しいワイヤZ6(元のノード402と新しいノード1603の間)とZ8(元のノード401と新しいノード1604の間)を作成する。両方の新しいワイヤのマイナス端部は元の構成要素のノード(すなわち、401および402)に接続され、これにより新しいワイヤの極性を確立する。
第2に、並列分割関数はハイライトされた構成要素の複製(その構成要素値のすべてを含む)を新しいノード1603および1604の間に挿入する。複製のマイナス端部はノード1604(元の構成要素のマイナス端部に接続されている新しいワイヤ、すなわちZ8によって接続されている新しいノード)に接続される。複製のプラス端部はノード1603(元の構成要素のプラス端部に接続されている新しいワイヤ、すなわちZ6によって接続されている新しいノード)に接続される。これは新しい構成要素の極性を確立する。
第3に、元の構成要素に関して新しい構成要素のトポロジを確立しなければならない。2つの並列分割関数はこれに関し、若干異なる態様で動作する。関数の名前(PSSまたはPSL)の3番目の文字(SまたはL)は、新しい構成要素のマイナス端部がハイライトされた構成要素のマイナス端部に本来接続されていた2つの構成要素のうち小さい番号(S)の構成要素に接続されているか、大きい番号(L)の構成要素に接続されているかを示す。
第4図のネットリストは次の通りである。
R1 402 401 5オーム
C2 401 10
C3 401 11
C4 402 12
C5 402 13
ネットリストで最初にリストされたノードが構成要素のプラス端部へ接続されたノードであることを想起されたい。
並列分割関数PSSは上記の元のネットリストを次の新しいネットリストへ変更する。
R1 402 401 5オーム
Z6 1603 402
Z8 1604 401
R7 1603 1604 5オーム
C2 1604 10
C3 401 11
C4 1603 12
C5 402 13
C2およびC3は元の構成要素R1のマイナス端部に本来接続されていた(元のノード1において)2つの元の構成要素である。抵抗が複製された場合、C2またはC3のいずれを新しい抵抗(元のR1とは異なる)に接続すべきかという疑問が生じる。C2の番号がC3よりも小さいため、PSS関数はC2(番号が小さい構成要素)を新しいノード1604へ接続させるとともに、C3を元のノード401へ接続されたままにする。第4図の4つのコンデンサの極性が示されておらず、上記のネットリストを提示するにあたり、C2およびC3のプラス端部が元のノード401に接続されている(したがって、1604がC2に関してネットリストで10行前にあり、401がC3に関して11行前にある)と想定しただけであることに留意されたい。PSS関数の重要な態様はC2およびC3の極性にではなく、1604がネットリストのC2の行に現れる(401はC3の行に現れる)ことにある。
PSL関数はPSS関数と若干異なる動作をする。PSL関数は元のネットリストを以下の新しいネットリストへ変更する。
R1 402 401 5オーム
Z6 1703 402
Z8 1704 401
R7 1703 1704 5オーム
C2 401 10
C3 1704 11
C4 1703 12
C5 402 13
C3の番号がC2よりも大きいため、PSL関数はC3(番号が大きい構成要素)を新しいノード1704へ接続させるとともに、C2を元のノード401へ接続されたままにする。
抵抗R1が並列構成の一部として複製された場合に生じることのできるすべてのトポロジを、PSSおよびPSL関数が作成することに留意されたい。それ故、元の構成要素のプラス端部へ接続された構成要素に対する構成要素番号の相対的な大きさを考慮する必要がない。
極性が電気的な意義を有していない構成要素(たとえば、抵抗)に対してであっても、極性が開発プロセスに影響を及ぼすことに留意されたい。もちろん、多くの構成要素(たとえば、ダイオードおよびトランジスタ)に関しても、極性は電気的に重要である。
ハイライトされた構成要素の両方のノード(すなわち、第12図のノード1201および1202)が2度である場合を考える。図示のように、PSSおよびPSLはこの場合、同一の結果を生じる。
第12図は2個のコンデンサを含んでいる部分回路のノード1201および1202を接続している抵抗R1を示す。R1は書込みヘッド(すなわち、丸印の)を有している。ノード1201は2度であり(R1およびコンデンサC2がこれに接続されているため)、ノード1202は2度である(R1およびコンデンサC4がこれに接続されているため)。第18図はPSSまたはPSLのいずれかを回路に適用した結果を示す(たとえば、ノード1201および1202が2度である第12図)。
第1に、並列分割関数は2つの新しいノード1803および1804を作成し、また2本の新しいワイヤZ6(元のノード1202と新しいノード1803の間)とZ8(元のノード1201と新しいノード1804の間)を作成する。両方の新しいワイヤのマイナス端部は元の構成要素のノード(すなわち、1201および1202)に接続され、これにより新しいワイヤの極性を確立する。
第2に、並列分割関数はハイライトされた構成要素の複製(その構成要素値のすべてを含む)を新しいノード1803と1804の間に挿入する。複製のマイナス端部はノード1804(元の構成要素のマイナス端部に接続されている新しいワイヤ、すなわち新しいワイヤZ8によって接続されている新しいノード)に接続される。複製のプラス端部はノード1803(元の構成要素のプラス端部に接続されている新しいワイヤ、すなわち新しいワイヤZ6によって接続されている新しいノード)に接続される。これは新しい構成要素の極性を確立する。
最後に、ハイライトされた構成要素のノードの1つ(たとえば、第4図のノード401)が3度であり、ノード402が2度である場合を考える。第19図は3個のコンデンサを含んでいる、ノード1901が3度であり、ノード1902が2度である部分回路のノード1901および1902を接続している抵抗R1を示す。
トポロジに関する潜在的な問題は、新しいノード2003がC4と元のノード1902の間に配置されるかどうか、および元のノード2がC4と新しいノード2003の間に配置されるかどうか(C2に関しては同様に、ノード1901およびノード2004)だけである。
第20図はPSSまたはPSLのいずれかを第19図に適用した結果を示す。
PSSおよびPSL関数が内容に即した構成要素作成関数の一例(本明細書ではいくつかあるもののうちの)であることに留意されたい。
STAR分割関数
3引数のSTAR分割関数のグループ内の2つの関数(STAR0およびSTAR1)はハイライトされた1つの構成要素で動作して、ハイライトされた構成要素、ハイライトされた構成要素の2つのコピー、および2つの新しいノードを含んでいる星状の構成を作成する。STAR関数の実行後、元の構成要素および2つのコピーをポイントする3つの書込みヘッドが得られる。
STAR関数はハイライトされた構成要素の「活動」ノードで2つのコピーを挿入する。STAR0関数の場合、活動ノードはハイライトされた構成要素のプラス端部が接続されるノードである。STAR1関数の場合、活動ノードはハイライトされた構成要素のマイナス端部が接続されるノードである。
STAR関数を説明するため、これらの関数の一方を第5図の抵抗R1のノード401および402に適用した結果を考える。この結果を第94図に示す。
第1に、STAR関数は活動ノードをノード3と名前変更する。
第2に、活動ノードの度数が3である場合、STAR関数は2つの新しいノード4および5を作成するが、活動ノードの度数が2でしかない場合には、STAR関数は新しいノード4だけを作成する。第3に、STAR関数は元の構成要素の複製の1つ(R6と呼ぶ)(その構成要素値のすべてを含む)を、新しいノード3と新しいノード4の間に挿入する(複製のプラス端部はノード3に接続されている)。第4に、活動ノードの度数が3である場合、STAR関数は元の構成要素の複製の1つ(R7と呼ぶ)(その構成要素値のすべてを含む)を、新しいノード3と新しいノード5の間に挿入する(複製のプラス端部はノード3に接続されている)。しかしながら、活動ノードの度数が2である場合、STAR関数は元の構成要素の第2の複製(R7)を新しいノード3とノード4の間に挿入する(したがって、R6およびR7はノード3および4の間で互いに並列である)。ノード4および5はR1のマイナス端部に接続している。
第94図はSTAR1分割関数を第5図の抵抗R1に適用した結果を示す。第5図のノード1がSTAR1に対する活動ノードであり、3度であることに留意されたい。
単一の5オームの抵抗R1を記述している第5図のネットリストの部分は、以下の5行からなっている。
R1 402 401 5オーム
C2 401 10
C3 401 11
C4 402 12
C5 402 13
STAR1関数は上記を以下のように変更する。
R1 402 3 5オーム
R6 3 4 5オーム
R7 3 5 5オーム
C2 4 10
C3 5 11
C4 2 12
C5 2 13
第5図のノード1が2度である場合、結果は次のようになる。
R1 402 3 5オーム
R6 3 4 5オーム
R7 3 4 5オーム
C2 4 10
C4 2 12
C5 2 13
TRIANGLE関数
6引数のTRIANGLE関数のグループの2つの関数(TRIANGLE0およびTRIANGLE1)はハイライトされた構成要素の1つで動作して、これ(および隣接する1つのノード)を排除し、かつ元のハイライトされた構成要素の3つのコピー(およびその構成要素値のすべてを含む)、3本の新しい変更可能ワイヤ、および5つの新しいノードからなる三角形構成を作成する。TRIANGLE関数の実行後、6つの書込みヘッドが得られる。これらは3つのコピーおよび3番の新しいワイヤをポイントする。
TRIANGLE関数はハイライトされた構成要素の「活動」ノードで三角形構成を挿入する。ハイライトされた構成要素の2つのノードの度数が異なっている場合、活動ノードは3度のノードである。また、TRIANGLE0関数の場合、活動ノードはハイライトされた構成要素のプラス端部が接続されているノードであるが、TRIANGLE1関数の場合、活動ノードはハイライトされた構成要素のマイナス端部が接続されているノードである。
活動ノードが3度である場合、TRIANGLE関数は第5図の抵抗R1のノード401および402に適用したときに、以下の結果を生じる。
第1に、TRIANGLE関数はハイライトされた構成要素を排除し、活動ノードをノード3と名前変更し、ノード3と受動ノードの間に新しい変更可能ワイヤZ5を作成する。
第2に、TRIANGLE関数は4つの新しいノード4、5、6および7を作成する。
第3に、TRIANGLE関数は元の構成要素の複製の1つ(R6と呼ぶ)(その構成要素値のすべてを含む)を、新しいノード3と新しいノード4の間に挿入し(複製のプラス端部はノード3に接続されている)、新しい変更可能ワイヤZ9を新しいノード4と新しいノード6の間に挿入する。
第4に、TRIANGLE関数は元の構成要素の第2の複製(R7と呼ぶ)を、新しいノード3と5の間に挿入し(複製のプラス端部はノード3に接続されている)、新しい変更可能ワイヤZ10を新しいノード5と新しいノード7の間に挿入する。
第5に、TRIANGLE関数は元の構成要素の第3の複製(R8と呼ばれる)を新しいノード4と5の間に挿入する(複製のプラス端部はノード4に接続されている)。
第95図は、活動ノード(ノード401)が3度である場合に、第5図の抵抗R1へTRIANGLE1分割関数を適用した結果を示す。
活動ノードが2度である場合、TRIANGLE関数は第5図の抵抗R1のノード401および402に適用したときに、以下の結果を生じる。
第1に、TRIANGLE関数は活動ノードをノード3と名前変更し、ノード3と受動ノードの間に新しい変更可能ワイヤZ5を作成する。
第2に、TRIANGLE関数は3つの新しいノード4、5および6を作成する。
第3に、TRIANGLE関数は元の構成要素の複製の1つ(R6と呼ぶ)(その構成要素値のすべてを含む)を、新しいノード3と新しいノード4の間に挿入し(複製のプラス端部はノード3に接続されている)、新しい変更可能ワイヤZ9を新しいノード4と新しいノード6の間に挿入する。
第4に、TRIANGLE関数は元の構成要素の第2の複製(R7と呼ばれる)を新しいノード3と5の間に挿入し(複製のプラス端部はノード3に接続されている)、新しい変更可能ワイヤZ10を新しいノード5と新しいノード6の間に挿入する。
第5に、TRIANGLE関数は元の構成要素の第3の複製(R8と呼ばれる)を新しいノード4と5の間に挿入する(複製のプラス端部はノード4に接続されている)。
第96図は、活動ノード(ノード401)が2度である場合に、第5図の抵抗R1へTRIANGLE1分割関数を適用した結果を示す。
CUT関数
0引数のCUT関数により、ハイライトされた構成要素が回路から除去される。CUT関数により、書込みヘッドが失われ、これによりこの特定の開発パスが終了する。CUT関数が発生すると、全体的なプログラム・ツリー内の開発パスに沿った開発のみが停止する。第21図はCUT関数を第4図の変更可能ワイヤに適用した結果を示す。
2引数のVIA、GNDおよびPOS関数
8つの2引数のVIA関数(本明細書では、VIA0、...、VIA7と呼ぶ)、2引数のGND(「接地」)関数、および2引数のPOS(「プラス基準電圧源」)関数により、回路の離れた部品を互いに接続することが可能となる。
2引数のVIA関数
8つの2引数のVIA関数(本明細書では、VIA0、...、VIA7と呼ぶ)の各々は、各々が後続の書き込みヘッドを有している2本のワイヤと、書込みヘッドを有していない番号がつけられたポート(「バイア」と呼ぶ)からなる直列構成を作成する。ポートは回路が置かれるウェハの8つの仮想層(0ないし7の番号がつけられている)の指定された1つに接続されている。回路の1つまたは複数の部品が特定のレイヤに接続している場合には、このような部品はすべてワイヤがこれらの間に延びているかのようにして、電気的に接続される。回路の他の部品が特定のレイヤに接続していない場合には、そのレイヤに接続している1つのポートが不要となる(また、このポートは回路のネットリストが結果として作成された場合に、削除される)。VIA関数の実行後、2つの書込みヘッドが得られる。これらは2本の新しいワイヤをポイントする。
第22図は第4図から抵抗R1にVIA0関数を適用した結果を示す。この場合、ノード401と新しいノード2203の間のワイヤZ6、およびノード402と新しいノード2203の間のワイヤZ7は、元の構成要素を置き換える。ポートM0 2204は新しいノード2303を全体的な回路の他の部品へ接続する方法を与える。ポートM0 2204は番号0のレイヤに接続される。
2引数のGND関数
2引数のGND(「接地」)関数により、回路の離れた部品を接地することが可能となる。GND関数は特別な「バイア」関数であり、回路の電気的接地に直接接続する。接地へのこの直接接続は、回路内の接地への接続を必要とするGND関数が1つしかない場合でも行われる。GND関数の実行後、2つの書込みヘッドが得られる。これらは2本の新しいワイヤをポイントする。
2引数のPOS関数
2引数のPOS(「プラス基準電圧源」)関数により、回路の離れた部品をプラス(たとえば、+5.0)の直流電圧電源に接続することが可能となる。POS関数は特別な「バイア」関数であり、プラス電源に直接接続する。この直接接続は、電源への接続を必要とするPOS関数が1つしかない場合でも行われる。POS関数の実行後、2つの書込みヘッドが得られる。これらは2本の新しいワイヤをポイントする。
3引数のTHVIA関数
8つの3引数のTHVIA関数(THVIA0、...、THVIA7と呼ぶ)の各々により、回路の離れた部品を互いに接続することが可能となる。THVIA関数はVIA関数と同様であるが、THVIA関数は3つの引数を取る。3本の新しい変更可能ワイヤが作成され、またTHVIA関数の実行後に3つの書きこみヘッドが得られる。3つの書きこみヘッドは3本の新しいワイヤをポイントする。
第23図は、第4図からTHVIA0関数をワイヤZ0に適用した結果を示す。THVIA0関数はZ0をノード401と新しいノード2303の間の新しい変更可能ワイヤZ6、ノード402と新しいノード2303の間の新しい変更可能ワイヤZ7、新しいノード2203とポートM0 2304の間の新しい変更可能ワイヤZ8と置き換える。それ故、THVIA0 2304はノード2303を全体的な回路の他の部品へ潜在的に接続する方法を与える。
3引数のTHGND関数
3引数のTHGND関数により、回路の離れた部品を接地することが可能となる。THGND関数は特別な「バイア」関数であり、回路の電気的接地に直接接続する。接地へのこの直接接続は、回路内の接地への接続を必要とするTHGND関数が1つしかない場合でも行われる。THGND関数の実行後、3つの書込みヘッドが得られる。これらは3本の新しいワイヤをポイントする。
3引数のTHPOS関数
3引数のTHPOS関数により、回路の離れた部品をプラス(たとえば、+5.0)の直流電圧電源に接続することが可能となる。THPOS関数は特別な「バイア」関数であり、プラス電源に直接接続する。この直接接続は、電源への接続を必要とするTHPOS関数が1つしかない場合でも行われる。THPOS関数の実行後、3つの書込みヘッドが得られる。これらは3本の新しいワイヤをポイントする。
NOP関数
1引数のNOP関数はハイライトされた構成要素に何の影響も及ぼさないが、この関数が全体的なプログラム・ツリーの他の開発パスに関して現れる開発パスにおける活動を遅らせ、これによって構成プロセスによって生じる全体的な結果に影響を及ぼす(恐らくは)。NOP関数の実行後、1つの書込みヘッドは元のハイライトされた構成要素をポイントする。
END関数
0引数のEND関数により、ハイライトされた構成要素が書きこみヘッドを失い、これによりこの特定の開発パスを終了させる。END関数が発生すると、全体的なプログラム・ツリー内の開発パスに沿った開発のみが停止する。
他の接続作成関数
上記の接続作成関数は本発明の自動設計システムの汎用性と融通性を示している。多くの他の接続作成関数を使用して、回路の特定のクラスまたは回路要素のトポロジ構成を設計する要件に対処することができる。
他の関数
QT関数によってすでに説明したように、構成要素を作成して、ノード(点)を置き換えたり、回路図のエッジ(線)を置き換えることができる。さらに、ノードの度数は上記の説明において2または3であるが、他の構成要素作成関数を、他の接続作成関数と関連させて、定義して、度数がもっと大きいノードに対処することができる。
演算実行関数
構成要素作成関数の演算実行サブツリーは演算実行関数と終端を合成したものである。評価した場合、演算実行サブツリーは数値構成値となる(解釈後に)浮動小数点値を返す。
表6は演算実行関数および終端を示す。
ただし、「R」は−1.000と+1.000の間の浮動小数点ランダム定数を表す。
実施形態の1つにおいて、乗算および除算(ならびに、指数関数および対数関数などのその他の関数)は、演算実行サブツリーによって返される浮動小数点値が対数目盛で解釈されるため、演算実行関数のセットには含まれない。しかしながら、所望する場合、あるいは特定のアプリケーションで必要とされる場合には、他の演算実行関数を追加することができる。
演算実行サブツリーの関数は深さ優先順序で実行される(LISPなどのプログラミング言語にしたがって)。
ADF0などの自動定義関数およびARG0などのダミー変数(仮パラメータ)については次節で検討する。これらを特定の問題で使用しても、使用しなくてもよく、また演算実行サブツリーで使用しても、使用しなくてもよい。
自動定義関数
自動プログラミングおよび自動化設計の問題には、規則性、対称性、均一性、類似性、パターン、およびモジュラ性などがある。本発明における自動プログラミングおよび自動化設計の手法は問題環境に固有な規則性、対称性、均一性、類似性、パターン、およびモジュラ性を、再使用とパラメータ化とによって活用する階層機構を組み込んだものである。サブルーチンが通常のコンピュータ・プログラム内でこれを行う。
メイン・プログラムと、1つまたは複数の再使用可能で、パラメータ化され、階層的に呼び出されるサブプログラムとからなる複数パーツ・プログラムをどのように開発するかを記述することは、当技術分野において周知である。たとえば、米国特許第5343554号、およびGenetic Programming II: Automatic Discovery of Reusable Programs(Koza、1994年)という文献を参照されたい。
自動定義関数(ADF)は作業実行本体が遺伝的プログラミングの実行中に動的に発展させられ、作業実行本体が同時に発展する呼出し側メイン・プログラム(サブプログラムを呼び出すための)によって呼び出される関数である(サブルーチン、サブプログラム、DEFUN、プロシージャ、またはモジュールと呼ばれることもある)。自動定義関数が使用されている場合、ポピュレーションにおけるプログラムは1つ(または、複数)の再使用可能な関数定義ブランチ(すなわち、自動的に定義された関数)の階層を1つ(または、複数)のメイン結果作成ブランチとともに有している。自動定義関数は1つまたは複数のダミー引数(仮パラメータ)を有していることができる。通常、自動定義関数はこれらのダミー引数のさまざまなインスタンス化で再使用される。実行中に、遺伝的プログラミングは全体的なプログラム関数定義ブランチ内にさまざまなサブプログラムを、結果作成ブランチ内にさまざまなメイン・プログラムを、関数定義ブランチ内での自動定義関数のダミー引数のさまざまなインスタンス化を、およびブランチ間でのさまざまな階層参照を発展させる。
自動定義関数が遺伝的プログラミングで使用されている場合、ポピュレーションの初期乱数世代が生成され、したがって個々のプログラムがブランチの特定のアーキテクチャ構成からなる制約構文構造を有する。実施形態の1つにおいて、クロスオーバを行う場合、親コンピュータ・プログラムの各潜在的クロスオーバ・ポイントに、ブランチ全体をベースとしてタイプを割り当てるか(ブランチ・タイピングと呼ぶ)、あるいは潜在的なクロスオーバ・ポイントの下のサブツリーの実際の内容に基づいてタイプを割り当てるかする(ポイント・タイピングと呼ぶ)。クロスオーバを構造を保存する態様(クロージャを与えて)で行って、子孫の構文的妥当性を確保する。
設計の点で、自動定義関数は、問題環境に固有な規則性、対称性、均一性、類似性、パターン、およびモジュラ性を、再使用とパラメータ化とによって活用する方法を与える。それ故、複雑な構造を設計するために遺伝的プログラミングを実行する際に、自動定義関数を含めることが望ましい。
表7は自動定義関数と関連して使用される潜在的な関数および終端をリストしたものである。自動定義関数の最大値MAXadfと、自動定義関数が有することのできる引数の最大値MAXargがある。
演算実行サブツリーが自動定義関数を呼び出して、数値計算の結果を再使用できることに留意されたい。
プログラム・ツリーの実行中に自動定義関数に遭遇した場合、自動定義関数およびプログラム・ツリー内での関数の実行順序は、自動定義関数全体がプログラム・ツリーに挿入されたかのようなものとなる。
自動定義関数は2種類の異なる態様で使用される。第1に、これらを接続作成関数および構成要素作成関数で構成し、トポロジを作成し、構成要素をトポロジに挿入するプロセスの一部として呼び出すことができる。第2に、これらを演算関数で構成し、構成要素寸法決定プロセスの一部として演算実行サブツリーから呼び出すことができる。
エンブリオニック回路から回路を開発する詳細な例
本節ではエンブリオニック回路から回路を開発するプロセスの例を示す。本節で使用される個々のプログラム・ツリーは低域フィルタの設計に関する最初の節で後述する問題を1回実行した世代0からの最良の世代回路である。このプログラム・ツリーの第1の結果作成ブランチは25の点(すなわち、関数および終端)を有しており、以下に示されている。
第2の結果作成ブランチは5つの点を有しており、以下に示されている。
第24図は番号付きブランチを備えたルート化され、ポイントにラベルのついたツリーとして、この回路構成プログラムを示す。接続LIST関数2401は2つの結果作成ブランチを接合する。第1の結果作成ブランチはC関数2402をルートとしており、第2の結果作成ブランチはFLIP関数2403をルートとしている。
第25図は第24図のプログラム・ツリーの最上位の3つの点をこの問題のエンブリオニック回路とともに示す。第24図は最初の2つの書込みヘッドも示す。一方の書込みヘッドは当初C関数2402と関連付けられ、変更可能ワイヤZ0をポイントしており、他方は当初FLIP関数2403と関連付けられ、変更可能ワイヤZ1をポイントしている。
プログラム・ツリーを実行すると、ツリーのルートにおける接続LIST関数2401の下の結果作成ブランチの関数が幅優先順序で実行され、各演算実行サブツリー(ポイント2404をルートとする7ポイント・サブツリーなど)が、構成要素作成関数に遭遇したときに、深さ優先順序で直ちに実行される。それ故、第24図のC(コンデンサ)関数2402が最初に実行される。この場合、7ポイント演算実行サブツリー2404が深さ優先方式で全体として直ちに実行されて、コンデンサ関数Cが必要とする数値構成要素値を供給する。次いで、幅優先順序が再開され、FLIP関数2403が実行される。
第26図は第25図のエンブリオニック回路の変更可能ワイヤZ0に作用して、新しいコンデンサC3を作成するC関数2402を実行した結果を示す。7ポイントサブツリー
(−0.963(−(−−0.875−0.113)0.880))
(ポイント2404をルートとする)は演算実行サブツリーであり、したがって、C関数2402後に全体として直ちに実行される。この7ポイント・サブツリーは2.605に対して評価され、解釈され、評価されたときに(上述した態様で)、コンデンサC3の構成要素値として403nFを確立する。C関数2402の実行後、一方の書き込みヘッドはC3をポイントする。
第24図の全体的なプログラム・ツリーの第2の結果作成ブランチのFLIP関数2403が、ここで実行される。第27図は変更可能ワイヤZ1(そのプラス端部が元はノード2502にあった)に作用して、その極性を変更する(マイナス端部がノード2502にあるように)FLIP関数2403を実行した結果を示す。極性の変更はワイヤ(または、コンデンサ、抵抗、またはインダクタ)に対して電気的な影響を持たないが、極性の変更は多くの構成要素(たとえば、ダイオード)に影響を及ぼす。いずれにせよ、極性はその後に実行できるある種の関数(たとえば、SERIES分割)によって生じるトポロジに影響を及ぼす。FLIP関数の実行後、一方の書き込みヘッドはZ1をポイントする。
プログラム・ツリーの幅優先サーチの実行はここで、第24図のツリーの第3レベルまで進む。7ポイント演算実行サブツリー2404が全体としてすでに実行されているため、SERIES関数2405が次に実行される。
第28図はコンデンサC3に作用して、コンデンサC3、新しいノード2806、変更可能ワイヤZ4、新しいノード2807、および新しいコンデンサC5(C1と同じ構成要素値403nFを有している)からなる直列構成を作成するSERIES関数2405の実行結果を示す。SERIES関数の実行後、3つの書込みヘッド(C3、Z4、およびC5をポイントする)、ならびにZ1をポイントする1つの書き込み静止ヘッドが得られる。
全体的なプログラム・ツリーの第2の結果作成ブランチのNOP(「ノー・オペレーション」)関数2406が、ここで実行される。その唯一の影響は第1の結果作成ブランチに関する、第2の結果作成ブランチにおける以降の関数の実行のタイミングに対するものである。
実行はここで第24図のプログラム・ツリーの第4レベルへ進む。
第29図はコンデンサC3(そのプラス端部が元はノード2503にあった)に作用して、その極性を変更する(マイナス端部がノード2503にあるように)FLIP関数2409を実行した結果を示す。FLIP関数を実行すると、一方の書込みヘッドはC3をポイントする(また、書込みヘッドは依然Z4、C5およびZ1をポイントしている)。
第30図は変更可能ワイヤZ4に作用して、変更可能ワイヤZ4、新しいノード3008、変更可能ワイヤZ6、新しいノード3009、およびZ5からなる直列構成を作成するSERIES関数2410の実行結果を示す。このSERIES関数の実行後、6つの書込みヘッド(C3、Z4、Z6、C5、C5およびZ1をポイントする)が得られる。
第31図はコンデンサC5に作用するL関数2411の実行結果を示す。L関数はコンデンサC5を新しいインダクタL7に変換する。この3ポイント・サブツリー(2419をルートとする)の戻り値
(−−0.640 0.749)
は−1.389である。解釈された後、この戻り値は新しいインダクタL7に対する構成要素値として0.041マイクロヘンリーを確立する。L関数の実行後も、6つの書込みヘッドが得られる。
全体的なプログラム・ツリーの第2の結果作成ブランチのL関数2412が、ここで実行される。第32図は変更可能ワイヤZ1に作用して、インダクタL8を作成する第2の結果作成ブランチからのL関数2412の実行結果を示す。解釈されると、定数−0.657(2421)はL8に対する構成要素値として0.220マイクロヘンリーを確立する。このL関数の実行後も、6つの書込みヘッドが得られる。
実行はここで第24図のプログラム・ツリーの第5レベルへ渡される。
END関数(515というラベルのつけられている)がここで実行され、これによりこの特定のパス(第24図にあるツリーのポイント2401から始まり、ポイント2402、2405および2409を通ってポイント2415まで延びている)に対する開発プロセスを終了させる。このパスに関連付けられた書込みヘッドが排除されて、存在している書込みヘッドは5つだけとなる。
FLIP関数2416はワイヤZ4で動作するため、電気的な影響を及ぼさない。
第33図は変更可能ワイヤZ5に作用して、新しいインダクタL9を作成するL関数2417の実行結果を示す。解釈されると、定数−0.277(2426)はインダクタL9に対する構成要素値として0.528マイクロヘンリーを確立する。
END関数2418がここで実行され、これによりZ5に対する開発プロセスを終了させ、この構成要素に関連付けられた書込みヘッドを排除させる。それ故、存在する書込みヘッドは4つだけとなる。
第34図は既存の0.47マイクロヘンリーのインダクタL7に作用して、代わりに新しいインダクタL10を作成する第1の結果作成ブランチからのL関数2420の実行結果を示す。解釈されると、定数−0.123(2430)は新しいインダクタL10に対する構成要素値として0.753マイクロヘンリーを確立する。
ポイント2422におけるEND関数がここで実行され、これにより第2の結果作成ブランチを完了する。
実行がここで第24図のプログラム・ツリーの第6(最下部)のレベルへ進む。ポイント2425,2427および2431におけるEND関数がここで実行され、これによりZ4、L9およびL10における書込みヘッドを排除し、回路の開発全体的プロセスを完了する。残っている書込みヘッドはなくなる。
第35図はすべてのここでは外来のワイヤ(すなわち、Z4およびZ5)ならびにすべてのここでは外来のノード(すなわち、3008および3009)を実行した後の世代0の最良の回路を示す。
実施形態の1つにおいては、プログラム・ツリーを幅優先方式で横切っている(直ちに実行される演算実行サブツリーを除く)。この横断方法はこのプロセスに関する現在の経験に基づくと、有利なものと思われる。しかしながら、このプロセスは深さ優先サーチなどの他の手法を使用して実施することもできる。
低域LCフィルタの設計
理想的な低域フィルタは指定された周波数よりも低いすべての周波数を通すが、すべての高い周波数を停止するものである。理想的な高域フィルタは逆のことを行う。理想的な帯域フィルタは1つまたは複数の指定された範囲のすべての周波数を通すとともに、すべての他の周波数を停止する。理想的な停止帯域フィルタは1つまたは複数の指定された範囲のすべての周波数を停止するとともに、すべての他の周波数を通す。実用的なフィルタで理想的な性能を達成するものはない。
フィルタ設計のスタート・ポイントは通過帯域および停止帯域に対する周波数範囲をユーザが指定することである。さらに、ユーザは最大通過帯域リプル(すなわち、通過帯域内で許容されるわずかな変動)および最小停止帯域減衰(すなわち、停止帯域で要求される、信号の大きい閉塞度)またはロールオフなどのその他の要因を指定することができる。
ユーザがより多くの要件およびより厳格な制約を課すにつれて、フィルタの設計はますます困難となっている。実用上、ユーザは、たとえば、回路の電力消費量、回路内の構成要素の数、構成要素のコスト、すべての構成要素が占める表面積、あるいは温度に対する回路の感度を含む付加的な設計要件を課すことができる。
振幅が2ボルトのAC入力信号でインダクタおよびコンデンサを使用したフィルタを設計することを目標とする、回路設計の問題を考える。回路は内部(電源)抵抗が1000オームで、1000オームの負荷抵抗で終端している電源によって駆動されるものとする。フィルタは970ミリボルトと1ボルトの間の電圧値で1000ヘルツ未満の通過帯域を有しており、0ボルトと1ミリボルトの間の電圧値で2000Hz超の停止帯域を有しているものとする。
デシベルは相対電圧の無単位の尺度である。デシベルは特定のプローブ・ポイントにおける電圧と基準電圧(本明細書において、これは常に1.0ボルトである)の間の比の常用対数を20倍したものと定義される。それ故、上記の要件は最大0.3デシベルの通過帯域リプルおよび少なくとも60デシベルの停止帯域減衰に対する要件と書き換えることができる。
実施技術者にはこれらの要件が複雑度5のチェブィシェフ−コウア(Chebychev−Cauer)フィルタによって満たされることを認識している。
低域LCフィルタの準備ステップ
回路設計の問題に遺伝的プログラミングを適用する前に、7つの準備ステップをユーザが行うのが普通である。これらのステップは、(1)展開対象のプログラムの終端を特定し、(2)展開対象のプログラムに含まれている原始関数を特定し、(3)所与のプログラムが当面の問題をどの程度解決するかを評価するための適合尺度を作成し、(4)いくつかの制御パラメータ(特に、ポピュレーション規模および実行すべき世代の最大数)を選択し、(5)終了基準と結果指定方法とを決定し、(6)全体的なプログラムのアーキテクチャを決定し、(7)問題に適したエンブリオニック回路を特定することを含んでいる。
以下の検討では、準備ステップ(7)および(6)を検討してから、他のステップを検討する。
エンブリオニック回路
低域LCフィルタを設計する問題が電源抵抗と負荷抵抗を備えた1入力1出力回路を必要としているため、第3図のエンブリオニック回路はこの例示的な問題に適したものである。
プログラムのアーキテクチャ
この例示的な問題には、自動定義関数は使用されない。
エンブリオニック回路が当初2つの書込みヘッド−結果作成ブランチの各々と関連付けられたもの−を有しているため、各全体的なプログラム・ツリーには2つの結果作成ブランチが存在する。それ故、ポピュレーションにおける各全体的なプログラム・ツリーのアーキテクチャは、LIST関数によって接合された2つの結果作成ブランチからなっている。
関数および終端のセット
終端セットおよび関数セットはこの例示的な問題に対するポピュレーションにおけるプログラム・ツリーの結果作成ブランチの両方に同一のものである。
各ブランチは第2図に示すような拘束構文構造にしたがって作成される。
関数はこの例示的な問題の場合、3つのカテゴリーに分けられる。
(1)エンブリオニック回路から回路のトポロジを作成する接続作成関数。
(2)回路内のワイヤ(およびその他の構成要素)を指定された構成要素に変換する構成要素作成関数。
(3)一緒になって回路の各構成要素に対する数値を指定する(寸法決定する)演算実行関数および数値終端。
演算実行サブツリーは演算関数とランダム定数とを含んでおり、構成要素の数値を指定する。構築継続サブツリーは開発プロセスを継続する。この問題で使用される構成要素(すなわち、インダクタおよびコンデンサ)の各々が1つの数値構成要素値を取るため、各構成要素作成関数には1つの演算実行サブツリーだけが関連付けられている。
接続作成関数は1つまたは複数の構築継続サブツリーを有している。しかしながら、接続作成関数は演算実行サブツリーを有していない。
この例示的な問題の場合、各構築継続サブツリーに対する関数セットFccsは次の通りである。
Fccs={C,L,SERIES,PSS,FLIP,NOP,GND,VIA0,VIA1,VIA2,VIA3,VIA4,VIA5,VIA6,VIA7},
これはそれぞれ2、2、3、4、1、1、2、2、2、2、2、2、2、2および2個の引数を取る。
各構築継続サブツリーに対する終端セットTccsは次のものからなる。
Tccs={END}
各演算実行サブツリーに対する関数セットFapsは次の通りである。
Faps={+,−}
各々は2つの引数を取る。
各演算実行サブツリーに対する終端セットTapsは次の通りである。
Taps={R}
ただし、「R」は−1.000と+1.000の間の浮動小数点ランダム定数を表す。
適合尺度
エンブリオニック回路、プログラム・アーキテクチャ、関数および終端セット、ならびに上述の拘束構文構造は任意の1入力1出力LC回路に適用できることを留意されたい。評価プロセス(回路構築プログラム・ツリーのサーチ空間における)を所望のフィルタを構築するプログラムへ送るのは、ユーザが与える適合尺度である。換言すると、所望の回路構造は適応度から得られる。
第1B図は回路を設計する全体的なプロセスの流れ図である。RUNは現行の経路数であり、Nは作成される経路の最大数である。変数GENは現在の世代番号を指す。変数Mはポピュレーション規模である。指標iはポピュレーションにおけるの現行の個体を指す。
第1B図を再度参照すると、本発明の全体的なプロセスは処理論理によって制御されるいくつかの独立した経路を含んでおり、プロセスは処理ブロック1002で0に初期化される経路数RUNで開始される。処理論理はハードウェアおよび/またはソフトウェア、専用論理などを含んでいることができる。各経路は多くの世代からなっており、世代番号GENは処理ブロック1004において0に初期化される。
世代0において、第1のステップは「経路に対する初期ポピュレーションを作成する」(処理ブロック1006)であり、これは個体数Mを作成する(通常はランダムに)。
処理ブロック1008における「終了基準が実行に対して満たされる」に関するテストは通常、世代のある最大数Gに達したこと、または何らかの問題固有の基準を満たすことのいずれかに基づいている。「終了基準が実行に対して満たされる」に対するテストが満たされた場合(処理ブロック1008)、次のステップは処理ブロック1010における「経路に対して結果を指定する」である(通常、世代にわたって達成される最良の個体を指定することによって)。次いで、経路数RUNが処理ブロック1012で増分される。経路数RUNが実行される最大経路数Nに等しいことという処理ブロック1014におけるテストを満たした場合、処理は「終了」(処理ブロック1016)で終了する。それ以外の場合、処理は処理ブロック1004を次に行うことによって他の経路へ進む。
処理論理は次いで、ポピュレーションの個体に対する2つの主反復ステップを含んでいる世代反復ステップを実行する。これら2つの主反復ステップの第1のもの(処理ブロック1020で始まる)において、ポピュレーションの各個体iの適合が判定される。これら2つの主反復ステップの第2のもの(処理ブロック140で始まる)において、遺伝操作が行われる。
ポピュレーションにおける個体に対する2つの主反復ステップのうち第1のものは、ポピュレーションにおける個体の指標iを初期化することから始まる(処理ブロック1020)。ステップ1021において指標iを、これがポピュレーション規模Mと等しいか(あるいは、超えているか)どうかについてテストされる。そうでない場合には、ポピュレーションにおける各個体iが適合していると判定される。原則として、適応度の判定は暗黙のものであっても、明示のものであってもよく、また適応度の数値を生じても、生じなくてもよい。この流れ図は適応度の判定が明示的なものであり、適応度の数値が決定されている場合に基づいている。遺伝的プログラミングを回路の設計に使用している場合、適応度の測定は4つのステップからなっている。
(1)個々の回路構築プログラム・ツリーをエンブリオニック回路に適用して、完全に開発された回路を作成する(処理ブロック1022)。
(2)完全に開発された回路の記述を作成する(処理ステップ1024)。
(3)回路を分析して(実環境において、あるいは記述に基づいて回路のシミュレーションを行うことによって)、その挙動を作成する(処理ブロック1026)。
(4)適応度尺度を挙動に適用して、回路の適合値を作成する(処理ブロック1028)。
次いで、ポピュレーションにおける個体の指標iを処理ブロック1030で増分する。指標iがポピュレーション規模Mと等しい(あるいは、これを超えている)ことという処理ブロック1021におけるテストを満たす場合には、ポピュレーションにおける個体に対するこれらの主反復ステップの第1のものが終了し、処理は処理ブロック1040で継続する。
ポピュレーションにおける個体に対する2つの主反復ステップのうち第2のものは、ポピュレーションにおける個体の指標iを初期化することから始まる(処理ブロック1040)。指標iがポピュレーション規模Mに等しいか(あるいは、これを超えているか)どうかについてテストされる。そうでない場合には、「遺伝操作を選択する」ステップ(処理ブロック1046)を実行する。
「遺伝操作を選択する」ステップ(処理ブロック1046)は見込みに基づくものである。繁殖、クロスオーバ、突然変異、ブランチの複製、引数の複製、ブランチの削除、引数の削除、ブランチの作成、および引数の作成についての操作を選択する蓋然性の合計は1である。それ故、9つの選択肢のうちの1つが選択される。
9つの選択肢の各々は選択ステップから始まる。たとえば、繁殖の遺伝操作の場合、「選択1個体」ステップが選択ステップである(処理ブロック1058)。この選択ステップは蓋然的に比較的高い適応度値によってポピュレーションから個体を選択するものであり、この選択はほとんどの場合、比較的高い適応度値を有している個体が比較的低い適応度値を有している個体よりも好ましいという個体の適応度に実質的に基づくものである。処理ブロック1060におけるクロスオーバ操作に対する選択ステップは適応度に基づいて2つの個体を選択することを必要としていることに留意されたい。突然変異操作に対する選択ステップ(処理ブロック1070)および他の6つの選択ステップは、適応度に基づいて1つの個体を選択することを必要とする。ポピュレーションにおける同じ個体を各世代で2回以上選択できることに留意されたい。
9つの選択肢の各々に対して、遺伝操作が行われる。たとえば、繁殖操作を選択した場合、繁殖操作が行われる(処理ブロック1052)。クロスオーバ操作を選択した場合、クロスオーバ操作が行われる(処理ブロック1062)。本明細書で使用されているクロスオーバ操作の場合、単一の子孫が作成されることに留意されたい。突然変異操作を選択した場合、突然変異操作が行われる(処理ブロック1072)。他の6つの操作も同様に処理される。
次いで、「子孫を新しいポピュレーションに挿入する」という共通ステップ1090が、9つの選択肢の各々に対して行われる(処理ブロック1090)。
次いで、ポピュレーションにおける個体の指標iが増分される(処理ブロック1092)。指標iがポピュレーション規模Mと等しい(あるいは、超えている)という処理ブロック1042におけるテストを満たしていない場合、この第2の主反復ステップは処理ブロック1046で継続する。
指標iが処理ブロック1042におけるテストを満たしている場合には、ポピュレーションにおける個体に対するこれらの主反復ステップの第2のものが終了する。世代番号GENは処理ブロック1044で増分され、処理は処理ブロック1008で継続する。
全体的なプロセスにはさまざまなわずかな変更が可能であるということを認識すべきである。これらの変更の中には、便宜的に使用できるものがある。
簡単にするため、流れ図は実施形態の1つで用いられない、「入れ替え」や「ビルディング・ブロックの定義」(「カプセル化」とも呼ばれる)などの付加的な遺伝操作を示していない。
ポピュレーションにおける個別の回路構築プログラム・ツリーの各々に対する適応度の評価は、その実行時に開始される。この実行はプログラム・ツリーの関数をきわめて簡単なエンブリオニック回路に適用し、これによってエンブリオニック回路を完全に開発された回路へ展開する。この回路を記述したネットリストを次いで作成する。ネットリストは回路の各構成要素、その構成要素が接続されるノード、その構成要素の値(該当する場合)、および構成要素のモデル(該当する場合)を特定する。次いで、各回路のシミュレーションを行って、その挙動を決定する。217000行のSPICEシミュレータを変更して、遺伝的プログラミング・システム内のサブモジュールとして実行した。SPICEシミュレーションへの入力は分析対象の回路を記述したネットリストと、実行される分析のタイプおよび作成される出力の性質に関してSPICEに指示するいくつかのコマンドからなっている。SPICEは回路の電気的挙動を記述した表情報を作成することができる。この表情報を次いで使用して、適応度を測定する。
適応度尺度は時間領域における回路の挙動、周波数領域におけるその挙動、その消費電力、構成要素の数、構成要素のコスト、その構成要素が占める表面積、または温度またはその他の変数に対する感度を含む、回路の計算可能な特性または特性の組合せを組み込むことができる。フィルタを設計しているのであるから、周波数領域における回路の挙動に焦点をおく。
この問題に関し、電圧VOUTを第3図の分離されたノード305で調べ、回路を周波数領域で検討する。SPICEシミュレータには、AC小信号分析を行い、50段階の周波数(1Hzから100000Hzまで)にわたって選択した101の周波数値の各々に対する回路の挙動を報告することが要求される。各10段階は20の部分に分割される(対数尺を使用して)。
分離ノード305におけるプローブ・ポイントVOUTにおいて回路が発生する周波数領域における電圧の実際値と、電圧に対するターゲット値との間の絶対加重偏差の、これら101件の適応度に対する合計によって、適応度を測定する。適応度の値は小さければ小さいほどよい。ゼロという適応度は理想的なフィルタを表す。
具体的にいうと、標準化された適応度は次のようになる。
ただし、f(i)は適応度の事例iの周波数(ヘルツ)であり、d(x)は周波数xにおけるターゲット値と観測値との差であり、W(y,x)は周波数xにおける差yに対する重み付けである。適応度尺度は理想値に負担をかけず、すべての許容偏差に若干の負担をかけ、許容されないすべての偏差に大きい負担をかける。
1Hzから1000Hzまでの30の間隔における61の点の各々に対するプロシージャは次の通りである。電圧がこの間隔における1.0ボルトという理想値に等しい場合、偏差d(f;)は0.0であり、電圧が970ミリボルトと1000ミリボルトの間である場合、1000ミリボルトからの偏差の絶対値には1.0という係数で重みがつけられ、電圧が970ミリボルト未満の場合、1000ミリボルトからの偏差の絶対値には、10.0という係数で重みがつけられる。この構成は通過帯域における理想電圧が1.0ボルトであり、30ミリボルトの不足は許容でき、通過帯域における970ミリボルト未満の電圧は許容できないことを反映している。電圧がこの種のLC回路内で1.0ボルトを超えることはできない。
2000Hzから100000Hzまでの間隔における35の点の各々に対するプロシージャは次の通りである。電圧が0ミリボルトと1ミリボルトの間である場合、0ミリボルトからの偏差の絶対値には、1.0という係数で重みがつけられる。電圧が1ミリボルト超である場合、0ミリボルトからの偏差の絶対値には、10.0という係数で重みがつけられる。この構成は停止帯域における理想電圧が0.0ボルトであり、0ミリボルトを超える1ミリボルトのリプルは許容でき、停止帯域における1ミリボルト超の電圧は許容できないことを反映している。
この例において、これら2つの主帯域における適応度事例の数(61および35)は、これら2つの主帯域における異なる数の適応度事例に対して与えられた重みを等化させる試みを行わなかったことに十分近いものである。1000Hz超および2000Hz未満の間隔(すなわち、「don’t care」帯域)における5ポイントの各々に対して、偏差はゼロとみなされる。
ヒットは電圧が許容できる、あるいは理想である、あるいは「don’t care」帯域内にある適応度事例の数と定義される。それ故、ヒット数はこの問題に対して5という低い値から101という高い値までの範囲である。ユーザが与える問題固有の適合尺度が展開プロセスを決定することに留意されたい。
初期のランダム・ポピュレーションに対してランダムに作成され、後の世代においてクロスオーバ操作および突然変異操作によって作成される風変わりな回路の中には、SPICEによるシミュレーションが行えないものがある。SPICEによるシミュレーションを行えない回路には、ペナルティ値が高い適応度(108)を割り当てる。これらの回路は各世代に対する最悪世代回路となる。ペナルティ値が高い適応度の実際上の効果は、これらの個体が選択されて、遺伝操作に関与することがほとんどなく、またこれらがポピュレーションから迅速に消滅することである。
実施形態の1つにおいて、回路のネットリストが以下の病理学的特性のいずれかを有している場合、ネットリストはシミュレーションのためにSPICEに沿って渡されることはなく、その代わりに、高いペナルティ値の適応度が直ちに割り当てられる。
(1)回路が電圧源を含んでおり、両端が同一のノードに接続されている。
(2)回路がインダクタを含んでおり、両端が同一のノードに接続されている。
(3)回路がリード線の接続されていない構成要素を含んでいる。
(4)回路がノードを含んでおり、コンデンサを通っていない接地へのDCパスがない。あるいは
(5)回路が一対のノードを有しており、これらの間にパスがない。
実施形態の1つにおいて、以下のタイプのエラーのいずれかがSPICEシミュレーション中に生じた場合、シミュレーションは停止され、回路には高いペナルティ値の適応度が割り当てられる。
(1)メモリ割振り要求の数が2000の要求という規定の上限を超えている。
(2)割り振られたメモリの量が300キロバイトという予め指定された上限を超えている(この限度はシミュレーションに対する時間制限として間接的に作用する)。
(3)浮動小数点エラー(たとえば、ゼロによる除算、アンダーフロー、オーバフローなど)が、たとえばバイポーラ接合トランジスタのシミュレーション中に生じ、場合によっては、浮動小数点のオーバフローが生じ、場合によっては、プローブ出力セットアップ中にゼロによる除算が生じる。
(4)ヌル(無効)ポインタがマトリックス・ルーチンの1つに現れた。あるいは
(5)これまで割り振られていなかったメモリのブロックを解除する試みがなされた。
制御パラメータ
この例示的な問題の場合、ポピュレーション規模Mはほとんどの経路について320000であった(ただし、若干の経路については40000であった)。各世代における遺伝操作の割合は、クロスオーバが89%、繁殖が10%、突然変異が1%であった。アーキテクチャ変更操作はこの例示的な問題では使用されなかった。200ポイントという最大サイズが全体的なプログラムの各々における2つの結果作成ブランチの各々に対して確立された。
最初のランダム・ポピュレーションの作成時に関数をランダムに選択する際に、C、L、SERIES、PSS、FLIP、NOP、各GNDの関数の各々には、8という相対重みが割り当てられ、8つのVIA関数の各々には1という相対重みが割り当てられた。
遺伝的プログラミングの経路を制御する他のパラメータはKoza1994年(付録D)で指定されたデフォルト値であった。
終了基準および結果の指定
この例において、個々のスコアリングの101のヒットを展開できるかどうかを予め判断することは困難である。さらに、ヒットのこの最大値が達成できるものである場合、数種類の解決策を並列コンピュータ・システムの各種の処理ノードから得ることができる。問題がゆっくり実行されるため、世代の最大数Gは大きい数にセットされて、開発の可能性を高める。
並列コンピュータ・システム
プロセスの時間のかかる適応度の測定が非結合性であるから、本発明の実施に並列処理が有利である(ただし、必須というものではない)。並列化をほとんど100%の効率で、本発明のプロセスが使用することができる。
実施形態の1つにおいて、処理論理はトロイダル・メッシュに配列された64個のPowerPC601 80MHzプロセッサ(各々が付随するINMOSトランスピュータを備えている)からなり、ホストPCがPentium(登録商標)タイプ・コンピュータである中粒度並列パリスティック・コンピュータ・システム(medium−grained parallel Parystec computer system)上で経路を実行する。PowerPCプロセッサは、各PowerPCプロセッサと関連付けられているINMOSトランスピュータによって通信を行う。いわゆる分散遺伝的アルゴリズムすなわち並列化のアイランド・モデルを使用する。すなわち、サブポピュレーション(本明細書ではデメスと呼ぶ)をシステムの処理ノードに配置する。ポピュレーション規模はD=64デメスの各々においてQ=5000であり、したがって総ポピュレーション規模Mは320000となる。世代0の最初のランダム・サブポピュレーションが各処理ノードにおいて局部的に作成される。世代は各ノードにおいて非同期的に実行される。遺伝操作を各ノードにおいて局部的に実行した後、各々がB=2%(システムの実施形態の1つで使用される移行率)のノードのサブポピュレーション(適応度に基づいて選択される)からなるエミグラントの4つのボートロードが4つのトロイダルに隣接した処理ノードの各々に送られる。イミグラントを各宛先処理ノードへ同化させる前に、そのノードがそのイミグラントを隣のノードへ送る。
並列遺伝的プログラミングの実装の1つとして使用される物理的システムはPC Pentiumプロセッサ・タイプのコンピュータをホストとして使用し、また処理ノードのネットワークを使用している。第36図はシステムの各種の要素を示す。これらの要素は次のものからなる全体的なシステムに配列されている。
(1)キーボード3602、ビデオ表示モニタ3603、および大型ディスク・メモリ3604からなるホスト・コンピュータ。
(2)中央スーパバイザ・プロセス(ボス・プロセス)を含んでいるプロセッサ3605。
(3)各々がモニタ・プロセス、ブリーダ・プロセス、エクスポータ・プロセス、およびインポータ・プロセスを実行する、64個のプロセッサ3606の並列ネットワーク。
PCコンピュータ3601はホストであり、全体的なシステムのファイル・サーバとして働く。「ボス・ノード」3605は遺伝的プログラミングを実行するための中央スーパバイザ・プロセスである。
64の処理ノードはトロイダル・ネットワークに配列されており、64の処理ノードのうち62はネットワーク内の4つの隣のノード(東西南北方向の)に物理的に接続されている。ネットワークの64のノードのうち2つは、これらがボス・ノード3605とたった3つの他の処理ノードとに物理的に接続されている点で例外的なものである。ボス・ノード3605はネットワークの2つの処理ノードのみと物理的にリンクされている。異なる処理ノードにおけるプロセス間の通信は、一方向、2点間非バッファ同期チャネルによって行われる。
処理ノードはチャネルによって接続された相互通信プロセスを実行する。ホスト3601は2つのプロセスを有している。ホスト3601上の第1のプロセスはキーボード3602からの入力を受け取り、経路を制御するパラメータを含んでいる入力ファイル3609を読み取り、2つの出力ファイル、すなわち出力ファイル3604とビデオ・バァファ(VB)ファイルを書き込み、ボス3605と通信を行う。ホスト・コンピュータ上の第2のプロセスはモニタ・プロセスである。図中の枠はホスト・コンピュータ(PC Pentiumプロセッサ・タイプのマシン)、オプションのデバッガ・ノード3607(INMOSデバッガを収納するのに使用されるTRAM)、ボス・ノード3605、および処理ノードのネットワーク(メッシュノードとも呼ばれる)を含む各種のコンピュータを指す。簡単にするため、第36図は9つのノードのネットワークのみを示している(64のノード全部ではなく)。楕円形は各経路の1つの入力ファイル(経路を制御するためのパラメータを含んでいる)および2つの出力ファイル(経路の中間および最終結果を含んでいるものと、本明細書ではVBプロセス3610と呼ばれるモニタ・プロセスが必要とする要約情報を含んでいるもの)を含む各種のファイル(全部がホスト・コンピュータ上にある)を指す。丸みのついた枠はキーボードおよびビデオ表示モニタを含むホスト・コンピュータの入出力装置を指す。ひし形はホスト・コンピュータのビデオ表示モニタ上に経路に関する情報を表示するモニタ・プロセスを指す。太い連続線はシステムの各種の要素の間の物理的リンクを示すために使用されている。太い破線はボス・ノード3605と処理ノードとの間の仮想通信の線を示す。細い連続線は処理ノードの各々をその4つの隣のノードと接続する仮想通信の線を示す。
デバッガ用のオプションのトランスピュータは1つのプロセス、すなわちINMOSデバッガ・プロセスだけを実行する。ボスのプロセッサは1つのプロセス、すなわちボスだけを実行する。
トロイダル・ネットワーク内の64個のプロセッサの各々は、以下の4つのプロセスを同時に実行する。
(1)インポータ
(2)エクスポータ
(3)ブリーダ
(4)モニタ
第37図は64個のプロセッサの各々におけるこれら4つのプロセスを示す。処理ノードの各々における主プロセスはブリーダ・プロセス3701である。ブリーダ・プロセス3701は遺伝的プログラミングにおけるコンピュテーションを行い、3つの他のプロセスはボスおよび4つの隣のノードとの通信を容易とする。具体的にいうと、他の3つのプロセスは非同期通信を可能とし、デッドロックを回避する役割を果たす。
ボス・プロセスはホスト・プロセスとの通信、ネットワーク内のプロセッサの各々への初期開始メッセージの送信、各世代の終りに各プロセッサから送られてくる情報の作表、ホスト上のモニタ・プロセスへの情報の送信、およびエラー状態の取扱いを取扱う。
遺伝的プログラミングの実行の開始時に、ボス・プロセスは各種のデータ構造を初期化し、適応度事例のセットを機能的に、あるいはホスト上のファイルから情報を取得することによって作成し、各プロセッサに対する異なるランダム・シードを作成し、各プロセッサをピング(ping)して、準備ができていることを確認し、遺伝的プログラミングを制御するホスト上のファイルから一連のパラメータを読み込む。次いで、ボスはスタートアップ・メッセージをモニタ・プロセス3702などの各モニタ・プロセスへ送る(このプロセスは次いでこれをブリーダ・プロセス3701などのブリーダ・プロセスへ送る)。このメッセージは次のものを含んでいる。
・ 処理ノードで作成すべきサブポピュレーションの規模
・ 生成方法および初期ランダム個体の最大サイズ(ならびにその各関数定義ブランチおよび結果作成ブランチ)を含む初期ランダム・サブポピュレーションをその処理ノードで作成するための制御パラメータ
・ その問題に対するランダム定数のネットワーク全体にわたる共通テーブル(存在している場合)
・ 各世代に対して実行される各遺伝操作(たとえば、繁殖、クロスオーバなど)の数を指定する制御パラメータ
・ ランダマイザ用のノード固有のシード
・ その問題に対する実際の適応度事例
・ プリントされた固体の数(および、存在している場合には、プリントされた個体そのもの)
スタートアップ・メッセージの送信後、ボスはループに入り、エラー状態が生じるか、解決策が見つかるか、すべてのプロセッサがパラメータ・ファイルに指定されたいくつかの世代を破壊するか、完成するかするまで、各モニタが送信する各種のメッセージを処理する。
各処理ノードのモニタ・プロセスはボス・ノードのボス・プロセス、ならびに処理ノードのブリーダ・プロセス両方からのメッセージを常に待っている。ボスからスタートアップ・メッセージを受け取ると、モニタ・プロセスはこのメッセージをそのノード上のブリーダ・プロセスへ渡す。モニタ・プロセスはそのノードのブリーダ・プロセスからの次のメッセージもボスへ渡す。
(1)エンドオブジェネレーション・メッセージ。エンドオブジェネレーション・メッセージは処理ノード上の現在のサブポピュレーションに対するベストオブジェネレーション個体と、適応度およびヒット数などのその個体に関する統計値とを含んでいる。このメッセージは処理ノードのワーストオブジェネレーション個体に対する適応度(およびヒット)、そのノードにおけるサブポピュレーションに対する平均適応度(およびヒット)、サブポピュレーションの適応度(およびヒット)の分散も含んでいる。
(2)ユーレカ・メッセージ。ユーレカ・メッセージは問題の成功基準を満たしており、作成されたばかりのべストオブラン個体およびこれに関する各種の統計値を含んでいるサブポピュレーションに、処理ノードが個体を作成したばかりであることを通知する。
(3)トレース・メッセージ。トレース・メッセージはブリーダ・プロセスがそのコード内の何らかのマイルストーン(たとえば、そのスタートアップ・メッセージの受取り、そのノードに対する初期ランダム・サブポピュレーションの作成の完了)に達したことを通知する。
(4)エラー・メッセージ。エラー・メッセージはブリーダ・プロセスが何らかの予測可能なエラー状態に遭遇したことを通知する。
処理ノードのブリーダ・プロセスはスタートアップ・メッセージを受け取った後、そのノードに対する個体の初期ランダム・サブポピュレーションを作成する。次いで、主世代ループにおいて、処理ノードのブリーダ・プロセスは次のステップを反復して行う。
(1)サブポピュレーションのすべての個体の適応度を評価する。
(2)エミグラントになる少数の個体(世代0のものを除く)を適応度に基づいて蓋然的に選択し、これをエクスポータ・プロセス内のバッファへ送る。
(3)インポータ・プロセスのバッファで現在待機中のイミグラント(世代0のものを除く)を同化させる。個体の適応度がその個体に関連付けられたデータ構造の一部であり、イミグラントの適応度をそれがその宛先に到着した際に再計算する必要がないことに留意されたい。
(4)サブポピュレーションに対してエンドオブジェネレーション・レポートを作成する。
(5)サブポピュレーションに遺伝操作を行う。
ブリーダ・プロセスは問題の成功属性を満たす1つの個体が作成されるまで、あるいはボス・プロセスによって停止されるまで実行される。
遺伝的プログラミングにおける個体を評価するのに必要なコンピュータ時間の長さは通常、小さいサブポピュレーションの間でかなり変動する。特定のサブポピュレーションに時間のかかるプログラムが1つだけ、あるいは若干存在していると、1つの世代を実行するのに必要なコンピュータ時間の長さが大きい影響を受ける。各種の処理ノードにおけるアルゴリズムの活動を同期させようとすると、すべての処理ノードの速度を最も遅いものの速度まで下げることが必要となる。したがって、各処理ノードは他のすべての処理ノードと非同期で動作する。わずかな世代の後、システムの各種の処理ノードは通常異なる世代で動作するようになる。
この速度の変動は、個々のプログラムの異なるサイズ、プログラムに高速および低速の原始関数が混在していること、最も重要なのは、全体的なプログラムの関数定義ブランチの数、性質および内容を含むさまざまな要因によって生じる。自動定義関数を呼び出すたびに、その自動定義関数の本体を実行することが必要となり、したがって、実行時の全体的なプログラムの有効サイズが全体的なプログラムに実際に現れるポイント(すなわち、関数および終端)の可視数よりもかなり大きくなる。さらに、1つの自動定義関数が階層的に他のものを参照できる場合、プログラムの有効サイズ(および、実行時間)は全体的なプログラムに実際に現れるポイントの可視数の指数関数となる。さらに、多くの時間ステップ、多くの別々の実験、あるいは多くの蓋然的シナリオに関する挙動のシミュレーションを含んでいる問題の場合、プログラムの中には他のものよりもかなり前に、あるいは後にシミュレーションを完了するものがある。
近傍のプロセッサにおける世代についての所望の非同時性は、近隣のプロセスが世代を完了するのをブリーダ自体が待つことを必要としない態様で、マイグレートするプログラムのエクスポートまたはインポートが行われることを必要とする。ブリーダ3701がコンピューティング時間をほとんど妨害しないようにするために、エクスポータ・プロセス3704とインポータ・プロセス3703が通信を取り扱う。モニタ・プロセスは同じような態様で、ボス・プロセスとの通信に作用する。さらに、デッドロックが生じないようにするには、複数のプロセスを使用することが重要である。
エクスポータ・プロセス3704は、各世代(世代0を除く)に対するブリーダの主世代ループの一部としてその処理ノードのブリーダ・プロセス3701と周期的に対話する。その場合、ブリーダ3701は個々のプログラム・ツリーの4つのボードロード(グループ)をポピュレーション(すなわち、エミグラント)からエクスポータ・プロセス3704のバッファへ送る。エクスポータ・プロセス3704は次いで、エミグラントのボートロードの1つをネットワークの4つの近隣処理ノードの各々のインポータ・プロセス3703へ送る。
インポータ3703の目的は、ブリーダ3701がエミグラントの着信ボートロードをサブポピュレーションに組み込めるようになるまで、これらのボートロードを格納することである。イミグラントのボートロードが、インポータ・プロセス3703を4つの近隣エクスポータ・プロセスへ接続している4つのチャネルのいずれか1つを介して到着した場合、インポータ3703はそのチャネルからのイミグラントを消費し、これらのイミグラントを、そのチャネルに関連付けられたバッファに入れる(しばしば、以前に到着しているが、まだ同化されていない、そのバッファ内のイミグラントを上書きして)。ブリーダ・プロセス3701はイミグラントを同化させられるようになった場合、インポータ3703のバッファの内容を呼び出す。4つのバッファ全部がいっぱいである場合、イミグラントの4つのボートロードは、ブリーダ・プロセス3701がそのノードのエクスポータ・プロセス3704へ送ったばかりのエミグラントを置き換える。4つよりも少ないバッファがいっぱいの場合には、新しいイミグラントが送られたばかりのエミグラントをできるだけ多く置き換える。
この例示的な問題の経路の中には、トロイダル・メッシュ構成の4個のPowerPC601 80MHzプロセッサからなり、ホストPCがPentiumタイプ・コンピュータである粗粒度並列パリスティック・コンピュータ・システムで動作するものがあった。ポピュレーション規模はD=4デメスの各々においてQ=10000であり、したがって総ポピュレーション規模Mは40000となる。
低域LCフィルタに対する結果
低域LCフィルタを設計する問題に関し遺伝的プログラミングを数回実行した結果は、本発明の自動設計プロセスの背後にある原理を説明するものである。
第1回目の実行についての説明
この例示的な問題に対する遺伝的プログラミングの実行は、上述の関数および終端で構成され、上述の拘束構文構造にしたがって構成された320000のプログラム・ツリー(各々が2つの結果作成ブランチからなる)の初期ポピュレーションをランダムに作成することから始まる。
ポピュレーションにおける320000のプログラム・ツリーの各々に関して、回路構築プログラム・ツリー内の一連の関数をこの問題に対するエンブリオニック回路(第3図)に適用して、回路を作成する。得られる回路のネットリストを次いで決定する。ネットリストはSPICEコマンドの適切なセットの内部で折り返され、SPICEの改変されたバージョンを使用して回路のシミュレーションが行われる。
遺伝的プログラミングの実行に関する初期ランダム・ポピュレーションは問題のサーチ空間のブラインド・ランダム・サーチである。したがって、これは以降の世代の結果を比較するための基準線を与える。
世代0からの最悪の個別回路構築プログラム・ツリーは、SPICEシミュレータがこれらのシミュレーションを行えないほど病的な回路を作り出す。これらの回路には高いペナルティ値(すなわち、108)の適応度が割り当てられる。
世代0からの最悪のシミュレーション可能な個体の適応度は892.0である。個々のプログラム・ツリーはその第1の結果生成ブランチの11点を、また第2の結果生成ブランチの14点を有している。この回路構築プログラム・ツリーにしたがってエンブリオニック回路を開発した場合に得られる回路は、インダクタをまったく有していない。この回路で生じるヒットの数は5つだけに過ぎない(101の適応度事例のうちの5つの「don’t care」ポイントを表す)。推定フィルタの挙動特性は周波数領域の挙動によって最もよく測定される。この場合、回路の周波数応答は低域フィルタのものと類似していない。
しかしながら、ランダムに作成した回路の間でも、他よりもよいものがある。
世代0(シミュレーション可能な個体からの)の25パーセンタイルの適応度による回路の適応度は610.1であり、ヒットのスコアは34(101のうちの)である。インダクタがまったくない以前の回路とは異なり、この回路は1つのインダクタと1つのコンデンサを有している。
世代0からの中位(50パーセンタイル)回路の適応度は610.0であり、ヒットのスコアは40(101のうち)である。この回路の出力プローブ・ポイントVOUTは、電圧源VSOURCEから電力をまったく受け取らない。したがって、回路はすべての周波数に対して0ボルトの出力を発生する。周波数領域における世代0の中位回路の挙動は、回路がすべての周波数を同様に取り扱うため、フィルタのものではない。初期ランダム世代のこの中位回路は、アナログ電気フィルタ回路の動作特性から除去される。
世代0からの75パーセンタイルの適応度の回路の適応度は401.0であり、ヒットのスコアは5である。周波数領域におけるこの75パーセンタイル回路の挙動は、これがすべての周波数を同様に取り扱うため、フィルタのものではない。しかしながら、この回路はその電圧の一定値(約0.8ボルト)が通過帯域(1Hzないし1000Hz)の若干多くのポイントに関して、世代0の中位個体が発生する0ボルトという一定値よりも1ボルトに近いため、世代0の中位個体よりも良好な適応度値を達成する。換言すると、この例示的な問題に対して選択された適応基準を与えると、この個体は中位回路よりも若干良好である。
世代0からの320000の回路のうち最良の回路の適応度は58.71(上述した重み付けボルトの尺度で)であり、ヒットのスコアは51である。この個々のプログラム・ツリーについては第25図ないし第35図で詳細に説明した。
1Hzと100Hzの間の間隔における周波数領域のこの回路の挙動は、必要とされる1ボルトに極めて近いものである(この個体が示す51ヒットのほとんどに対して)。しかしながら、100Hzと1000Hzの間で発生する電圧は、設計仕様書で要求されている970ミリボルトという最小値よりもかなり低いものである(実際には、1000Hzに接近した場合、数百ミリボルトだけ)。さらに、2000Hz超で発生する電圧は、ほとんどの場合、設計仕様書で要求されている1ミリボルトという最小値よりもかなり高いものである(ほとんどの場合、数百ミリボルト)。しかしながら、世代0からのこの非適合回路の挙動は、電圧が最初の20の周波数に対して1ボルトに近く、また電圧が高い周波数における若干数のサンプル・ポイントに対してゼロに近くて、低域フィルタのものと若干類似している。
世代1(および、その経路の以降の各世代)が、適応度に基づいて以前の世代におけるポピュレーションから選択された個体(あるいは、クロスオーバの場合には個体の対)に繁殖、クロスオーバ、および突然変異を行うことによって、先行する世代におけるポピュレーションから作成される。
世代1における最良の個別プログラムの適応度は58.59であり(すなわち、世代0の58.71よりも若干良好である)、ヒットのスコアは52である(世代0よりも高い)。
経路が世代から世代へ進むと、ベストオブジェネレーション個体の適応度は向上する傾向がある。たとえば、適応度の新しいペース設定値(すなわち、それまでに報告されたどのベストオブジェネレーション適応度値よりも良好な、64のプロセッサの1つから報告されたベストオブジェネレーション適応度値)が、世代2、3、4、5、6、7、9および13で報告された。具体的にいうと、これらの世代のベストオブジェネレーション個体に対する適応度のこれらのペース設定値は、それぞれ、58.56,57.51,57.45,48.51,22.51,21.58,5.75および5.52である。ポピュレーションにおけるベストオブジェネレーション個体に対するヒット数は、世代5では56、世代13では86に達する。ベストオブジェネレーション23の適応度は0.37であり、ヒットのスコアは99である。
この問題に対する世代0のプログラムの72%は、SPICEではシミュレーションできない回路を作り出す。シミュレーション不能なプログラムは各世代に対してワーストオブジェネレーション・プログラムであり、高いペナルティ値の適応度を受け取る(108)。しかしながら、シミュレーション不能プログラムの割合は世代1では31%に、世代2では16%に、世代3では15%に、世代10では7%に低下する。換言すると、ダーウィン選択およびクロスオーバ操作によって作成される子孫の大部分はほんの数世代後にシミュレーション可能となる。
遺伝的プログラミングを使用して電子回路を展開することを試みるにあたり、主要な限界的問題の1つはこの極めて発現性の高いサーチ空間における世代0のランダムに作成された回路の有効数がシミュレーション可能であるかどうかである。第2の問題はクロスオーバ操作が有効な数のシミュレーション可能な回路を作り出すかどうかである。これらの問題はいずれもこの問題に関する遺伝的プログラミングによって実現されなかった。後続世代のポピュレーションを、親がクロスオーバ操作によりシミュレーション可能な子孫を生み出すことのできるサーチ空間の部分へ迅速に送るのに、ダーウィン選択が極めて有効であることは明らかである。
この観察は遺伝的プログラミングの経路の中間世代のポピュレーションにおける個体(および、これらから取り出したランダムなサブツリー)が、同じ経路の世代0のランダムに作成されたポピュレーションにおける個体(および、これらのランダムに取り出したサブツリー)と異なっているという原理を裏付けるものである。すなわち、遺伝的プログラミングの経路の中間世代からのクロスオーバ断片は、突然変異操作によって得られるランダムに成長したサブツリーと極めて異なっている。この重要な問題に関して、ポピュレーションが遺伝的アルゴリズムにおいて重要な役割を果たす−すなわち、サーチを迅速に進めるための有用な断片のリザーバを与える役割を果たすことは、実験的に実証されている。
遺伝的アルゴリズムにおいて、ポピュレーション全体は世代間で一般に改善される。ポピュレーション全体での適応度における世代間の改善は、世代ごとのポピュレーションの平均適応度を検証することによって明らかとなる。世代1の320000の個体のポピュレーションの平均適応度は3240415である(世代0では7232192である)。すなわち、ポピュレーション全体は世代0から世代1へと向上する。この向上の一部は適応度のペナルティ値が高い世代1におけるポピュレーションにおける少ない数の個体を反映している。ポピュレーション全体としての平均適応度は世代5では1328221に、世代13では924046に達する(このこともポピュレーションの多くの少数の個体が適応度の高いペナルティ値を受け取ることを示している)。ポピュレーション全体としての平均適応度は世代0では1054に、世代2では443に、世代5では213に、世代10では58.2に、世代20では38.0に、世代30では16.5に達する。発展プロセスはそれ故、世代から世代へ継続する。
世代32の最良の個別プログラム・ツリーの点は306、適応度は0.00781、ヒットのスコアは101である。すなわち、世代32にまでに、すべての101個のサンプル・ポイントはこの例示的な問題に対する設計要件に適合することになる。偏差の平均値はサンプル・ポイントあたり約0.08ミリボルトとなる。
第38図は世代32の最良の回路を示す。この回路はさまざまな反復値の各種のインダクタおよびコンデンサからなる7段のラダーである。このラダー構造はバッタワースまたはチェブィシェフ・フィルタのトポロジであるが、この回路はバッタワースまたはチェブィシェフ・フィルタに関連付けられる正確な数値の構成要素を有していない。
最初の100%適合した個体の発生後に、遺伝的プログラミングの実行を継続した場合、他の100%適合した個体がしばしば発生する。これらの付加的な解決策は大幅に異なるトポロジ、ならびに異なる大きさをしばしば有している。第2に、実行を継続すると、適応度のより良好な値に対する探索が続けられ、さらに適合した(100%適合した)個体がしばしば作成される。デメスを備えた並列コンピューティング・システムを使用した場合、同じ経路から得られた解決策の間に極めて顕著な相違がしばしばある(デメスのない直列コンピュータ装備とは対照的なものである)。
この同じ経路の世代76からの最良の個体は、世代32で見られる最初の完全に適合した個体のものよりも1桁ほど良好な適応度(0.000995)を有している。第39図は世代76からのベストオブラン回路を示す。この回路は17の0.203ヘンリーのインダクタと17の201nFのコンデンサかなるラダーを有している。また、4つの異なる値のインダクタとコンデンサを、ラダーの先頭と末尾に有している。
ヒットのスコアが101のいくつかの他の回路がこの経路から得られた。すべての回路はラダー構造を用いていた(異なる数の段と異なる構成要素値を備えている)。
したがって、本発明により、ユーザの設計目標を満たす有用な電子回路を自動的に作成することが可能となる。
経路2からの「ブリッジT」回路
遺伝的プログラミングは少なくとも4個所に蓋然的ステップ、すなわち世代0の初期ポピュレーションを作成し、各操作が行われるポピュレーションから個体を選択し、実行する特定の操作を選択し、遺伝操作が行われる、選択された個体内でポイント(たとえば、クロスオーバ・ポイント)を選択するステップを含んでいる。それ故、遺伝的プログラミングの異なる経路は異なる結果を生じる。
第40図はこの問題における遺伝的プログラミングの他の経路の世代64からの完全に適合したベストオブラン回路を示す。この回路(0.04224という適応度を有する)において、インダクタL14はコンデンサC3およびC15、ならびにインダクタL11とともに、認識可能な「ブリッジT」サブ構造を形成する。もちろん、並列コンデンサ(C18とC33の対、ならびに3つ1組のC24、C21およびC12)を組み合せることができる。この「ブリッジT」回路はトポロジが「ラダー」回路と異なっている。
他に展開された完全に適合した回路は遺伝的プログラミングから得ることのできる各種さまざまな結果を示している。
第41図は適応度が0.03201の、この問題における遺伝的プログラミングの経路3の世代58からの他の完全に適合したベストオブラン回路を示す。この回路は組み合せることのできるさまざまな並列コンデンサと直列インダクタを有しており、またその右半分はラダー構造を有しているが、残りの左半分は上述のラダー回路と大幅に異なっている。
コンデンサC29をバイパスすることは遺伝的に発展した構造にしばしば現れる異形の例である。多くのこのような異形はもちろん、標準的な手動または自動編集および簡素化方法によって除去することができる。
第42図は適応度が0.00114の、この問題における遺伝的プログラミングの経路4の世代212からの他の完全に適合した回路を示す。この場合も、並列コンデンサおよび直列インダクタを組み合せた後であっても、この回路のトポロジは上述のものと異なっている。
第43図は適応度が0.06507の、この問題における遺伝的プログラミングの経路5の世代53からの他の完全に適合した回路を示す。この回路の並列コンデンサと直列インダクタを組み合せた場合、この回路の右半分はラダー構造を有している。
自動定義関数を使用した低域LCフィルタの設計
自動定義関数(ADF)はコンピュータ・プログラムの部品を再使用する機構を与える。本節において、目標は自動定義関数を使用するとともに、上述したものと同じ設計特性を満たす低域フィルタを設計することである。本節において、アーキテクチャ構成はユーザによって予め指定されることとなる(すなわち、自動定義関数を作成し、変更し、削除するアーキテクチャ変更操作は使用されない)。
自動定義関数(ADF)を使用した低域LCフィルタの準備ステップ
エンブリオニック回路
2つの書込みヘッドを備えた1入力1出力回路に対する、第25図のエンブリオニック回路は、この問題にも適したものである。
プログラムのアーキテクチャ
エンブリオニック回路が当初2つの書込みヘッド−結果生成ブランチの各々と関連付けられたもの−を有しているため、各プログラム・ツリーには2つの結果生成ブランチ(RPB0およびRPB1と呼ばれる)が存在する。
4つの0引数の自動定義関数(ADF0、ADF1、ADF2、ADF3と呼ぶ)が各プログラム・ツリーに含まれている。自動定義関数の間には階層的参照はない。それ故、各プログラム・ツリーには4つの関数定義ブランチが存在する。希望する場合に、任意の数の自動定義関数を使用することができ、また任意の数のこれらを階層的に互いに参照することができることに留意されたい。
したがって、ポピュレーションにおける全体的な各プログラム・ツリーのアーキテクチャはLIST関数で接合された全部で6つのブランチがある(すなわち、4つの関数定義ブランチと2つの結果生成ブランチ)。第44図はこの6ブランチの全体的なアーキテクチャ構造を示す。
関数および終端のセット
ポピュレーションにおける各プログラム・ツリーの4つの関数定義ブランチ全部および両方の結果生成ブランチは、この例示的な問題と同じ終端セットを用いている。また、4つの関数定義ブランチはすべてこの問題と同じ共通関数セットを用いている。結果生成ブランチは両方とも共通関数セットを用いており、これらの共通関数セットは、これが4つの自動定義関数を含んでいる点だけで、4つの関数定義ブランチと異なっている。各ブランチは拘束構文構造にしたがって作成される。
関数はこの例示的な問題の場合、4つのカテゴリーに分けられる。
(1)エンブリオニック回路から回路のトポロジを作成する接続作成関数。
(2)回路内のワイヤ(およびその他の構成要素)を指定された構成要素に変換する構成要素作成関数。
(3)一緒になって回路の各構成要素に対する数値を指定する(寸法決定する)演算実行関数および数値終端。
(4)その数とアリティがユーザにより予め指定される自動定義関数(サブルーチン)。
自動定義関数は引数を取らず、また階層的に互いを参照することがない。
各構築継続サブツリーに対する関数セットFccsは次の通りである。
Fccs={ADF0,ADF1,ADF2,ADF3,C,L,SERIES,PSS,FLIP,NOP,THGND,THVIA0,THVIA1,THVIA2,THVIA3,THVIA4,THVIA5,THVIA6,THVIA7}.
最初の10の関数はそれぞれ、0、0、0、0、2、2、3,4,1,1,3および0個の引数を取る。8つのTHVIA関数の各々は3つの引数を取る。
各構築継続サブツリーに対する終端セットTccsは次の通りである。
Tccs={END,CUT}.
各演算実行サブツリーに対する関数セットFapsは次の通りである。
Faps={+,−}
各々は2つの引数を取る。
各演算実行サブツリーに対する終端セットTapsは次の通りである。
Taps={R}
ただし、Rは−1.000と+1.000の間の浮動小数点ランダム定数を表す。
適応基準
適応基準は上述のLC低域フィルタの設計問題のものと同じである。
パラメータ
制御パラメータは次のことを除き、上述のLC低域フィルタの設計問題のものと同じである。
(1)300ポイントという最大サイズが全体的なプログラムの各々における2つの結果作成ブランチの各々に対して確立された。
(2)最初のランダム・ポピュレーションの作成時に関数をランダムに選択する際に、C、L、SERIES、PSS、FLIP、NOP、およびTHGNDの関数の各々には、8という相対重みが割り当てられ、8つのTHVIA関数の各々、および4つの自動定義関数(ADF0、ADF1、ADF2、ADF3)には1という相対重みが割り当てられた。
終了基準および結果の指定
終了基準および結果指定方法は上述のLC低域フィルタの設計問題のものと同じである。
自動定義関数を使用した低域LCフィルタの結果
世代0からの最良の回路の適応度は58.6であり、ヒットのスコアは52(101のうち)である。その第1の結果生成ブランチ283の点を、第2の結果生成ブランチに3つの点を有しており、また自動定義関数ADF0、ADF1、ADF2、およびADF3のそれぞれに52、284、20、および33の点を有している。しかしながら、ベストオブジェネレーション個体の結果生成ブランチはいずれも、4つの自動定義関数のいずれも参照していない。ベストオブジェネレーション回路は単一のインダクタと単一のコンデンサを有している。これら2つの構成要素のトポロジ上の構成は古典的なラダー・フィルタの最初の段のものである。周波数領域における世代0からのベストオブジェネレーション回路の挙動は、希望する低域フィルタのものとわずかに類似しているに過ぎない。
この問題に対する世代0のプログラムの98%が、SPICEではシミュレーションできない回路を作り出すことに留意されたい。シミュレーション不能なプログラムは各世代に対してワーストオブジェネレーション・プログラムであり、高いペナルティ値の適応度を受ける(108)。しかしながら、シミュレーション不能プログラムの割合は世代1では84%に、世代2では77%に、世代3では41%に、世代4では15%に低下する。その後、この割合は経路の残りに対して6%と12%の間の範囲となる。換言すると、ダーウィン選択およびクロスオーバ操作によって作成される子孫の大部分はほんの数世代後にシミュレーション可能となる。
世代9の処理ノード18からのベストオブジェネレーション個体は第1のペース設定個体であり、自動定義関数が2回以上呼び出される。この個体の適応度は29.5であり、ヒットのスコアは65である。
第45図は2回使用された自動定義関数ADF3が228nFのコンデンサを作成することを示す。ADF3は自動定義関数の最も単純な利点の1つ、すなわち共通値を有する構成要素が回路内の2個所以上で利用できるようになることを示す。
世代9における処理ノード21からの最良の個体の適応度は10.3であり、ヒットのスコアは84である。そのRPB0は19の点を、RPB1は8つの点を、またADF0、ADF1、ADF2およびADF3のそれぞれは48、283、6および2つの点を有している。第46図は2回使用されたADF0を示す。
世代9における処理ノード21からの最良の回路は、異なるトポロジ、すなわち2段のラダーを有している点で、上述のすべてのペース設定ベストオブジェネレーション個体と異なっている。ラダーの両方の段の誘導要素は3つのインダクタ(第1の段のL5、L18、およびL14、ならびに第2の段のL16、L20、およびL11)の直列構成でできている。両方のグループのインダクタはADF0のものである。2段のラダーは周波数領域における挙動を大幅に改善する。
世代16における最良の個別プログラムの適応度は4.1であり、ヒットのスコアは90である。ADF0は3回使用される。ADF0の3つのインダクタの55500μヘンリーという値を受け取ることは、ADF0内でのSERIES関数の上述の効果を反映している。世代16の最良の回路は先行物とは異なるトポロジ、すなわち3段のラダーを有している。
世代19における最良の個別プログラムの適応度は4.1であり、ヒットのスコアは95である。そのADF0は4回使用される。世代19の最良の回路は先行物とは異なるトポロジ、すなわち4段のラダーを有している。
世代31における最良の個別プログラムは楕円フィルタの正確なトポロジを有しているため、特に興味深いものである。この個体のヒットのスコアは101(101のうち)であり、適応度は0.0850である。これは処理ノード3で構成されている。そのRPB0は41の点を、RPB1は7つの点を、またADF0、ADF1、ADF2およびADF3のそれぞれは52、297、22および2つの点を有している。ADF0(第47図)は5回使用される。
第48図は世代31のこの最良な回路を示す。図示のように、この回路の5つの垂直な分路の各々にはインダクタとコンデンサがある(たとえば、第1の分路にはL34とC18がある)。
世代35における最良の個別プログラムのヒットのスコアは101(101のうち)であり、適応度は0.00752である(すなわち、世代31からのベストオブジェネレーション個体のものよりも約1桁良好である)。そのRPB0は34の点を、RPB1は4つの点を、またADF0、ADF1、ADF2およびADF3のそれぞれは55、260、3および2つの点を有している。ADF0だけが結果生成ブランチによって参照される。
ADF0(第49図)は世代35からのベストオブジェネレーション・プログラムにおいて4回呼び出される。この自動定義関数によって作成される回路の部分のトポロジは、上述のものよりもかなり複雑なものである。2つのインダクタ(L18およびL20)ならびに1つのコンデンサ(C25)が三角形を形成しており、インダクタL18とL20が合致するノード10において三角形から分岐している付加的な誘導要素(具体的にいうと、3つのインダクタL20、L21およびL16の直列構成)がある。また、ADF0は3つのポートを有している。第50図はインダクタの直列構成を単純化し、その配向を三角形配向に変更した後のADF0の態様を示す。
第51図は世代35からのこのベストオブラン回路を示す。世代35からのベストオブラン回路の周波数領域における挙動は、通過帯域と停止帯域を分離する古典的な「ブリック・ウォール」を示す。
第52図は番号付きブランチを備えたルート化され、ポイントにラベルのついたツリーとして、世代35からのベストオブラン個体を示す。第1の結果生成ブランチRPB0はC関数5206をルートとしており、第2の結果生成ブランチはTHVIA3関数5207をルートとしている。第1の自動定義関数ADF0はDEFUN5202をルートとしている。ADF0はいずれかの結果生成ブランチによって実際に参照される唯一の関数定義ブランチである。3つの参照されない関数定義ブランチADF1、ADF2、ADF3は5203,5205というラベルのついた塗りつぶされた円によって略示されている。演算実行サブツリーは示されていないが、V1 5217、V2 5245、V3 5252、V4 5254、およびV5 5210と略示されている。
結果生成ブランチの詳細な分析
第53図は、この問題に使用される1入力1出力エンブリオニック回路を示す。以下では、このエンブリオニック回路の世代35から得たこのベストオブラン個体の開発について説明する。
第1の結果生成ブランチRPB0のルートにあるプログラム・フラグメント(後述)内で下線を施された第52図のC関数5206は、変更可能ワイヤZ0をコンデンサC3に変換する。+関数をルートとする11ポイント演算実行サブツリー(第52図では単にVS5 210と呼ばれ、以下のプログラム・フラグメントでは下線が施されている)は、C関数5206が実行されるときに全体的に深さ優先的に実行される。第54図は、このC関数5206を実行した結果を示す。このサブツリーは、解釈されると、値128nFをコンデンサC3に割り当てさせる値を返す。この場合、書込みヘッドはコンデンサC3を指し示す。
(C(+(−0.166 −0.376)(+(−0.910 −0.0366)(−−0.297 −0.917)))(flip(pss(pss end(pss end end end(flip(adf0)))end(flip(adf0)))(pss end end end(flip(adf0)))end(flip(adf0)))))
次に、プログラム・ツリーの幅優先実行によってRPB1のTHVIA3関数(第52図の5207)が実行される。このTHVIA3関数はワイヤZ1をレイヤ3の1つのポートおよび新しい変更可能ワイヤZ91、Z92、Z93に変換する。3本のワイヤはそれぞれ、書込みヘッドを有する。第55図は、このTHVIA関数(7と呼ぶ)を実行した結果を示す。
V5 5210は、C関数5206が実行されたときにただちにその全体が深さ優先的に実行された演算実行サブツリーを表すので、次に、プログラム・ツリーの幅優先実行によって、RPB1のFLIP関数(第52図の5211、以下では下線が施されている)が実行される。FLIP関数はコンデンサC3の極性をフリップし、書込みヘッドは引き続きコンデンサC3を指し示す。第56図は、このFLIP関数を実行した結果として得られるコンデンサC3の極性の変更を示す。
(C(+(−0.166 −0.376)(+(−0,910 −0.0366)(−−0.297 −0.917)))(flip(pss(pss end(pss end end end(flip(adf0)))end(flip(adf0)))(pss end end end(flip(adf0)))end(flip(adf0)))))
次に、プログラム・ツリーの幅優先実行によってRPB1の3つのEND関数(第52図の5212ないし5214)が実行される。この3つのEND関数は、THVIA3関数5207によって生成されたすべての3つの書込みヘッドをなくす。第57図は、3つのEND関数5212ないし5214を実行した結果を示す。
次いで、RPB0の第1のPSS関数(第52図の5216、以下では下線が施されている)が実行される。
(C(+(−0.166 −0.376)(+(−0.910 −0.0366)(−−0.297 −0.917)))(flip(pss(pss end(pss end end end(flip(adf0)))end(flip(adf0)))(pss end end end(flip(adf0)))end(flip(adf0)))))
このPSS関数は、コンデンサC3に作用し、重複コンデンサC4を作成し、新しい変更可能ワイヤZ5およびZ6を作成することによってコンデンサC3を並列化する。このPSS関数は4つの書込みヘッドを生成する。PSS関数がZ5とZ6の両方の極性を確立することに留意されたい。この極性が必要になるのは、Z6が後で各構成要素に変換されるときである。第58図は、PSS関数5216を実行した結果を示す。
次いで、RPB0の次のPSS関数(第52図の5219、以下では下線が施されている)は、コンデンサC3をもう1度並列化し、新しいコンデンサC7および変更可能ワイヤZ8およびZ9を作成する。
(C(+(−0.166 −0.376)(+(−0.910 −0.0366)(−−0.297 −0.917)))(flip(pss(pss end(pss end end end(flip(adf0)))end(flip)adf0)))(pss end end end(flip(adf0)))end(flip(adf0)))))
このPSS関数は4つの書込みヘッドを生成する。第59図は、PSS関数5219を実行した結果を示す。
次に、プログラム・ツリーの幅優先実行によってRPB0のPSS関数(第52図の5220、以下では下線が施されている)が実行される。
(C(+(−0.166 −0.376)(+(−0.910 −0.0366)(−−0.297 −0.917)))(flip(pss(pss end(pss end end end(flip(adf0)))end(flip)adf0)))(pss end end end(flip(adf0)))end(flip(adf0)))))
このPSS関数はコンデンサC4(すなわち、16として示したPSSによって生成された第2の書込みヘッドが指し示す構成要素)を並列化する。このPSS関数は、新しいコンデンサC10および変更可能ワイヤZ11およびZ12を作成する。このPSS関数は4つの書込みヘッドを生成する。第60図は、PSS関数5220を実行した結果を示す。
次に、プログラム・ツリーの幅優先実行によってEND関数(第52図の5221)が実行される。これによって、PSS関数5216によって生成されたZ5上の書込みヘッドがなくなる。
次に、プログラム・ツリーの幅優先実行によって、ワイヤZ6に作用するFLIP関数(第52図の5222、以下では下線が施される)が実行される。このFLIP関数を実行すると、1番上のLIST関数の下のプログラム・ツリーの第4レベルに配置された関数の実行が実行される。
第5レベルでは、END関数(第52図の5226、以下では下線が施されている)が実行され、それによって、C3上の書込みヘッドがなくなる。次いで、PSS関数(第52図の5227、以下では下線が施されている)が実行され、コンデンサC7(すなわち、PSS5219によって生成された第2の書込みヘッドが指し示す構成要素)が並列化される。このPSS関数は、新しいコンデンサC13および変更可能ワイヤZ14およびZ15を作成する。このPSS関数(5227)は4つの追加の書込みヘッドを生成する。
(C(+(−0.166 −0.376)(+(−0.910 −0.0366)(−−0.297 −0.917)))(flip(pss(pss end(pss end end end(flip(adf0)))end(flip(adf0)))(pss end end end(flip(adf0)))end(flip(adf0)))))
第61図は、FLIP関数(5222)、END関数(5226)、PSS関数(5227)を実行した結果を示す。
この点で、第52図のプログラム・ツリーの残りの部分は、END関数(5228、5230、5231、5232)と、2ポイント構成要素の4つのオカレンスのみからなる。
(flip(adf0))
この4つのオカレンスは、ポイント5222と5234、(前述の)5229と5243、5233と5244、及び5229と5243の各対に配置される。
5228、5230、5231、5232のEND関数は、Z8、C4、C10、Z11の書込みヘッドをなくす。
ADF0の詳細な分析
以下の議論は、第52図の一対のポイント5222と5234(以下では下線が施されている)に配置された特定の(flip(adf0))に焦点を当てたものである。
(C(+(−0.166 −0.376)(+(−0.910 −0.0366)(−−0.297 −0.917)))(flip(pss(pss end(pss end end end(flip(adf0)))end(flip(adf0)))(pss end end end(flip(adf0)))end(flip(adf0)))))
前述のように、FLIP5222はプログラム・ツリーの第4レベルで実行されており、ADF0 5234はまだ第5レベルで実行されていない。第62図は、第61図の切り取り部分であり、書込みヘッドは変更可能ワイヤZ6を指し示している。
全体的なプログラム・ツリーの第1の関数定義ブランチは、自動定義関数ADF0を定義するものであり、第52図ではDEFUN5202で始まるように示されている。ADF0の作業実行本体はNOP関数5209で始まる。ADF0は次式で与えられる。
(nop(L(+0.504(−(+(+(+0.0830 0.406)(−−0.243 0.658))(−(−(+(+0.809 0.407)(−0.893 −0.113))−0.212)(−(+(−−0.506 −0.0313)(−−0.243 0.658))(−(−0.556 0.0370)−0.946))))−0.000741))(series(series end(L −0.000741(L 0.0609 end))end)end(nop(pss end end end(C −0.949 end))))))
初期NOP関数(第52図の5209)が実行された後、インダクタ作成関数L(第52図の5215、上記で下線が施されている)は変更可能ワイヤZ6をインダクタL16に変換する。34ポイント演算実行サブツリー(上記で下線が施されている)は、値56000マイクロヘンリーを新しいインダクタL16に割り当てる。この34ポイント・サブツリーを第52図では、単に値V1 5217と呼ぶ。第63図は、(第52図の5234にある)ADF0のNOP関数およびL関数を実行した結果を示す。
次いで、開発プロセスはADF0の第1のSERIES関数(第52図の5218、以下では下線が施されている)に出会う。
(nop(L(+0.504(−(+(+(+0.0830 0.406)(−−0.243 0.658))(−(−(+(+8.086497e−01 0.407)(−0.893 −0.113))−0.212)(−(+(−−0.506 −0.0313)(−−0.243 0.658))(−(−0.556 0.0370)−0.946))))−0.000741))(series(series end(L −0.000741(L 0.0609 end))end)end(nop(pss end end end(C −0.949 end))))))
このSERIES関数5218は、初期インダクタL16と、新しい変更可能ワイヤZ17と、重複56000マイクロヘンリー・インダクタL18とからなる直列構成を作成する。このSERIES関数は3つの書込みヘッドを作成する。第64図は、ADF0の第1のSERIES関数5218を実行した結果を示す。
制御は次いで、ADF0の第2のSERIES関数(第52図の5223、以下では下線が施されている)に渡される。このSERIES関数はインダクタL16に適用される。
(nop(L(+0.504(−(+(+(+0.0830 0.406)(−−0.243 0.658))(−(−(+(+8.086497e−01 0.407)(−0.893 −0.113))−0.212)(−(+(−−0.506 −0.0313)(−−0.243 0.658))(−(−0.556 0.0370)−0.946))))−0.000741))(series(series end(L −0.000741(L 0.0609 end))end)end(nop(pss end end end(C −0.949 end))))))
この第2のSERIES関数5223は、インダクタL16(すなわち、第1のSERIES5218によって生成された第1の書込みヘッドが指し示す構成要素)と、新しい変更可能ワイヤZ19と、他の重複56000マイクロヘンリー・インダクタL20とからなる直列構成を作成する。このSERIES関数は3つの書込みヘッドも生成する。第65図は、ADF0の第2のSERIES関数5223を実行した結果を示す。
次に、プログラム・ツリーの幅優先実行によってEND関数(第52図の5224)が実行され、それによって、第1のSERIES関数5218によって作成されたZ17上の書込みヘッドがなくなる。次いで、NOP関数5225が実行される。そのため、ADF0の4回の実行はこの特定のプログラムでは相互作用せず、したがって、NOP関数は、最終的に開発される電気回路に影響を与えない。
次いで制御がEND関数(第52図の5235)に渡され、L16上の書込みヘッドがなくなる。
開発は次いで、ADF0のL関数(第52図の5236、以下では下線が施されている)に進む。
(nop(L(+0.504(−(+(+(+0.0830 0.406)(−−0.243 0.658))(−(−(+(+8.086497e−01 0.407)(−0.893 −0.113))−0.212)(−(+(−−0.506 −0.0313)(−−0.243 0.658))(−(−0.556 0.0370)−0.946))))−0.000741))(series(series end(L −0.000741(L 0.0609 end))end)end(nop(pss end end end(C −0.949 end))))))
この構成要素作成関数は、Z19に作用しそれをインダクタL21に変換する。小さな数値−0.000741(以下では下線が施されており、第66図のポイント45に単にV2として示されている)によって、インダクタL21の値は0.998マイクロヘンリーに設定される。第66図は、ADF0のL関数5236を実行した結果を示す。
制御はEND関数(第52図の5237)に渡され、L20上の書込みヘッドをなくす。次いで、制御はPSS並列分割関数5238に渡される。インダクタL21に関する議論を完了するためにこのPSS関数について後で簡単に説明する。ADF0のL関数(第52図の5246、以下では下線が施されている)はインダクタL21を値の異なるインダクタに変換する。
nop(L(+0.504(−(+(+(+0.0830 0.406)(−−0.243 0.658))(−(−(+(+8.086497e−01 0.407)(−0.893 0.113))−0.212)(−(+(−−0.506 −0.0313)(−−0.243 0.658))(−(−0.556 0.0370)−0.946))))−0.000741))(series(series end(L −0.000741(L 0.0609 end))end)end(nop(pss(pss end end end(C −0.949 end))))))
具体的には、数値0.0609(以下では下線が施され、第52図の5252に単にV3として示されている)は、L21の値を1.15マイクロヘンリーに再設定する。第67図は、ADF0のL関数5246を実行した結果を示す。
以下で下線が施されているPSS並列分割関数5238に戻るとわかるように、この関数はL18に作用し、新しいインダクタL22と、2本の新しいワイヤZ23およびZ24と、L18とからなる並列構成を作成する。このPSS関数は4つの書込みヘッドを作成する。
(nop(L(+0.504(−(+(+(+0,0830 0.406)(−−0.243 0.658))(−(−(+(+8.086497e−01 0.407)(−0.893 −0.113))−0.212)(−(+(−−0.506 −0.0313)(−−0.243 0.658))(−(−0.556 0.0370)−0.946))))−0.000741))(series(series end(L −0.000741(L 0.0609 end))end)end(nop(pss end end end(C −0.949 end))))))
第68図は、ADF0のPSS関数5238を実行した結果を示す。PSS関数5238によって生成されたこれらの書込みヘッドのうちの3つはEND関数(5247、5248、5249)によってただちに終了し、したがって、C関数(5250、以下では下線が施されている)に注意が向けられる。
(nop(L(+0.504(−(+(+(+0.0830 0.406)(−−0.243 0.658))(−(−(+(+8.086497e−01 0.407)(−0.893 −0.113))−0.212)(−(+(−0.506 −0.0313)(−−0.243 0.658))(−(−0.556 0.0370)−0.946))))−0.000741))(series(series end(L −0.000741(L 0.0609 end))end)end(nop(pss end end end (C −0.949 end))))))
このC関数は、変更可能ワイヤZ24に作用しそれをコンデンサC25に変換する。小さな数値−0.949(第52図の5454に単にV4として示されている)によって、コンデンサC25は構成要素値0.112nFを得る。第69図は、ADF0のEND関数5247ないし5249およびC関数5250を実行した結果を示す。
L16、L21、L20、Z17、L22、Z23、L18、C25がすべて、変更可能ワイヤZ6からADF0によって作成されたことに留意されたい。
Z6が2つの端部(第62図のノード7および8)を有する単なるワイヤであった場合でも、ADF0を実行した結果が3つのポート(第69図のノード6907、6908、6909)を有するサブストラクチャになることにも留意されたい。本明細書で「サブストラクチャ」の語を使用するのは、より一般的に使用される語の「サブサーキット」がSPICEでは特殊な意味を有するからである。
この3つのポートは、PSS関数5238を実行し、それに続いてC関数5250を実行し、それによって、第69図のノード8および9が、介在する構成要素(すなわち、コンデンサC25)によって分離された結果として得られる。
END関数5253および5255はL21およびC25上の書込みヘッドをなくす。
第49図は、ADF0によって作成された3ポート・サブストラクチャを示す。
第70図は、ADF0によって作成されたこの同じ3ポート・サブストラクチャを異なる配向で三角形サブストラクチャとして示す。
第71図は、ADF0によって作成された三角形3ポート・サブストラクチャを使用して世代35から得たベストオブジェネレーション回路(上記では第62図として示した)を示す。
アーキテクチャ変更操作を使用した低域LCフィルタの設計
本節の目標は、自動定義関数およびアーキテクチャ変更操作を使用しながら、前述の設計特性を満たす低域フィルタを設計することである。すなわち、自動定義関数のアーキテクチャ構成は、ユーザによって事前に指定されることがなく、実行時にアーキテクチャ変更操作を使用して動的に進化する。
1994年8月4日に出願された「Simultaneous Evolution Of The Architecture Of A Multi−Part Program To Solve A Problem Using Architecture Altering Operations」と題する米国特許出願第08/286134号は、6つのアーキテクチャ変更操作、すなわちブランチ複製、引数複製、ブランチ削除、引数削除、ブランチ作成、引数作成を使用して遺伝的プログラミングの実行時にプログラム全体のアーキテクチャを動的に進化させる方法について説明している。Koza(1994b)も参照されたい。この6つのアーキテクチャ変更操作を以下に示す。
(i)ブランチ複製:1つの既存のプログラムの1つの関数定義ブランチを複製し追加の適切な変更を加えてこの変更を反映することによって新しいポピュレーションの1つの新しい子孫プログラムを作成する。
(ii)引数複製:1つの既存のプログラムの1つの関数定義ブランチの1つの引数を複製し追加の適切な変更を加えてこの変更を反映することによって新しいポピュレーションの1つの新しい子孫プログラムを作成する。
(iii)ブランチ削除:1つの既存のプログラムの1つの関数定義ブランチを削除し追加の適切な変更を加えてこの変更を反映することによって新しいボピュレーションの1つの新しい子孫プログラムを作成する。
(iv)引数削除:1つの既存のプログラムの1つの関数定義ブランチの1つの引数を削除し追加の適切な変更を加えてこの変更を反映することによって新しいポピュレーションの1つの新しい子孫プログラムを作成する。
(v)ブランチ作成:既存のブランチの一部を含む1つの新しい関数定義ブランチを追加し、そのブランチの参照を作成することによってポピュレーションの1つの新しい子孫プログラムを作成する。
(vi)引数作成:既存の関数定義ブランチの引数リストに1つの新しい引数を追加し、そのブランチの参照を適切に修正することによってポピュレーションの1つの新しい子孫プログラムを作成する。
この6つのアーキテクチャ変更操作は、遺伝的プログラミングが実行時に、関数定義ブランチを使用するかどうかと、いくつの関数定義ブランチを使用するかと、各関数定義ブランチが有する引数の数を動的に決定できるようにする自動方法を提供する。アーキテクチャ変更操作と自動定義関数は共に、問題の表現を変更し、同時に問題を解決する自動方法を提供する。別法として、アーキテクチャ変更操作と自動定義関数は、問題を非事前指定次元の非事前指定数のサブプロブレムに分解し、サブプロブレムを解き、サブプロブレムの解を組み立てて問題全体の解を得る自動方法とみなすこともできる。
アーキテクチャ変更操作を使用した低域LCフィルタ用の準備ステップ
エンブリオニック回路
2つの書込みヘッドを有する1入力1出力回路に関する第4図のエンブリオニック回路はこの問題に適している。
プログラム・アーキテクチャ
エンブリオニック回路は最初、それぞれ、各結果生成ブランチに関連付けられた、2つの書込みヘッドを有するので、各プログラム・ツリーに2つの結果生成ブランチ(RPB0およびRPB1と呼ぶ)がある。
自動定義関数がもしあればその数は、アーキテクチャ変更操作を使用して進化プロセスによって決定される。
プログラムの初期ポピュレーション中の各プログラムは、自動定義関数(すなわち、2つの結果生成ブランチ)を含まない一様なアーキテクチャを有する。
関数セットおよび終端セット
関数は、この問題に関しては4つの範疇に分割される。
(1)エンブリオニック回路から回路のトポロジを作成する接続作成関数
(2)回路内のワイヤ(およびその他の構成要素)を、指定された構成要素に変換する構成要素作成関数
(3)共に回路の各構成要素についての数値(寸法決定)を指定する演算実行関数および数値終端
(4)数がアーキテクチャ変更操作によって決定される自動定義関数(サブルーチン)
終端と関数セットは、自動定義関数の存在がアーキテクチャ変更操作によって決定されることを除いて前述の実行進化自動定義関数の例と同じである。
適応度
適応度は、前述のLC低域フィルタ設計問題と同じである。
パラメータ
制御パラメータは、以下の違いを除いて、すでに使用したものと同じであった。
(1)アーキテクチャ変更操作は各世代でまれに使用されるものである。世代5よりも後の各世代での操作の割合は、クロスオーバが86.5%、繁殖が10%、突然変異が1%、ブランチ複製が1%、引数複製が0%、ブランチ削除が0.5%、引数削除が0.0%、ブランチ作成が1%、引数作成が0%であった。少数のプログラムしか自動関数を有さない初期世代で大量のコンピュータ時間を費やすのを回避するために、世代6よりも前の各世代での操作の割合は、クロスオーバが78.0%、繁殖が10%、突然変異が1%、ブランチ複製が5.0%、引数複製が0%、ブランチ削除が1%、引数削除が0.0%、ブランチ作成が5.0%、引数作成が0%であった。
(2)各プログラム全体中の2つの結果生成ブランチ(および自動定義関数)のそれぞれの最大サイズは300ポイントである。
(3)自動定義関数の最大数は4である。
(4)各自動定義関数ごとの引数の数は零である。
(5)初期ランダムポピュレーションの作成時に関数をランダムに選択する際に、C関数、L関数、SERIES関数、PSS関数、FLIP関数、NOP関数、THGND関数にそれぞれ、相対加重8を割り当て、同時に8つのTHVIA関数のそれぞれおよびCUT関数に相対加重1を割り当てた。
終端作成および結果指定
終端作成および結果指定方法は、すでに使用したのと同じである。
アーキテクチャ変更操作を使用した低域LCフィルタに関する結果
世代77から得たベストオブラン個体プログラムは、(101個中)101個のヒットを記録し、0.000765の適応度を有する。プログラム・ツリーはRPB0が87ポイントであり、RPB1が2ポイントであり、ADF0、ADF1、ADF2、ADF3はそれぞれ、65ポイント、66ポイント、94ポイント、9ポイントである。
ADF0およびADF1は、自動定義関数の一般的な使用法、すなわち特定のサブストラクチャを定義しそれを複数回にわたって再使用する一般的な方法を示す。ADF0は6回呼び出され、ADF1は3回呼び出される。第72図はこのADF0を示す。ADF0のサブストラクチャは、3つのインダクタの直列構成からなる(かつ1つのインダクタと電気的に等価である)。ADF0を6回呼び出すことによって、この値を1回定義し、複数回にわたって再使用することができる。
ADF1は1つの28600マイクロヘンリー・インダクタからなる。ADF1を3回呼び出すことによって、このインダクタを1回作成し、次いで再使用することができる。ADF2は、1つの37300マイクロヘンリー・インダクタのみからなり、1回しか呼び出されない。ADF3は1回呼び出される。ADF3は、以下に示すように、接続作成関数のみからなり、構成要素を作成させない。
(pss end(series end end(flip end))end end)
第73図は、世代77から得たベストオブラン回路を示す。
多目的適応度
進化プロセスは適応度によって駆動される。上記の議論では、適応度を単一の因子、すなわち(設計中のフィルタの選択された周波数ドメイン内の)回路の所望の動作と回路の実際の動作との間の偏差の加重和で測定した。ユーザが供給する適応度は、回路の電力消費量や、回路の構成要素の数や、構成要素のコストや、構成要素が占める表面積や、時間ドメイン内の回路の動作や、周波数ドメイン内の回路の動作を含めて、回路の計算可能な特性または特性の組合せを組み込むことができる。
多くの場合、実行の適応度に複数の因子を組み込むことが望ましい。本節では、多目的適応度を用いて、前述の低域フィルタ設計問題を再び検討する。
適応度の一次因子は、(前述の)問題の設計要件に対する満足度である。二次因子は、(特定のコスト割り当てが与えられた場合)倹約された設計による解決策を推進する。具体的には、回路の適応度は、周波数ドメイン内の101個のサンプル・ポイントに関して、101回よりも少ないヒット(すなわち、101個の適合サンプル・ポイント)を記録したあらゆる回路の実際の電圧と所望の電圧の偏差の、すでに使用したのと同じ加重和を10.0に加えた値である。しかし、完全に101回のヒットを記録した回路の場合、適応度は、コンデンサの数を0.001倍し、それにインダクタの数の0.002倍を加えた値である。すなわち、この多目的適応度では、適応度に二次因子として回路の倹約を組み込む。倹約性は、インダクタのコストをコンデンサの2倍にするように算出される。この二次因子は、(このような実行におけるプログラム・ツリーで最大数のポイントが許容される場合)常に10.0よりもかなり小さく、したがって、101個の満足ポイントを有する回路の適応度は常に、100個以下の満足ポイントを有する最良の回路の適応度よりも優れている(低い)。101個の満足ポイントを有する回路のうちで、より倹約された回路がより良い回路とみなされる。この多目的適応度は、100%の満足度が得られるまで設計要件に対する満足度が完全に倹約性を支配し、それ以後、適応度は倹約性に基づくものになるという意味で辞書的である。
ある実行では、101回のヒットを記録した第1の個体は世代37に現れた。第74図は、世代37から得た100%満足回路の進化した14個の構成要素(10個のインダクタと4つのコンデンサ)のコストが0.024であることを示す。世代37の後に、この実行によって、101回のヒットを記録した多数の他の回路構成プログラム・ツリーが生成された。101回のヒットを記録したすべてのプログラムは、100回以下のヒットを記録したプログラムよりも適応度が優れていた。しかし、101回のヒットを記録したプログラムのうちで、より倹約されたプログラムの方が適応度が優れていた。したがって、世代52など実行の後の世代では、101回のヒットを記録したより倹約された個体が現れた。
第75図は、世代52から得た100%満足回路の進化した12個の構成要素(8つのインダクタと4つのコンデンサ)のコストが0.020であることを示す。4つのインダクタ(L41、L31、L18、L39)からなる直列構成からL41およびL31を削除すると倹約性が向上することに留意されたい。設計要件に対する100%満足度は、L24、L5、L17の値をわずかに変更することによって維持された。また、L18およびL39はフリップされている。この特定の倹約プログラムは(世代37から得た100%満足プログラムの場合の235ポイントと比べて)261ポイントを有する。
この実行は、ユーザが定義する倹約度に基づいて一次因子および二次因子を組み込んだ多目的適応度を使用した遺伝的プログラミングを使用して電子回路を進化させることが可能であることを示している。
1入力2出力回路の設計
2バンド・クロスオーバ(ウーハおよびツィータ)フィルタは1入力2出力回路であり、ある指定された周波数よりも低いすべての周波数を第1の出力ポート(ウーハ)に通過させ、この指定された周波数よりも高いすべての周波数を第2の出力ポート(ツィータ)に通過させる。2バンド・クロスオーバ・フィルタは、入力と第1の出力ポートとの間の低域フィルタと、入力と第2の出力ポートとの間の高域フィルタとからなる並列構成によって実現することができる。
本節では、クロスオーバ周波数が2512Hzである2バンド・クロスオーバ・フィルタが設計される。
2バンド・クロスオーバ(ウーハおよびツィータ)フィルタ用の準備ステップ
本節では、この問題に関する準備ステップについて論じる。
エンブリオニック回路
この問題に必要なエンブリオニック回路は、2バンド・クロスオーバ(ウーハおよびツィータ)フィルタが2つの出力を有することを反映する。
第76図の下4分の3は、2バンド・クロスオーバ・フィルタの1入力2出力回路用のエンブリオニック回路を示す。エネルギー源は2V正弦電圧源VSOURCEであり、その負(−)の端部はノード0(接地)に接続され、正(+)の端部はノード1に接続される。ノード1とノード2との間にソース抵抗RSOURCEがある。ノード2とノード3との間に1本の変更可能ワイヤ(すなわち、書込みヘッドを有するワイヤ)Z0があり、ノード2とノード6との間に第2の変更可能ワイヤZ1があり、ノード3とノード6との間に第3の変更可能ワイヤZ2がある。変更可能ワイヤZ0、Z1、Z2の周りに、3つの書込みヘッド(太い線)がそれらのワイヤを指し示すことを示す円がある。ノード3とノード4との間に分離ワイヤーZOUT1があり、ノード4に電圧プローブVOUT1があり、ノード4と接地との間に固定負荷抵抗RLOAD1がある。また、ノード6とノード5との間に分離ワイヤーZOUT2があり、VOUT2と呼ばれる電圧プローブがノード5にあり、ノード5と接地との間に負荷抵抗RLOAD2がある。すべての3つの抵抗は0.00794KΩの抵抗を有する。このエンブリオニック回路のすべての上記の素子(Z0、Z1、Z2を除く)は常に固定され、回路の開発プロセス中に修正されることはない。開発プロセスの開始時に、書込みヘッドが3本の変更可能ワイヤZ0、Z1、Z2のそれぞれを指し示す。
一実施形態では、エンブリオニック回路は、回路内の1つのノードに達する線の数が2と3のどちらかになるように設計される。この条件は、回路構成プログラム・ツリー内のすべての関数によって維持される。分離ワイヤーZOUT1およびZOUT2は、プローブ・ポイントVOUT1およびVOUT2を開発プロセス中に修正されないように保護する。
このエンブリオニック回路ではドメインの知識がほとんど必要とされないことに留意されたい。具体的には、(1)エンブリオニック回路は回路であり、(2)このエンブリオニック回路は1つの入力と2つの出力とを有し、(3)1つの入力(ノード2)と2つの出力(ノード4および5)との間に完全な2地点間接続性を与える変更可能な接続部Z0、Z1、Z2がある。具体的には、低域フィルタと高域フィルタを並列に組み合わせることによって2バンド・クロスオーバ・フィルタを構築することができるという知識は使用されないことに留意されたい。
このエンブリオニック回路は、任意の1入力2出力回路に適用することができる。この適応度によって進化探索プロセスを所望の回路に近づけることができる。
プログラム・アーキテクチャ
エンブリオニック回路は最初、それぞれ、各結果生成ブランチに関連付けられた、3つの書込みヘッドを有し、3つの結果生成ブランチがある。この例示的な問題では、自動定義関数は使用されない。したがって、プログラム・ツリー全体のアーキテクチャは、LIST関数によって結合された3つの結果生成ブランチからなる。
第76図の上4分の1は、例示的なプログラム・ツリーの1番上の4つのポイントを示す。1つの書込みヘッドは最初、L関数7602に関連付けられ、変更可能ワイヤZ0を指し示し、第2の書込みヘッドは、C関数7603に関連付けられ、変更可能ワイヤZ1を指し示し、第3の書込みヘッドは、C関数7604に関連付けられ、変更可能ワイヤZ2を指し示す。
第78図は、第1の結果生成ブランチのL関数(第76図の7602)、第2の結果生成ブランチのC関数(第76図の7603)、第3の結果生成ブランチのC関数(第76図の7604)を実行した結果としての第76図のエンブリオニック回路に対する効果を示す。
L関数は、第76図の変更可能ワイヤZ0に作用して第78図のインダクタL3に変換する。ノード2(第76図には図示せず)の左側への演算実行サブツリー・ブランチは、このL関数の評価の一部として評価され、解釈されスケーリングされると、インダクタL3の構成要素値として478マイクロヘンリーを確立する。
C関数7603は、第76図の変更可能ワイヤZ1に作用して第78図のコンデンサC4に変換する。ノード3(第76図には図示せず)の左側への演算実行サブツリー・ブランチは、コンデンサC4の構成要素値として3430nFを確立する。同様に、C関数7604は、第76図の変更可能ワイヤZ2に作用して第78図の6.58nFコンデンサC5に変換する。
これらのL関数およびC関数の実行後に、書込みヘッドがL3、C4、コンデンサC5を指し示す。
関数セットおよび終端セット
終端セットおよび関数セットは、すべての3つの結果生成ブランチについて同じである。これらのセットは、自動定義関数を使用しなかったときに前述の低域フィルタを設計する問題で使用したセットと同じである。
適応度
ユーザが提供する適応度は進化プロセスを方向付ける。
ポピュレーション中の個別の各プログラム・ツリーについての適応度の評価はそのプログラム・ツリーを実行することから始まる。この実行によって、非常に簡単なエンブリオニック回路がより複雑な回路になる。そのような各回路は次いで、SPICEシミュレータの修正バージョンを使用してシミュレートされる。
SPICEシミュレータは、AC小信号分析を実行し、10Hzないし100000Hzの範囲から選択された101個の周波数値のそれぞれについて、2つのプローブ・ポイントVOUT1およびVOUT2での回路の動作を報告するよう要求される。この4桁の周波数はそれぞれ、(対数スケールを使用して)25の部分に分割され、したがって、この問題には合計で202個の適応度ケースがある。
適応度は、第1のプローブ・ポイントVOUT1で回路によって生成される周波数ドメイン内の電圧の実際の値と、その第1のプローブ・ポイントの電圧に関する目標値との間の絶対加重偏差の、101個のVOUT1周波数値にわたる和に、第2のプローブ・ポイントVOUT2で回路によって生成される電圧の実際の値と、その第2のプローブ・ポイントの電圧に関する目標値との間の絶対加重偏差の、101個のVOUT1周波数値にわたる和を加えた値で測定される。適応度の値が小さければ小さいほど良好である。零適応度は理想的なフィルタを表す。
具体的には、標準化適応度F(t)は次式で与えられる。
上式で、f(i)は適応度ケースiの周波数(ヘルツ単位)であり、d1(x)はプローブ・ポイントVOUT1に関する周波数xでの目標値と観測値との間の差であり、d2(x)はプローブ・ポイントVOUT2に関する周波数xでの目標値と観測値との間の差であり、W1(y,x)はプローブ・ポイントVOUT1に関する周波数xでの差yに対する加重であり、W(y,x)はプローブ・ポイントVOUT2に関する周波数xでの差yに対する加重である。
適応度は、理想値にはペナルティを課さず、あらゆる受け入れられる偏差にわずかにペナルティを課し、あらゆる受け入れられない偏差に重いペナルティを課す。
まずウーハ部とVOUT1について考える。2バンド・クロスオーバ・フィルタのウーハ部は低域フィルタである。
10Hzないし1905Hzの間隔中の58個のポイントのそれぞれに関する手順を以下に示す。電圧がこの間隔中の理想値の1.0Vに等しい場合、偏差は0.0である。電圧が970mVないし1000mVである場合、1000mVからの偏差の絶対値が係数1.0で加重される。電圧が970mV未満である場合、1000mVからの偏差の絶対値が係数10.0で加重される。この構成は、通過帯域内の理想電圧が1.0Vであり、30mVの不足がこの問題の設計要件を満たし、通過帯域内の970mVよりも低い電圧が受け入れられないことを反映する。
周波数3311以上を表す38個の適応度ケースの場合、手順を以下に示す。
電圧が0mVないし1mVである場合、0mVからの偏差の絶対値が係数1.0で加重される。電圧が1mVよりも高い場合、0mVからの偏差の絶対値が係数10.0で加重される。この構成は、停止帯域内の理想電圧が0.0Vであり、0mVよりも高い1mVリップルが受け入れられ、停止帯域内の1mVよりも高い電圧が受け入れられないことを反映する。
この2つの主要帯域における適応度ケース(61および35)の数は十分近い数である。したがって、この2つの主要帯域における適応度ケースのそれぞれの異なる数に与える加重を等しくしようとはしなかった。次の適応度ケース(すなわち、2089Hzおよび2291Hz)では、1000mVからの偏差の絶対値が係数1.0で加重される。次の適応度ケース(すなわち、周波数2512Hz)では、500mVからの偏差の絶対値が係数1.0で加重される。次の2つの適応度ケース(すなわち、2754Hzおよび3020Hz)では、0mVからの偏差の絶対値が係数1.0で加重される。
次に、ツィータ部およびVOUT2について考える。2バンド・クロスオーバ・フィルタのツィータ部は高域フィルタである。ツィータ部の適応度は、ウーハ部の構成の鏡像である。
SPICEでシミュレートできない回路には高い適応度ペナルティ値(108)が割り当てられる。
ヒットは、電圧が受け入れられるか、あるいは理想的なものであり、あるいは「don’t care」帯域(この特定の問題とは関係がない)に存在する適応度ケースの数として定義される。したがって、ヒットの数は最大で202である。
パラメータ
ポピュレーションサイズMは、640000である。
各世代の遺伝操作の割合は、クロスオーバが89%、繁殖が10%、突然変異が1%であった。この例示的な問題では、アーキテクチャ変更操作は使用しなかった。
各プログラム全体内の3つの結果生成ブランチのそれぞれについて最大サイズ200ポイントを確立した。
初期ランダムポピュレーションの作成時に関数をランダムに選択する際に、C、L、SERIES、PSS、FLIP、NOP、GNDにそれぞれ、相対加重8を割り当て、同時に8つのVIA関数のそれぞれに相対加重1を割り当てた。
遺伝的プログラミングの実行を制御する他の小パラメータはKoza1994(アペンディックスD)に指定されたデフォルト値であった。
終了基準および結果指定
設計要件が厳しいので、合理的な時間で202個のヒットを記録する個体を進化させることが可能であるかどうかはわからなかった。この問題は低速で実行されるので、世代Gの最大数を任意の大きな数に設定し、各実行時に開発を待った。
2バンド・クロスオーバ(ウーハおよびツィータ)フィルタに関する結果
世代0におけるランダムに作成された640000個の回路のポピュレーションのうちでいくつかの個体は他の個体よりも優れている。世代0から得た最悪の個体回路構成プログラム・ツリーは非常に異常であり、SPICEシミュレータがそのような回路をシミュレートできない回路を作成する。このような回路には高い適応度ペナルティ値(すなわち、108)が割り当てられる。
世代0から得たシミュレート可能な回路の中間回路は適応度が964.3であり、10回のヒットを記録する。世代0のこの中間回路は、周波数を顕著に差別的に通過させることはない。
世代0の最良の個体プログラム・ツリーは適応度が159.0であり、(202回中)85回のヒットを記録する。このプログラム・ツリーの第1の結果生成ブランチは181ポイントを有し、第2の結果生成ブランチは181ポイントを有し、第3の結果生成ブランチは18ポイントを有する。第78図は、世代0から得たベストオブジェネレーション回路を示す。
世代12から得たベストオブジェネレーション個体は適応度が80.3であり、(202回中)116回のヒットを記録する。世代20のベストオブジェネレーション個体は適応度が38.8であり、125回のヒットを記録する。
後で世代137に現れるベストオブラン回路と同じトポロジを有する回路が世代79に現れる。世代79のこの回路は、第79図に示されており、適応度が1.06であり(すなわち、世代137から得たベストオブラン個体の適応度ほど良好ではない)、196回のヒットを記録する。この回路の大部分の構成要素値は、最終的なベストオブラン回路とは異なる。しかし、これらのそれぞれの異なる構成要素値はすべて、世代137に現れるまだ発見されていないベストオブラン個体の最終的な構成要素値の1桁内である。
世代137のベストオブラン個体プログラム・ツリーは適応度が0.7807であり、(202回中)192回のヒットを記録する。このプログラム・ツリーの3つの結果生成ブランチはそれぞれ、187ポイント、198ポイント、191ポイントを有する。進化したこの回路の対称性に留意されたい。
第80図は、世代137から得たベストオブラン個体に関する回路を示す。世代137から得たこのベストオブラン回路が完全な202回のヒットは記録しないことに留意されたい。現在実施可能な量の時間および労力でこの問題に関する100%満足回路を進化させることができるかどうかは不明である。
バッタワース回路は、等級付けされた一連の「はしご」ベンチマーク・フィルタである。オーダー3のバッタワース応答は、いくつかの実際的な応用例で十分なものとみなされている。(フィルタのカットオフ周波数を2512Hzで適切にスケーリングした場合に)低域バッタワース3フィルタおよび高域バッタワース3フィルタの組合せに適応度およびヒット度を適用すると、組合せ回路は(202回中)162回のヒットを記録する。2つのバッタワース5フィルタの周波数ドメイン応答は184回のヒットのスコアに対応する。2つのバッタワース7フィルタの周波数ドメイン応答は190回のヒットのスコアに対応する。前述の世代137から得たベストオブラン回路は、192回のヒットを記録し、したがって、オーダー7の低域バッタワース・フィルタと高域バッタワース・フィルタの組合せよりもわずかに優れた応答を与えるとみなすことができる。低域バッタワース7フィルタと高域バッタワース7フィルタの組合せは、7つのインダクタと7つのコンデンサを必要とするが、遺伝的に進化したベストオブラン回路は6つのインダクタと7つのコンデンサしか必要としない。したがって、遺伝的に進化したフィルタ回路は、バッタワース7フィルタよりもわずかに優れた応答を有し、わずかにより倹約されている。
世代137から得たベストオブラン回路の低域部分はバッタワース・トポロジを有する(ただし、構成要素のバッタワース値は有さない)。これに対して、ベストオブラン回路の高域部分は、余分のコンデンサを有し、したがってバッタワース・トポロジを有さない。周波数応答の高域部分(すなわち、余分なコンデンサを含む部分)については、低域部分よりも鋭い境界が2512Hzの周りにある。
1入力3出力回路の設計
3バンド・クロスオーバ(ウーハ−ミッドレンジ−ツィータ)フィルタは1入力3出力回路であり、ある指定された周波数よりも低いすべての周波数を第1の出力ポート(ウーハ)に通過させ、この指定された周波数とは異なりそれよりも高い指定されたある周波数より高いすべての周波数を第3の出力ポート(ツィータ)に通過させ、中間周波数を第2の出力ポートに通過させる(ミッドレンジ出力)。
この問題に必要な3バンド・クロスオーバ(ウーハ−ミッドレンジ−ツィータ)フィルタが3つの出力を有することを反映するエンブリオニック回路は、3つの出力を有する。
第81図は、3バンド(ウーハ−ミッドレンジ−ツィータ)クロスオーバ・フィルタの1入力3出力回路用のエンブリオニック回路を示す。エネルギー源は2V正弦電圧源VSOURCEであり、その負(−)の端部はノード0(接地)に接続され、正(+)の端部はノード1に接続される。ノード1とノード2との間にソース抵抗RSOURCEがある。ノード2とノード3との間に1本の変更可能ワイヤ(すなわち、書込みヘッドを有するワイヤ)Z0があり、ノード2とノード5との間に第2の変更可能ワイヤZ1があり、ノード2とノード7との間に第3の変更可能ワイヤZ2がある。変更可能ワイヤZ0、Z1、Z2の周りに、3つの書込みヘッドがそれらのワイヤを指し示すことを示す円がある。ノード3とノード4との間に分離ワイヤーZOUT0があり、VOUT0と呼ばれる電圧プローブがノード4にあり、ノード4と接地との間に固定負荷抵抗RLOAD1がある。第2に、ノード5とノード6との間に分離ワイヤーZOUT1があり、、VOUT1と呼ばれる電圧プローブがノード6にあり、ノード6と接地との間に負荷抵抗RLOAD1がある。第3に、ノード7とノード8との間に分離ワイヤーZOUT2があり、VOUT2と呼ばれる電圧プローブがノード8にあり、ノード8と接地との間に負荷抵抗RLOAD1がある。すべての3つの抵抗は0.00794KΩの抵抗を有する。このエンブリオニック回路のすべての上記の素子(Z0、Z1、Z2を除く)は常に固定され、回路の開発プロセス中に修正されることはない。開発プロセスの開始時に、書込みヘッドが3本の変更可能ワイヤZ0、Z1、Z2のそれぞれを指し示す。回路のすべてのその後の開発は書込みヘッドから始まる。回路構成プログラム・ツリー内の関連する関数に従って書込みヘッドが指し示す構成要素を修正することによって回路が開発される。
したがって、プログラム・ツリー全体のアーキテクチャは、LIST関数によって結合された3つの結果生成ブランチからなる。すなわち、エンブリオニック回路は最初、それぞれ、各結果生成ブランチに関連付けられた、3つの書込みヘッドを有する。
問題の要件が高くなるにつれて、遺伝的プログラミングを実行する場合には一般に、ポピュレーションのサイズを大きくし、世代の数を増やして所望の結果を生成する必要がある。たとえば、この3出力問題を実行したときには、前述の問題で使用したのと同じポピュレーションサイズ(640000)を使用して、きちんと要件を満たす回路を進化させた。しかし、640000個の個体のみのポピュレーションを使用してこの問題に関して進化させた回路は、すべての3つの出力ポートに関する周波数ドメイン内の100%のサンプル・ポイントを満足したわけではなかった。そのような場合は、ポピュレーションのサイズおよび世代の数を増加させる(その結果、問題の解決に関わる資源を増加させる)必要がある。
多重入力多重出力エンブリオニック回路
多くの電気回路は、複数の入力と複数の出力とを有する。1例として、複数の信号チャネルを処理するシステムが挙げられる。他の例として、ロボットを制御する回路が挙げられ、この回路には、たとえば距離センサからの2つの入力と、ロボットの左側および右側のホールの速度を制御する2つの出力がある。
第82図は、2入力2出力回路を進化させる基礎として使用できるエンブリオニック回路を示す。電圧源VSOURCE1はノード0(接地)およびノード1に接続され、それに対して、VSOURCE2はノード8およびノード0(接地)に接続される。ノード1とノード2との間に1つのソース抵抗RSOURCE1があり、ノード8とノード7との間に他のソース抵抗RSOURCE1がある。ノード3とノード4との間に分離ワイヤーZOUT1があり、VOUT1と呼ばれる電圧プローブがノード4にあり、ノード4とノード0(接地)との間に固定負荷抵抗RLOAD1がある。また、ノード6とノード5との間に分離ワイヤーZOUT2があり、VOUT2と呼ばれる電圧プローブがノード5にあり、ノード5とノード0(接地)との間に負荷抵抗RLOAD2がある。変更可能ワイヤZ1(ノード3とノード2との間)と、Z2(ノード7とノード3との間)と、Z3(ノード7とノード2との間)と、Z4(ノード6とノード3との間)と、Z5(ノード6とノード2との間)と、Z6(ノード6とノード7との間)がある。この6本の変更可能ワイヤは2つの入力と2つの出力との間に完全な2地点間接続性を与える。開発プロセスの開始時には、(変更可能ワイヤZ1、Z2、Z3、Z4、Z5、Z6を指し示す)6つの書込みヘッドがある。
サブサーキットを構成要素として使用した多帯域通過フィルタの設計
回路を作成するために使用される構成要素は抵抗、コンデンサ、インダクタなどと同程度にプリミティブである必要はない。SPICEにおけるサブサーキット機能によって、サブサーキットを定義することができる。SPICEでサブサーキットを定義した後、そのサブサーキットは、プリミティブ構成要素を使用できる任意の場所で繰り返し使用することができる。すなわち、サブサーキットの参照は回路のネットリストに現れる。
サブサーキットは、1本または複数のリード線を有することができ、形式パラメータを有することができる。
サブサーキットは、SPICEではSUBCKTコマンドを使用して定義される。各SUBCKT定義は、サブサーキットの名前と、そのノードの1つまたは複数の形式パラメータと、サブサーキットを定義するネットリストと、ENDSコマンド(入れ子サブサーキット定義を使用している場合はサブサーキットの名前を含まなければならない)とからなる。各SUBCKT定義は、サブサーキットを定義するネットリスト内の構成要素およびノードのそれ自体のローカル番号付けを有する。サブサーキットは、Xで始まるネットリストの行、固有の番号、1つまたは複数のノード番号、サブサーキットの名前によって呼び出される。たとえば、以下に、楕円形5低域フィルタ用の2本のリード線を含むサブサーキットのサブサーキット定義を示す。この低域フィルタのカットオフ周波数は34258ヘルツである。
.SUBCKT ELIP5_LP_1 1 2
L1 1 3 5.76e+03uH
L2 3 4 3.46e+02uH
C3 4 0 5.90e+00nF
L4 3 5 8.99e+03uH
L5 5 6 9.40e+02uH
C6 6 0 5.26e+00nF
L7 5 2 5.24e+03uH
.ENDS ELIP5_LP_1
サブサーキットの名前はELIP5_LP_1である。サブサーキットは2つのノード、すなわちこの場合はノード1およびノード2を参照する。サブサーキットは5つのインダクタと2つのコンデンサとを有する。サブサーキット定義はENDS行で終了する。
第103図は、この楕円形5低域フィルタ・サブサーキットを示す。
第104図は、楕円形5高域フィルタ・サブサーキットを示す。高い抵抗を有する2つの抵抗R8およびR9は、SPICEではシミュレートできない浮動ノードを防止するために追加される。これらの抵抗を物理回路に含める必要はない。
SUBCKTコマンドが新しい構成要素を定義するために使用され、このコマンドが自動定義関数と同じではないことに留意されたい。
SPICEのサブサーキット機能は、第1の通過帯域が100Hzから始まって200Hzで終わり、第2の通過帯域が10KHzから始まって20KHzで終わり、通過帯域および停止帯域の許容リップルがオーダー5の楕円形フィルタの許容リップルである多帯域通過フィルタを設計することによって示される。この目標は、低域フィルタおよび高域フィルタを構成要素として使用するが、インダクタやコンデンサを構成要素として使用することのない多通過帯域フィルタを設計することである。
多通過帯域フィルタ用の準備ステップ
エンブリオニック回路
この問題には、1つの書込みヘッドを有するエンブリオニック回路を使用する。このエンブリオニック回路は、ワイヤZ0上に書込みヘッドがないことを除いて第3図のエンブリオニック回路と同じである。
プログラム・アーキテクチャ
この例示的な問題では、自動定義関数は使用されない。
エンブリオニック回路は最初に1つの書込みヘッドを有するので、各プログラム・ツリー全体に1つの結果生成ブランチがある。
この例示的な問題の場合、各構成継続サブツリーについての関数セットFccsは次式で与えられる。
Fccs={ELIP5_LP,ELIP5_HP,SERIES,PSS,FLIP,NOP,THGND,THPOS,THVIA0,THVIA1,THVIA2,THVIA3,THVIA4,THVIA5,THVIA6,THVIA7},
この場合、ELIP5_LP関数およびELIP5_HP関数はそれぞれ、オーダー5の楕円形フィルタのカットオフ周波数を指定する1つの引数を取り出す。この引数は演算実行サブツリーに含まれる。その場合、ELIP5_LP(またはELIP5_HP)関数は、所望のカットオフ周波数を有するオーダー5の低域(または高域)楕円形フィルタがモデルであるサブサーキットを与える。
各構成継続サブツリーについての終端セットTccsは以下のものからなる。
Tccs={END,CUT}.
各演算実行サブツリーについての関数セットFapsは次式で与えられ、
Faps={+,−}
それぞれ、2つの引数をとる。
各演算実行サブツリーについての終端セットTapsは次式で与えられる。
Taps={R}
上式で、Rは−1.000ないし+1.000の浮動小数点ランダム定数を表す。
適応度
この問題では、電圧VOUTがプローブされ、回路は周波数ドメイン内で観察される。SPICEシミュレータは、AC小信号分析を実行し、4桁の周波数(10Hzないし100000Hz)の範囲から選択された101個の周波数値のそれぞれについての回路の動作を報告するよう要求される。各桁は(対数スケールを使用して)25個の部分に分割される。
適応度は、プローブ・ポイントVOUTで回路によって生成される周波数ドメイン内の電圧の実際の値と、目標電圧値との間の絶対加重偏差の、101個の適応度ケースにわたる和で測定される。適応度の値が小さければ小さいほど良好である。零適応度は理想的なフィルタを表す。
適応度は、理想値にはペナルティを課さず、あらゆる受け入れられる偏差にわずかにペナルティを課し、あらゆる受け入れられない偏差に重いペナルティを課す。
周波数範囲は、2つの通過帯域と、3つの停止帯域と、4つの「don’t care」領域に分割される。
2つの通過帯域内のそれぞれの8ポイント(合計で16ポイント)のそれぞれに関する手順を以下に示す。電圧がこの間隔中の理想値の1.0Vに等しい場合、偏差は0.0である。電圧が950mVないし1000mVである場合、1000mVからの偏差の絶対値が係数1.0で加重される。電圧が950mV未満である場合、1000mVからの偏差の絶対値が係数10.0で加重される。この構成は、通過帯域内の理想電圧が1.0Vであり、50mVの不足が受け入れられ、通過帯域内の950mVよりも低い電圧が受け入れられないことを反映する。この種のLC回路で電圧が1.0Vを超えることは不可能である。
3つの停止帯域内の53個のポイントのそれぞれに関する手順を以下に示す。電圧が0mVないし5mVである場合、0mVからの偏差の絶対値が係数1.0で加重される。電圧が5mVよりも高い場合、0mVからの偏差の絶対値が係数10.0で加重される。この構成は、停止帯域内の理想電圧が0.0Vであり、0mVよりも高い5mVリップルが受け入れられ、停止帯域内の5mVよりも高い電圧が受け入れられないことを反映する。
各通過帯域の直前に8つの「don’t care」ポイントがあり、各通過帯域の直後に8つの「don’t care」ポイントがある。
偏差は、3つの「don’t care」帯域内の32個のポイントのそれぞれについて零とみなされる。
ヒットは、電圧が受け入れられるか、あるいは理想的なものであり、あるいは「don’t care」帯域に存在する適応度ケースの数として定義される。したがって、この問題の場合、ヒットの数は最小で32であり、最大で101である。
制御パラメータ
ポピュレーションサイズMは40000であった。
終了基準および結果指定
終了基準および結果指定方法は、前述のLC低域フィルタ設計問題の場合と同じである。
サブサーキットを構成要素として使用した多帯域通過フィルタに関する結果
世代25から得た最良の回路は適応度が0.197であり、(101回中)101回のヒットを記録する。したがって、この問題は解決されるとみなすことができる。
第105図は、世代25から得たベストオブジェネレーション個体を示す。図を見ればわかるように、2つの通過帯域は、利用可能な低域楕円形フィルタ・サブサーキットおよび高域楕円形フィルタ・サブサーキットの直列並列構成によって定義される。各サブサーキットに関連付けられた数値パラメータはそのフィルタのカットオフ周波数である。これらの数値パラメータはそれぞれ演算実行サブツリーから得られる。
ハード配線構成要素を含む回路の設計
多くの実際的な設計問題はまず、ある指定された構成要素を特定の方法で回路に組み込むという要件から始まる。そのような要件は、様々な実際的な電気的問題、経済的問題、またはパッケージ問題によって動機付けることができる。
たとえば、特定の方法で接続される2つのトランジスタを組み込むための解決策が必要とされるクラスBプッシュプル増幅器を設計する必要があると仮定する。必要な方法で接続された必要な2つのトランジスタを組み込むには特殊なエンブリオニック回路を作成することができる。書込みヘッドは、この2つのトランジスタ上には配置されず、したがって開発進化全体的プロセスにわたって変更されない。次いで、進化プロセスが前述のように進行する。
トランジスタを使用した増幅器の設計
増幅器は1入力1出力回路であり、入力信号の電圧に増幅係数Aを乗じる。
増幅器の設計の開始点は、ユーザが増幅係数Aと、増幅器が動作することが予想される周波数範囲を指定することである。この問題の場合、周波数範囲20Hzないし20000Hzにわたって増幅係数3.5が追求される。
増幅器は、出力電圧が入力電圧よりも高くなる可能性があるという意味で能動回路である。抵抗、コンデンサ、インダクタのみで能動回路を実現することはできず、トランジスタや1つまたは複数の電源などの能動構成要素を存在させる必要がある。
増幅器用の準備ステップ
エンブリオニック回路
増幅器を設計する問題では、ソース抵抗と負荷抵抗とを含む1入力1出力回路が必要とされるので、第3図のエンブリオニック回路はこの例示的な問題に適している。ソース抵抗RSOURCEは1000Ωであり、負荷抵抗RLOADは8Ωである。入力交流信号源VSOURCEの振幅は500mVである。
プログラム・アーキテクチャ
この例示的な問題では、自動定義関数を使用する必要がある。
エンブリオニック回路は最初、それぞれ、各結果生成ブランチに関連付けられた、2つの書込みヘッドを有するので、各プログラム・ツリー全体には2つの結果生成ブランチがある。
したがって、ポピュレーション内の各プログラム・ツリー全体のアーキテクチャは、LIST関数によって結合された2つの結果生成ブランチからなる。
関数セットおよび終端セット
終端セットおよび関数セットは、この例示的な問題ではポピュレーション内のプログラム・ツリーの両方の結果生成ブランチについて同じである。
各ブランチは、制約付き構文構造に従って作成される。
関数は、この問題では3つの範疇に分割される。
(1)エンブリオニック回路から回路のトポロジを作成する接続作成関数
(2)回路内のワイヤ(およびその他の構成要素)を、指定された構成要素に変換する構成要素作成関数
(3)回路の各構成要素について数値(寸法決定)を指定する演算実行関数および数値終端
この例示的な問題の場合、各構成継続サブツリーについての関数セットFccsは次式で与えられる。
Fccs={R,C,QT0,QT1,QT2,QT3,QT4,QT5,QT6,QT7,QT8,QT9,QT10,QT11,SERIES,PSS,FLIP,NOP,TGND,POS,THVIA0,THVIA1,THVIA2,THVIA3,THVIA4,THVIA5,THVIA6,THVIA7},
各構成継続サブツリーについての終端セットTccsは以下のものからなる。
Tccs={END,CUT}.
各演算実行サブツリーについての関数セットFapsは次式で与えられ、
Faps={+,−}
それぞれ、2つの引数をとる。
各演算実行サブツリーについての終端セットTapsは以下のものからなる。
Taps={R}
上式で、Rは−1.000ないし+1.000の浮動小数点ランダム定数を表す。
適応度
この問題では、電圧VOUTがプローブされ、回路は周波数ドメイン内で観察される。
SPICEシミュレータは、AC小信号分析を実行し、3桁の周波数(20Hzないし20000Hz)の範囲から選択された151個の周波数値のそれぞれについての回路の動作を報告するよう要求される。各桁は(対数スケールを使用して)50個の部分に分割される。
適応度は、プローブ・ポイントVOUTで回路によって生成される周波数ドメイン内の相対電圧の実際の値と、相対電圧目標値の5デシベルとの間の絶対加重偏差の、151個の適応度ケースにわたる(すなわち、1Vに対する)和で測定される。適応度の値が小さければ小さいほど良好である。零適応度は理想的なフィルタを表す。
適応度は、理想値にはペナルティを課さず、あらゆる受け入れられる偏差にわずかにペナルティを課し、あらゆる受け入れられない偏差に重いペナルティを課す。
20Hzないし20000Hzの間隔中の151個のポイントのそれぞれに関する手順を以下に示す。相対電圧が4dBないし6dBである場合、5dBからの偏差の絶対値が係数1.0で加重される。相対電圧がこの範囲外である場合、5dBからの偏差の絶対値が係数10.0で加重される。この構成は、理想相対電圧が5dBであり、1dBの偏差が受け入れられ、1dBを超える相対電圧の偏差が受け入れられないことを反映する。
ヒットは、電圧が受け入れられるか、あるいは理想的なものである適応度ケースの数として定義される。したがって、この問題の場合、ヒットの数は最小で0であり、最大で151である。
制御パラメータ
各世代での遺伝操作の割合は、クロスオーバが89%、繁殖が10%、突然変異が1%であった。この例示的な問題ではアーキテクチャ変更操作を使用しなかった。
各プログラム全体内の2つの結果生成ブランチのそれぞれについて最大サイズ300ポイントを確立した。
初期ランダムポピュレーションの作成時に関数をランダムに選択する際に、R、C、SERIES、PSS、FLIP、NOP、THGND、THPOSにそれぞれ、相対加重24を割り当てた。8つのTHVIA関数には相対加重3を割り当てた。12個のQT関数QT0...QT11には相対加重2を割り当てた。
遺伝的プログラミングの実行を制御する他のパラメータは、Koza 1994(アペンディックスD)で指定されたデフォルト値であった。
終了基準および結果指定
終了基準および結果指定方法は、前述のLC低域フィルタ設計問題の場合と同じである。
増幅器に関する結果
世代45(第97図)から得た最良の回路は、ゼロ近傍適応度が0.00329であり、(151回中)151回のヒットを記録する。この回路は、第1の結果生成ブランチで109ポイントを有し、第2の結果生成ブランチで115ポイントを有する。目標相対電圧からの加重偏差の和がほぼ零であるので、所望の周波数範囲にわたって所望の増幅係数が達成された。
第97図は、世代45から得たベストオブジェネレーション遺伝進化増幅器を示す。
世代45から得たベストオブジェネレーション遺伝進化増幅器は、様々な段で構成されるものとみなすことができる。
第98図は、電圧利得段として解釈することのできる世代45から得たベストオブジェネレーション遺伝進化増幅器の一部を示す。
世代45から得たベストオブジェネレーション遺伝進化増幅器の他の部分(第99図)はダーリントン・エミッタ・フォロワとして解釈することができる(ただし、トランジスタQ71は従来型の構成を反転させた状態で使用される)。
第99図は、電圧利得段とダーリントン・エミッタ・フォロワ部がボックスによって強調表示された同じ回路を示す。
進化した電圧利得段および進化したダーリントン・エミッタ・フォロワ段を除く遺伝的に進化した増幅器内のあらゆるものを削除すると、残りの回路は実際に、全体的に遺伝的に進化した回路の利得に非常に類似した利得を有する増幅器になる。この残りの部分は、出力電圧1.788を達成し、それに対して、進化した回路全体は出力電圧1.7783を達成し、その差は0.01よりも小さい。世代45から得た全体的に遺伝的に進化した増幅器のデシベル単位の利得は周波数範囲全体にわたって5.0001dBであり、それに対して、残りの回路はこの範囲にわたって利得5.0464dBを達成する。したがって、遺伝的に進化した増幅器は、電圧利得段とダーリントン・エミッタ・フォロワ段とで構成された増幅器回路に機能的に非常に類似したものとして解釈することができる。
他のシミュレータ
SPICEシミュレータは好ましい実施形態では、ポピュレーション中の各個体の適応度を測定するために使用される。他のシミュレータは、特定の問題または問題のクラスに望ましいそれぞれの異なる動作特性を有する。他のシミュレータでは、SPICEシミュレータでは実行できない回路の動作の特性を測定することができる。
SPICEシミュレータを使用するには、このシミュレータを本発明に有用なものにするいくつかの変更を実施する必要がある。他のシミュレータを使用する場合、同様な変更を実施する必要がある。このような変更には、以下のことのうちのいくつかまたはすべてが含まれる。
(1)完全に開発された回路の記述がシミュレータへの適切な入力になるようにその記述を伝達することと、シミュレータから出力される生成された回路の動作が遺伝的プログラミングの実施に適した入力になるようにこの動作を伝達することとを含めて、シミュレータと汎用プログラミングとのインタフェースをとること。
(2)(必要に応じて)シミュレータを(必要な初期設定を用いて)バッチ指向システムから呼出し可能な再入サブモジュールへ変更すること。
(3)利用可能なメモリ資源を管理すること。
(4)シミュレータからの出口によってポピュレーション内の他のすべての個体および実行の他のすべての世代に対して実行全体を継続できるように、エラー条件によって生成された出口を管理すること。
(5)シミュレータが並列機械に対する指数性能劣化なしに多数の世代にわたる個体のディーム(deme)ポピュレーションを処理できるように、シミュレータを十分に効率的なものにすること。
代替実施形態では、プログラムされたディジタル信号プロセッサ(DSP)を用いてアナログ回路をシミュレートすることができる。
実際の電気構成要素を使用した適応度の測定
第1B図で、本発明の開発プロセスによって作成された電気回路の動作を決定するステップを(一実施形態では)SPICEシミュレータによって実施した。
回路の動作を決定する1つの有利な代替方法は、フィールド・プログラマブル・デバイスを使用して当該の回路を物理的に実現し、次いで、回路の物理的実現を実際に操作することによって回路の動作を決定することである。
たとえば、ディジタル回路の場合、フィールド・プログラマブル・ゲート・アレイ(FPGA)はマイクロプロセッサ・チップであり、チップを特定のタスクを実行するようにカスタマイズするように構成できるディジタル・ゲート・アレイを含む。再構成可能なFPGAの種類では、FPGA内のある接続部を活動化し、FPGAによって実行すべき特定の論理関数を指定するビット・パターンを、FPGAのSRAMメモリに設定することによってカスタマイズが行われる。Xilinix CorporationはFPGAの一流供給業者の1つである。アナログ回路については、Pilkington Micro Electronics Limitedがたとえば、切換コンデンサ技法に基づいて再構成可能なアナログ・デバイスのフィールド・プログラマブル・アナログ・アレイ(FPAA)を開発している。
第111図は、本発明のプロセスを実行する際に作成できるディジタル回路とアナログ回路のどちらかの動作を決定するためにフィールド・プログラマブル再構成可能デバイスをどのように使用できるかを示す。「全体的プロセス」1110は、電気回路の動作を決定するステップを除く本発明の全体的プロセスを表す。すなわち、「全体的プロセス」1110は、完全に開発された回路の記述を作成するステップを含む。プロセスの特定の世代でのポピュレーション内の1つの個体に関して完全に開発された回路の記述を作成すると、その記述は、通信バス1111によって「構成」ステップに伝達される。「構成」ステップ1112は回路の記述を詳細な情報に変換し、この情報は、フィールド・プログラマブル・デバイスにロードされると、このデバイスを特定の個々の回路にカスタマイズする。この情報は通常、ビット・パターンであり、フィールド・プログラマブル・デバイス内のSRAMメモリにロードされる。この情報は次いで、バス1113を介して「構成」ステップ1112からフィールド・プログラマブル・デバイス1114に伝達される。フィールド・プログラマブル・デバイス1114は次いで、所望の回路を物理的に実現する。次いで、フィールド・プログラマブル・デバイス1114に多数の異なる入力(すなわち、個々の回路の適応度を測定するために使用される適応度ケース)を与えることができる。ディジタル・フィールド・プログラマブル・ゲート・アレイ(FPGA)では、それぞれの異なる入力は通常、回路への様々なディジタル入力の多数の異なる組合せからなる。必要に応じて、この目的専用のFPGAの部分によって入力のこれらの組合せを好都合に生成することができる。アナログ・フィールド・プログラマブル・アレイでは、アナログ信号生成装置によって生成できる様々なアナログ試験信号でそれぞれの異なる入力を構成することができる。必要に応じて、この目的専用のアナログ・フィールド・プログラマブル・アレイの部分によってこれらのアナログ試験信号を生成することができる。(ディジタルであるか、それともアナログであるかにかかわらず)フィールド・プログラマブル・デバイスが(オンチップで生成されたか、それともオフチップで生成されたかにかかわらず)いくつかの異なる入力を受け取った後、通信バス1115によって個々の回路の動作を「全体的プロセス」1110に伝達することができる。
他の複雑な構造の設計
本発明の各方法に従って他の多数の複雑な構造を設計することができる。
物理構造は、電気回路と同様に、複数の異なる種類の構成要素からなる。これらの個別の構成要素は、複雑な物理構造全体を形成するように特定のトポロジに配置することができる。トポロジ構成内の各位置に様々な種類の構成要素を配置することができる。構造全体の各構成要素は、さらに1組の構成要素値(通常は数値)によって指定することができる。
第101図は、機械エンジニアが設計することができ、2つの100kgの荷重を支持するために剛性の荷重支持金属ビームや荷重支持可とう性ケーブルなどの構成要素からなる、縦壁に支持されたトラスを示す。この例示的な図では、剛性の金属ビームである構成要素はB1、B2、B3、B5、B6、B7、B8、B9として識別される。可とう性金属ケーブルはC4およびC10として識別される。この図は、2つの質量と壁も含む。この図では、示した構造内の構成要素の数は13であり、10本のビームおよびケーブルの形状構成は、4本が水平であり、2本が垂直であり、4本が斜めである構成である(図示した特定のトポロジに構成される)。
トラスを設計する際、特定の荷重を支持し、各バーまたはケーブル上の応力が剛性のバーまたは可とう性のケーブルを破壊するほど大きくならないことを指定する応力制約を満たし、トラスに含まれる材料の総重量を最小限に抑えるなど、あるコスト要件を満たすという設計上の目標がある。設計者は、所望のトラスを設計するために、構成要素の適切なトポロジ構成(すなわち、構成要素の数と、構成要素をどのように結合するか)を作成し、トポロジ構成に挿入すべき構成要素タイプ(すなわち、剛性のビームまたは可とう性ケーブル)を選択し、各構成要素についての適切な数値(すなわち、構成要素の厚さ)を選択しなければならない。したがって、設計要件を満たすトラスを設計する問題は、そのトポロジを見出し、トポロジ内の各位置に配置される構成要素の種類を選択し、すべての構成要素をサイズ付けする(通常は数値)ことである。
第102図は、2つのばねと、2つのダッシュ・ポットと、2つの質量とからなる機械構造を示す。ばねK1は2つの接合点(リード線、端部)を有し、そのうちの一方の接合点は図の1番上に示した支持ビームに接続され、他方の接合点はダッシュ・ポットB1に接続される。ダッシュ・ポットB1はばねK1に直列に接続される。ダッシュ・ポットB1は2つの接合点を有し、そのうちの一方はばねK1に接続され、他方は質量M1に接続される。同様に、質量M1、ダッシュ・ポットB2、ばねK2、質量M2は直列に接続される。
電気回路に使用されるのと同様な方法でこの機械システムなど複雑な構造の設計に本発明の開発方法を適用できることが理解されよう。そのようなシステムでは、質量をコンデンサに関連付けることができ、ばね定数がインダクタンスの逆数に対応し、ダッシュ・ポットの減衰定数がコンダクタンス(抵抗の逆数)に対応し、力がトルクに対応し、角速度が電圧に対応する。
同様に、当然のことながら、電気回路に使用されるのと同様な方法で機械システムや回転システムなど複雑な構造の設計に本発明の開発方法を適用することができる。回転システムでは、ばね定数をインダクタンスの逆数に関連付けることができ、慣性のモーメントがコンデンサに対応し、ダッシュ・ポットの減衰定数がコンダクタンス(抵抗の逆数)に対応し、力が電流に対応し、速度が電圧に対応する。
構成要素と、構成要素から構築される全体的な構造の性質を検討することによって、それぞれの異なる種類の複雑な構造の間の類似性を理解することができる。
前述のように、一実施形態では、「構成要素」とは、種類と、構成要素をさらに指定するいくつかの構成要素値と、いくつかの接合点とを有する物体である。
構成要素の各接合点の動作は、(たとえば、抵抗の2つのリード線のように)区別不能であっても、あるいは(トランジスタのコレクタ、ベース、エミッタのように)異なるものであってもよい。
したがって、たとえば電気工学では、抵抗は、種類「抵抗」の物体であり、単一の構成要素数値1000Ωを有し、2つの接合点(リード線、端部)を有するので構成要素である。
同様に、土木工学では、ある長さの剛性の金属ビームは、種類「30フィート金属ビーム」の物体であり、その直径が1インチであることを指定する単一の構成要素数値を有し、2つの接合点(端部)を有するので構成要素である。
また、機械工学では、ばねは、種類「ばね」の物体であり、そのばね定数を指定する単一の構成要素数値を有し、2つの接合点(端部)を有するので構成要素である。ダッシュ・ポットは、種類「ダッシュ・ポット」の物体であり、その減衰定数を指定する単一の構成要素数値を有し、2つの接合点を有するので構成要素である。質量は、種類「質量」の構成要素であり、その質量を指定する単一の構成要素数値を有し、1つの接合点を有する。
したがって、一実施形態では、「構造」は、(1)1組の構成要素と、(2)構成要素どうしの接合点の間の1組の無方向線線(アーク)とからなる。各無方向線線は、1つの構成要素の接合点と(通常は他の構成要素の)他の接合点との間に接続が存在することを示す。
第112図は、電気回路の分野における、「構成要素」と、構成要素で構築された「構造」の図を示す。この構造は、5つの「構成要素」と、10個の「接合点」と、7つの「アーク」とからなる。5つの構成要素とは、接地GND、電圧源V、抵抗R、コンデンサC、トランジスタQである。接地は1つの接合点のみを有し、電圧源、抵抗、コンデンサはそれぞれ、2つの接合点を有し、トランジスタは3つの接合点を有する。
電圧源の2つの接合点およびトランジスタの3つの接合点の動作は区別できるが、抵抗およびコンデンサの接合点の動作は区別できない。この動作の識別を、関係のない目的(たとえば、場合によっては、極性以外の点では区別不能な、抵抗のリード線を含めて、あらゆる接合点に正の極性および負の極性を割り当てるSPICEシミュレータの規約)に適用できる識別ラベルと混同しないよう留意されたい。
次いで、5つの構成要素の接合点は、電気回路を作成するように7つの無方向性線(アーク)によって接続される。たとえば、アーク20001は接地GDNの接合点11を接合点12(バッテリVの負のリード線)に接続する。アーク20002は接合点16(バッテリVの正のリード線)を接合点17(抵抗Rの一方のリード線)に接続する。アーク20003は抵抗Rの接合点17を接合点20(トランジスタQのエミッタ・リード線)に接続する。
アークは無方向線である。この無方向性は、アークが特定の構成要素の区別可能な接合点に接続するか、それとも区別不能な接合点に接続するかの影響を受けない。また、この無方向性は、このような接合点が接続される接合点が、1つの接合点を含む構成要素に属するか、あるいは2つの接合点を含む構成要素に属するか、あるいは3つの接合点を含む構成要素に属するか、あるいはそれ以上の接合点を含む構成要素に属するかの影響を受けない。
構造の接合点グラフとは、点(ノード)が構造の構成要素の接合点を表し、線(アーク、無方向線)が2つの接合点の間に接続が存在することを表すグラフである。
図示された5つの構成要素と、10個の接合点と、7つのアークとからなる電気回路では、接合点グラフは、(11から20まで番号付けされた)10個の点と(20001から20007まで番号付けされた)7つのアークとを有する。
第113図は、機械構造の分野における構成要素で構築された構造を示す。この構造は第102図の構造に対応する。この構造は、7つの構成要素と、11個の接続点と、6つのアークとを有する。この構造は7つの構成要素、すなわち天井、ばねK1、ダッシュ・ポットB1、質量M1、ダッシュ・ポットB2、ばねK2、質量M2を有する。天井および2つの質量はそれぞれ、1つの接合点のみを有し、ばねおよびダッシュ・ポットはそれぞれ、2つの接合点を有する。すべてのこれらの構成要素の接合点の動作は区別不能である。
その場合、7つの構成要素の接合点が、機械構造を作成するように6本の無方向線(アーク)によって接続される。たとえば、アーク21000は天井の接合点71を接合点73(ばねK1の端部)に接続する。アーク21001はばねK1の接合点73を接合点74(ダッシュ・ポットB1の端部)に接続する。
アーク21002がダッシュ・ポットB1の接合点81を接合点75(質量M1の端部)に接続し、アーク21003がダッシュ・ポットB1の接合点81を接合点76(ダッシュ・ポットB2の端部)に接続することに留意されたい。上記で指摘したように、質量M1は1つの接合点のみを有する。第102図など機械工学図の形式は、ダッシュ・ポットB2が質量M1に結合され、それに対して、実際にはダッシュ・ポットB1の底部に3方向接合部があることを示す。第113図は、質量M1が1つの接合点のみを有し、質量M1とダッシュ・ポットB2が共にダッシュ・ポットB1の底部に接続されることを明確に示す。同様に、第113図中の他のアークは、図中の他の様々な構成要素の他の様々な接合点の間の接続を示す。
図に示された7つの構成要素と、11個の接合点と、6つのアークとからなる機械構造では、接合点グラフは(71から81まで番号付けされた)11個の点と(21000から20005まで番号付けされた)6つのアークとを有する。
第114図は、機械構造の分野における構成要素で構築された他の構造(トラス)の一部を示す。この構造は、第101図に示したトラスに対応する。この構造は13個の構成要素と24個の接合点とを有する。これらの構成要素は、壁と、6つの30フィート剛性金属ビームB1、B3、B5、B6、B7、B8と、2つの42フィート剛性金属ビームB2およびB9(トラスに斜めに配置される)と、2本の42フィート可とう性ケーブルC4およびC10(斜めに配置される)と、2つの100kg質量M1およびM2である。質量はそれぞれ、1つの接合点のみを有する。各剛性金属ビームと、各可とう性ケーブルと、壁は2つの接合点を有する。
話を簡単にするために、この図は、質量M1 22000の単一の接合点に接続する5つのアークのみを示している。
本発明のプロセスの一実施形態によれば、プロセスは、各種類の構成要素の多数のコピーを含む部品ビンから始まる。プロセスの開始時に、接合点グラフは、部品ビン内の各構成要素の各接合点ごとの1つの点から始まる。構成処置によって、この接合点グラフのある構成要素どうしの接合点の間に無方向線(アーク)が追加される。
すべての構成処置が実行されると、接合点との接続を有さない構成要素に関連付けられたすべての接合点を削除することによって接合点グラフが簡略化される。すなわち、完全に未使用の構成要素に関連付けられたあらゆるものが接合点グラフから削除される。このことは、未使用部品を部品ビンに返すことに対応する。
この簡略化の後、接合点グラフの点(ノード)は構造の構成要素の接合点を表し、接合点グラフの無方向線(アーク)は、2つの接合点の間に接続が存在することを表す。本発明のプロセスの一実施形態によれば、構成処置によって、構成要素が配置された開発構造全体内の位置のトポロジ構成が構築される。また、構成処置によって、構造全体の特定の位置にある特定の構成要素が他の構成要素で置き換えられる。構成処置によって、構成要素の構成要素値(寸法決定)も指定される。
この場合、本発明のプロセスによって暗黙的に探索される可能な回路のサーチ空間の広大なサイズを推定する方法も与えられる。可能な回路の数の推定は、3つの因子、すなわち可能なトポロジの数と、トポロジ構成内に様々な種類の構成要素を配置するための可能な方法の数と、各構成要素についての可能な値の数の積を検討することによって行うことができる。
場合によっては比較的簡単な問題の解を与える回路は多くの場合、20個以上の構成要素を有する。上記の3つの因子を例示するために、丁度20個の2リード線構成要素を含み、構成要素が3つの可能性、すなわちコンデンサ、インダクタ、または抵抗のみに限られた1入力1出力回路について考える。この回路は42個の接合点を有するので、42から2つの接合点を選択するための861通りの方法がある。したがって、これらの接合点を接続するための2861(約10260)通りの可能な方法がある。3種類の構成要素があるので、20個の構成要素に関する構成要素の種類を選択するための320(約109)通りの可能な方法がある。各構成要素の種類ごとの1組の280個の値は、(1.05280が約106であるので)6桁の範囲にわたって約5%の間隔で構成要素値を与える。構成要素の値にこの細分性を使用すると、20個の構成要素に関する値を選択するための28020(約1049)通りの可能な方法が得られる。この3つの係数を組み合わせると、可能な回路の数の推定値として約10317が与えられる。この粗な推定では、(対称性など)ある種の係数が無視されるが、特定の数の構成要素が仮定され(これに対して、実際には数20が事前に固定される)、3種類の構成要素のみが仮定され、6桁の構成要素値のみが仮定されるので、過小評価である。それにもかかわらず、この推定によって、回路設計の問題に関するサーチ空間の広大なサイズが明らかになる。
単一の実行における100の世代にわたって640000のポピュレーションサイズを使用する場合、サイズが約10317であるこの広大なサーチ空間から明示的に調べられる回路は6400万個(重複は無視する)に過ぎない。本発明の方法は、電気回路に関する特定の知識も構成要素の特性の電気的性質に関する特定の知識も使用せずに問題の非常に大きなサーチ空間を暗黙的に探索する。
本発明が、物理法則に従う実際の物理システおよび実際の物理量を扱うものであることにも留意されたい。前述の3つの構造(すなわち、電気的構造、第102図および第113図のばねとダッシュ・ポットと質量とからなる機械的構造、第101図および第114図の剛性の金属ビームと可とう性ケーブルと質量とからなる機械的構造)はすべて、ある種の物理法則に従う。
電気システムに関するキルヒホフの電流の法則は、回路内の任意のノードでの電流の和が零になることを示している。機械的システムの場合、電流の相似形は力である。したがって、機械的システムに関するキルヒホフの電流の法則の相似形は、任意の点に加えられる力ベクトルの和も零になることである。すなわち、第101図および第114図のトラスまたは第102図および第113図の機械的システム内で構成要素どうしが出会う任意の接合点(ノード)での力の和は零である。最終的な構造の各開発段階で、本発明の構成処置(たとえば、電気回路に関する接続作成関数や構成要素作成関数)によって、現在の開発構造が新しい構造に変化する。しかし、開発プロセスにおけるそのような変更された構造は常に、あらゆるノードでこの保存の法則に従う。すなわち、各構造(電気的構造または機械的構造)ごとに、構成要素が接続される各点での力に対応する数量の値の和は零に維持される。
電気的システムでは、キルヒホフの電圧の法則によって、回路内の任意の閉ループの周りの電圧の和が零に維持されることが示されている。
結論
複雑な構造の自動設計に有用な遺伝的プログラミングのいくつかの変形実施態様について説明した。
本明細書の特定の構成および方法は、本発明の原則を例示したものに過ぎない。当業者なら、本発明の真の趣旨および範囲から逸脱せずに形態および細部に多数の修正を加えることができる。
本発明を特定の実施形態に関して示したが、本発明をそのように限定されるとみなすべきではない。本発明は、添付の請求の範囲によってのみ制限される。
Claims (3)
- 事前に指定された設計目的を満足する回路の構造的設計を遺伝的プログラミングを用いて生成する、コンピュータで繰り返し実施される方法であって、当該方法は、コンピュータのプロセッサで実施されたとき、生成された回路が前記事前に指定された設計目的を満足するまで、
様々なサイズと形状のエンティティのポピュレーション中の各エンティティのための回路であって、それぞれ少なくとも一つの構成要素値を有する複数の種類の構成要素をトポロジ構成内に備えた回路を、各エンティティ内で構成処置を実行することによって、開発するステップと、
各開発された回路の挙動を決定するステップと、
前記各開発された回路の挙動と前記事前に指定された設計目的との比較が前記エンティティのポピュレーションの進化が継続されるべきであることを示すとき、前記エンティティのポピュレーションを進化させるために、プログラムによる遺伝的プログラミングの操作を適用するステップと
を含む、システムに実装された操作を繰り返して呼び出す、前記コンピュータで繰り返し実施される方法。 - 事前に指定された設計目的を満足する回路の構造的設計を生成する、コンピュータで繰り返し実施される方法であって、当該方法は、コンピュータのプロセッサで実施されたとき、
各エンティティのための回路を開発するために様々な形とサイズとを有する前記エンティティのポピュレーションの各エンティティ内で構成処置を実行するステップであって、前記回路はトポロジ構成内にそれぞれ少なくとも一つの構成要素値を有する複数の種類の構成要素を含み、前記構成処置の実行は、前記各エンティティのための一つの開発されている回路に構成要素を挿入することを含む、前記ステップと、
各開発された回路の挙動を決定するステップと、
前記各開発された回路の挙動と前記事前に指定された設計目的との比較が前記エンティティのポピュレーションの進化が継続されるべきであることを示すとき、前記エンティティのポピュレーションを進化させるために、プログラムによる遺伝的プログラミングの操作を適用するステップと
を含む、システムに実装された操作を繰り返して呼び出す、前記コンピュータで繰り返し実施される方法。 - 事前に指定された設計目的を満足する回路の構造的設計を生成するシステムであって、
様々なサイズと形状のエンティティのポピュレーション中の各エンティティのための回路であって、それぞれ少なくとも一つの構成要素値を有する複数の種類の構成要素をトポロジ構成内に備えた回路を各エンティティ内で構成処置を実行することによって開発する手段と、
各開発された回路の挙動を決定する手段と、
前記各開発された回路の挙動と前記事前に指定された設計目的との比較が前記エンティティのポピュレーションの進化が継続されるべきであることを示すとき、前記エンティティのポピュレーションを進化させるために、プログラムによる遺伝的プログラミングの操作を適用する手段と
を有することを特徴とするシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/603,648 US5867397A (en) | 1996-02-20 | 1996-02-20 | Method and apparatus for automated design of complex structures using genetic programming |
US08/603,648 | 1996-02-20 | ||
PCT/US1997/002915 WO1997032259A1 (en) | 1996-02-20 | 1997-02-20 | Method and apparatus for automated design of complex structures using genetic programming |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2000508096A JP2000508096A (ja) | 2000-06-27 |
JP2000508096A5 JP2000508096A5 (ja) | 2004-11-25 |
JP3958793B2 true JP3958793B2 (ja) | 2007-08-15 |
Family
ID=24416350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP53106797A Expired - Fee Related JP3958793B2 (ja) | 1996-02-20 | 1997-02-20 | 遺伝的プログラミングを使用した複雑な構造の自動設計の方法および装置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US5867397A (ja) |
EP (1) | EP0954798A1 (ja) |
JP (1) | JP3958793B2 (ja) |
AU (1) | AU728013B2 (ja) |
CA (1) | CA2256044C (ja) |
WO (1) | WO1997032259A1 (ja) |
Families Citing this family (178)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3358780B2 (ja) * | 1996-02-02 | 2002-12-24 | 富士通株式会社 | 最適解探索装置 |
US5867397A (en) * | 1996-02-20 | 1999-02-02 | John R. Koza | Method and apparatus for automated design of complex structures using genetic programming |
JP3693420B2 (ja) * | 1996-06-20 | 2005-09-07 | 株式会社リコー | 集積回路の消費電力見積り装置 |
GB9614927D0 (en) * | 1996-07-16 | 1996-09-04 | British Telecomm | Arranging data signals defining a network |
JP3254393B2 (ja) * | 1996-11-19 | 2002-02-04 | 三菱電機株式会社 | 遺伝的アルゴリズムマシン及び遺伝的アルゴリズムマシンの製造方法及び遺伝的アルゴリズムの実行方法 |
US6272479B1 (en) * | 1997-07-21 | 2001-08-07 | Kristin Ann Farry | Method of evolving classifier programs for signal processing and control |
US6336107B1 (en) * | 1997-07-31 | 2002-01-01 | Matsushita Electric Industrial Co., Ltd | Method and system of automatic arrangement of composing elements |
WO1999053530A2 (en) * | 1998-04-13 | 1999-10-21 | Gte Internetworking Incorporated | System and method for evaluating genetic programming parse-trees |
JP3449923B2 (ja) * | 1998-06-02 | 2003-09-22 | 富士通株式会社 | ネットワークトポロジー設計装置及びネットワークトポロジー設計方法並びにネットワークトポロジー設計プログラムを記録した記録媒体 |
US6233493B1 (en) * | 1998-09-16 | 2001-05-15 | I2 Technologies, Inc. | Computer-implemented product development planning method |
US6253365B1 (en) * | 1998-10-06 | 2001-06-26 | David P. Baldwin | Automated design system for digital circuits |
US6314390B1 (en) * | 1998-11-30 | 2001-11-06 | International Business Machines Corporation | Method of determining model parameters for a MOSFET compact model using a stochastic search algorithm |
ATE231992T1 (de) * | 1998-11-30 | 2003-02-15 | Actcon Control Ab | Verfahren um objekte in den arbeitsbereich in eine rechneranwendung einzubringen |
US6502238B1 (en) * | 1998-12-31 | 2002-12-31 | Honeywell International Inc. | System for constructing and distributing block-based fragments |
US6539532B1 (en) * | 1999-02-26 | 2003-03-25 | Xilinx, Inc. | Method and apparatus for relocating elements in an evolvable configuration bitstream |
US6523016B1 (en) * | 1999-04-12 | 2003-02-18 | George Mason University | Learnable non-darwinian evolution |
US6532453B1 (en) | 1999-04-12 | 2003-03-11 | John R. Koza | Genetic programming problem solver with automatically defined stores loops and recursions |
US6577992B1 (en) * | 1999-05-07 | 2003-06-10 | Nassda Corporation | Transistor level circuit simulator using hierarchical data |
US6424959B1 (en) * | 1999-06-17 | 2002-07-23 | John R. Koza | Method and apparatus for automatic synthesis, placement and routing of complex structures |
US6107975A (en) * | 1999-06-28 | 2000-08-22 | The United States Of America As Represented By The National Security Agency | Programmable antenna |
US6148265A (en) * | 1999-08-27 | 2000-11-14 | Hewlett-Packard Company | Valence correct molecular structures using cellular encoding |
US6378117B1 (en) * | 1999-08-27 | 2002-04-23 | Hewlett-Packard Company | Cellular encoding using typed development operators |
US6289455B1 (en) * | 1999-09-02 | 2001-09-11 | Crypotography Research, Inc. | Method and apparatus for preventing piracy of digital content |
US6564194B1 (en) * | 1999-09-10 | 2003-05-13 | John R. Koza | Method and apparatus for automatic synthesis controllers |
US6526556B1 (en) | 1999-09-13 | 2003-02-25 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Evolutionary technique for automated synthesis of electronic circuits |
US6728666B1 (en) * | 1999-09-13 | 2004-04-27 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Evolvable circuit with transistor-level reconfigurability |
US7072814B1 (en) * | 1999-09-13 | 2006-07-04 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Evolutionary technique for automated synthesis of electronic circuits |
US7072816B1 (en) * | 1999-09-30 | 2006-07-04 | International Business Machines Corporation | Method and system for providing hierarchical self-checking in ASIC simulation |
US20020055903A1 (en) * | 1999-11-01 | 2002-05-09 | Neal Solomon | System, method, and apparatus for a cooperative communications network |
US20030074301A1 (en) * | 1999-11-01 | 2003-04-17 | Neal Solomon | System, method, and apparatus for an intelligent search agent to access data in a distributed network |
US20020069134A1 (en) * | 1999-11-01 | 2002-06-06 | Neal Solomon | System, method and apparatus for aggregation of cooperative intelligent agents for procurement in a distributed network |
US20020046157A1 (en) * | 1999-11-01 | 2002-04-18 | Neal Solomon | System, method and apparatus for demand-initiated intelligent negotiation agents in a distributed network |
US6327552B2 (en) * | 1999-12-28 | 2001-12-04 | Intel Corporation | Method and system for determining optimal delay allocation to datapath blocks based on area-delay and power-delay curves |
US6578176B1 (en) * | 2000-05-12 | 2003-06-10 | Synopsys, Inc. | Method and system for genetic algorithm based power optimization for integrated circuit designs |
US7542948B2 (en) * | 2000-06-16 | 2009-06-02 | Honda Giken Kogyo Kabushiki Kaisha | Genetic design method and apparatus |
US6477444B1 (en) | 2000-07-07 | 2002-11-05 | Fuji Xerox Co., Ltd. | Method for the automated design of decentralized controllers for modular self-reconfigurable robots |
US6539534B1 (en) * | 2000-08-25 | 2003-03-25 | Xilinx, Inc. | Apparatus and method for automatically generating circuit designs that meet user output requirements |
AU2001295591A1 (en) * | 2000-10-13 | 2002-04-22 | Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. | A method for supervised teaching of a recurrent artificial neural network |
US6557153B1 (en) * | 2000-11-15 | 2003-04-29 | Reshape, Inc. | Method and system for implementing a user interface for performing physical design operations on an integrated circuit netlist |
US20030142036A1 (en) * | 2001-02-08 | 2003-07-31 | Wilhelm Michael John | Multiband or broadband frequency selective surface |
US20030076276A1 (en) * | 2001-02-08 | 2003-04-24 | Church Kenneth H. | Methods and systems for embedding electrical components in a device including a frequency responsive structure |
US7365701B2 (en) * | 2001-02-08 | 2008-04-29 | Sciperio, Inc. | System and method for generating a genetically engineered configuration for at least one antenna and/or frequency selective surface |
GB0106459D0 (en) * | 2001-03-15 | 2001-05-02 | Marconi Comm Ltd | Hardware design using evolutionary algorithms |
US7657412B2 (en) * | 2001-03-29 | 2010-02-02 | Honda Giken Kogyo Kabushiki Kaisha | Method of and apparatus for displaying structure optimizing result |
US6557149B2 (en) * | 2001-04-04 | 2003-04-29 | Intel Corporation | Algorithm for finding vectors to stimulate all paths and arcs through an LVS gate |
FR2824654B1 (fr) * | 2001-05-14 | 2003-08-15 | Saint Venant Barre Raoul De | Outil pour controler et commander le developpement d'organismes complexes |
US7424461B2 (en) * | 2001-06-28 | 2008-09-09 | Hewlett-Packard Development Company, L.P. | Multi-module genetic programming with multiple genetic data representations |
US6910192B2 (en) * | 2001-09-06 | 2005-06-21 | Synopsys, Inc. | Method of robust technology design using rational robust optimization |
US6807652B2 (en) * | 2001-09-06 | 2004-10-19 | Synopsys, Inc. | Method of robust semiconductor circuit products design using rational robust optimization |
WO2003038749A1 (en) * | 2001-10-31 | 2003-05-08 | Icosystem Corporation | Method and system for implementing evolutionary algorithms |
US6968517B2 (en) * | 2001-11-07 | 2005-11-22 | Synopsys Inc. | Method of interactive optimization in circuit design |
US7328195B2 (en) * | 2001-11-21 | 2008-02-05 | Ftl Systems, Inc. | Semi-automatic generation of behavior models continuous value using iterative probing of a device or existing component model |
US6738961B2 (en) * | 2002-02-28 | 2004-05-18 | Hewlett-Packard Development Company, L.P. | Computer readable medium and a method for representing an electronic circuit as a routing-resource graph |
US7454733B2 (en) * | 2002-03-06 | 2008-11-18 | International Business Machines Corporation | Interconnect-aware methodology for integrated circuit design |
US6785870B2 (en) * | 2002-03-14 | 2004-08-31 | Hewlett-Packard Development Company, L.P. | Method of optimizing high performance CMOS integrated circuit designs for power consumption and speed using global and greedy optimizations in combination |
US20030188271A1 (en) * | 2002-04-02 | 2003-10-02 | Institute Of High Performance Computing | System and method for integrated circuit design |
US20030208348A1 (en) * | 2002-05-02 | 2003-11-06 | Arthur Williams | Method and system for simulation of frequency response effeccts on a transmission line due to coupling to a second electrical network by direct synthesis of nulls |
DE10226915A1 (de) * | 2002-06-17 | 2004-01-08 | Infineon Technologies Ag | Verfahren zum Verändern von Entwurfsdaten für die Herstellung eines Bauteils sowie zugehörige Einheiten |
US6769097B2 (en) * | 2002-06-27 | 2004-07-27 | Lsi Logic Corporation | Scale-invariant topology and traffic allocation in multi-node system-on-chip switching fabrics |
US6847851B1 (en) | 2002-07-12 | 2005-01-25 | John R. Koza | Apparatus for improved general-purpose PID and non-PID controllers |
US6859914B2 (en) * | 2002-08-27 | 2005-02-22 | Synopsys, Inc. | Smooth operators in optimization of circuit structures |
US6789233B2 (en) * | 2002-08-28 | 2004-09-07 | Micron Technology, Inc. | Method for determining a matched routing arrangement for semiconductor devices |
US20040122534A1 (en) * | 2002-08-30 | 2004-06-24 | Paulin Matthew A. | Method for facilitating computer-based modeling |
US7505886B1 (en) * | 2002-09-03 | 2009-03-17 | Hewlett-Packard Development Company, L.P. | Technique for programmatically obtaining experimental measurements for model construction |
WO2004023351A1 (en) * | 2002-09-06 | 2004-03-18 | Jonathan Westphal | Vector logic techniques for multilevel minimization |
US7225415B2 (en) * | 2002-09-06 | 2007-05-29 | Vectorlog, Inc. | Vector logic techniques for multilevel minimization with multiple outputs |
US7865534B2 (en) * | 2002-09-30 | 2011-01-04 | Genstruct, Inc. | System, method and apparatus for assembling and mining life science data |
US20040133355A1 (en) * | 2002-10-01 | 2004-07-08 | Target Discovery, Inc. | Methods and compositions utilizing evolutionary computation techniques and differential data sets |
AU2003298668A1 (en) * | 2002-11-20 | 2004-06-15 | Genstruct, Inc. | Epistemic engine |
US20040186804A1 (en) * | 2003-03-19 | 2004-09-23 | Anindya Chakraborty | Methods and systems for analytical-based multifactor multiobjective portfolio risk optimization |
US7640201B2 (en) * | 2003-03-19 | 2009-12-29 | General Electric Company | Methods and systems for analytical-based multifactor Multiobjective portfolio risk optimization |
US7593880B2 (en) * | 2003-03-19 | 2009-09-22 | General Electric Company | Methods and systems for analytical-based multifactor multiobjective portfolio risk optimization |
US8010467B2 (en) * | 2003-03-24 | 2011-08-30 | Fiske Software Llc | Active element machine computation |
US8019705B2 (en) * | 2003-03-24 | 2011-09-13 | Fiske Software, LLC. | Register and active element machines: commands, programs, simulators and translators |
US7043463B2 (en) * | 2003-04-04 | 2006-05-09 | Icosystem Corporation | Methods and systems for interactive evolutionary computing (IEC) |
US7260562B2 (en) * | 2003-06-30 | 2007-08-21 | Intel Corporation | Solutions for constraint satisfaction problems requiring multiple constraints |
US7051279B2 (en) * | 2003-07-08 | 2006-05-23 | Intentional Software Corporation | Method and system for providing multiple levels of help information for a computer program |
WO2005008579A2 (en) * | 2003-07-16 | 2005-01-27 | Idaho Research Foundation, Inc. | Biomimic artificial neuron |
US7333960B2 (en) * | 2003-08-01 | 2008-02-19 | Icosystem Corporation | Methods and systems for applying genetic operators to determine system conditions |
US7437336B2 (en) * | 2003-08-01 | 2008-10-14 | George Mason Intellectual Properties, Inc. | Polyoptimizing genetic algorithm for finding multiple solutions to problems |
US7356518B2 (en) * | 2003-08-27 | 2008-04-08 | Icosystem Corporation | Methods and systems for multi-participant interactive evolutionary computing |
US20050071302A1 (en) * | 2003-09-29 | 2005-03-31 | Mcguffin Tyson R. | Method and system for mapping genes to characteristics in a genetic optimization process |
US7623139B1 (en) * | 2003-10-07 | 2009-11-24 | Enventive Engineering, Inc. | Design and modeling system and methods |
AU2004296023A1 (en) * | 2003-11-26 | 2005-06-16 | Genstruct, Inc. | System, method and apparatus for causal implication analysis in biological networks |
GB2408599A (en) * | 2003-11-29 | 2005-06-01 | Ibm | Multi-objective genetic optimization method |
US7243086B2 (en) * | 2003-12-19 | 2007-07-10 | Fuji Xerox Co., Ltd. | Methods and systems for automatically generating provably correct computer program code |
US20050154535A1 (en) * | 2004-01-09 | 2005-07-14 | Genstruct, Inc. | Method, system and apparatus for assembling and using biological knowledge |
US20050197979A1 (en) * | 2004-01-21 | 2005-09-08 | Anderson David M. | Speculation count in a genetic algorithm |
US8219477B2 (en) * | 2004-02-20 | 2012-07-10 | General Electric Company | Systems and methods for multi-objective portfolio analysis using pareto sorting evolutionary algorithms |
US7630928B2 (en) * | 2004-02-20 | 2009-12-08 | General Electric Company | Systems and methods for multi-objective portfolio analysis and decision-making using visualization techniques |
US8126795B2 (en) * | 2004-02-20 | 2012-02-28 | General Electric Company | Systems and methods for initial sampling in multi-objective portfolio analysis |
US7469228B2 (en) * | 2004-02-20 | 2008-12-23 | General Electric Company | Systems and methods for efficient frontier supplementation in multi-objective portfolio analysis |
US7542932B2 (en) * | 2004-02-20 | 2009-06-02 | General Electric Company | Systems and methods for multi-objective portfolio optimization |
US20050218398A1 (en) * | 2004-04-06 | 2005-10-06 | Availableip.Com | NANO-electronics |
US7019391B2 (en) * | 2004-04-06 | 2006-03-28 | Bao Tran | NANO IC packaging |
US7707220B2 (en) * | 2004-07-06 | 2010-04-27 | Icosystem Corporation | Methods and apparatus for interactive searching techniques |
US20060010117A1 (en) * | 2004-07-06 | 2006-01-12 | Icosystem Corporation | Methods and systems for interactive search |
US7395191B2 (en) * | 2004-07-28 | 2008-07-01 | Blueridge Analytic, Inc. | Computer-implemented land planning system and method designed to generate at least one conceptual fit solution to a user-defined land development problem |
US7287236B2 (en) * | 2004-09-30 | 2007-10-23 | Alcatel Lucent | Electronic device connectivity analysis methods and systems |
JP2006155449A (ja) * | 2004-12-01 | 2006-06-15 | Matsushita Electric Ind Co Ltd | 分散遺伝的アルゴリズムを用いた最適化処理方法 |
US7437335B2 (en) * | 2004-12-07 | 2008-10-14 | Eric Baum | Method and system for constructing cognitive programs |
US20060140860A1 (en) * | 2004-12-08 | 2006-06-29 | Genstruct, Inc. | Computational knowledge model to discover molecular causes and treatment of diabetes mellitus |
US8229871B2 (en) * | 2004-12-29 | 2012-07-24 | Woolf Tod M | Systems and methods for computer aided inventing |
US20060218107A1 (en) * | 2005-03-24 | 2006-09-28 | The University Of Tennessee Research Foundation | Method for controlling a product production process |
JP2006295580A (ja) * | 2005-04-12 | 2006-10-26 | Matsushita Electric Ind Co Ltd | アンテナの製造方法及び通信機器の製造方法 |
WO2006113799A2 (en) * | 2005-04-15 | 2006-10-26 | Baum Eric B | Planning method and system for use in cognitive programs |
US20060293045A1 (en) * | 2005-05-27 | 2006-12-28 | Ladue Christoph K | Evolutionary synthesis of a modem for band-limited non-linear channels |
DE102005024379A1 (de) * | 2005-05-27 | 2006-11-30 | Universität Mannheim | Verfahren zur Erzeugung und/oder Einprägung eines wiedergewinnbaren kryptographischen Schlüssels bei der Herstellung einer topographischen Struktur |
US7370019B2 (en) * | 2005-06-23 | 2008-05-06 | Ecole Polytechnique Federal De Lausanne | Method and device for evolving a network using a genetic representation |
JP2014170556A (ja) * | 2005-08-18 | 2014-09-18 | D.E. Shaw Research LLC | 粒子相互作用を計算するための並行計算アーキテクチャ |
US8423323B2 (en) * | 2005-09-21 | 2013-04-16 | Icosystem Corporation | System and method for aiding product design and quantifying acceptance |
US7734423B2 (en) * | 2005-09-23 | 2010-06-08 | Crowley Davis Research, Inc. | Method, system, and apparatus for virtual modeling of biological tissue with adaptive emergent functionality |
US7711674B2 (en) * | 2005-11-01 | 2010-05-04 | Fuji Xerox Co., Ltd. | System and method for automatic design of components in libraries |
WO2007089691A2 (en) | 2006-01-30 | 2007-08-09 | Blue Ridge Analytics, Inc. | Computer-implemented land planning system and method |
US8332188B2 (en) * | 2006-03-03 | 2012-12-11 | Solido Design Automation Inc. | Modeling of systems using canonical form functions and symbolic regression |
US20070225956A1 (en) * | 2006-03-27 | 2007-09-27 | Dexter Roydon Pratt | Causal analysis in complex biological systems |
EP2032224A2 (en) * | 2006-06-26 | 2009-03-11 | Icosystem Corporation | Methods and systems for interactive customization of avatars and other animate or inanimate items in video games |
US20080004737A1 (en) * | 2006-06-30 | 2008-01-03 | Bennardo Frank L | Computerized engineering design and operating system |
US20080103701A1 (en) * | 2006-10-31 | 2008-05-01 | Motorola, Inc. | Automatic signal processor design software system |
WO2008079097A1 (en) * | 2006-12-22 | 2008-07-03 | Singapore Technologies Dynamics Pte Ltd | Method and apparatus for automatic configuration of meta-heuristic algorithms in a problem solving environment |
US7792816B2 (en) * | 2007-02-01 | 2010-09-07 | Icosystem Corporation | Method and system for fast, generic, online and offline, multi-source text analysis and visualization |
US20080270330A1 (en) | 2007-04-24 | 2008-10-30 | Yedidia Jonathan S | Multi-Cellular Logic Circuits |
US7865454B2 (en) * | 2007-06-29 | 2011-01-04 | Accenture Global Services Limited | Feature configuration analysis tool |
WO2009029712A1 (en) * | 2007-08-29 | 2009-03-05 | Genstruct, Inc. | Computer-aided discovery of biomarker profiles in complex biological systems |
US20090070087A1 (en) * | 2007-09-07 | 2009-03-12 | Newman Richard D | Virtual tissue with emergent behavior and modeling method for producing the tissue |
WO2009042754A1 (en) * | 2007-09-26 | 2009-04-02 | Genstruct, Inc. | Software assisted methods for probing the biochemical basis of biological states |
US7934189B2 (en) * | 2008-01-25 | 2011-04-26 | Infineon Technologies Ag | Method of making an integrated circuit including simplifying metal shapes |
US7962878B2 (en) * | 2008-02-26 | 2011-06-14 | Infineon Technologies Ag | Method of making an integrated circuit using pre-defined interconnect wiring |
US8296120B2 (en) * | 2008-06-20 | 2012-10-23 | Utah State University | FPGA simulated annealing accelerator |
WO2010129909A1 (en) * | 2009-05-07 | 2010-11-11 | Cypress Semiconductor Corporation | Development, programming, and debugging environment |
US10321840B2 (en) * | 2009-08-14 | 2019-06-18 | Brainscope Company, Inc. | Development of fully-automated classifier builders for neurodiagnostic applications |
US20110060895A1 (en) * | 2009-09-09 | 2011-03-10 | Neal Solomon | System and methods for generating and organizing modular program code components |
TWI529551B (zh) * | 2009-09-10 | 2016-04-11 | 卡登斯系統設計公司 | 用於實作圖形可編輯參數化單元之系統及方法 |
US10366180B2 (en) | 2010-03-15 | 2019-07-30 | Bentley Systems, Inc. | Computer-implemented land planning system and method with automated parking area design tools |
US9384591B2 (en) | 2010-09-17 | 2016-07-05 | Enventive Engineering, Inc. | 3D design and modeling system and methods |
US9721043B2 (en) | 2010-10-29 | 2017-08-01 | Bentley Systems, Incorporated | Computer-implemented land planning system and method with GIS integration |
US10614255B2 (en) * | 2010-10-29 | 2020-04-07 | Bentley Systems, Incorporated | Computer-implemented land planning system and method with GIS integration |
US20140029658A1 (en) * | 2012-07-26 | 2014-01-30 | Massachusetts Institute Of Technology | Analog/Digital Co-Design Methodology to Achieve High Linearity and Low Power Dissipation in a Radio Frequency (RF) Receiver |
US8964901B2 (en) | 2011-01-07 | 2015-02-24 | Massachusetts Institute Of Technology | Analog/digital co-design methodology to achieve high linearity and low power dissipation in a radio frequency (RF) receiver |
US10268843B2 (en) | 2011-12-06 | 2019-04-23 | AEMEA Inc. | Non-deterministic secure active element machine |
JP5630870B2 (ja) * | 2011-02-18 | 2014-11-26 | ルネサスエレクトロニクス株式会社 | 半導体集積回路のレイアウト方法及びプログラム |
US20120310619A1 (en) * | 2011-06-06 | 2012-12-06 | Solido Design Automation Inc. | Fast function extraction |
US8453101B1 (en) | 2011-11-22 | 2013-05-28 | International Business Machines Corporation | Method, system and program storage device for generating accurate performance targets for active semiconductor devices during new technology node development |
JP2013120558A (ja) * | 2011-12-08 | 2013-06-17 | Fujitsu Ltd | 情報処理装置、試験方法、及びプログラム |
US8832635B2 (en) * | 2012-01-06 | 2014-09-09 | Mentor Graphics Corporation | Simulation of circuits with repetitive elements |
US9052703B2 (en) * | 2012-02-02 | 2015-06-09 | Emerson Process Management Power & Water Solutions, Inc. | Enhanced sequential method for solving pressure/flow network parameters in a real-time distributed industrial process simulation system |
US9799040B2 (en) | 2012-03-27 | 2017-10-24 | Iprova Sarl | Method and apparatus for computer assisted innovation |
US8924909B2 (en) | 2012-06-13 | 2014-12-30 | Purdue Research Foundation | Microelectromechanical system design and layout |
US8958470B2 (en) | 2012-07-26 | 2015-02-17 | Massachusetts Institute Of Technology | Method and apparatus for sparse polynomial equalization of RF receiver chains |
US20140278328A1 (en) | 2013-03-15 | 2014-09-18 | Nvidia Corporation | System, method, and computer program product for constructing a data flow and identifying a construct |
US9015643B2 (en) * | 2013-03-15 | 2015-04-21 | Nvidia Corporation | System, method, and computer program product for applying a callback function to data values |
US9323502B2 (en) | 2013-03-15 | 2016-04-26 | Nvidia Corporation | System, method, and computer program product for altering a line of code |
US9015646B2 (en) | 2013-04-10 | 2015-04-21 | Nvidia Corporation | System, method, and computer program product for translating a hardware language into a source database |
US9171115B2 (en) | 2013-04-10 | 2015-10-27 | Nvidia Corporation | System, method, and computer program product for translating a common hardware database into a logic code model |
US9021408B2 (en) | 2013-04-10 | 2015-04-28 | Nvidia Corporation | System, method, and computer program product for translating a source database into a common hardware database |
US8887109B1 (en) * | 2013-05-17 | 2014-11-11 | Synopsys, Inc. | Sequential logic sensitization from structural description |
US9032355B2 (en) * | 2013-10-03 | 2015-05-12 | Helic S.A. | System and method for integrated transformer synthesis and optimization using constrained optimization problem |
US9218445B2 (en) * | 2014-01-23 | 2015-12-22 | International Business Machines Corporation | Implementing enhanced physical design quality using historical placement analytics |
US10459925B2 (en) | 2014-12-08 | 2019-10-29 | Iprova Sarl | Computer-enabled method of assisting to generate an innovation |
US10108770B2 (en) | 2015-02-10 | 2018-10-23 | Thalia Design Automation Ltd. | Corner process for analog circuit design optimization |
JP6368686B2 (ja) * | 2015-06-10 | 2018-08-01 | 東京エレクトロン株式会社 | 熱処理装置、熱処理装置の調整方法、及び、プログラム |
KR20180126452A (ko) | 2016-01-05 | 2018-11-27 | 센티언트 테크놀로지스 (바베이도스) 리미티드 | 인공 신경망을 이용하는 웹 인터페이스 생성 및 테스팅 |
US11403532B2 (en) | 2017-03-02 | 2022-08-02 | Cognizant Technology Solutions U.S. Corporation | Method and system for finding a solution to a provided problem by selecting a winner in evolutionary optimization of a genetic algorithm |
US10726196B2 (en) | 2017-03-03 | 2020-07-28 | Evolv Technology Solutions, Inc. | Autonomous configuration of conversion code to control display and functionality of webpage portions |
WO2019067717A1 (en) | 2017-09-27 | 2019-04-04 | Alphamorph, LLC | DESIGN TOOL AND METHOD OF USING THE SAME |
US11250181B2 (en) | 2017-09-29 | 2022-02-15 | Enventive Engineering, Inc. | Functional relationship management in product development |
US11250184B2 (en) | 2017-10-24 | 2022-02-15 | Enventive Engineering, Inc. | 3D tolerance analysis system and methods |
US10909288B2 (en) * | 2017-12-26 | 2021-02-02 | Autodesk, Inc. | Techniques for applying generative design to the configuration of mechanical assemblies |
US10885236B2 (en) * | 2018-01-09 | 2021-01-05 | Autodesk, Inc. | Constraint-oriented programming approach to mechanical assembly design |
US11574201B2 (en) | 2018-02-06 | 2023-02-07 | Cognizant Technology Solutions U.S. Corporation | Enhancing evolutionary optimization in uncertain environments by allocating evaluations via multi-armed bandit algorithms |
US20210019628A1 (en) * | 2018-07-23 | 2021-01-21 | Intel Corporation | Methods, systems, articles of manufacture and apparatus to train a neural network |
US11755979B2 (en) | 2018-08-17 | 2023-09-12 | Evolv Technology Solutions, Inc. | Method and system for finding a solution to a provided problem using family tree based priors in Bayesian calculations in evolution based optimization |
KR102325616B1 (ko) * | 2019-09-04 | 2021-11-11 | 경희대학교 산학협력단 | 뉴럴 네트워크를 이용한 건축 구조 설계 방법 및 이를 실행하는 장치 |
US11080122B2 (en) * | 2019-09-19 | 2021-08-03 | International Business Machines Corporation | Software-invisible interrupt for a microprocessor |
CN110955971B (zh) * | 2019-11-27 | 2023-09-22 | 南京工程学院 | 基于改进遗传算法的电力弹簧优化配置方法 |
DE102020200911B3 (de) * | 2020-01-27 | 2020-10-29 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren zum Erkennen von Objekten in einer Umgebung eines Fahrzeugs |
CN112182968B (zh) * | 2020-09-28 | 2024-01-30 | 长安大学 | 一种构建锂离子电池等效电路模型的方法、系统及设备 |
EP4227951A1 (en) * | 2022-02-11 | 2023-08-16 | Samsung Display Co., Ltd. | Method for predicting and optimizing properties of a molecule |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4479241A (en) * | 1981-08-06 | 1984-10-23 | Buckley Bruce S | Self-organizing circuits for automatic pattern recognition and the like and systems embodying the same |
US4697242A (en) * | 1984-06-11 | 1987-09-29 | Holland John H | Adaptive computing system capable of learning and discovery |
US4675829A (en) * | 1984-07-27 | 1987-06-23 | Intellicorp Corporation | Method and apparatus for building knowledge-based systems |
US4752890A (en) * | 1986-07-14 | 1988-06-21 | International Business Machines Corp. | Adaptive mechanisms for execution of sequential decisions |
US4821333A (en) * | 1986-08-22 | 1989-04-11 | Environmental Research Inst. Of Michigan | Machine learning procedures for generating image domain feature detector structuring elements |
US5742738A (en) * | 1988-05-20 | 1998-04-21 | John R. Koza | Simultaneous evolution of the architecture of a multi-part program to solve a problem using architecture altering operations |
US4935877A (en) * | 1988-05-20 | 1990-06-19 | Koza John R | Non-linear genetic algorithms for solving problems |
US5343554A (en) * | 1988-05-20 | 1994-08-30 | John R. Koza | Non-linear genetic process for data encoding and for solving problems using automatically defined functions |
WO1991014990A1 (en) * | 1990-03-28 | 1991-10-03 | Koza John R | Non-linear genetic algorithms for solving problems by finding a fit composition of functions |
US5623418A (en) * | 1990-04-06 | 1997-04-22 | Lsi Logic Corporation | System and method for creating and validating structural description of electronic system |
US5222030A (en) * | 1990-04-06 | 1993-06-22 | Lsi Logic Corporation | Methodology for deriving executable low-level structural descriptions and valid physical implementations of circuits and systems from high-level semantic specifications and descriptions thereof |
US5390282A (en) * | 1992-06-16 | 1995-02-14 | John R. Koza | Process for problem solving using spontaneously emergent self-replicating and self-improving entities |
US5465218A (en) * | 1993-02-12 | 1995-11-07 | Kabushiki Kaisha Toshiba | Element placement method and apparatus |
JP2974900B2 (ja) * | 1993-12-13 | 1999-11-10 | 株式会社 エイ・ティ・アール人間情報通信研究所 | 自律進化型ハードウェア設計システム |
US5557533A (en) * | 1994-04-19 | 1996-09-17 | Lsi Logic Corporation | Cell placement alteration apparatus for integrated circuit chip physical design automation system |
US5581657A (en) * | 1994-07-29 | 1996-12-03 | Zerox Corporation | System for integrating multiple genetic algorithm applications |
US5719794A (en) * | 1995-07-19 | 1998-02-17 | United States Of America As Represented By The Secretary Of The Air Force | Process for the design of antennas using genetic algorithms |
US5867397A (en) * | 1996-02-20 | 1999-02-02 | John R. Koza | Method and apparatus for automated design of complex structures using genetic programming |
-
1996
- 1996-02-20 US US08/603,648 patent/US5867397A/en not_active Expired - Lifetime
-
1997
- 1997-02-20 EP EP97908722A patent/EP0954798A1/en not_active Ceased
- 1997-02-20 AU AU20560/97A patent/AU728013B2/en not_active Expired
- 1997-02-20 JP JP53106797A patent/JP3958793B2/ja not_active Expired - Fee Related
- 1997-02-20 WO PCT/US1997/002915 patent/WO1997032259A1/en active Application Filing
- 1997-02-20 CA CA002256044A patent/CA2256044C/en not_active Expired - Lifetime
-
1999
- 1999-01-05 US US09/225,643 patent/US6360191B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0954798A4 (ja) | 1999-11-10 |
US5867397A (en) | 1999-02-02 |
AU728013B2 (en) | 2001-01-04 |
US6360191B1 (en) | 2002-03-19 |
WO1997032259A1 (en) | 1997-09-04 |
AU2056097A (en) | 1997-09-16 |
CA2256044C (en) | 2006-08-22 |
EP0954798A1 (en) | 1999-11-10 |
CA2256044A1 (en) | 1997-09-04 |
JP2000508096A (ja) | 2000-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3958793B2 (ja) | 遺伝的プログラミングを使用した複雑な構造の自動設計の方法および装置 | |
Koza et al. | Four problems for which a computer program evolved by genetic programming is competitive with human performance | |
Koza et al. | Automated design of both the topology and sizing of analog electrical circuits using genetic programming | |
Koza et al. | Automated WYWIWYG design of both the topology and component values of electrical circuits using genetic programming | |
Fu et al. | Grammatical inference: Introduction and survey-Part I | |
Koza et al. | Evolving inventions | |
Koza et al. | Automated synthesis of analog electrical circuits by means of genetic programming | |
Koza | Genetic programming III: Darwinian invention and problem solving | |
JP2881711B2 (ja) | 神経回路網の遺伝子的合成 | |
Bennett et al. | Evolution of a 60 decibel op amp using genetic programming | |
Zhang et al. | Optimal concurrent design based upon distributed product development life-cycle modeling | |
Rest et al. | RT-WDF—a modular wave digital filter library with support for arbitrary topologies and multiple nonlinearities | |
Koza et al. | Design of a high-gain operational amplifier and other circuits by means of genetic programming | |
US7742908B2 (en) | Method for simulating an electrical circuit by synthesis of a physical model, device for simulating an electrical circuit, in particular a musical instrument obtained with that method | |
Taiwo et al. | Application of genetic algorithm to solve traveling salesman problem | |
Koza et al. | Evolution of a low-distortion, low-bias 60 decibel op amp with good frequency generalization using genetic programming | |
Gielen et al. | Open analog synthesis system based on declarative models | |
Koza et al. | Automatic design of analog electrical circuits using genetic programming | |
Koza et al. | Use of architecture-altering operations to dynamically adapt a three-way analog source identification circuit to accommodate a new source | |
Koza et al. | Design of a 96 decibel operational amplifier and other problems for which a computer program evolved by genetic programming is competitive with human performance | |
Perkowski et al. | Learning hardware using multiple-valued logic-Part 1: introduction and approach | |
Koza et al. | Automatic Synthesis of Electrical Circuits Containing a Free Variable Using Genetic Programming. | |
Séquin | VLSI design strategies | |
Streeter et al. | Automatic synthesis using genetic programming of both the topology and sizing for five post-2000 patented analog and mixed analog-digital circuits | |
Pasik et al. | Table-driven rules in expert systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040220 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040220 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060509 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060809 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060925 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061030 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070109 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070306 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070424 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070511 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110518 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120518 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130518 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |