(57)【要約】シンボリック回帰を行う遺伝子発現プログラミング遺伝的アルゴリズムが提供される。アルゴリズムは、数式の複雑さに反比例する適応度関数を用いることで、式の肥大化と過適応を回避する。アルゴリズムが進化させる母集団の団員は、演算数及び演算子を参照する索引の配列集合として表現される。従って、母集団を進化させる過程で行われる選択、突然変異、交差の操作が容易になる。アルゴリズムには構文検査の部分［１０８，１１０，１１２］が含まれ、この部分は、母集団員を最初に実行可能プログラムに変換しなくても、母集団員に適用することができる。オブジェクト指向プログラミング言語データ構造が、アルゴリズムにより使用されるコドン毎に基本データをカプセル化するために提供されている。
2005521158.tif 000002
【特許請求の範囲】
【請求項１】
遺伝的アルゴリズムに基づいて、実世界データの集合を記述する数式を決定する方法であって、
複数の素数を含む数式の表現を有する初期の母集団を生成する工程と、
前記初期の母集団から導き出される一連の世代を進化させる工程と、を含む方法。
【請求項２】
前記複数の素数が素数の所定のリストから選択される請求項１の方法。
【請求項３】
前記一連の世代を進化させる工程が、
複数の連続する世代に対し、１または複数の素数の表現を導入することにより現在の母集団の前記数式の表現から１または複数の数式の表現を突然変異させる工程を含む、請求項１の方法。
【請求項４】
前記一連の世代を進化させる工程が、
複数の連続する世代に対し、
現在の世代の数式の表現を有する母集団で表現されている数式を具体化するプログラムの集合を生成する工程と、
１または複数の前記プログラムの集合を１または複数のテストデータの集合に対し実行し、前記１または複数のプログラムの集合に対応する１または複数の結果を得る工程と、
前記１または複数の結果から前記１または複数のプログラムの集合の１または複数の適応度の示度を導き出す工程と、
連続する世代での複製のために前記適応度の示度に基づいて前記現在の世代の前記数式の表現を有する母集団から１または複数の表現を選択する工程と、
前記連続する世代の対の表現の間で１回以上の交差操作をする工程と、を含む請求項１の方法。
【請求項５】
１または複数の前記複数の連続する世代に対し、１または複数の素数の表現を導入することにより前記現在の母集団の数式の表現から１または複数の数式の表現を突然変異させる工程を更に含む請求項４の方法。
【請求項６】
前記数式の表現を有する初期の母集団が、
索引の配列の集合を備えており、
複数の前記配列が、数式を表現する索引のリストを有しており、
複数の前記索引が、演算子及び演算数から成るグループから選択された要素を参照する請求項１の方法。
【請求項７】
遺伝的アルゴリズムに基づいて、実世界データの集合を記述する数式を決定する方法であって、
数式の表現を有する一連の母集団を帰納的に生成する工程と、各表現は、
演算子の集合から選択された１または複数の演算子の識別と、
定数と変数とを含む演算数の集合から選択された１または複数の演算数の識別とを備えており、
前記演算数の集合の各演算数及び前記演算子の集合の各演算子がコストに対応付けられていることと、
前記一連の母集団の各ｋ番目の母集団に対し、
前記ｋ番目の表現を有する母集団で表現されている数式を具体化するプログラムの集合を生成する工程と、
前記プログラムの集合の各プログラムの第１の適応度の大きさを導き出す工程と、第１
の適応度の大きさを導き出す前記工程は、
前記プログラムをテストデータの１または複数の集合で実行する工程と、出力値を所定の値と比較して残留エラーの大きさを得る工程とを含む処理により行われることと、
前記プログラムの集合の各プログラムの第２の適応度の大きさを導き出す工程と、第２の適応度の大きさを導き出す前記工程は、
前記プログラムの各演算子及び各演算数の前記コストを合計する工程を含む処理により行われることと、
前記第１の適応度の大きさ及び前記第２の適応度の大きさに基づいて各連続する世代の数式の個々の表現を選択的に複製する工程とを含む方法。
【請求項８】
前記第１の適応度の大きさと前記第２の適応度の大きさとを組み合わせて全体の適応度の大きさを得る工程を更に含む請求項７の方法。
【請求項９】
遺伝的アルゴリズムに基づいて、実世界データの集合を記述する数式を決定する方法であって、
一連の数式を有する母集団の各々を索引の配列の集合として表現する工程と、各配列が数式を表現し、前記索引の配列の集合内の１または複数の索引が、演算子及び演算数から成る要素のグループから選択された式の要素の表現を指し示すことと、
前記一連の母集団の各ｋ番目の母集団に対し、
前記母集団の１または複数の前記配列の集合の各々により表現されている前記数式を具体化するプログラムを生成する工程と、
各プログラムの適応度の大きさを導き出す工程と、
（ｋ＋１）番目の世代に引き継がせるため適応度の大きさに基づいて前記配列の集合から１または複数の適応度の高い配列を選択する工程と、
前記（ｋ＋１）番目の世代に引き継がれた１または複数の前記適応度の高い配列の間で交差操作をする工程とを含む方法。
【請求項１０】
各索引がオブジェクト指向プログラミング言語クラスのインスタンスを指し示しており、前記インスタンスが、演算子及び演算数から成るグループから選択された要素の識別をカプセル化している請求項９の方法。
【請求項１１】
交差操作をする前記工程が、
適応度の高い配列の部分と第２の配列の部分とを交換する副工程を含み、前記適応度の高い配列の部分及び前記第２の配列の部分の始点がランダムに選択される請求項９の方法。
【請求項１２】
前記配列の集合が行列として格納されている請求項９の方法。
【請求項１３】
遺伝的アルゴリズムに基づいて、実世界データの集合を記述する数式を決定する方法であって、
数式を表現する記号の列の母集団の一連の世代を帰納的に生成する工程と、
各世代に対し、各記号の列が実行可能なプログラムに翻訳可能かどうかを決定する工程とを含み、前記決定する工程は、
各記号の列に対し、
必要な長さの変数を初期化する工程と、
各列の１番目の記号から開始する工程と、前記各記号の列にある一連のｋ番目の記号に対し、
前記ｋ番目の記号で実行可能な演算を形成するために、構文規則で必要とされる記号の数だけ前記必要な長さの変数を増大する工程と、
前記必要な長さの変数が増分後にｋに等しい場合には、有効な構文を報告する工
程と、
前記必要な長さの変数がｋに加算された際に最大の列長さを上回った場合には、無効な構文を報告する工程とにより行われる工程である方法。
【請求項１４】
前記一連の世代を帰納的に生成する工程が、
１または複数の記号の列にある記号をランダムに変更する副工程を含む請求項１３の方法。
【請求項１５】
前記一連の世代を帰納的に生成する工程が、
前記母集団にある記号の列同士間で交換する記号の部分列の範囲を規定する１または複数の点をランダムに選択する副工程を含む請求項１３の方法。
【請求項１６】
実世界データの集合を記述する数式を決定するプログラミング命令を備えたコンピュータ可読媒体であって、
複数の素数を含む数式の表現を有する初期の母集団を生成するプログラミング命令と、
前記初期の母集団から導き出される一連の世代を進化させるプログラミング命令と、を備えているコンピュータ可読媒体。
【請求項１７】
一連の世代を進化させる前記プログラミング命令が、
前記複数の素数を素数の所定のリストから選択するプログラミング命令を備えている請求項１６のコンピュータ可読媒体。
【請求項１８】
一連の世代を進化させる前記プログラミング命令が、
複数の連続する世代に対し、１または複数の素数の表現を導入することにより現在の母集団の前記数式の表現から１または複数の数式の表現を突然変異させるプログラミング命令を備えている請求項１６のコンピュータ可読媒体。
【請求項１９】
一連の世代を進化させる前記プログラミング命令が、
複数の連続する世代に対し、
現在の世代の数式の表現を有する母集団で表現されている数式を具体化するプログラムの集合を生成するプログラミング命令と、
１または複数の前記プログラムの集合を１または複数のテストデータの集合に対し実行し、前記１または複数のプログラムの集合に対応する１または複数の結果を得るプログラミング命令と、
前記１または複数の結果から前記１または複数のプログラムの集合の１または複数の適応度の示度を導き出すプログラミング命令と、
連続する世代での複製のために前記適応度の示度に基づいて前記現在の世代の前記数式の表現を有する母集団から１または複数の表現を選択するプログラミング命令と、
前記連続する世代の対の表現の間で１回以上の交差操作をするプログラミング命令とを備えている請求項１６のコンピュータ可読媒体。
【請求項２０】
一連の世代を進化させる前記プログラミング命令が、
１または複数の前記複数の連続する世代に対し、１または複数の素数の表現を導入することにより前記現在の母集団の数式の表現から１または複数の数式の表現を突然変異させるプログラミング命令を更に備えている請求項１９のコンピュータ可読媒体。
【請求項２１】
前記数式の表現を有する初期の母集団が、
索引の配列の集合を備えており、
複数の前記配列が、数式を表現する索引のリストを有しており、
複数の前記索引が、演算子及び演算数から成るグループから選択された要素を参照する
請求項１６のコンピュータ可読媒体。
【請求項２２】
実世界データの集合を記述する数式を決定するプログラミング命令を備えたコンピュータ可読媒体であって、
数式の表現を有する一連の母集団を帰納的に生成するプログラミング命令と、各表現は、
演算子の集合から選択された１または複数の演算子の識別と、
定数と変数とを含む演算数の集合から選択された１または複数の演算数の識別とを備えており、
前記演算数の集合の各演算数及び前記演算子の集合の各演算子がコストに対応付けられていることと、
前記一連の母集団の各ｋ番目の母集団に対し、
前記ｋ番目の表現を有する母集団で表現されている数式を具体化するプログラムの集合を生成するプログラミング命令と、
前記プログラムの集合の各プログラムの第１の適応度の大きさを導き出すプログラミング命令と、第１の適応度の大きさを導き出す前記プログラミング命令は、
前記プログラムをテストデータの１または複数の集合で実行する工程と、出力値を所定の値と比較して残留エラーの大きさを得る工程とを含む処理により行われることと、
前記プログラムの集合の各プログラムの第２の適応度の大きさを導き出すプログラミング命令と、第２の適応度の大きさを導き出す前記プログラミング命令は、
前記プログラムの各演算子及び各演算数の前記コストを合計する工程を含む処理により行われることと、
前記第１の適応度の大きさ及び前記第２の適応度の大きさに基づいて各連続する世代の数式の個々の表現を選択的に複製するプログラミング命令と、を備えている媒体。
【請求項２３】
前記第１の適応度の大きさと前記第２の適応度の大きさとを組み合わせて全体の適応度の大きさを得るプログラミング命令を更に含む請求項２２のコンピュータ可読媒体。
【請求項２４】
実世界データの集合を記述する数式を決定するプログラミング命令を備えたコンピュータ可読媒体であって、
一連の数式を有する母集団の各々を索引の配列の集合として表現するプログラミング命令と、各配列が数式を表現し、１または複数の索引が、演算子及び演算数から成る要素のグループから選択された式の要素の表現を指し示すことと、
前記一連の母集団の各ｋ番目の母集団に対し、
前記母集団の各配列により表現されている前記数式を具体化するプログラムを生成するプログラミング命令と、
生成されたプログラムの各々の適応度の大きさを導き出すプログラミング命令と、
（ｋ＋１）番目の世代に引き継がせるため適応度の大きさに基づいて１または複数の適応度の高い配列を選択するプログラミング命令と、
前記（ｋ＋１）番目の世代に引き継がれた１または複数の前記適応度の高い配列の間で交差操作をするプログラミング命令と、を備えている媒体。
【請求項２５】
各索引がオブジェクト指向プログラミング言語クラスのインスタンスを指し示しており、前記インスタンスが、演算子及び演算数から成るグループから選択された要素の識別をカプセル化している請求項２４のコンピュータ可読媒体。
【請求項２６】
交差操作をする前記プログラミング命令が、
適応度の高い配列の部分と第２の配列の部分とを交換するプログラミング命令を備えており、前記適応度の高い配列の部分及び前記第２の配列の部分の始点がランダムに選択される請求項２５のコンピュータ可読媒体。
【請求項２７】
前記配列の集合が行列として格納されている請求項２５のコンピュータ可読媒体。
【請求項２８】
実世界データの集合を記述する数式を決定するプログラミング命令を備えたコンピュータ可読媒体であって、
数式を表現する記号の列の母集団の一連の世代を帰納的に生成するプログラミング命令と、
各世代に対し、各記号の列が実行可能なプログラムに翻訳可能かどうかを決定するプログラミング命令とを備えており、前記決定するプログラミング命令は、
各記号の列に対し、
必要な長さの変数を初期化する工程と、
各列の１番目の記号から開始する工程と、前記各記号の列にある一連のｋ番目の記号に対し、
前記ｋ番目の記号で実行可能な演算を形成するために構文規則で必要とされる記号の数だけ前記必要な長さの変数を増大する工程と、
前記必要な長さの変数が増分後にｋに等しい場合には、有効な構文を報告する工程と、
前記必要な長さの変数がｋに加算された際に最大の列長さを上回った場合には、無効な構文を報告する工程とにより行われるプログラミング命令である、コンピュータ可読媒体。
【請求項２９】
一連の世代を帰納的に生成するプログラミング命令が、
１または複数の記号の列にある記号をランダムに変更するプログラミング命令を備えている請求項２８のコンピュータ可読媒体。
【請求項３０】
一連の世代を帰納的に生成するプログラミング命令が、
前記母集団にある記号の列同士間で交換する記号の部分列の範囲を規定する１または複数の点をランダムに選択するプログラミング命令を備えている請求項２８のコンピュータ可読媒体。
【請求項３１】
データ構造に格納されているコンピュータ可読媒体であって、
オブジェクト指向プログラミング言語クラスを備えており、前記オブジェクト指向プログラミング言語クラスが、
コドン名インスタンス変数と、
前記コドン名インスタンス変数で指定されているコドンに対応付けられているコドンの数を示している第１の数を格納するコドンタイプインスタンス変数と、
前記コドン名インスタンス変数で指定されている前記コドンに対応付けられている値を格納するコドン値インスタンス変数と、
前記コドン名インスタンス変数で指定されている前記コドンに指定されている演算子又は演算数が数式の複雑さを増す程度を示している第２の数を格納するコドンコストインスタンス変数と、
前記オブジェクト指向プログラミング言語クラスの各インスタンスに対応付けられている索引を格納するコドン索引インスタンス変数と、を有するオブジェクト指向プログラミング言語クラスである、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は遺伝的アルゴリズムに関する。
【背景技術】
【０００２】
応用科学及び応用工学では、線形方程式又は変数が１または複数の他の所定の関数に実験データを適応させるアルゴリズムが広く用いられている。データを所定の関数に適応させる際、先験的に未知の、所定の関数のパラメータ（例えば、係数）が決定される。これらのパラメータは、理論上の定数（例えば、電子の質量）を表していたり、又は現象を特徴付けている単なる経験値を表していたりするが、データを関数に適応させる際に決定される。このような状況では、データに適応する適切な関数は、専門知識又は既存の根拠に基づいて人間により選択される。例えば、特定のタイプのデータが特定の数学関数により記述されることは、関連分野の専門家には既知である。どの数学関数がどのタイプの関数を記述するのかは理工学の地道な進歩を経て発見される。
【０００３】
同様に、統計学の分野でも、測定データの平均及び分散を決定するため、統計データがガウス分布や二項分布などの適切な分布関数に適応される場合がある。任意のデータの集合に適応する適切な分布関数の選択は、各タイプの分散に関連しているランダム変数のタイプが、収集データを特徴付けているランダム変数に一致するかどうかの考察に基づいている。即ち、選択は通常は統計学の当業者の仕事である。
【０００４】
特定の統計パッケージは、自動的にデータの集合を分布関数の所定の集合に適応させてみて、データに最も良く適応する分布関数を選択することで、統計学者の補助を試みている。
【０００５】
上述のケースでは、データが適応される関数は予め決められており、新しいタイプのデータに適用できるまったく新しい関数を推測又は最初から導出して発見するという課題を、科学者やエンジニアに残したままとなっている。即ち、数学関数を発見する仕事は人間の知力に委ねられている。
【０００６】
人工知能の分野にはサブフィールドの遺伝的アルゴリズムがある。遺伝的アルゴリズムの分野では、工学や他の問題の解を計算する際に、進化生物学における遺伝学の役割を模倣する試みがなされている。遺伝的アルゴリズムでは、仮定された解の母集団が進化のダーウィン説を模倣するように「進化」させる。
【０００７】
遺伝的アルゴリズムの分野には、遺伝的プログラミングとして知られている研究分野がある。遺伝的プログラミングでは、進化される母集団には、それ自体がプログラムである個体がある。遺伝的プログラミングでは、各個体プログラムの適応度が、このプログラムが実行されている際の特定の問題を解く能力に基づいて判断される。
【０００８】
遺伝的プログラミングは「シンボリック（記号的）回帰」として知られているものを実行するために利用されている。シンボリック回帰では、人間の知力を、データ集合を最も良く表す数式を発見する遺伝的プログラミングの利用と置き換える努力がなされている。遺伝的プログラミングに基づくシンボリック回帰で進化させられた個体プログラムは、１または複数の独立変数の入力値に基づいて従属変数の値を与える数学の方程式を表す。
【０００９】
最も優勢な先行技術の遺伝的プログラミングアルゴリズムは、ＬＩＳＰプログラミング言語で実施されており、このＬＩＳＰプログラミング言語はその課題に特に適していると
作成者に判断されている。そのようなアルゴリズムでは、ＬＩＳＰプログラミング言語のＳ式構造が数式を表現するために使用されていた。これらのＳ式は、進化されている母集団の団員の役割を果たし、進化を実行する過程で直接に演算されている。この先行技術のアプローチの欠点は、母集団における数式の規模が制限されていなかったことで、この欠点は、母集団における数式が過度に大きくなるいわゆる「式の肥大化（ｅｘｐｒｅｓｓｉｏｎ  ｂｌｏａｔｉｎｇ）」につながる。この先行技術のアプローチのもう１つの欠点は、このような肥大化した式は、遺伝的プログラミングアルゴリズムが数式の正当性を検査するために使用しているデータに過適応しがちなことである。過適応により、データには測定誤差が含まれていても式がデータに非常に厳密に一致するのに、同一のソースからの、後で式の正当性をテストするために使用される追加データには一致しない。更なる欠点は、このようなＳ式構造が、科学及び工学のプログラミングでの使用に現在のところ好まれているＪａｖａ（登録商標）やＣ＋＋などの最近のプログラム言語では利用できないことである。
【００１０】
シンボリック回帰遺伝子発現プログラミング（ＧＥＰ）には別のタイプの遺伝的アルゴリズムも利用されている。遺伝子発現プログラミングでは、式が記号の文字列により表現され、各記号が数式のトークン（例えば、演算数（ｏｐｅｒａｎｄ）、演算子（ｏｐｅｒａｔｏｒ））を表わす。遺伝子発現プログラミングを利用する際、遺伝的プログラミングアルゴリズムが求めている式に出現する定数の値が、前もって分からない場合がある。従って、ＧＥＰアルゴリズムは、処理するべく与えられた限定された定数の集合（例えば、０と１）に対し極端な数の演算を実行するプログラムを作成しなくてはならない恐れがある。これによって必然的に、遺伝子発現プログラミングアルゴリズムの収束に要する時間が長くなり、更に発見される解のプログラムの規模が過度に大きくなる。その上、遺伝子発現プログラミングアルゴリズムにより作成された式は有限の規模に限定されているが、必要な定数を得るために要する演算は最大規模の式の大部分を消費するため、他の必要な演算子及び変数のために利用できるものを制限する恐れがある。
【００１１】
遺伝子発現プログラミングでは、母集団の進化に関わる自然の過程を模倣する様々な動作が実行される。これらには１点及び２点の交差や突然変異がある。これらの過程には、式（染色体）の表現中の既存のトークン（演算数又は演算子）を交換するための交差点のランダムな選択及び新しいトークンのランダムな選択が含まれる。そのような演算の性質がランダムであるために、かかる演算は進化を経る適応においては重要であるが、遺伝子発現プログラミングの場合には、式（プログラム）の構文的な間違いをまねく恐れがあり、都合が悪い。このような構文的に間違った式は、解の候補としては不適当で、遺伝子発現プログラミングアルゴリズムのプログラム実行エラーを発生させる恐れがある。
【発明を実施するための最良の形態】
【００１２】
図１は本発明の好適な実施形態に係る数式の表現を有する母集団を進化させるアルゴリズム１００のフローチャートの第１の部分であり、図２は図１で開始されたフローチャートの第２の部分である。図１及び図２に示されているアルゴリズム１００は、遺伝子発現プログラミング（ＧＥＰ）型の遺伝的アルゴリズム（ＧＡ）である。遺伝的アルゴリズム１００はデータを満足に適応させる数式を決定するために利用される。データには、関連している独立変数値及び従属変数値の１または複数の集合がある。求められている数式の性質に依存して、１つ又は多数の独立変数が存在し得る。
【００１３】
図１を参照すると、ステップ１０２では、使用される演算子及び演算数のリストが読み込まれる。このリストは設定ファイルに格納され得る。幅広い技術分野においては、ステップ１０２で読み込まれる演算子の中に加算、減算、乗算、除算が含まれることが適切である。幅広い技術分野では、サイン、コサイン、タンジェントなどの三角法の関数の演算子、及び、アークサイン、アークコサイン、アークタンジェントなどの三角法の逆関数が
含まれることも適切である。留意すべきは、演算子が演算する演算数の数に従って演算子が分類されることである。別のタイプの関数がさらに含まれてもよい。ＭＡＸ関数は、２つの演算数又は数学的部分式を引数として受け入れ、２つの引数を評価し、大きい方の引数の値を戻す。さらに、それと相補的なＭＩＮ関数が含まれてもよい。
【００１４】
プログラミングにおけるフロー制御構造としてよくある別のタイプの演算数、即ち、ＩＦ｛部分式１＜＝部分式２｝ＴＨＥＮ｛部分式３｝ＥＬＳＥ｛部分式４｝（簡潔にＩＦ演算子と呼ばれる）が含まれてもよい。この演算子は区分的に定義された関数を発見する際に有用である。留意すべきはＩＦ演算子が４つの引数を受け入れることであり、４つの引数とは、不等式の条件で使用される第１と第２の部分式、条件が合えば実行される第３の部分式、条件が合わなければ評価される第４の部分式である。
【００１５】
特定分野で発生することの多い特定な関数に基づく演算子を含むことが適切であろう。例えば、アルゴリズム１００がニューラルネットワークの分野に適用される場合には、シグモイド関数に基づく演算子を含むことが適切であろう。
【００１６】
表Ｉには、ステップ１０２で読み込まれる演算子の典型的なリストが含まれている。表Ｉでは、第１の列は演算子の名前を示し、第２の列は演算子のタイプを示し、このタイプは、演算子が引数として受け入れる演算数の数に対応しており、第３の列は値のために空けられ（第３の列は演算子には適用できないため、表Ｉに値はない）、第４の列は各演算子に関連しているコストを示す。この第４列は、各演算子が数式の複雑さを増す程度の目安である。第５の列は索引（インデックス）であり、この索引により演算子が参照される。
【００１７】
【表１】
2005521158.tif 000003
ステップ１０２で読み込まれる演算数には、定数と独立変数とがある。以下の表ＩＩには、ステップ１０２で読み込まれる演算数の典型的なリストが含まれている。表ＩＩの列の同一性は表Ｉと同じである。表ＩＩの索引は表Ｉで開始した索引の順序を継続している。
【００１８】
表ＩＩの１番目の行（索引が１７の行）にはＰｉが記載されており、Ｐｉは、経験によると理工学の問題に関する数式に出現することが多いため、含まれている。広範囲の分野で有効な他の適切な定数（例えば、自然対数の底、ｅ）や特定の研究分野に適用可能な定数（例えば、プランク定数）が、求められている数式に出現する機会があると考えられる場合には、これらの定数が表ＩＩに記載されてよい。表ＩＩの次の行（索引１８）には、０の演算数が含まれている。０を含めることで、アルゴリズム１００はアルゴリズム１００が進化させている数式の一部を、例えば、部分式に０を掛けることにより、部分式が数式を妨害することなく、効果的に消去できる。遺伝子発現プログラミングは数式の表現の演算子及び演算数の列に対し反応する。代替の実施形態によると、ｕｎｏ（）関数がステップ１０２で読み込まれる演算子に含まれている。ｕｎｏ（）関数はその引数をもとのまま戻す。ｕｎｏ（）関数を含めることで、母集団員により表されている数式の一部が、母集団員をゆがませることなくＧＥＰアルゴリズムにより非アクティブになる。非アクティブになった部分は、次の世代の交差や突然変異によりアクティブにされうる。
【００１９】
表ＩＩの次の行（索引１９）には、数の１（１）が含まれている。任意の整数が１の加算により、任意の有理数が１の和の除算によりそれぞれ作られる実数系では、１は特別な役割を担っている。従ってアルゴリズム１００に１を備えることにより、原則として、アルゴリズム１００は、数式の生成の際に必要な場合には前述のタイプの任意の数を生成可能になる。
【００２０】
表Ｉ及び表ＩＩには、数式を決定する際にアルゴリズム１００により利用される素材が記載されている。表Ｉ及び表ＩＩの内容（実際には配列や他のデータ構造として表される）は、数式の表現を有する初期の母集団を生成するために利用され、突然変異操作を行う際に取り出される。
【００２１】
表ＩＩの行の次のグループ（索引２０〜４２）には、素数の列が含まれている。２つ以上の素数を組み合わせて積、和、商、差にすることにより、様々な数が部分式により生成可能であり、この部分式は、数の１のみを利用して同じ数を生成するために必要とされる部分式に比べ比較的単純である。従って、素数の列が表に含まれることで、実世界データの集合を記述する数式を発見するためにアルゴリズム１００に必要とされる世代の数が減少され、発見される数式の複雑さも低減される。
【００２２】
アルゴリズム１００により生成された数式に含まれる独立変数は、ＧＥＰアルゴリズム１００により生成されたプログラムの適応度を評価するために利用される訓練データを含むファイルで識別される。訓練データに使用され、該データに関連している独立変数の識別を含む標準ファイル形式は、学問的データマイニング研究ファイル形式（Ａｃａｄｅｍｉｃ  Ｄａｔａ  Ｍｉｎｉｎｇ  Ｒｅｓｅａｒｃｈ  ｆｉｌｅ  ｆｏｒｍａｔ）即ちＡＲＦＦとして知られている。表ＩＩの最後の２つの項目Ｘ及びＹは代表的な独立変数である。表ＩＩの独立変数の数は、アルゴリズム１００が数式を探す実世界データの独立変数の数に対応する。特定の問題に対しては、独立変数が１つのみでもよいし、独立変数が２つ以上あってもよい。
【００２３】
【表２】
2005521158.tif 000004
再び図１を参照すると、次のステップ１０４で、Ｎ個の数式の表現を有する母集団（母集団員）を生成するために、Ｎ個の表現それぞれに対して、ステップ１０２で読み込まれた演算数及び演算子のリストから要素Ｋ個の集合（例えば、図１及び図２に示されているもの）がランダムに選択される。
【００２４】
図３は、数式の表現を有する母集団を格納するために使用される行列３００を示し、この母集団は、ステップ１０４（図２）で生成され図１及び図２に示されているアルゴリズムにより進化される。ステップ１０４で生成された各母集団員は、行又は列として格納されることが望ましい（図３では行として示されている）。行列の要素はＰＡ（ｌ、ｍ）で書かれ、ここで、行の索引ｌは母集団員を示し、列の索引のｍは各母集団員のうちのｍ番目の要素を示す。（ＰＡは母集団配列を意味する。）従って、行列３００の各行は、数式の表現を含む配列である。この最初の段階では、各式の構文がまだ実証されていない。行列３００の行列要素には、（表Ｉ及び表ＩＩの第５の列に従って）特定の演算子又は演算数に対応する索引が含まれている。行列３００は配列の集合と考えることができ、この配列はそれぞれ母集団員を表している。プログラミング言語は一般に、行列操作演算（例え
ば、行のコピー、要素の交換）が迅速に実行されるよう設計されるが、数式を有する母集団は行列３００などの配列の集合により表現されているので、数式の表現を有する母集団に対して行われる操作（例えば、選択、交差、突然変異）は容易になり加速される（即ち、計算コストが引き下げられる）。
【００２５】
図５は、数式の表現を含む演算子及び演算数の配列５００を示す。図５は、行列３００（図３）の各行で参照される演算子及び演算数の列を図示する。図６は、図５に示されている配列を表す索引の配列６００である。図６に示されているように、演算数及び演算子は、図５に示されている演算子及び演算数の列に（表Ｉ及び表ＩＩを介して）対応している索引の集合により表現されている。即ち、配列５００に出現する各演算子又は各演算数は、実際には配列６００の索引及び行列３００の索引により表現される。配列６００に格納されている索引は演算子又は演算数のコドンである。行列３００（図３）には、図６に行として示されているタイプの数Ｎの配列が含まれている。留意すべきは、行列３００（図３）、配列５００（図５）、配列６００（図６）の行として表現されている各母集団員には、遺伝的アルゴリズム１００の実行中、構文的に正しい数式の形成に必要な要素よりも多くの要素が含まれうることである。配列５００及び配列６００の終端にある余分な要素はなお連続する世代に引き継がれ、交差操作や突然変異により数式の一部となることがある。
【００２６】
再び図１を参照すると、次のブロック１０６は、ループの上端であり、このループは、新しい母集団員（行列３００の行）各々の構文が有効な数式を表現しているかどうかを決定するため、構文を連続的に検査する。ステップ１０８では、数式を表現している構文が検査される。本発明の好適な実施形態に係るステップ１０８で実行される処理の詳細は、図４を参照してより詳細に以下に説明される。ブロック１１２は決定ブロックであり、その結論はステップ１０８で検査された構文が正しいかどうかに依存する。構文が正しくない場合、アルゴリズム１００は、母集団員（数式の表現）が再生成されるステップ１１０に分岐する。母集団員は、演算数及び演算子を再び選択することによりランダムに再生成される場合がある。代替例として、母集団員は、構文を訂正するため（例えば、ランダムに）修正されてもよい。ステップ１１０の後、アルゴリズム１００はステップ１０８に折り返す。ステップ１０８で検査された数式の構文が正しいことがブロック１１２で決定された場合、アルゴリズムはブロック１１４へと進む。ブロック１１４では、検査すべき更なる母集団員があるかどうかが決定される。更なる母集団員がある場合、アルゴリズム１００はステップ１０６に折り返し、その後、次の母集団員を処理する。全ての母集団員が検査済みである場合、アルゴリズム１００はステップ１１６へと進む。
【００２７】
ステップ１１６では、母集団（例えば、図３の配列３００）で表現される数式について第１の適応度の大きさが算出される。第１の適応度の大きさは、母集団で表現されている数式の複雑さに関する。第１の適応度の大きさの観点から言えば、複雑さの増大は適応度の低下を意味する。第１の適応度の大きさは、表現された数式の、演算子及び演算数に対応付けられているコストの和に関係している。演算子及び演算数に対応付けられているコストは表Ｉ及び表ＩＩの第４の列に与えられている。本発明の好適な実施形態によると、第１の適応度の大きさは以下の式で算出される。
【００２８】
【数１】
2005521158.tif 000005
ここで、ＦＭｉはｉ番目の母集団員（数式）の第１の（適応度に関する）適応度の大きさであり、
Ｃｏｓｔｉはｉ番目の式の演算子に対応付けられているコストの和であり、
ＡｖｇＣｏｓｔはコストの和Ｃｏｓｔｉの母集団の平均である。
【００２９】
各演算子に対応付けられているコストは表Ｉの第４の列に与えられている。留意すべきは、第１の適応度の大きさＦＭｉは常に０と１の間であることである。数式１は母集団の連続する世代の第１の適応度の大きさを算出する際にも使用可能である。
【００３０】
再び図１を参照すると、ステップ１１８で、各母集団員（例えば、行列３００の行）が、母集団員で表現される数式を具体化する実行可能プログラムに変換される。
図７は図１に示した方法で決定される仮説的な数式７００を示し、図８は図７に示されている数式７００の近似式８００を示す。図７に示されている式７００に出現する定数は、素数及び１を用いて図８に示されている式８００で概算される。図８に示されている式８００は、図５及び図６に示されている配列に含まれる数式の表現に対応している。図９は、図８に示されている式を表す樹形図９００である。図９は、図８に示されている数式８００と図５及び図６に示されている数式の表現との間の対応の理解にも役立つ。樹形図９００は、樹形図９００を作る際に配列５００の左から開始し幅優先ルールに従うことで、図５に示されている配列５００から構成されている。樹形図９００は、演算の順序に関する通常のルールを反映する。
【００３１】
本発明の好適な実施形態によると、アルゴリズム１００は最近のオブジェクト指向プログラミング言語で書かれている。各コドン（演算数又は演算子）の基本情報は、クラスのインスタンスにカプセル化されていることが望ましい。コドンに呼び出されるＪａｖａ（登録商標）のクラスの原型が、各演算数又は演算子の基本情報のカプセル化に適しており、以下に示される。コドンクラスは、表Ｉ及び表ＩＩの５つの列に記載された各項目、即ち、名前、タイプ、値、コスト、索引についてのインスタンス変数を含むことが望ましい。コドンクラスのインスタンスは表Ｉ及び表ＩＩの各行毎に生成される。
【００３２】
【表３】
2005521158.tif 000006
コドンクラスのインスタンスは、実行可能プログラムを生成する基本構成要素として使用され、この実行可能プログラムは、母集団員で表現されている数式を符号化する。コドンクラスのインスタンスはノードクラスのインスタンスで使用される場合があり、ノードクラスのインスタンスには、親ノード参照と子ノード参照とを含む追加情報（インスタンス変数）が更に含まれる。ノードクラスのインスタンスは表現木（ツリー）クラスで使用される場合があり、表現木クラスは数式全体の構造の情報を取り込む。表現木クラスのイ
ンスタンスの情報には、図９に図示されているような表現木構造が含まれる。
【００３３】
再び図１を参照すると、ステップ１２０では、ステップ１１８で生成された実行可能プログラムが、１または複数のテストデータの集合を用いて実行される。テストデータには、例えば、観察により（例えば、実験や調査の状況から）推定され対応付けられている独立変数値及び従属変数値の多数の集合が含まれる場合がある。独立変数値は、ステップ１１８のプログラムを実行する際のプログラムパラメータとして使用され、ステップ１１８で実行されるプログラムの出力が、対応付けられている従属変数値の値に対して判断される。例えば、２変数の関数に厳密に合致している数式を探す際に、形式（Ｘｊ，Ｙｊ，Ｚｊ）のデータの複数の集合が使用され、ここでＸｊ及びＹｊは独立変数、Ｚｊは従属変数である。各集合の独立変数Ｘｊ及びＹｊはプログラムパラメータとして働き、各プログラム実行の出力は関連のＺｊと比較される。コドンクラスを参照するノードクラスに関係がある表現木クラスを含むオブジェクト指向プログラミング言語の実施では、プログラム実行は前述の表現木クラスのインスタンスを評価することになる。
【００３４】
ステップ１２２では、各母集団員で表現されている数式が１または複数のテストデータの集合に適応する程度に基づく第２の適応度の大きさが、ステップ１２２で得られた出力を用いて算出される。第２の適応度の大きさは、以下の数式２により与えられる適応度の大きさの未処理の二乗平均平方根（ＲＭＳ）に基づいていることが望ましい。
【００３５】
【数２】
2005521158.tif 000007
ここで、Ｚｊはｊ番目のテストデータ集合の従属変数値、
Ｘ１ｊ、Ｘ２ｊ、Ｘ３ｊ、．．．ＸＬｊ、はｊ番目のテストデータ集合の独立変数値の集合、
Ｌは従属変数の数、
ＰＲＯＧｉはｉ番目のプログラムを表し、このｉ番目のプログラムはｉ番目の母集団員で表現されている数式を具体化し、
Ｍはテストデータ集合の数、
ＲＭＳｉは、ｉ番目のプログラムについての未処理の二乗平均平方根の適応度の大きさの値である。
【００３６】
数式２により与えられる未処理のＲＭＳ適応度は、第２の適応度の大きさを導き出す以下の数式３を用いて規模を改められることが望ましい。
【００３７】
【数３】
2005521158.tif 000008
ここで、ＡｖｇＲＭＳは世代のＲＭＳｉの平均である。
連続する世代の母集団員について第２の適応度の大きさを評価するために数式３を用いる際には、直前の世代のＡｖｇＲＭＳの最小値が現在の世代のＡｖｇＲＭＳの値より小さい場合、その最小値が使用されることが望ましい。母集団員について第１の適応度の大きさを評価するために数式１を用いる際には、これまでのところでＡｖｇＲＭＳの最小値を持つ世代のＡｖｇＣｏｓｔが使用される。第１の適応度の大きさＳＭｉは０と１の間の値である。
【００３８】
ステップ１２４では、第１の適応度の大きさと第２の適応度の大きさとを考慮に入れた全体の適応度の大きさが算出される。全体の適応度の大きさは以下の数式４を用いて算出されることが望ましい。
【００３９】
【数４】
2005521158.tif 000009
ここで、Ｆｉは、ｉ番目のプログラムの全体の適応度の大きさであり、このｉ番目のプログラムはｉ番目の母集団員により表現されている関数の数式を具体化する。
【００４０】
ｐは節約重み係数であり、この節約重み係数は全体の適応度の大きさにおける第１の（コストに関する）適応度の大きさに与えられる重みを決定する。
アルゴリズム１００を使用する好適な方式によると、節約重み係数ｐは当初は０に設定されており、未処理の二乗平均平方根の適応度の大きさの小さい値が得られた後は、節約重み係数は有限値に設定される。節約重み係数は、第１の（コストに関する）適応度の大きさが第２の（適応に関する）適応度の大きさを犠牲にして過度の重みを与えられないよう、０．２未満の正数が望ましく、更に０．１未満の正数がより望ましい。有限値に設定される際、節約重み係数は最低で０．０５であることが望ましい。全体の適応度の大きさに第１の（コストに関する）適応度の大きさが含まれることにより、アルゴリズム１００により発見される数式の規模が縮小される。更に第１のコストに関する適応度の大きさが含まれると、テストデータ集合に過適応する数式が排除される。
【００４１】
図２を参照すると、アルゴリズム１００の第２の部分が示されている。ブロック１２６は決定ブロックであり、この決定ブロックの結論は適応度基準が満たされているかどうかによって決まる。テストされる適応度基準は、全体の適応度の大きさ（第１及び第２の適応度の大きさの両方を含む）が全体の適応度閾値を上回るという必要条件であることが望ましい。適応度基準が満たされている場合、アルゴリズム１００は、最適な母集団員が出力されるステップ１３０へと進む。適応度基準が満たされていない場合、アルゴリズム１００はブロック１２８へと進む。全体の適応度の大きさが満たされているが節約重み係数が０に設定されている場合は、ブロック１２６で適応度基準が満たされたとは決定されない。
【００４２】
ブロック１２８では、世代が限界を超えているかが決定される。上述の議論は初期の母集団（即ち、ステップ１０４で生成された母集団）に適用されたステップに向けられているが、以下の残りの議論から分かるように、一連の世代の各々についてブロック１２８に到達するように、アルゴリズム１００は帰納的に演算する。世代の限界は、遺伝的アルゴリズム１００が帰納的に生成する世代の数を制限されていることが望ましい。世代の限界
はコンピュータ資源の消費を制御する役割を果たし、その結果、アルゴリズム１００の実行時間を制御する役割も果たす。世代が限界を超えた場合、アルゴリズム１００は最適な母集団員が出力されるステップ１３０に進む。代替例として、停止する代わりに、母集団はランダムに撹乱され、実行が続行される。世代が限界を超えてない場合、アルゴリズム１００はブロック１３２へと進む。
【００４３】
ブロック１３２は別の決定ブロックであり、この決定ブロックの結論はテストデータへの良好な適応が達成されているかどうかによって決まる。良好な適応が達成されているかどうかは、現在の世代の最も小さい未処理の二乗平均平方根の適応度の大きさとＲＭＳ閾値とを比較することで決定されて得る。ブロック１３２で良好な適応が達成されていることが決定された場合、アルゴリズム１００は、節約重み係数が増加されるステップ１３４へと進む。ステップ１３４では、節約重み係数は１つのステップで０から有限値まで変化することが望ましい。ステップ１３４の後、アルゴリズムはステップ１３６へと進む。ステップ１３２で良好な適応が達成されていないことが決定された場合、アルゴリズムは直接ステップ１３６に進む。
【００４４】
ステップ１３６では、連続する世代での複製のために、現在の母集団の母集団員が選択される。複製のために選択される母集団員のうち少なくとも幾つかは母集団員の適応度に基づいて選択されることが望ましい。本発明の好適な実施形態によると、母集団員は、確率的な剰余法を用いて複製のために選択される。確率的な剰余法では、各母集団員のコピーの少なくとも特定の数Ｉｉが連続する世代での複製のために選択される。数Ｉｉは以下の式で与えられる。
【００４５】
【数５】
2005521158.tif 000010
ここで、Ｎは各世代の母集団員の数、
Ｔｒｕｎｃは切り捨て関数である。
【００４６】
数式５の切り捨て関数の数量の小数部分は、各母集団員の更なるコピー（数式５により決定されたコピーの数以上）が連続する世代で複製されるかを決定するために使用される。上述の小数部分は以下のように使用される。０と１の間の乱数が生成される。上述の小数部分が乱数を上回っている場合、ｉ番目の母集団員の追加のコピーが連続する世代に追加される。乱数及び数Ｉｉの小数部分を用いて作られた選択の数は、次の母集団が要素の総数Ｎを維持するよう調整される。
【００４７】
上述の確率的な剰余法を用いることにより、複製のための母集団員の選択が、ほとんど適応度に基づき、更に不規則性の程度にもよる。この選択方法は生物系の自然淘汰を模倣している。
【００４８】
ステップ１３８では、交差操作が実行される。１点又は２点の交差操作、或いは両タイプの交差操作が実行可能である。交差操作を実行する際には、母集団員（行列３００の行）はランダムに対に組み合わされる。１点及び２点の交差操作を実行するかを決定する際に単一の交差確率又は別々の交差確率が使用可能である。交差操作のタイプ毎に、母集団
員の対毎に、０と１の間の乱数が生成される。乱数が交差確率より小さい場合、交差操作は実行され、乱数が交差確率より大きい場合、母集団員の対はそのままに保たれる。交差操作を実行するかどうかを決定する代替の方法が用いられてもよい。１点の交差操作が対の母集団員の間で実行されることが決定された場合、交差点がランダムに選択される。その後、交差点に続く２つの母集団員（行列３００の行）の全ての要素（コドン）が２つの行の間で交換される。２点の交差操作が２つの母集団員の間で実行されることが決定された場合、２点がランダムに選択され、その２点の間の母集団員（行列３００の行）の要素が交換される。各母集団を索引の配列の集合（より望ましくは索引の行列）で表現することにより、交差操作を実行する迅速な配列操作演算（例えば、選択、コピー）が使用できるようになる。
【００４９】
ステップ１４０では、突然変異操作が実行される。自然の生物学系の場合と同様、突然変異は比較的（交差と比較して）僅かな割合で発生する。アルゴリズム１００では、突然変異の割合は突然変異の確率のパラメータにより制御される。各母集団員を突然変異させるかどうかを決定するために、乱数が生成され突然変異の確率と比較される。任意の母集団員のために生成された乱数が突然変異の確率より小さい場合、その任意の母集団員は突然変異を指定される。突然変異を実施する際、母集団員の要素がランダムに選択され、ステップ１０２で読み込まれた演算子及び演算数からランダムに選択された演算数又は演算子と交換される。
【００５０】
ステップ１４２では、回転操作が実行される。各母集団員（配列）を回転させるかどうかを決定するために、乱数が生成され回転の確率と比較される。任意の母集団員のために生成された乱数が回転の確率より小さい場合、その任意の母集団員は回転を指定される。回転を実施する際、指定された母集団員の配列の位置がランダムに選択され、選択された位置のコドンを配列の先頭の位置へと運ぶために配列は円状に左へと移動される。
【００５１】
ステップ１４２に続いて、アルゴリズムはステップブロック１０６に折り返し、交差及び突然変異により生成された新しい母集団員の構文を検査する処理を開始する。その後、アルゴリズムは、連続する世代を進化させ続ける上述の連続するステップを、適応度の高い母集団員が発見されるまで、又は世代が限界に達するまで繰り返す。
【００５２】
最初の母集団の世代１０４に固有のランダムさである交差１３８及び突然変異１４０の操作により、無効な構文を有する数式の表現を有する母集団員がもたらされる恐れがある。このような無効な母集団員は、解の候補には間違いなく不適であり、実行エラーを招く恐れがある。従って上述したように、ステップ１０８、１１２（図１）に関連して、新しい母集団員各々の構文が検査される。図４は、本発明の好適な実施形態に係る、数式の表現の構文の妥当性を検査する構文検査アルゴリズム４００のフローチャートである。図４は図１に示されているステップ１０８の望ましい形態である。図４を参照すると、第１のブロック４０２では、必要な長さの変数が値１に初期化される。次のブロック４０４は、母集団員配列の次の要素を検討するループの上端である。本発明の好適な実施形態によると、配列は、各配列要素が演算数又は演算子を参照する図６に示されている形をとる。第２のブロック４０４で開始されるループのループカウンタは、検討中の母集団員（配列）の次の要素を指すポインタとして使用される。配列の要素は１からＮまでラベル付けされる。ステップ４０６では、必要な長さの変数が、ループカウンタの現在値により指し示された要素のタイプに基づいて要求される追加要素の数だけ増加される。表Ｉ及び表ＩＩの第２の列は、各演算数及び各演算子のタイプを整数に指定する。タイプの数は各演算数又は各演算子に必要な追加の要素の数を示す。例えば、加算及び乗算の演算子はタイプ２であり、２つの演算数を必要とする。サイン（ＳＩＮ）演算子はタイプ１であり、単一の演算数のみを必要とする。定数及び変数はタイプ０である。実例として、例えば、ループカウンタが、索引の１４からなる配列６００（図６）の１番目の要素を指し示した場合、１
４は表Ｉの第１の列で検索され発見されてＳＱＲＴ演算子を参照し、表Ｉの第２の列からタイプ１であることが発見される。従って必要な長さは１（初期値）から２へ増加する。ループの次の反復では、構文検査アルゴリズムはプラス演算子を表す索引２を読み取り、必要な長さの変数はそれに応じて２だけ増加され値４になる。ＧＥＰアルゴリズム１００のオブジェクト指向の実施においては、タイプの情報が前掲のコドンクラスのインスタンス変数として格納されていることが望ましい。
【００５３】
ステップ４０８では、ブロック４０６で設定された必要な長さが、最大の遺伝子長さ（図３及び図６にＫで示されている最大の配列長さ）と比較される。ステップ４０８で必要な長さが最大の遺伝子長さを越えていることが発見された場合、ステップ４１０で無効遺伝子メッセージが出力される（例えば、アルゴリズム１００に報告される）。
【００５４】
ブロック４１２では、ループカウンタの現在値（図６の配列６００の要素を指し示している）が必要な長さの変数に等しいかが決定される。ループカウンタが必要な長さの変数に等しいことは、検査されている母集団員配列に含まれる演算子に指定された演算を完了するために十分な演算数があり、有効な構文の数式が配列に符号化されることを意味する。必要な長さの変数がループカウンタに等しいことで、検査されている配列に含まれる遺伝子の終端に達したことが示される。遺伝子は、有効な構文の数式の表現の各配列の部分である。たいてい、有効な構文の数式を表現するために必要な長さは母集団員配列の全長を下回る。しかし、後続の世代で交差や突然変異により任意の未使用の配列要素が活動状態になる場合がある。ループカウンタの現在値が必要な長さの変数に等しい場合、有効遺伝子メッセージが出力される（例えば、アルゴリズム１００に報告される）。等しくない場合、アルゴリズム４００はステップ４０４に折り返し、ステップ４０４ではループカウンタの索引が増加され、その後、遺伝子（配列）の次の要素が検討される。
【００５５】
構文検査アルゴリズム４００を用いることで、配列表現の数式に対しランダムな交差操作、突然変異操作、回転操作が可能になり、同時に、無効な構文を有するプログラムを生成し実行を試みるコンピュータ使用時間の無駄が省かれる。
【００５６】
構文検査操作は配列表現（例えば、図６の６００）の母集団員を操作可能であり有利である。従って、構文の妥当性を検査するために母集団員からプログラムを生成する必要は無く、その結果として、コンピュータ資源が節約され、構文検査４００及び主要アルゴリズム１００の実行時間が短縮される。
【００５７】
本発明は図中のフローチャートを参照して説明されたが、当業者には、本発明の精神から逸脱することなく異なるプログラムのフローが使用可能なことが分かる。
図１０は、本発明の好適な実施形態に係る図１，２，４に示されているアルゴリズムを実行するために使用されるコンピュータ１０００のブロック図である。コンピュータ１０００には、マイクロプロセッサ１００２、ランダムアクセスメモリ（ＲＡＭ）１００４、読出し専用メモリ（ＲＯＭ）１００６、ハードディスクドライブ１００８、ビデオカードなどのディスプレイアダプタ１０１０、取り外し可能なコンピュータ可読媒体読取り装置１０１４、ネットワークアダプタ１０１６、キーボード、デジタル信号バス１０２６を介して通信的に結合されているＩ／Ｏポート１０２０などがある。ビデオ信号を受信するためにビデオモニタ１０１２がディスプレイアダプタ１０１０に電気的に結合されている。ポインティングデバイス１０２２は、マウスであることが望ましく、ポインティングデバイス１０２２のユーザの操作により生成された電気信号を受信するために、Ｉ／Ｏポート１０２０に電気的に結合されている。本発明のある実施形態によれば、コンピュータをリモートサーバなどのデータの外部ソースに通信的に結合するために、ネットワークアダプタ１０１６が使用される。コンピュータ可読媒体読取り装置１０１４はコンパクトディスク（ＣＤ）ドライブを備えていることが望ましい。図１，２，４を参照して上述したアル
ゴリズムを具体化するソフトウェアを含むコンピュータ可読媒体１０２４が備えられる。コンピュータ可読媒体に含まれるソフトウェアは、フローチャートを参照して上述された本発明の処理を実行するコンピュータ１０００を構成するために取り外し可能なコンピュータ可読媒体読取り装置１０１４を介してロードされる。コンピュータ１０００には、例えば、パーソナルコンピュータやワークステーションコンピュータなどがある。
【００５８】
当業者には分かるように、本発明は、ハードウェアでもソフトウェアでもこれらの組み合わせでも実施できる。本発明や本発明の一部を具体化するプログラムが、様々なタイプのコンピュータ可読媒体に格納でき、この媒体には、光ディスク、ハードディスクドライブ、テープ、プログラマブル読出し専用メモリチップなどがある。ネットワーク回路は、本発明で教示されたプログラムが読み取られるコンピュータ可読媒体として一時的に働くこともできる。  本発明の望ましい実施形態及び他の実施形態を図示および説明したが、本発明がそのようなものに限定されるわけではないことが分かるであろう。当業者には、以下の請求項により定義されている本発明の精神及び範囲から逸脱しない修正物、変更物、変形物、代替物、同等物を多数想定できるであろう。
【図面の簡単な説明】
【００５９】
【図１】本発明の好適な実施形態に係る、数式の表現を有する母集団を進化させるアルゴリズムのフローチャートの第１の部分。
【図２】図１で開始するフローチャートの第２の部分。
【図３】図１及び図２に示されている方法により進化された数式の表現を有する母集団を格納するために使用される行列。
【図４】本発明の好適な実施形態に係る、数式の表現の構文の妥当性を検査するアルゴリズムのフローチャート。
【図５】数式の表現を含む演算子及び演算数の配列。
【図６】図５に示されている配列を表現する索引の配列。
【図７】図１に示されている方法により決定される仮説的な数式。
【図８】素数を基礎とした定数を含む図７に示されている数式の近似式。
【図９】図８に示される式を表現している樹形図。
【図１０】本発明の好適な実施形態に係る、図１，２，４に示されているアルゴリズムを実行するために使用されるコンピュータのブロック図。
【図１】
2005521158.tif 000011
【図２】
2005521158.tif 000012
【図３】
2005521158.tif 000013
【図４】
2005521158.tif 000014
【図５】
2005521158.tif 000015
【図６】
2005521158.tif 000016
【図７】
2005521158.tif 000017
【図８】
2005521158.tif 000018
【図９】
2005521158.tif 000019
【図１０】
2005521158.tif 000020
【国際調査報告】
2005521158.tif 000021
2005521158.tif 000022
2005521158.tif 000023