(57)【要約】【課題】  遺伝的プログラミングにより進化計算を行なう進化計算システムに係り、交叉処理や突然変異処理などの生殖の自由度を高め、更に個体構造と数値の同時最適化を行なうことを課題とする。【解決手段】  遺伝子に対する連結数を定義する遺伝子テーブルを設け、遺伝子間の連結関係を記述する表現型個体構造情報を生成する際に、連結数を満たすように連結先のノードとなる遺伝子を特定し、矛盾無く表現型を構成する。また、遺伝子で特定されるファンクションに用いるパラメータを遺伝子情報に付加し、遺伝子とパラメータを同時に操作する。更に、遺伝子情報にノード種別を付加し、終端と非終端を操作し、部分木構造をダイナミックに変化させる。マトリクス型の個体構造を採用し、生殖処理でブロックの交叉や突然変異の操作を行なう。【選択図】        図４７
2007087055.tif 000002
【特許請求の範囲】
【請求項１】
ファンクションを識別する遺伝子を含む遺伝子情報が連続する遺伝子型個体構造情報を用いて進化計算を行なう進化計算システムであって、以下の要素を有することを特徴とする進化計算システム
（１）同一世代に係る個体集団の要素である各個体の遺伝子型個体構造情報を記憶する個体集団記憶部
（２）遺伝子に対応付けて、当該遺伝子により特定されるファンクションが入力するデータの数を連結数として定義する遺伝子テーブル
（３）遺伝子型個体構造情報に含まれる遺伝子を順次読込み、当該遺伝子の連結数を遺伝子テーブルから取得し、連結数を満たすように連結先のノードとなる遺伝子を特定し、遺伝子間の連結関係を記述する表現型個体構造情報を生成し、学習用入力データを入力して、表現型個体構造情報によって特定される遺伝子の連結関係に従って、各遺伝子により特定されるファンクションによる演算を順次実行して個体演算出力データを求め、個体演算出力データを学習用目標データと比較して、個体毎の適応度を計算する適応度計算部
（４）適応度に基づいて、個体集団から個体を選択する個体選択部
（５）選択した個体の遺伝子型個体構造情報に対して、複数の個体間で一部の情報を交換する交叉処理、あるいは一部の情報を変化させる突然変異処理を行い、次世代の個体集団の要素となる各個体の遺伝子型個体構造情報を求め、個体集団記憶部に記憶させる生殖部。
【請求項２】
遺伝子型個体構造情報の遺伝子情報は、更に当該遺伝子に付加されたパラメータを含み、
適応度計算部は、遺伝子により特定されるファンクションによる演算を実行する際に、当該遺伝子に付加されているパラメータを用いて演算を実行することを特徴とする請求項１記載の進化計算システム。
【請求項３】
遺伝子型個体構造情報の遺伝子情報は、更に当該遺伝子が連結関係を構成するノードとなる際に終端ノードとなるか非終端ノードとなるかの別を示すノード種別を含み、
適応度計算部は、遺伝子間の連結関係を記述する表現型個体構造情報を生成する際に、遺伝子のノード種別が終端ノードの別を示す場合には、当該遺伝子の連結数を０とすることを特徴とする請求項１記載の進化計算システム。
【請求項４】
遺伝子型個体構造情報の遺伝子情報は、少なくとも遺伝子と、当該遺伝子に付加されたパラメータと、当該遺伝子が連結関係を構成するノードとなる際に終端ノードとなるか非終端ノードとなるかの別を示すノード種別の項目を含むレコードであり、遺伝子型個体構造情報は、レコードと項目からなるマトリクスを構成するマトリクス型個体構造情報であって、
生殖部は、マトリクスの一部として複数のレコードに跨るブロックを交換する交叉処理、あるいはマトリクスの一部として複数のレコードに跨るブロックを変化させる突然変異処理を行うことを特徴とする請求項１記載の進化計算システム。
【請求項５】
遺伝子型個体構造情報の遺伝子情報は、少なくとも遺伝子を示すビット構成と、当該遺伝子に付加されたパラメータを示すビット構成と、当該遺伝子が連結関係を構成するノードとなる際に終端ノードとなるか非終端ノードとなるかの別を示すノード種別を示すビット構成を含むレコードであり、遺伝子型個体構造情報は、レコードとビットからなるマトリクスを構成するマトリクス型個体構造情報であって、
生殖部は、マトリクスの一部として複数のレコードに跨るブロックを交換する交叉処理、あるいはマトリクスの一部として複数のレコードに跨るブロックを変化させる突然変異処理を行うことを特徴とする請求項１記載の進化計算システム。
【請求項６】
同一世代に係る個体集団の要素である各個体について、ファンクションを識別する遺伝子を含む遺伝子情報が連続する遺伝子型個体構造情報を記憶する個体集団記憶部と、遺伝子に対応付けて、当該遺伝子により特定されるファンクションが入力するデータの数を連結数として定義する遺伝子テーブルを有し、遺伝子型個体構造情報を用いて進化計算を行な進化計算システムによる進化計算方法であって、以下の要素を有することを特徴とする進化計算方法
（１）遺伝子型個体構造情報に含まれる遺伝子を順次読込み、当該遺伝子の連結数を遺伝子テーブルから取得し、連結数を満たすように連結先のノードとなる遺伝子を特定し、遺伝子間の連結関係を記述する表現型個体構造情報を生成し、学習用入力データを入力して、表現型個体構造情報によって特定される遺伝子の連結関係に従って、各遺伝子により特定されるファンクションによる演算を順次実行して個体演算出力データを求め、個体演算出力データを学習用目標データと比較して、個体毎の適応度を計算する適応度計算工程
（２）適応度に基づいて、個体集団から個体を選択する個体選択工程
（３）選択した個体の遺伝子型個体構造情報に対して、複数の個体間で一部の情報を交換する交叉処理、あるいは一部の情報を変化させる突然変異処理を行い、次世代の個体集団の要素となる各個体の遺伝子型個体構造情報を求め、個体集団記憶部に記憶させる生殖工程。
【請求項７】
同一世代に係る個体集団の要素である各個体について、ファンクションを識別する遺伝子を含む遺伝子情報が連続する遺伝子型個体構造情報を記憶する個体集団記憶部と、遺伝子に対応付けて、当該遺伝子により特定されるファンクションが入力するデータの数を連結数として定義する遺伝子テーブルを有し、遺伝子型個体構造情報を用いて進化計算を行な進化計算システムとなるコンピュータに、以下の処理を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
（１）遺伝子型個体構造情報に含まれる遺伝子を順次読込み、当該遺伝子の連結数を遺伝子テーブルから取得し、連結数を満たすように連結先のノードとなる遺伝子を特定し、遺伝子間の連結関係を記述する表現型個体構造情報を生成し、学習用入力データを入力して、表現型個体構造情報によって特定される遺伝子の連結関係に従って、各遺伝子により特定されるファンクションによる演算を順次実行して個体演算出力データを求め、個体演算出力データを学習用目標データと比較して、個体毎の適応度を計算する適応度計算処理
（２）適応度に基づいて、個体集団から個体を選択する個体選択処理
（３）選択した個体の遺伝子型個体構造情報に対して、複数の個体間で一部の情報を交換する交叉処理、あるいは一部の情報を変化させる突然変異処理を行い、次世代の個体集団の要素となる各個体の遺伝子型個体構造情報を求め、個体集団記憶部に記憶させる生殖処理。
【請求項８】
同一世代に係る個体集団の要素である各個体について、ファンクションを識別する遺伝子を含む遺伝子情報が連続する遺伝子型個体構造情報を記憶する個体集団記憶部と、遺伝子に対応付けて、当該遺伝子により特定されるファンクションが入力するデータの数を連結数として定義する遺伝子テーブルを有し、遺伝子型個体構造情報を用いて進化計算を行な進化計算システムとなるコンピュータに、以下の手順を実行させるためのプログラム
（１）遺伝子型個体構造情報に含まれる遺伝子を順次読込み、当該遺伝子の連結数を遺伝子テーブルから取得し、連結数を満たすように連結先のノードとなる遺伝子を特定し、遺伝子間の連結関係を記述する表現型個体構造情報を生成し、学習用入力データを入力して、表現型個体構造情報によって特定される遺伝子の連結関係に従って、各遺伝子により特定されるファンクションによる演算を順次実行して個体演算出力データを求め、個体演算出力データを学習用目標データと比較して、個体毎の適応度を計算する適応度計算手順
（２）適応度に基づいて、個体集団から個体を選択する個体選択手順
（３）選択した個体の遺伝子型個体構造情報に対して、複数の個体間で一部の情報を交換する交叉処理、あるいは一部の情報を変化させる突然変異処理を行い、次世代の個体集団の要素となる各個体の遺伝子型個体構造情報を求め、個体集団記憶部に記憶させる生殖手順。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、遺伝的プログラミングにより進化計算を行なう進化計算システムに係り、遺伝的プログラミングにおける生殖の自由度を高め、更に個体構造と数値の同時最適化を行なう技術に関する。
【背景技術】
【０００２】
進化計算法とは、生物の進化から着想した最適化（探索）アルゴリズムである。進化論的な発想に基づいてデータを操作し、解空間を探索する多点探索法の一種とも言える。その代表的な手法として、遺伝的アルゴリズムと遺伝的プログラミングがある。
【０００３】
遺伝的アルゴリズムは、一般的に個体を０あるいは１を示すビットの一次元の列（染色体）として定義する。そして、生殖として、一点交叉、多点交叉、一様交叉などにより、２つの個体間で染色体の部位を交換する交叉処理、あるいは染色体の一部をランダムに変化させる突然変異処理を行う。
【０００４】
遺伝的プログラミングは、遺伝的アルゴリズムを発展させたものであって、個体をグラフ構造や木構造のように構造的に表現する。例えば、（Ａ（Ｂ）（Ｃ（Ｄ）））のように記述するＬｉｓｐのＳ式などにより木構造を表現する。このように、一次元の文字列として記述するので、交叉処理によって新たな式を生成することができる。しかし、実際には構造として成り立たない致死遺伝子が含まれる恐れがある。突然変異処理についても無作為に文字列を書き換えることはできないという問題点がある。つまり、遺伝的プログラミングでは、生殖における任意性が低く、個体の多様性が確保できていない面がある。この点を改善すれば、構造的に表現された個体に係る探索効率を向上させることができる。
【０００５】
また、従来の進化計算法には、構造と数値の同時最適化ができないという問題点がある。遺伝的アルゴリズムは、染色体としてビットから構成される記号列を用いるため、数値の最適化には適しているが、構造の最適化には向いていない。一方、遺伝的プログラミングは、構造的表現により複雑な問題を解決できるようにした反面、ノードに対するパラメータの設定など、数値の最適化は図られていない。
【非特許文献１】佐藤浩、小野功、小林重信，「遺伝的アルゴリズムにおける世代交代モデルの提案と評価」，人工知能学会誌，人工知能学会誌１９９７年，ｖｏｌ．１２，Ｎｏ．５，ｐ．７３４−７４４
【非特許文献２】伊庭斉志、佐藤泰介，「システム同定アプローチに基づく遺伝的プログラミング」，人工知能学会誌，人工知能学会，１９９５年，ｖｏｌ．１０，Ｎｏ．４，ｐ．１００−１１０
【非特許文献３】青木紳也、長尾智晴，「木構造状画像変換の自動構築法ＡＣＴＩＴ」，映像情報メディア学会誌，映像情報メディア学会，１９９９年，ｖｏｌ．５３，Ｎｏ．６，ｐ．８８８−８９４
【発明の開示】
【発明が解決しようとする課題】
【０００６】
そこで、本発明は上述の問題点を解決し、遺伝的プログラミングにおける生殖の任意性を高め、更に個体の構造とノードで使用する数値の同時最適化を図ることを課題とする。
【課題を解決するための手段】
【０００７】
本発明に係る進化計算システムは、
ファンクションを識別する遺伝子を含む遺伝子情報が連続する遺伝子型個体構造情報を用いて進化計算を行なう進化計算システムであって、以下の要素を有することを特徴とする
（１）同一世代に係る個体集団の要素である各個体の遺伝子型個体構造情報を記憶する個体集団記憶部
（２）遺伝子に対応付けて、当該遺伝子により特定されるファンクションが入力するデータの数を連結数として定義する遺伝子テーブル
（３）遺伝子型個体構造情報に含まれる遺伝子を順次読込み、当該遺伝子の連結数を遺伝子テーブルから取得し、連結数を満たすように連結先のノードとなる遺伝子を特定し、遺伝子間の連結関係を記述する表現型個体構造情報を生成し、学習用入力データを入力して、表現型個体構造情報によって特定される遺伝子の連結関係に従って、各遺伝子により特定されるファンクションによる演算を順次実行して個体演算出力データを求め、個体演算出力データを学習用目標データと比較して、個体毎の適応度を計算する適応度計算部
（４）適応度に基づいて、個体集団から個体を選択する個体選択部
（５）選択した個体の遺伝子型個体構造情報に対して、複数の個体間で一部の情報を交換する交叉処理、あるいは一部の情報を変化させる突然変異処理を行い、次世代の個体集団の要素となる各個体の遺伝子型個体構造情報を求め、個体集団記憶部に記憶させる生殖部。
【０００８】
また、遺伝子型個体構造情報の遺伝子情報は、更に当該遺伝子に付加されたパラメータを含み、
適応度計算部は、遺伝子により特定されるファンクションによる演算を実行する際に、当該遺伝子に付加されているパラメータを用いて演算を実行することを特徴とする。
【０００９】
また、遺伝子型個体構造情報の遺伝子情報は、更に当該遺伝子が連結関係を構成するノードとなる際に終端ノードとなるか非終端ノードとなるかの別を示すノード種別を含み、
適応度計算部は、遺伝子間の連結関係を記述する表現型個体構造情報を生成する際に、遺伝子のノード種別が終端ノードの別を示す場合には、当該遺伝子の連結数を０とすることを特徴とする。
【００１０】
また、遺伝子型個体構造情報の遺伝子情報は、少なくとも遺伝子と、当該遺伝子に付加されたパラメータと、当該遺伝子が連結関係を構成するノードとなる際に終端ノードとなるか非終端ノードとなるかの別を示すノード種別の項目を含むレコードであり、遺伝子型個体構造情報は、レコードと項目からなるマトリクスを構成するマトリクス型個体構造情報であって、
生殖部は、マトリクスの一部として複数のレコードに跨るブロックを交換する交叉処理、あるいはマトリクスの一部として複数のレコードに跨るブロックを変化させる突然変異処理を行うことを特徴とする。
【００１１】
また、遺伝子型個体構造情報の遺伝子情報は、少なくとも遺伝子を示すビット構成と、当該遺伝子に付加されたパラメータを示すビット構成と、当該遺伝子が連結関係を構成するノードとなる際に終端ノードとなるか非終端ノードとなるかの別を示すノード種別を示すビット構成を含むレコードであり、遺伝子型個体構造情報は、レコードとビットからなるマトリクスを構成するマトリクス型個体構造情報であって、
生殖部は、マトリクスの一部として複数のレコードに跨るブロックを交換する交叉処理、あるいはマトリクスの一部として複数のレコードに跨るブロックを変化させる突然変異処理を行うことを特徴とする。
【００１２】
本発明に係る進化計算方法は、
同一世代に係る個体集団の要素である各個体について、ファンクションを識別する遺伝子を含む遺伝子情報が連続する遺伝子型個体構造情報を記憶する個体集団記憶部と、遺伝子に対応付けて、当該遺伝子により特定されるファンクションが入力するデータの数を連結数として定義する遺伝子テーブルを有し、遺伝子型個体構造情報を用いて進化計算を行な進化計算システムによる進化計算方法であって、以下の要素を有することを特徴とする
（１）遺伝子型個体構造情報に含まれる遺伝子を順次読込み、当該遺伝子の連結数を遺伝子テーブルから取得し、連結数を満たすように連結先のノードとなる遺伝子を特定し、遺伝子間の連結関係を記述する表現型個体構造情報を生成し、学習用入力データを入力して、表現型個体構造情報によって特定される遺伝子の連結関係に従って、各遺伝子により特定されるファンクションによる演算を順次実行して個体演算出力データを求め、個体演算出力データを学習用目標データと比較して、個体毎の適応度を計算する適応度計算工程
（２）適応度に基づいて、個体集団から個体を選択する個体選択工程
（３）選択した個体の遺伝子型個体構造情報に対して、複数の個体間で一部の情報を交換する交叉処理、あるいは一部の情報を変化させる突然変異処理を行い、次世代の個体集団の要素となる各個体の遺伝子型個体構造情報を求め、個体集団記憶部に記憶させる生殖工程。
【００１３】
本発明に係るコンピュータ読み取り可能な記録媒体は、
同一世代に係る個体集団の要素である各個体について、ファンクションを識別する遺伝子を含む遺伝子情報が連続する遺伝子型個体構造情報を記憶する個体集団記憶部と、遺伝子に対応付けて、当該遺伝子により特定されるファンクションが入力するデータの数を連結数として定義する遺伝子テーブルを有し、遺伝子型個体構造情報を用いて進化計算を行な進化計算システムとなるコンピュータに、以下の処理を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であることを特徴とする
（１）遺伝子型個体構造情報に含まれる遺伝子を順次読込み、当該遺伝子の連結数を遺伝子テーブルから取得し、連結数を満たすように連結先のノードとなる遺伝子を特定し、遺伝子間の連結関係を記述する表現型個体構造情報を生成し、学習用入力データを入力して、表現型個体構造情報によって特定される遺伝子の連結関係に従って、各遺伝子により特定されるファンクションによる演算を順次実行して個体演算出力データを求め、個体演算出力データを学習用目標データと比較して、個体毎の適応度を計算する適応度計算処理
（２）適応度に基づいて、個体集団から個体を選択する個体選択処理
（３）選択した個体の遺伝子型個体構造情報に対して、複数の個体間で一部の情報を交換する交叉処理、あるいは一部の情報を変化させる突然変異処理を行い、次世代の個体集団の要素となる各個体の遺伝子型個体構造情報を求め、個体集団記憶部に記憶させる生殖処理。
【００１４】
本発明に係るプログラムは、
同一世代に係る個体集団の要素である各個体について、ファンクションを識別する遺伝子を含む遺伝子情報が連続する遺伝子型個体構造情報を記憶する個体集団記憶部と、遺伝子に対応付けて、当該遺伝子により特定されるファンクションが入力するデータの数を連結数として定義する遺伝子テーブルを有し、遺伝子型個体構造情報を用いて進化計算を行な進化計算システムとなるコンピュータに、以下の手順を実行させるためのプログラムであることを特徴とする
（１）遺伝子型個体構造情報に含まれる遺伝子を順次読込み、当該遺伝子の連結数を遺伝子テーブルから取得し、連結数を満たすように連結先のノードとなる遺伝子を特定し、遺伝子間の連結関係を記述する表現型個体構造情報を生成し、学習用入力データを入力して、表現型個体構造情報によって特定される遺伝子の連結関係に従って、各遺伝子により特定されるファンクションによる演算を順次実行して個体演算出力データを求め、個体演算出力データを学習用目標データと比較して、個体毎の適応度を計算する適応度計算手順
（２）適応度に基づいて、個体集団から個体を選択する個体選択手順
（３）選択した個体の遺伝子型個体構造情報に対して、複数の個体間で一部の情報を交換する交叉処理、あるいは一部の情報を変化させる突然変異処理を行い、次世代の個体集団の要素となる各個体の遺伝子型個体構造情報を求め、個体集団記憶部に記憶させる生殖手順。
【発明の効果】
【００１５】
本発明によれば、遺伝子間の連結関係を記述する表現型個体構造情報を生成する際に、連結数を満たすように連結先のノードとなる遺伝子を特定するので、表現型としての構造的な矛盾が生じない。従って、生殖における任意性が向上し、個体の多様性が発揮される。特に、中位層のパーツ構造（部分木）を交換できる点で、従来の遺伝的プログラミングよりも優れている。
【００１６】
遺伝子情報にファンクションで用いるパラメータを付加しているので、生殖において構造と数値を同時に操作し、両者の同時最適化を図ることができる。
【００１７】
遺伝子情報にノード種別を付加し、終端と非終端を操作することによって、遺伝子の構造的なパーツをダイナミックに変化させることができる。このパーツが機能モジュールの役割を果たし、生殖処理によって高いレベルの機能に対する構造的な操作が行なわれることが期待される。
【００１８】
マトリクス型の個体構造を採用し、生殖処理でブロックの操作を行なうので、表現型に対して従来無かった変化をもたらすことができる。
【発明を実施するための最良の形態】
【００１９】
実施の形態１．
図１は、進化計算システムの構成を示す図である。進化計算システムは、初期個体入力部１０１、個体集団記憶部１０２、適応度計算部１０３、遺伝子テーブル１０４、適応度記憶部１０５、個体選択部１０６、選択個体記憶部１０７、生殖部１０８、及び学習個体出力部１０９を有している。個体集団記憶部１０２は、同一世代に係る個体集団の要素である各個体の遺伝子型個体構造情報を記憶するように構成されている。
【００２０】
遺伝子テーブル１０４の構成について説明する。図２は、遺伝子テーブルの例を示す図である。このテーブルは、遺伝子と当該遺伝子の連結数を対応付けて記憶し、これらの関係を定義している。遺伝子は、演算を行なうファンクションを識別する識別子である。連結数は、遺伝子により特定されるファンクションに入力するデータ数を示している。例えば、演算として画像処理を行なう場合には、遺伝子によって画像処理フィルタを特定する。また、入力する画像データが１つで、出力する画像データ数が１つである「１入力１出力フィルタ」の例として、平均値フィルタ、最大値フィルタ、最小値フィルタ、反転フィルタなどがあり、これらは連結数が１と定義される。入力する画像データが２つで、出力する画像データ数が１つである「２入力１出力フィルタ」の例として、論理和フィルタ、論理積フィルタ、差別フィルタなどがあり、これらは連結数が２と定義される。
【００２１】
尚、この例では、連結数０の遺伝子は、終端ノードとして用いられる終端用遺伝子であり、連結数１または２の遺伝子は、非終端ノードとして用いられる非終端用遺伝子である。終端ノードとは、初期入力値である学習用データを直接入力するノードであり、非終端ノードとは、他のノードの出力データを入力するノードのことである。非終端ノードは、最終出力値である個体演算出力データを出力するルートノードにも用いられる。この例では、同じ演算を行なう場合でも、終端用と非終端用を遺伝子として区別している。つまり、前述の「１入力１出力フィルタ」の例としてあげた平均値フィルタを終端に用いる場合の遺伝子と、非終端に用いる場合の遺伝子を、別個に設定している。「１入力１出力フィルタ」を終端に用いる遺伝子では、初期入力値である学習用入力データを当該フィルタに入力する。「２入力１出力フィルタ」を終端に用いる遺伝子では、初期入力値である学習用入力データを両方の入力データとして用いて当該フィルタを実行する。あるいは、一方の入力データとして学習用入力データを用いて、他の入力データとして所定データ（全画素が最大値の画像データ、全画素が最小値の画像データ、全画素が平均値の画像データなど）を用いて当該フィルタを実行する。
【００２２】
以下、進化計算システムによる進化計算アルゴリズムによる学習処理について説明する。図３は、進化計算アルゴリズムによる学習処理のフローを示す図である。まず、初期個体入力部１０１による初期個体入力処理（Ｓ３０１）を行なう。この処理では、初期の個体集団を入力し、個体集団記憶部１０２に記憶させる。つまり、集団を構成する要素数の分、個体の構造を特定する個体構造情報（以下、個体構造という。）を入力して、それらに個体識別情報（以下、個体ＩＤという。）を対応付けて、個体集団記憶部１０２に記憶させる。
【００２３】
ここで、本実施の形態で入力される遺伝子型個体構造について説明する。図４は、個体イの遺伝子型個体構造を示す図である。ノードＮｏの昇順に、当該ノードを構成する遺伝子を列として記憶している。この形態では、遺伝子情報は遺伝子のみから構成されているが、遺伝子型個体構造は、少なくとも遺伝子を含む遺伝子情報が連続する構成となっている。後述する形態では、遺伝子情報に他の情報が付加される。
【００２４】
次に、適応度計算部１０３による適応度計算処理（Ｓ３０２）を行なう。この処理では、個体集団記憶部１０２に記憶している各個体の適応度を計算する。適応度とは、初期入力値である学習用データを入力して、個体の構造により特定される演算手順に従って演算した結果である個体演算出力データが、最終的に目標とする学習用目標データに近似する程度を示す情報である。適応度は、個体ＩＤと対応付けて適応度記憶部１０５に記憶される。この適応度計算処理（Ｓ３０２）の詳細については後述する。
【００２５】
次に、個体選択部１０６による個体選択処理（Ｓ３０３）を行なう。この処理では、各個体の適応度に基づいて、生殖処理に対象とする個体を所定の選択数分だけ選択する。例えば、適応度が大きい順に、選択数の個体を選択する。あるいは、選択数を、適応度の高い層の高適応個体選択数と、適応度の低い層の低適応個体選択数に分け、それぞれ、適応度の高い順に、高適応個体選択数の個体を選択し、更に適応度の低い順に、低適応個体選択数の個体を選択するように、適応度を層別し、各層からそれぞれの所定数分を選別するようにしてもよい。他にも、適応度に比例した確率で個体を選択するルーレット選択方法、適応度の順位に従って選択回数を決定するランク選択方法、個体集団からトーナメントサイズとして既定された数の個体をランダムに選択し、その中の最大適応度の個体をトーナメントの勝者として選択するトーナメント選択方法などもある。このようにして、選択された個体群のＩＤを、選択個体記憶部１０７に記憶させる。
【００２６】
次に、生殖部１０８による生殖処理（Ｓ３０４）を行なう。この処理では、選択された個体群から取り出した個体に対して、世代交代に係る構成の操作を施す。この例では、２つの個体間で遺伝子列の一部を交換する交叉処理、遺伝子列の一部を変化させる突然変異処理、現在の固体構造を維持したまま存続させる延命処理を行なう。これらの処理により、所定次世代個体数の個体からなる次世代個体集団を生成し、それぞれ個体ＩＤと対応付けて個体構造を個体集団記憶部１０２に記憶させる。この生殖処理（Ｓ３０４）の詳細については、後述する。
【００２７】
そして、これらの世代交代処理（Ｓ３０２からＳ３０４）を繰り返し、世代交代終了判定部（図示せず）により世代交代終了判定処理（Ｓ３０５）により、継続と判定されると世代交代処理をループし、終了と判定されると世代交代処理のループを終了し、後処理に移行する。世代交代の終了は、例えば、世代数で判定する。世代交代処理の回数をカウントし、当該回数が所定の世代数に満たない場合は、継続と判定し、世代数に達した場合に、終了と判定する。あるいは、適応度が終了条件を満たした場合に、終了と判定することもできる。例えば、目標適応度と目標個体数を終了条件として設定し、目標適応度に達した個体数をカウントし、その数が目標個体数に達しない場合に継続と判定し、目標個体数に達した場合に終了と判定する。あるいは、世代交代処理の制限時間を設け、世代交代処理のループの間の処理時間を計測し、処理時間が制限時間に達しない場合に継続と判定し、制限時間に達した場合に終了と判定する。
【００２８】
後処理として、前述と同様に、最終世代の個体集団について適応度計算部１０３による適応度計算処理（Ｓ３０６）を行ない、学習個体出力部１０９による学習個体出力処理（Ｓ３０７）を行なう。学習個体出力処理では、最終世代の個体集団に含まれる各個体の個体構造と、当該個体の適応度を対応付けて出力する。つまり、個体集団記憶部１０２に記憶している個体ＩＤ毎に、当該ＩＤに対応する個体構造を取り出し、また当該ＩＤと対応付けられている適応度を適応度記憶部１０５から取り出し、取り出した個体構造と適応度を対応付けて、学習個体情報として出力する。その際、適応度をキーとして個体情報群をソートし、そのソート結果を出力することも有効である。
【００２９】
以下、適応度計算処理（Ｓ３０２）と生殖処理（Ｓ３０４）について順に詳述する。
【００３０】
まず、図３に示した適応度計算処理（Ｓ３０２）について説明する。図５は、適応度計算部の構成を示す図である。適応度計算部１０３は、型変換部５０１、個体演算部５０２、及びデータ比較部５０３を有している。
【００３１】
図６は、適応度計算処理のフローを示す図である。個体集団記憶部１０２に記憶しているすべての個体に対して、型変換処理（Ｓ６０２）、個体演算処理（Ｓ６０３）、データ比較処理（Ｓ６０４）を行なう。型変換部５０１による型変換処理（Ｓ６０２）では、遺伝子型個体構造を表現型の個体構造情報（以下、表現型個体構造という。）に変換する。表現型個体構造は、遺伝子間の連結関係を記述する構成となっている。個体演算部５０２による個体演算処理（Ｓ６０３）では、初期入力値である学習用入力データを入力して、表現型個体構造により特定される演算手順に従って一連の演算を行い、個体演算出力データを得る。例えば、画像処理を行なう場合には、画像処理対象である元画像データを入力し、順に連結する画像処理フィルタによる処理を施すことにより画像データを加工し、画像処理後の加工画像データを、個体演算出力データとして出力する。データ比較部５０３によるデータ比較処理（Ｓ６０４）では、個体演算出力データと学習用目標データを比較し、所定の基準に従って適応度を算出する。尚、学習用入力データと学習用目標データは、予め学習用データ入力部（図示せず）を介して入力され、学習用データ記憶部（図示せず）に記憶している。
【００３２】
以下、型変換処理（Ｓ６０２）と個体演算処理（Ｓ６０３）とデータ比較処理（Ｓ６０４）について順に詳述する。
【００３３】
まず、図６に示した型変換処理（Ｓ６０２）について説明する。図７は、型変換処理のフローを示す図である。この処理では、図４に示した遺伝子型個体構造を表現型個体構造に変換する。図８は、個体イの表現型個体構造の生成過程を示す図である。表現型個体構造は、ノード毎にレコードを有し、ノードＮｏに対応付けて遺伝子、連結数、第一連結先ノードＮｏ、及び第二連結先ノードＮｏを記憶するように構成される。
【００３４】
図６に示すように、順次ノード毎に以下の処理を繰り返す（Ｓ７０１）。ノードがＮｏ＝１（ルート）の場合には（Ｓ７０２）、Ｓ７０３からＳ７０５を省き、Ｓ７０６に移る。遺伝子型個体構造から、順に遺伝子を読み込み（Ｓ７０６）、遺伝子テーブルから、当該遺伝子の連結数を取得し（Ｓ７０７）、遺伝子と連結数を、表現型個体構造の当該ノードのレコードに書き込む（Ｓ７０８）。更に、当該レコードの連結数分の連結先ノードに、予約コードを書き込む（Ｓ７０９）。個体イの例では、遺伝子「Ｅ」の連結数「２」を遺伝子テーブルから取得し、それぞれ表現型個体構造の第１レコードに設定している。また、連結数が「２」であるので、第一連結先ノードＮｏと第二連結先ノードＮｏに、予約コードを設定している。予約コードは、連結先のノードに遺伝子を設定する必要があることを示している。
【００３５】
遺伝子型個体構造に次の遺伝子があれば（Ｓ７１０）、次のノードについてＳ７０３以下の処理を繰り返す。まず、連結する位置を特定する。その為に、表現型個体構造の各レコード中の連結先ノードの中から、連結対象とする予約コードを特定する（Ｓ７０３）。予約コードが複数有る場合に、いずれの予約コードを特定するかは種々の方法がある。
【００３６】
この例では、第一連結先ノードＮｏの項目を優先し、いずれかのレコードの第一連結先ノードＮｏの項目に予約コードが有る場合には、その予約コードを連結対象とする。いずれのレコードの第一連結先ノードＮｏの項目にも予約コードが無い場合には、第二連結先ノードＮｏにある予約コードのうち、最も下位のレコードの予約コードを選択し、その予約コードを連結対象とする。この例による予約コードの特定方法は、深さ優先の特定方法である。
【００３７】
他に、幅優先の特定方法もある。幅優先の特定方法では、最も上位のレコードの予約コードを選択する。最も上位のレコードに２つの予約コードがある場合には、第一連結先ノードＮｏを選択する。
【００３８】
予約コードが無い場合には、すべてのノードについてデータの入力源が確定しているので、処理を終了する（Ｓ７０４）。
【００３９】
いずれかの予約コードを連結対象として特定した場合には、特定した予約コードを当該ノードのＮｏに書き換える（Ｓ７０５）。これにより、当該ノードが、予約コードを有していたレコードのノードに連結されることになる。図８の例では、第２ノードが第１ノードに連結されている。同様に、第３ノードが第２ノードに連結され、第４ノードが第１ノードに連結されている。これは、第１ノードが第２ノードの出力データと第４ノードの出力データを入力し、第２ノードが第３ノードの出力データを入力することを示している。尚、第３のノードは連結がないので、初期入力値である学習用入力データを直接入力することを示している。
【００４０】
遺伝子型個体構造のすべての遺伝子について処理した場合には、未完成として終了する（Ｓ７１０）。未完成の場合には、例えば、当該個体を以降の処理対象外とするか、あるいは予約コードに所定の終端用ノードを割り当てて強制的に完成させるなどのリカバリー処理を行う。
【００４１】
このようにして、図９に示す個体イの表現型個体構造が得られる。また、個体イの連結関係を図１０に示す。図１０は、個体イの表現型のイメージを示す図である。
【００４２】
次に、図６に示した個体演算処理（Ｓ６０３）について説明する。図１１は、個体演算処理のフローを示す図である。まず、計算するノードを探索する（Ｓ１１０１）。具体的には、いずれかの計算できるノードを選択する。計算できるノードの条件は、当該ノードに入力するデータが確定していることである。連結数が０のノードは、入力するデータが確定しているので、すぐに計算することができる。連結数が１以上のノードは、連結先のすべてのノードからの出力データが得られている場合に、計算することができる。各ノードの出力である演算結果データは、後述するように当該ノードのＩＤと対応付けて、個体演算部内の演算結果記憶部（図示せず）に記憶されるので、各連結先ノードＮｏに対応する演算結果データがすべて演算結果記憶部に記憶されている場合に、当該ノードの計算できると判断する。計算できるノードが複数存在する場合に、いずれのノードを計算の対象とするかは、特に制限されないが、この例では下位のノードを優先して選択する。
【００４３】
次に、計算するノードの遺伝子に対応するファンクション処理部を特定する（Ｓ１１０２）。遺伝子は、演算を行なうファンクションを識別する識別子であるので、その定義に従ってファンクション処理部を決定できる。画像処理の場合には、画像処理フィルタがファンクション処理部に当たる。次に、当該ノードへ入力するデータを特定する（Ｓ１１０３）。連結数が０の終端ノードの場合は、学習用入力データをノードへの入力データとする。終端ノードが、他に所定データ（全画素が最大値の画像データ、全画素が最小値の画像データ、全画素が平均値の画像データなど）も用いる仕様の場合には、これも入力データとする。連結数が１以上の非終端ノードの場合は、各連結先ノードＮｏに対応付けられて演算結果記憶部に記憶している演算結果データが、ノードへの入力データとなる。
【００４４】
そして、特定したデータを入力してファンクション処理部による演算を行い（Ｓ１１０４）、演算結果データを当該ノードのノードＮｏと対応付けて演算結果記憶部に記憶する（Ｓ１１０５）。
【００４５】
上述の処理をすべてのノードについて行い（Ｓ１１０６）、ルート（ノードＮｏ＝１）の演算結果データを、個体演算出力データとする（Ｓ１１０７）。
【００４６】
図６に示したデータ比較処理（Ｓ６０４）では、この個体演算出力データと学習用目標データを比較し、所定の基準に従って、適応度を算出する。適応度とは、データの特性に応じて判断される近似する程度のことである。一般には、データ間の差分を求め、差分が小さいほど適応度を大きくする。画像処理の場合、例えば画素毎の輝度の差分を算出し、その差分の総和が少ないほど適応度が大きいと判断する方法や、画素毎の輝度の差分を算出し、その差分が基準値を超えている画素数をカウントし、その輝度差の大きい画素数が少ないほど適応度が大きいと判断する方法などがある。
【００４７】
次に、図３に示した生殖処理（Ｓ３０４）について説明する。図１２は、生殖処理のフローを示す図である。まず、個体数決定部（図示せず）により、交叉処理により得る個体数と、突然変異処理により得る個体数と、延命処理により得る個体数を決定する（Ｓ１２０１）。これらの個体数の合計は、次世代の個体の総数となる。これらの個体数は、予め決められた定数を用いる方法や、乱数等に基づいて都度決定する方法がある。
【００４８】
交叉部（図示せず）により、２つの個体間で遺伝子列の一部を交換する交叉処理（Ｓ１２０２）と、突然変異部（図示せず）により、遺伝子の一部を変化させる突然変異処理（Ｓ１２０３）と、延命部（図示せず）により、現在の個体構造を維持したまま存続させる延命処理（Ｓ１２０４）を行なう。これらの処理は、独立しており、処理の順序は必ずしも限定されない。これらの処理により次世代の個体が得られると、個体集団更新部（図示せず）により、個体集団更新処理（Ｓ１２０５）を行なう。この処理では、現世代の個体に関する個体ＩＤと遺伝子型個体構造を消去し、次世代の各個体について個体ＩＤに対応付けて遺伝子型個体構造を個体集団記憶部１０２に記憶させる。つまり、現世代の個体集団から次世代の個体集団に更新する。
【００４９】
前述の交叉処理（Ｓ１２０２）について説明する。図１３は、交叉処理のフローを示す図である。所定の個体数に至るまで、交叉により新たな個体を得る処理を繰り返す（Ｓ１３０１）。まず、交叉させる２つの個体を特定する（Ｓ１３０２）。選択個体記憶部１０７に記憶している選択された個体の中から、２つの個体を選択する。一般的には、乱数等を用いて不規則に選択する。同一の個体を繰り返し選択することを許す方法や、繰り返し選択しない方法がある。次に、交叉点の数を特定する（Ｓ１３０３）。交叉点が１つの場合には、その交叉点より後の全列を交換する。交叉点が２つの場合には、交叉点の間の部分列を交換する。交叉点が３つ以上の場合は、複数の列を交換する。交叉点の数は、予め定めた固定数でもよいし、都度乱数等を用いて不規則の数を求めてもよい。その数分の交叉点を選択する（Ｓ１３０４）。遺伝子の最大数以下の範囲で、乱数等を用いて不規則に交叉点の位置を決定する。交叉点の位置は、２つの個体で共通にする方法と、それぞれ独立に決める方法がある。そして、交叉点間の遺伝子列を交換する（Ｓ１３０５）。１番目と２番目の交叉点の間、３番目と４番目の交叉点の間と、順に次の交叉点との間の部分列を交換し、交叉点の数が奇数の場合には、最後の交叉点から最終遺伝子までを交換する。一般には、交叉された２つの個体を次世代に残すが、一方のみを残す方法もある。このようにして、交叉により得る個体を特定し、生殖部の内部に一時的にその遺伝子型個体構造を記憶する（Ｓ１３０６）。これらの処理を繰り返し、所定の個体数を得た時点で終了する（Ｓ１３０７）。
【００５０】
この例では、２つの個体間で一部の情報を交換したが、３つ以上の個体間で情報を交換してもよい。
【００５１】
交叉させる列の要素数は１以上であり、要素単独つまり一つの遺伝子を交換する場合もある。
【００５２】
前述の個体イを個体ロと交叉させる例を示す。図１４は、個体ロの遺伝子型個体構造を示す図であり、図１５は、個体ロの表現型のイメージを示す図である。この例では、交叉点を２つとし、第４遺伝子と第８遺伝子の間の遺伝子列を交換する。つまり、図４の４０１の枠内と図１４の１４０１の枠内の遺伝子列が交換される。表現型のイメージでは、図１０の１００１の枠内と図１５の枠内のパーツ構造（部分木）が交換される。
【００５３】
その結果、個体イは個体ハのように変化する。図１６は、個体ハの遺伝子型個体構造を示す図であり、図１７は、個体ハの表現型のイメージを示す図である。図１７に示す通り、上位のパーツ構造（ノード１からノード３までの構造）と下位のパーツ構造（ノード９とノード１０の構造、ノード１１からノード１４までの構造）を残しながら、中位のパーツ構造（ノード４からノード８まで）を入れ替えることに成功している。
【００５４】
続いて、前述の突然変異処理（Ｓ１２０３）について説明する。図１８は、突然変異処理のフローを示す図である。所定の個体数に至るまで、突然変異により新たな個体を得る処理を繰り返す（Ｓ１８０１）。まず、突然変異処理させる個体を特定する（Ｓ１８０２）。選択個体記憶部１０７に記憶している選択された個体の中から、１つの個体を選択する。一般的には、乱数等を用いて不規則に選択する。同一の個体を繰り返し選択することを許す方法や、繰り返し選択しない方法がある。次に、突然変異範囲の数を特定する（Ｓ１８０３）。突然変異範囲の数は、予め定めた固定数でもよいし、都度乱数等を用いて不規則の数を求めてもよい。その数の突然変異範囲を選択する（Ｓ１８０４）。範囲の大きさは、１つ以上であり、予め定めた固定数でもよいし、都度乱数等を用いて不規則の数を求めてもよい。範囲の位置は、乱数等を用いて不規則に決定する。次に、置き換える代替遺伝子列を特定する（Ｓ１８０５）。代替遺伝子列は、不規則に選ばれた遺伝子例を用いる。一般には、都度乱数等を用いて決定する。代替遺伝子列の大きさは、突然変異範囲と同じにする方法と、任意とする方法がある。そして、遺伝子型個体構造の突然変異範囲を代替遺伝子列に置き換える（Ｓ１８０６）。このようにして、突然変異により得る個体を特定し、生殖部の内部に一時的にその遺伝子型個体構造を記憶する。これらの処理を繰り返し、所定の個体数を得た時点で終了する（Ｓ１８０７）。
【００５５】
突然変異させる列の要素数は１以上であり、要素単独つまり一つの遺伝子を置き換える場合もある。
【００５６】
続いて、前述の延命処理（Ｓ１２０４）について説明する。図１９は、延命処理のフローを示す図である。所定の個体数を得るまで、延命により新たな個体を得る処理を繰り返す（Ｓ１９０１）。選択個体記憶部１０７に記憶している個体の中から、１つの個体を選択する。一般的には、乱数等を用いて不規則に選択する。同一の個体を繰り返し選択することを許す方法や、繰り返し選択しない方法がある。それを延命処理させる個体として、生殖部の内部に一時的にその遺伝子型個体構造を記憶する。この処理を繰り返し、所定の個体数を得た時点で終了する（Ｓ１９０３）。
【００５７】
個体集団更新処理（Ｓ１２０５）では、交叉処理、突然変異処理、及び延命処理で生殖部の内部に一時的に記憶した遺伝子型個体情報に、新たな個体ＩＤを付し、その個体ＩＤと遺伝子型個体情報を対応付けて、個体集団記憶部１０２に記憶させ、次世代の個体集団に更新する。
【００５８】
本実施の形態では、図１０と図１５と図１７に示したように、中位のパーツ構造（部分木）を入れ替えることができる点に特徴が現れている。同図では、交叉を例として説明したが、突然変異においても、中位のパーツ構造を置き換えることができる点は、同様である。
【００５９】
ここで、表現型の個体を記述する従来方法による中位のパーツ構造の操作について説明する。従来から表現型の個体を記述する方法としてＬｉｓｐのＳ式が用いられている。図２０と図２１に、それぞれ前述の個体イと個体ロをＬｉｓｐのＳ式で記述した例を示す。この式では、下位を括弧書きで列記することにより多重階層を表している。下位のパーツ構造（独立した部分木）は、例えば個体イの第１１ノードから第１４ノードに相当する「（Ｅ（Ａ）（Ｃ（Ａ）））」のように、開き括弧と対応する閉じ括弧の間の列として示される。このように括弧で括られた列を他の括弧で括られた列と交換しても、括弧書きの対応関係に矛盾が生じることがない。従って、下位のパーツ構造（独立した部分木）同士の交叉、あるいは下位のパーツ構造の突然変異は可能である。しかし、中位のパーツ構造については任意に書き換えると、括弧書きの対応関係に矛盾が生じるため、中位のパーツ構造同士の交換、あるいは中位のパーツ構造の突然変異は行なわれない。また、構造的矛盾が生じる場合もある。
【００６０】
以下、ＬｉｓｐのＳ式による中位のパーツ構造の書き換えによる構造的な矛盾について説明する。図２０に示した個体イの第４ノードから第８ノードの列「（Ｆ（Ｂ）（Ｄ（Ｆ（Ｆ」に対応する部分として、図２１の個体ロの「（Ｃ（Ｅ（Ｃ（Ｅ（Ａ）」を選択し、これを入れ替えることにより、図２２に示した式が得られる。このとき、開いている括弧の数は、ともに４つになるように個体ロの部分を選択しているので、入れ替えても、括弧の対応数に矛盾は生じない。しかし、図２２に示した式によれば、第７ノードの「Ｅ」の遺伝子に、「（Ａ）」と「（Ｄ（Ｂ））」と「（Ｅ（Ａ）（Ｃ（Ａ）））」の３つの連結が生じ、本来連結数が２つである「Ｅ」の遺伝子に対する連結数がオーバーし、構造的に矛盾が生じる。このように、ＬｉｓｐのＳ式においては、矛盾無く中位のパーツ構造に相当する部分列を任意に交換することは不可能である。参考に、本実施の形態で得た個体ハのＬｉｓｐのＳ式を、図２３に示す。
【００６１】
実施の形態２．
本実施の形態では、遺伝子にパラメータを付加し、遺伝子とパラメータの組（遺伝子情報に相当する。）の列からなる遺伝子型個体構造を用いて、遺伝子とパラメータを同時に最適化する形態について説明する。パラメータは、遺伝子により特定される演算を行なうファンクションに用いられる。例えば、パラメータがＸのｎ乗を示す係数として用いられ、Ｘ、Ｘの二乗、及びＸの三乗を区別する。あるいは三角関数の種類を識別するのに用いられ、ｓｉｎ（Ｘ），ｃｏｓ（Ｘ），ｔａｎ（Ｘ）を区別することができる。つまり、パラメータによって演算の内容を変えることできる。
【００６２】
図２４は、パラメータを付加した個体イの遺伝子型個体構造を示す図である。
【００６３】
本実施の形態における進化計算システムの構成と進化計算アルゴリズムによる学習処理のフローは、実施の形態１で示した図１と図３と同様である。
【００６４】
本実施の形態では、図５に示した適応度計算部１０３の構成要素である型変換部５０１による型変換処理（図６のＳ６０２）が、前述の実施の形態と異なる。図２５は、型変換処理の変更部分を示す図である。図７のＳ７０５とＳ７０９の間で、Ｓ７０６とＳ７０８に代えて、以下の処理を行なう。遺伝子型個体構造から当該ノードの遺伝子とパラメータの組を読み込む（Ｓ２５０１）。そして、遺伝子テーブルから当該遺伝子の連結数を取得し（Ｓ７０７）、遺伝子とパラメータと連結数を、表現型個体構造の当該ノードのレコードに書き込む（Ｓ２５０２）。
【００６５】
これにより、図２６に示すように、各レコードでノードＮｏに対応付けてパラメータも記憶し、パラメータを含む個体イの表現型個体構造が得られる。図２７は、パラメータを付加した個体イの表現型のイメージを示す図である。この例では、パラメータの範囲を、１、２、あるいは３としたが、ファンクションに応じて設定することができる。所定の範囲で連続する値を用いても良い。
【００６６】
また、図５に示した適応度計算部１０３の構成要素である個体演算部５０２による個体演算処理（図６のＳ６０３）が、前述の実施の形態と異なる。図２８は、個体演算処理の変更部分を示す図である。図１１のＳ１１０３とＳ１１０５の間で、Ｓ１１０４に代えて、特定したデータを入力してパラメータを用いてファンクション処理部による演算を行なう（Ｓ２８０１）。
【００６７】
また、図１２に示した生殖処理に含まれる交叉処理（Ｓ１２０２）と突然変異処理（Ｓ１２０３）が、前述の実施の形態と異なる。
【００６８】
図２９は、交叉処理の変更部分を示す図である。図１３のＳ１３０４とＳ１３０６の間で、Ｓ１３０５に代えて、交叉点間の遺伝子とパラメータの組の列を交換する（Ｓ２９０１）。
【００６９】
図２４に示した個体イの遺伝子型個体構造の枠で示した組の列を、図３０に示した個体ロの遺伝子型個体構造の枠で示した組の列に交換することによって図３１に示す個体ハの遺伝子型個体構造が得られる。図３２は、パラメータを付加した個体ハの表現型のイメージを示す図である。
【００７０】
図３３は、突然変異処理の変更部分を示す図である。図１８のＳ１８０４とＳ１８０７の間で、Ｓ１８０５とＳ１８０６に代えて以下の処理を行なう。置き換える代替遺伝子と代替パラメータの組の列を特定し（Ｓ３３０１）、突然変異範囲を代替遺伝子と代替パラメータの組の列に書き換える（Ｓ３３０２）。代替パラメータは、乱数等に基づいて不規則に生成する。
【００７１】
本実施の形態では、生殖処理で遺伝子とパラメータを同時に操作し、両者の同時最適化を図ることができる。
【００７２】
実施の形態３．
実施の形態２では、遺伝子とパラメータの組の列を生殖処理の対象としたが、遺伝子のみの列、あるいはパラメータのみの列を生殖処理の対象として組み合わせることもできる。
【００７３】
その場合、図１２に示した生殖処理に含まれる交叉処理（Ｓ１２０２）と突然変異処理（Ｓ１２０３）が、前述の実施の形態と異なる。
【００７４】
図３４は、交叉処理の変更部分を示す図である。図１３のＳ１３０４とＳ１３０６の間で、Ｓ１３０５に代えて以下の処理を行なう。交叉させる列として、遺伝子とパラメータの組の列、遺伝子の列、パラメータの列の別を決定する（Ｓ３４０１）。乱数等を基づいて、不規則に列の別を決定する。そして、その別に従って、交叉点間の交叉させる列を交換する（Ｓ３４０２）。
【００７５】
図３５は、突然変異処理の変更部分を示す図である。図１８のＳ１８０４とＳ１８０７の間で、Ｓ１８０５とＳ１８０６に代えて以下の処理を行なう。前述と同様に、突然変異させる列として、遺伝子とパラメータの組の列、遺伝子の列、パラメータの列の別を決定する（Ｓ３５０１）。次に、列の別に従って、置き換える列となる、代替遺伝子と代替パラメータの組の列、代替遺伝子の列、あるいは代替パラメータの列を特定し（Ｓ３５０２）、列の別に従って、突然変異範囲の列を、代替列に書き換える（Ｓ３５０３）。
【００７６】
実施の形態４．
前述の実施の形態では、終端ノードに用いられる終端用遺伝子は連結数０とし、非終端ノードに用いられる非終端用遺伝子は連結数を１以上として、遺伝子テーブルで予め区別して定義したが、本実施の形態では、遺伝子テーブルで両者を区別せず、特定のファンクションを識別する遺伝子を終端ノードと非終端ノードの両方に用いる。また、遺伝子型個体構造で遺伝子に対応付けてノード種別を記憶し、このノード種別に従って、型変換処理（図６のＳ６０１）を行なう。
【００７７】
図３６は、遺伝子テーブルの例を示す図である。本実施の形態の遺伝子は、すべて終端用と非終端用を兼ね、遺伝子が特定するファンクションで用いる入力データ数を、連結数として定義している。
【００７８】
次に、本実施の形態における遺伝子型個体構造について説明する。図３７は、個体ホの遺伝子型個体構造を示す図である。図に示すように、ノード種別と遺伝子の組（遺伝子情報に相当する。）の列として構成されている。ノード種別は、終端（ｔ）と非終端（ｎ）の２種類のいずれかを指定する。
【００７９】
本実施の形態における進化計算システムの構成と進化計算アルゴリズムによる学習処理のフローは、実施の形態１で示した図１と図３と同様である。
【００８０】
本実施の形態では、図５に示した適応度計算部１０３の構成要素である型変換部５０１による型変換処理（図６のＳ６０２）が、前述の実施の形態と異なる。図３８は、型変換処理の変更部分を示す図である。図７のＳ７０６とＳ７０９の間で、Ｓ７０７とＳ７０８に代えて以下の処理を行なう。遺伝子型個体構造から当該遺伝子のノード種別を取得し（Ｓ３８０１）、そのノード種別（Ｓ３８０２）が非終端（ｎ）の場合には、遺伝子テーブルから当該遺伝子の連結数を取得して（Ｓ３８０３）、その連結数を用いる。一方、ノード種別（Ｓ３８０２）が終端（ｔ）の場合には、連結数を０として（Ｓ３８０４）、以降の処理を行なう。
【００８１】
図３９に、個体ニの表現型個体構造の生成過程を示す。第１ノードでは、ノード種別が非終端（ｎ）であるので、遺伝子テーブルの定義に従って、連結数を「２」とし、第一連結先ノードＮｏと第二連結先ノードＮｏに予約コードを設定する。これに対し、第３ノードでは、ノード種別が終端（ｔ）であるので、遺伝子テーブルの定義には従わず、連結数を「０」とし、連結先ノードＮｏへの予約コードの設定は行なわない。このようにして、図４０に示す個体ニの表現型個体構造が得られる。図４１は、個体ニの表現型のイメージを示す図である。
【００８２】
図１２に示した生殖処理に含まれる交叉処理（Ｓ１２０２）と突然変異処理（Ｓ１２０３）が、前述の実施の形態と異なる。
【００８３】
図４２は、交叉処理の変更部分を示す図である。図１３のＳ１３０４とＳ１３０６の間で、Ｓ１３０５に代えて以下の処理を行なう。交叉させる列として、ノード種別と遺伝子の組の列、ノード種別の列、遺伝子の列の別を決定する（Ｓ４２０１）。列の別は、乱数等を基づいて不規則に決定する。そして、交叉点間の列を交換する（Ｓ４２０２）。
【００８４】
図４３は、型変換処理の変更部分を示す図である。図１８のＳ１８０４とＳ１８０７の間で、Ｓ１８０５とＳ１８０６に代えて以下の処理を行なう。突然変異させる列として、ノード種別と遺伝子の組の列、ノード種別の列、遺伝子の列の別を決定する（Ｓ４３０１）。この場合も、列の別は、乱数等を基づいて不規則に決定し、置き換える列となる、代替ノード種別と代替遺伝子の組の列、代替ノード種別の列、あるいは代替遺伝子の列を特定して（Ｓ４３０２）、突然変異範囲の列を代替列に書き換える（Ｓ４３０３）。代替ノード種別も、乱数等に基づいて不規則に生成する。
【００８５】
ここで、図３７に示した個体ホの表現型個体構造のうち、第３ノードのノード種別を終端（ｔ）から非終端（ｎ）に置き換え、第８ノードのノード種別を非終端（ｎ）から終端（ｔ）に置き換える例について説明する。尚、突然変異させる列の要素数は１以上であり、要素単独つまり一つのノード種別を置き換える場合もある。
【００８６】
このように、ノード種別を置き換えた個体ホの表現型個体構造は、図４４のようになる。また、図４５にこの表現型のイメージを示す。このイメージを、図４１に示した個体ニの表現型のイメージと比較すると、現世代では、直列関係にあった上位のパーツ構造（４１０１）と下位のパーツ構造（４１０２）が、次世代では、ともに第３ノードに連結する並列関係となっていることがわかる。この例では、直列関係から並列関係に移行する例を示したが、ノード種別を逆に変化させれば、逆に並列関係から直列関係に移行するも起こり得ることは当然である。このように、ノード種別が変化することによって、パーツ構造（部分木）単位で配置関係がダイナミックに変化する。
【００８７】
従来の生殖処理では、ノードとなる遺伝子自体の入れ替えが主な操作であり、ノード種別の変化によるパーツ構造の配置操作は行なわれない。
実施の形態５．
本実施の形態では、上述の技術を基礎に、更に生殖の多様性を高めた形態について説明する。その為、遺伝子型個体構造の発展的な一態様であるマトリクス型個体構造を採用する。この例によるマトリクス型個体構造では、レコード毎に遺伝子の候補を複数有し、選択的にいずれかの遺伝子を表現型個体構造に反映されるようになっている。また、終端と非終端の判断も、ノード種別の項目以外の指示項目を考慮して決定されるようになっている。
【００８８】
図４６は、実施の形態５に係る進化計算システムの構成を示す図である。上述の遺伝子型個体構造に代えて、マトリクス型個体構造を用いて動作する。
【００８９】
マトリクス型個体構造について説明する。図４７は、マトリクス型個体構造の例を示す図である。レコード（遺伝子情報に相当する。）毎に、ノード種別、非終端ノード用遺伝子、非終端ノード用パラメータ、終端ノード用遺伝子、第一連結先終端指示、第二連結先終端指示、第一連結先終端用遺伝子、及び第二連結先終端用遺伝子を記憶している。以下、簡単に本構造の仕様について説明する。第１レコードでは、ノード種別が非終端（ｎ）の場合には、非終端ノード用遺伝子と非終端ノード用パラメータを採用し、終端（ｔ）の場合には、終端ノード用遺伝子を採用する。遺伝子の連結数は、前述と同様に遺伝子テーブルから取得し、連結数の分だけ連結先終端指示を判定する。連絡先終端指示がＯＮの場合には、連結先を終端ノードとし、後の項目の連結先終端用遺伝子を採用する。連絡先終端指示がＯＦＦの場合には、次のレコードのノード種別従って終端か非終端かを決定する。その場合には第１レコードの場合と同様に、非終端ノード用遺伝子と非終端ノード用パラメータ、あるいは終端ノード用遺伝子を採用する。
【００９０】
図４７の上段のマトリクスでは、上述の各項目の定義を直接示す値（論理値）を記載したが、実際のマトリクス型個体構造には、図の下段のマトリクスのように、各項目の定義に必ずしも従わない値（実値）が格納されている。これらの実値は、その値が格納されている項目の定義に従うように論理値に解釈して用いられる。ノード種別であれば、実値が奇数の場合に終端（ｔ）として扱い、偶数の場合に非終端（ｎ）として扱う。遺伝子の項目、つまり非終端ノード用遺伝子、終端ノード用遺伝子、第一連結先終端用遺伝子、及び第二連結先終端用遺伝子であれば、遺伝子の識別数（この例では、Ｇ〜Ｌの６）の剰余により遺伝子を特定する。この例では、剰余が１の数値は「Ｇ」として扱い、同様に、２の場合は「Ｈ」として、３の場合は「Ｉ」として、４の場合は「Ｊ」として、５の場合は「Ｋ」として、０の場合は「Ｌ」としてそれぞれ扱う。非終端ノード用パラメータの項目の場合には、実値をパラメータの有効範囲に置き換えて用いる。この例では、パラメータを「１」、「２」、あるいは「３」の３つの値を有効値としているので、３の剰余によりパラメータを特定する。剰余が１の数値は「１」として扱い、同様に、２の場合は「２」として、０の場合は「３」としてそれぞれ扱う。第一連結先終端指示と第二連結先終端指示の項目であれば、実値が奇数の場合に「ＯＮ」として扱い、偶数の場合には「ＯＦＦ」として扱う。
【００９１】
この例では、実値に対する各項目で採りうる論理値の数の剰余で、実値を論理値に変換する解釈方法を述べたが、他の方法によって解釈しても構わない。但し、各論理値に変換される確率が同一になる方法が望ましい。例えば、実値の設定範囲を１から１２のように限定し、論理値の数分の層に分割し、各層毎に対応する論理値を割り当てる方法もある。例えば、実値の数１２をパラメータの有効値の数３で割って、層の大きさを４と求め、実値の範囲１から４の層、５から８の層、９から１２の層に分け、実値が１から４であればパラメータ「１」として扱い、実値が５から８であればパラメータ「２」として扱い、実値が９から１２であればパラメータ「３」として扱う。
【００９２】
実値の設定範囲を設ける場合には、各論理値の期待値を一定にするために、各項目で採りうる論理値の数の最小公倍数（あるいは、最小公倍数の整数倍）を用いることが有効である。
【００９３】
図４８は、適応度計算部の構成を示す図である。遺伝子型個体構造に代えて、マトリクス型個体構造を型変換部５０１で表現型個体構造に変換する。表現型個体構造は、前述の実施の形態と同様である。
【００９４】
型変換部５０１による型変換処理について説明する。図４９は、型変換部の構成を示す図である。型変換部５０１は、マトリクス型個体構造記憶部４９０１、ルート処理部４９０２、レコード読込部４９０３、終端ノード設定部４９０４、非終端ノード設定部４９０５、表現型固体構造記憶部４９０６、ノードＮｏインクリメント部４９０７、連結位置判定部４９０８、及び遺伝子判定部４９０９を有している。
【００９５】
図５０は、型変換処理のフローを示す図である。ルート処理部４９０２によるルート処理（Ｓ５００１）では、ルートのノードの判定を行なう。以降は、ルートから順にノード毎に以下の処理を繰り返し（Ｓ５００２）、連結位置判定部４９０８による連結位置判定処理（Ｓ５００３）で連結位置が無くなるまで、ループ処理を繰り返す。遺伝子判定部４９０９による遺伝子判定処理（Ｓ５００４）では、ノード種別、遺伝子等を判定し（Ｓ５００５）、ノード種別が終端（ｔ）の場合には、終端ノード設定部４９０４による終端ノード設定処理（Ｓ５００６）で、終端ノードとしての設定を行い、一方非終端（ｎ）の場合には、非終端ノード設定部４９０５による非終端ノード設定処理（Ｓ５００７）で、非終端ノードとしての設定を行う。以下、各処理を詳述する。
【００９６】
まず、ルート処理（Ｓ５００１）について説明する。図５１は、ルート処理のフローを示す図である。まず、マトリクス型個体構造からのレコード読込処理を行なう（Ｓ５１０１）。具体的には、レコード読込部４９０３に対して読込みを指示し、レコードを取得する。レコード読込部４９０３では、読込み指示がある都度、マトリクス型個体構造から順次レコードを読み込み、引き渡す。また、問い合わせに応じて、引き渡した最新のレコードのＮｏを返答するように構成されている。ここでは、最初の読込み指示を受けるので、第１レコードをルート処理部４９０２に引き渡す。ルート処理部４９０２では、次に、読み込んだレコードのノード種別を判定し（Ｓ５１０２）、終端（ｔ）の場合には、ノード種別として終端（ｔ）を出力し、遺伝子として、読み込んだレコードの終端ノード用遺伝子を出力する（Ｓ５１０３）。一方、非終端（ｎ）の場合には、ノード種別として非終端（ｎ）を出力し、遺伝子として、読み込んだレコードの非終端ノード用遺伝子を出力し、パラメータとして、読み込んだレコードの非終端ノード用パラメータを出力する（Ｓ５１０４）。
【００９７】
終端ノード設定処理（Ｓ５００６）について説明する。図５２は、終端ノード設定処理のフローを示す図である。ルート処理部４９０２あるいは遺伝子判定部４９０９から出力された遺伝子を表現型個体構造の当該ノードのレコードに書き込み（Ｓ５２０１）、同じく当該ノードのレコードの連結数に０を書き込む（Ｓ５２０２）。
【００９８】
非終端ノード設定処理（Ｓ５００７）について説明する。図５３は、非終端ノード設定処理のフローを示す図である。ルート処理部４９０２あるいは遺伝子判定部４９０９から出力された遺伝子に対応する連結数を、遺伝子テーブルから取得する（Ｓ５３０１）。そして、遺伝子とパラメータと連結数を、表現型個体構造の当該ノードのレコードに書き込む（Ｓ５３０２）。更に、当該ノードのレコードに含まれる連結数分の連結先ノードＮｏに、予約コードを書き込む（Ｓ５３０３）。また、レコード読込部４９０３に問い合わせて、レコード読込処理で読み込んだ最新のレコードＮｏを取得し、当該ノードのレコードのソースレコードＮｏに書き込む（Ｓ５３０４）。
【００９９】
図５４は、個体ヘの表現型個体構造の生成過程を示す図である。第１レコードのノード種別が非終端（ｎ）なので、非終端用遺伝子「Ｊ」と非終端用パラメータ「３」と連結数「２」を書き込み、２つの連結先ノードＮｏに予約コードを設定している。また、レコード読込処理で読み込んだレコードとしては、この時点で第１レコードが最新であるので、ソースレコードＮｏに「１」を設定している。
【０１００】
続いて、連結位置判定処理（Ｓ５００３）について説明する。図５５は、連結位置判定処理のフローを示す図である。表現型個体構造の各レコード中の連結先ノードから、連結対象とする予約コードを特定する（Ｓ５５０１）。予約コードが無い場合には（Ｓ５５０２）、連結位置が無いことになるので、終了ステータスを「なし」として終了する（Ｓ５５０５）。予約コードはある場合には（Ｓ５５０２）、予約コードを当該ノードのＮｏに書き換え（Ｓ５５０３）、終了ステータスを「あり」として終了する（Ｓ５５０４）。
【０１０１】
続いて、遺伝子判定処理（Ｓ５００４）について説明する。図５６と図５７は、遺伝子判定処理のフローを示す図である。まず、連結対象となった予約コードのレコードに含まれるソースレコードＮｏを読み込む（Ｓ５６０１）。図５４の第２ノードの遺伝子を判定する場合には、連結対象となった予約コードのレコードは、第１ノードのレコードであり、そのレコードに含まれるソースレコードＮｏは「１」である。次に、マトリクス型個体構造のソースレコードＮｏに対応するソースレコードを特定する（Ｓ５６０２）。第２ノードの例では、図４７のマトリクス型個体構造の第１レコードを特定することになる。次に、そのソースレコードから連絡先終端指示を読み込む。このとき、連結対象となった予約コードが第一連結先ノードＮｏの場合は、第一連絡先終端指示を読み込み、同予約コードが第二連結先ノードＮｏの場合は、第二連絡先終端指示を読み込む（Ｓ５６０３）。第２ノードの例では、図５４に示すように、予約コードが設定されていた第一連結先ノードＮｏに連結したので、マトリクス型個体構造の第１レコードの第一連絡先終端指示「ＯＮ」を読み込む。
【０１０２】
読み込んだ連絡先終端指示が「ＯＮ」であれば（Ｓ５６０４）、ソースレコードから連絡先終端ノード用遺伝子を読み込む。このとき、第一連絡先終端指示で判断した場合は、第一連絡先終端ノード用遺伝子を読み込み、第二連絡先終端指示で判断した場合は、第二連絡先終端ノード用遺伝子を読み込む（Ｓ５６０５）。そして、ノード種別として、終端（ｔ）を出力し、遺伝子として、連絡先終端ノード用遺伝子を出力する（Ｓ５６０６）。第２ノードの例では、終端（ｔ）と第一連結先終端ノード用遺伝子「Ｇ」を出力することになる。
【０１０３】
一方、読み込んだ連絡先終端指示が「ＯＦＦ」であれば（Ｓ５６０４）、マトリクス型個体構造からのレコード読込処理（Ｓ５６０７）により次のレコードを取得する。読み込んだレコードのノード種別が終端（ｔ）の場合には（Ｓ５６０８）、ノード種別として終端（ｔ）を出力し、遺伝子として、読み込んだレコードの終端ノード用遺伝子を出力する（Ｓ５６０９）。読み込んだレコードのノード種別が非終端（ｎ）の場合には（Ｓ５６０８）、ノード種別として非終端（ｎ）を出力し、遺伝子として、読み込んだレコードの非終端ノード用遺伝子を出力し、パラメータとして、読み込んだレコードの非終端ノード用パラメータを出力する（Ｓ５６１０）。
【０１０４】
尚、図４７のマトリクス型個体構造の中で網掛け部分は、遺伝子判定処理（Ｓ５００４）で用いられた要素を示している。それ以外の部分は、判定に使用されていない。
【０１０５】
このようにして、図５８に示す個体ヘの表現型個体構造が得られる。図５９は、個体ヘの表現型のイメージを示す図である。
【０１０６】
図１２に示した生殖処理に含まれる交叉処理（Ｓ１２０２）と突然変異処理（Ｓ１２０３）が、前述の実施の形態と異なる。
【０１０７】
図６０は、交叉処理のフローを示す図である。交叉処理では、図６１に示す交叉処理のイメージのように、同じサイズのブロック同士（６１０３，６１０４）を交換する。ブロックは、マトリクス（６１０１，６１０２）の一部であって、少なくとも小さいほうのマトリクス以下のサイズである。
【０１０８】
所定の個体数を得るまで、ブロックを交換する処理を繰り返す（Ｓ６００１）。交叉させる２つの個体を特定し（Ｓ６００２）、交叉ブロックのサイズを特定する（Ｓ６００３）。交叉ブロックのサイズは、行数と列数（レコード数と項目数）によって表される。ブロックの行数は、１以上かつ特定した２つの個体のマトリクスの行数のうち少ない方の行数（小側行数）以下の範囲で、ブロックの列数は、１以上かつマトリクスの列数以下の範囲で、それぞれ独立して乱数等を用いて不規則に決める。次に、このサイズに従って、２つの個体それぞれに、交叉ブロックを特定する（Ｓ６００４）。具体的には、小側行数からブロックの行数を差し引いて、差分行数を求め、１から差分行数＋１の範囲で、乱数等を用いて不規則にブロック開始行を決める。また、マトリクスの列数からブロックの列数を差し引いて、差分列数を求め、１から差分列数＋１の範囲で、乱数等を用いて不規則にブロック開始列を決める。そして、交叉ブロックを交換する（Ｓ６００５）。具体的には、ブロック開始行からブロックの行数分の行と、ブロック開始列からブロックの列数分の列からなるブロック同士を交換する。交換したマトリクスから交叉により得る個体を特定する（Ｓ６００６）。一般的には、２つとも次世代に残すが、一方のみを選択して残してもよい。最終的に、所定の個体数を得た時点で終了する（Ｓ６００７）。
【０１０９】
図６２は、突然変異処理のフローを示す図である。突然変異処理では、図６３に示す突然変異処理のイメージのように、マトリクス（６３０１）内のブロック（６３０３）を任意の代替ブロック（６３０２）に置き換える。ブロック（６３０３）は、マトリクス（６３０１）の一部であって、少なくともマトリクスよりも小さいサイズである。
【０１１０】
所定の個体数を得るまで、ブロックを置き換える処理を繰り返す（Ｓ６２０１）。まず、突然変異処理させる個体を特定する（Ｓ６２０２）。次に、突然変異ブロックのサイズを特定する（Ｓ６２０３）。突然変異ブロックのサイズは、行数と列数（レコード数と項目数）によって表される。ブロックの行数は、１以上かつ特定した個体のマトリクスの行数以下の範囲で、ブロックの列数は、１以上かつマトリクスの列数以下の範囲で、それぞれ独立して乱数等を用いて不規則に決める。次に、個体の突然変異ブロックを特定する（Ｓ６２０４）。具体的には、マトリクスの行数からブロックの行数を差し引いて、差分行数を求め、１から差分行数＋１の範囲で、乱数等を用いて不規則にブロック開始行を決める。また、マトリクスの列数からブロックの列数を差し引いて、差分列数を求め、１から差分列数＋１の範囲で、乱数等を用いて不規則にブロック開始列を決める。次に、置き換える代替ブロックを特定する（Ｓ６２０５）。代替ブロックは、突然変異ブロックと同じ大きさであって、有効範囲の値を乱数等を用いて不規則に求めて、無作為に配置してものである。そして、突然変異ブロックを代替ブロックに置き換える（Ｓ６２０６）。最終的に、所定の個体数を得た時点で終了する（Ｓ６２０７）。
【０１１１】
実施の形態６．
実施の形態５では、各要素の大きさ、つまり各項目長を同一にして、交叉処理及び突然変異処理では、要素単位でブロックを設定した。本実施の形態では、各項目長を別個に定め、ビット単位のブロックを交叉処理及び突然変異処理の対象とする例について説明する。
【０１１２】
例えば、ノード種別には１ビット、非終端ノード用遺伝子には４ビット、非終端ノード用パラメータには２ビット、終端ノード用遺伝子には４ビット、第一連結先終端指示と第二連結先終端指示にはそれぞれ１ビット、第一連結先終端用遺伝子と第二連結先終端用遺伝子にはそれぞれ４ビットを割り当て、レコード長を２１ビットとしてマトリクス型個体構造を記述する。そして、項目毎にビット構造によって論理値を特定する。
【０１１３】
図６０に示した交叉処理について説明する。交叉ブロックサイズの特定では（Ｓ６００３）、サイズを、行数（レコード数）とビット数によって表す。ブロックのビット数は、１以上かつマトリクスのビット数以下の範囲で、乱数等を用いて不規則に決める。交叉ブロックの特定では（Ｓ６００４）。マトリクスのビット数からブロックのビット数を差し引いて、差分ビット数を求め、１から差分ビット数＋１の範囲で、乱数等を用いて不規則にブロック開始ビットを決める。交叉ブロックの交換では（Ｓ６００５）、ブロック開始行からブロックの行数分の行と、ブロック開始ビットからブロックのビット数分のビット列からなるブロック同士を交換する。
【０１１４】
図６２に示した突然変異処理について説明する。突然変異ブロックサイズの特定では（Ｓ６２０３）、サイズを、行数（レコード数）とビット数によって表す。ブロックのビット数は、１以上かつマトリクスのビット数以下の範囲で、乱数等を用いて不規則に決める。突然変異ブロックの特定では（Ｓ６２０４）、マトリクスのビット数からブロックのビット数を差し引いて、差分ビット数を求め、１から差分ビット数＋１の範囲で、乱数等を用いて不規則にブロック開始ビットを決める。代替ブロックの特定では（Ｓ６２０５）、
乱数等を用いて不規則に各ビットを定める。
【０１１５】
ブロックとして矩形エリアの例を示したが、ブロックは矩形エリアでなくてもよい。形状は任意であり、交叉させるブロック同士が同一サイズで同一形状であれば足りる。複数のレコードに跨る点に特徴がある。
【０１１６】
本発明では、構造と数値の同時最適化を図ることができるとともに、表現型をコンパクト化している。従来は、ファンクションを連ねて実現していた機能を、パラメータを用いて単一のファンクションで実装することができるからである。
【０１１７】
従来の進化計算の場合、遺伝的アルゴリズムであっても、遺伝的プログラミングであっても、個体の遺伝情報がすべて表現型に置き換わるのに対して、本発明では、表現型を特定する情報を保持する部分（「エクソン」と呼ぶ。）以外に、表現型に影響を与えない部分（「イントロン」と呼ぶ。）を有している。これにより、潜在的な資質も次世代に引き継ぐことができる。
【０１１８】
進化計算システムは、コンピュータであり、各要素はプログラムにより処理を実行することができる。また、プログラムを記憶媒体に記憶させ、記憶媒体からコンピュータに読み取られるようにすることができる。
【図面の簡単な説明】
【０１１９】
【図１】進化計算システムの構成を示す図である。
【図２】遺伝子テーブルの例を示す図である。
【図３】進化計算アルゴリズムによる学習処理のフローを示す図である。
【図４】個体イの遺伝子型個体構造を示す図である。
【図５】適応度計算部の構成を示す図である。
【図６】適応度計算処理のフローを示す図である。
【図７】型変換処理のフローを示す図である。
【図８】個体イの表現型個体構造の生成過程を示す図である。
【図９】個体イの表現型個体構造を示す図である。
【図１０】個体イの表現型のイメージを示す図である。
【図１１】個体演算処理のフローを示す図である。
【図１２】生殖処理のフローを示す図である。
【図１３】交叉処理のフローを示す図である。
【図１４】個体ロの遺伝子型個体構造を示す図である。
【図１５】個体ロの表現型のイメージを示す図である。
【図１６】個体ハの遺伝子型個体構造を示す図である。
【図１７】個体ハの表現型のイメージを示す図である。
【図１８】突然変異処理のフローを示す図である。
【図１９】延命処理のフローを示す図である。
【図２０】個体イのＬｉｓｐのＳ式を示す図である。
【図２１】個体ロのＬｉｓｐのＳ式を示す図である。
【図２２】交叉したＬｉｓｐのＳ式を示す図である。
【図２３】個体ハのＬｉｓｐのＳ式を示す図である。
【図２４】パラメータを付加した個体イの遺伝子型個体構造を示す図である。
【図２５】型変換処理の変更部分を示す図である。
【図２６】パラメータを付加した個体イの表現型個体構造を示す図である。
【図２７】パラメータを付加した個体イの表現型のイメージを示す図である。
【図２８】個体演算処理の変更部分を示す図である。
【図２９】交叉処理の変更部分を示す図である。
【図３０】パラメータを付加した個体ロの遺伝子型個体構造を示す図である。
【図３１】パラメータを付加した個体ハの遺伝子型個体構造を示す図である。
【図３２】パラメータを付加した個体ハの表現型のイメージを示す図である。
【図３３】突然変異処理の変更部分を示す図である。
【図３４】交叉処理の変更部分を示す図である。
【図３５】突然変異処理の変更部分を示す図である。
【図３６】遺伝子テーブルの例を示す図である。
【図３７】個体ホの遺伝子型個体構造を示す図である。
【図３８】型変換処理の変更部分を示す図である。
【図３９】個体ニの表現型個体構造の生成過程を示す図である。
【図４０】個体ニの表現型個体構造を示す図である。
【図４１】個体ニの表現型のイメージを示す図である。
【図４２】交叉処理の変更部分を示す図である。
【図４３】型変換処理の変更部分を示す図である。
【図４４】個体ホの表現型個体構造を示す図である。
【図４５】個体ホの表現型のイメージを示す図である。
【図４６】実施の形態５に係る進化計算システムの構成を示す図である。
【図４７】マトリクス型個体構造の例を示す図である。
【図４８】適応度計算部の構成を示す図である。
【図４９】型変換部の構成を示す図である。
【図５０】型変換処理のフローを示す図である。
【図５１】ルート処理のフローを示す図である。
【図５２】終端ノード設定処理のフローを示す図である。
【図５３】非終端ノード設定処理のフローを示す図である。
【図５４】個体ヘの表現型個体構造の生成過程を示す図である。
【図５５】連結位置判定処理のフローを示す図である。
【図５６】遺伝子判定処理のフロー（１／２）を示す図である。
【図５７】遺伝子判定処理のフロー（２／２）を示す図である。
【図５８】個体ヘの表現型個体構造を示す図である。
【図５９】個体ヘの表現型のイメージを示す図である。
【図６０】交叉処理のフローを示す図である。
【図６１】交叉処理のイメージを示す図である。
【図６２】突然変異処理のフローを示す図である。
【図６３】突然変異処理のイメージを示す図である。
【符号の説明】
【０１２０】
１０１  初期個体入力部、１０２  個体集団記憶部、１０３  適応度計算部、１０４  遺伝子テーブル、１０５  適応度記憶部、１０６  個体選択部、１０７  選択個体記憶部、１０８  生殖部、１０９  学習個体出力部、５０１  型変換部、５０２  個体演算部、５０３  データ比較部、４９０１  マトリクス型個体構造記憶部、４９０２  ルート処理部、４９０３  レコード読込部、４９０４  終端ノード設定部、４９０５  非終端ノード設定部、４９０６  表現型固体構造記憶部、４９０７  ノードＮｏインクリメント部、４９０８  連結位置判定部、４９０９  遺伝子判定部。
【図１】
2007087055.tif 000003
【図２】
2007087055.tif 000004
【図３】
2007087055.tif 000005
【図４】
2007087055.tif 000006
【図５】
2007087055.tif 000007
【図６】
2007087055.tif 000008
【図７】
2007087055.tif 000009
【図８】
2007087055.tif 000010
【図９】
2007087055.tif 000011
【図１０】
2007087055.tif 000012
【図１１】
2007087055.tif 000013
【図１２】
2007087055.tif 000014
【図１３】
2007087055.tif 000015
【図１４】
2007087055.tif 000016
【図１５】
2007087055.tif 000017
【図１６】
2007087055.tif 000018
【図１７】
2007087055.tif 000019
【図１８】
2007087055.tif 000020
【図１９】
2007087055.tif 000021
【図２０】
2007087055.tif 000022
【図２１】
2007087055.tif 000023
【図２２】
2007087055.tif 000024
【図２３】
2007087055.tif 000025
【図２４】
2007087055.tif 000026
【図２５】
2007087055.tif 000027
【図２６】
2007087055.tif 000028
【図２７】
2007087055.tif 000029
【図２８】
2007087055.tif 000030
【図２９】
2007087055.tif 000031
【図３０】
2007087055.tif 000032
【図３１】
2007087055.tif 000033
【図３２】
2007087055.tif 000034
【図３３】
2007087055.tif 000035
【図３４】
2007087055.tif 000036
【図３５】
2007087055.tif 000037
【図３６】
2007087055.tif 000038
【図３７】
2007087055.tif 000039
【図３８】
2007087055.tif 000040
【図３９】
2007087055.tif 000041
【図４０】
2007087055.tif 000042
【図４１】
2007087055.tif 000043
【図４２】
2007087055.tif 000044
【図４３】
2007087055.tif 000045
【図４４】
2007087055.tif 000046
【図４５】
2007087055.tif 000047
【図４６】
2007087055.tif 000048
【図４７】
2007087055.tif 000049
【図４８】
2007087055.tif 000050
【図４９】
2007087055.tif 000051
【図５０】
2007087055.tif 000052
【図５１】
2007087055.tif 000053
【図５２】
2007087055.tif 000054
【図５３】
2007087055.tif 000055
【図５４】
2007087055.tif 000056
【図５５】
2007087055.tif 000057
【図５６】
2007087055.tif 000058
【図５７】
2007087055.tif 000059
【図５８】
2007087055.tif 000060
【図５９】
2007087055.tif 000061
【図６０】
2007087055.tif 000062
【図６１】
2007087055.tif 000063
【図６２】
2007087055.tif 000064
【図６３】
2007087055.tif 000065