(57)【要約】【課題】遺伝的プログラミングにより進化計算を行なう進化計算システムに係り、フィードバックを取り入れたアルゴリズムを最適化することを課題とする。【解決手段】ネットワーク型に個体構造を定義し、進化計算過程の各個体の適応度計算で、ネットワーク構造に従って、各ノードの演算で前の周期で算出した他のノードあるいは自身ノードの演算結果データを入力して演算結果を得る周期単位の処理を繰り返す。そして、最終の周期に所定の出力ノードから得た演算結果データを、目標データと比較することにより、適応度を算出する。【選択図】図５
2008015817.tif 000002
【特許請求の範囲】
【請求項１】
ノードで起動される演算部を識別する演算子と、当該演算部への入力データを出力するノードの識別子あるいは学習用入力データを当該演算部への入力データとする旨を示す連結元情報を含むノード情報が連続するネットワーク型個体構造情報を用いて進化計算を行なう進化計算システムであって、以下の要素を有することを特徴とする進化計算システム
（１）同一世代に係る個体集団の要素である各個体のネットワーク型個体構造情報を記憶する個体集団記憶部
（２）個体集団記憶部に含まれる個体毎に、当該個体のネットワーク型個体構造情報に含まれるノード情報に含まれる連結元情報により特定されるノードから前の周期の演算で出力された演算結果データ、あるいは前記連結元情報により特定される学習用入力データを入力させて、前記ノード情報に含まれる演算子により特定される演算部による演算を、各ノードについて行なわせる周期単位の処理を複数回繰り返し、最終周期にいずれかのノードから出力された演算結果データと、学習用目標データを比較して、個体毎の適応度を計算する適応度計算部
（３）適応度に基づいて、個体集団から個体を選択する個体選択部
（４）選択した個体のネットワーク型個体構造情報に対して、複数の個体間で一部の情報を交換する交叉処理、あるいは一部の情報を変化させる突然変異処理を行い、次世代の個体集団の要素となる各個体のネットワーク型個体構造情報を求め、個体集団記憶部に記憶させる生殖部。
【請求項２】
前記ノード情報は、複数の連結元情報を含むことを特徴とする請求項1記載の進化計算システム。
【請求項３】
同一世代に係る個体集団の要素である各個体について、ノードで起動される演算部を識別する演算子と、当該演算部への入力データを出力するノードの識別子あるいは学習用入力データを当該演算部への入力データとする旨を示す連結元情報を含むノード情報が連続するネットワーク型個体構造情報を記憶する個体集団記憶部を有し、ネットワーク型個体構造を用いて進化計算を行なう進化計算システムによる進化計算方法であって、以下の要素を有することを特徴とする進化計算方法
（１）個体集団記憶部に含まれる個体毎に、当該個体のネットワーク型個体構造情報に含まれるノード情報に含まれる連結元情報により特定されるノードから前の周期の演算で出力された演算結果データ、あるいは前記連結元情報により特定される学習用入力データを入力させて、前記ノード情報に含まれる演算子により特定される演算部による演算を、各ノードについて行なわせる周期単位の処理を複数回繰り返し、最終周期にいずれかのノードから出力された演算結果データと、学習用目標データを比較して、個体毎の適応度を計算する適応度計算工程
（２）適応度に基づいて、個体集団から個体を選択する個体選択工程
（３）選択した個体のネットワーク型個体構造情報に対して、複数の個体間で一部の情報を交換する交叉処理、あるいは一部の情報を変化させる突然変異処理を行い、次世代の個体集団の要素となる各個体のネットワーク型個体構造情報を求め、個体集団記憶部に記憶させる生殖工程。
【請求項４】
同一世代に係る個体集団の要素である各個体について、ノードで起動される演算部を識別する演算子と、当該演算部への入力データを出力するノードの識別子あるいは学習用入力データを当該演算部への入力データとする旨を示す連結元情報を含むノード情報が連続するネットワーク型個体構造情報を記憶する個体集団記憶部を有し、ネットワーク型個体構造を用いて進化計算を行なう進化計算システムとなるコンピュータに、以下の処理を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
（１）個体集団記憶部に含まれる個体毎に、当該個体のネットワーク型個体構造情報に含まれるノード情報に含まれる連結元情報により特定されるノードから前の周期の演算で出力された演算結果データ、あるいは前記連結元情報により特定される学習用入力データを入力させて、前記ノード情報に含まれる演算子により特定される演算部による演算を、各ノードについて行なわせる周期単位の処理を複数回繰り返し、最終周期にいずれかのノードから出力された演算結果データと、学習用目標データを比較して、個体毎の適応度を計算する適応度計算処理
（２）適応度に基づいて、個体集団から個体を選択する個体選択処理
（３）選択した個体のネットワーク型個体構造情報に対して、複数の個体間で一部の情報を交換する交叉処理、あるいは一部の情報を変化させる突然変異処理を行い、次世代の個体集団の要素となる各個体のネットワーク型個体構造情報を求め、個体集団記憶部に記憶させる生殖処理。
【請求項５】
同一世代に係る個体集団の要素である各個体について、ノードで起動される演算部を識別する演算子と、当該演算部への入力データを出力するノードの識別子あるいは学習用入力データを当該演算部への入力データとする旨を示す連結元情報を含むノード情報が連続するネットワーク型個体構造情報を記憶する個体集団記憶部を有し、ネットワーク型個体構造を用いて進化計算を行なう進化計算システムとなるコンピュータに、以下の手順を実行させるためのプログラム
（１）個体集団記憶部に含まれる個体毎に、当該個体のネットワーク型個体構造情報に含まれるノード情報に含まれる連結元情報により特定されるノードから前の周期の演算で出力された演算結果データ、あるいは前記連結元情報により特定される学習用入力データを入力させて、前記ノード情報に含まれる演算子により特定される演算部による演算を、各ノードについて行なわせる周期単位の処理を複数回繰り返し、最終周期にいずれかのノードから出力された演算結果データと、学習用目標データを比較して、個体毎の適応度を計算する適応度計算手順
（２）適応度に基づいて、個体集団から個体を選択する個体選択手順
（３）選択した個体のネットワーク型個体構造情報に対して、複数の個体間で一部の情報を交換する交叉処理、あるいは一部の情報を変化させる突然変異処理を行い、次世代の個体集団の要素となる各個体のネットワーク型個体構造情報を求め、個体集団記憶部に記憶させる生殖手順。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、遺伝的プログラミングにより進化計算を行なう進化計算システムに係り、フィードバックを取り入れたアルゴリズムを最適化する技術に関する。
【背景技術】
【０００２】
進化計算法とは、生物の進化から着想した最適化（探索）アルゴリズムである。進化論的な発想に基づいてデータを操作し、解空間を探索する多点探索法の一種とも言える。その代表的な手法として、遺伝的アルゴリズムと遺伝的プログラミングがある。
【０００３】
遺伝的アルゴリズムは、一般的に個体を０あるいは１を示すビットの一次元の列（染色体）として定義する。そして、生殖として、一点交叉、多点交叉、一様交叉などにより、２つの個体間で染色体の部位を交換する交叉処理、あるいは染色体の一部をランダムに変化させる突然変異処理を行う。
【０００４】
遺伝的プログラミングは、遺伝的アルゴリズムを発展させたものであって、個体を構造的に表現する。例えば、（Ａ（Ｂ）（Ｃ（Ｄ）））のように記述するＬｉｓｐのＳ式などにより木構造を表現する。このように、一次元の文字列として記述するので、交叉処理によって新たな式を生成することができる。
【０００５】
しかし、遺伝的アルゴリズムは、複雑なアルゴリズムを生成することには向いていない。また、木構造により表現される個体による遺伝的プログラミングの場合には、各演算は一度しか行なわれない。つまり、処理フローの一過性を前提としたものである。従って、いずれの場合にも、同じ処理系を繰り返すフィードバックのアルゴリズムを生成することはできない。
【非特許文献１】佐藤浩、小野功、小林重信，「遺伝的アルゴリズムにおける世代交代モデルの提案と評価」，人工知能学会誌，人工知能学会誌１９９７年，ｖｏｌ．１２，Ｎｏ．５，ｐ．７３４−７４４
【非特許文献２】伊庭斉志、佐藤泰介，「システム同定アプローチに基づく遺伝的プログラミング」，人工知能学会誌，人工知能学会，１９９５年，ｖｏｌ．１０，Ｎｏ．４，ｐ．１００−１１０
【非特許文献３】青木紳也、長尾智晴，「木構造状画像変換の自動構築法ＡＣＴＩＴ」，映像情報メディア学会誌，映像情報メディア学会，１９９９年，ｖｏｌ．５３，Ｎｏ．６，ｐ．８８８−８９４
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、フィードバックを含むアルゴリズムを実現する個体を進化計算により最適化することを課題とする。フィードバックとは、ある系の出力を入力に戻すことであり、増幅器や自動制御回路などエレクトロニクスの分野の他、機械系や生物系でも広く用いられている。
【０００７】
特に、生物における恒常性を支えるしくみとして、負のフィードバックが機能していることが知られている。本発明により、フィードバックの機能により安定した結果を生み出す最適なプロセスを実現することが期待できる。
【課題を解決するための手段】
【０００８】
本発明に係る進化計算システムは、
ノードで起動される演算部を識別する演算子と、当該演算部への入力データを出力するノードの識別子あるいは学習用入力データを当該演算部への入力データとする旨を示す連結元情報を含むノード情報が連続するネットワーク型個体構造情報を用いて進化計算を行なう進化計算システムであって、以下の要素を有することを特徴とする
（１）同一世代に係る個体集団の要素である各個体のネットワーク型個体構造情報を記憶する個体集団記憶部
（２）個体集団記憶部に含まれる個体毎に、当該個体のネットワーク型個体構造情報に含まれるノード情報に含まれる連結元情報により特定されるノードから前の周期の演算で出力された演算結果データ、あるいは前記連結元情報により特定される学習用入力データを入力させて、前記ノード情報に含まれる演算子により特定される演算部による演算を、各ノードについて行なわせる周期単位の処理を複数回繰り返し、最終周期にいずれかのノードから出力された演算結果データと、学習用目標データを比較して、個体毎の適応度を計算する適応度計算部
（３）適応度に基づいて、個体集団から個体を選択する個体選択部
（４）選択した個体のネットワーク型個体構造情報に対して、複数の個体間で一部の情報を交換する交叉処理、あるいは一部の情報を変化させる突然変異処理を行い、次世代の個体集団の要素となる各個体のネットワーク型個体構造情報を求め、個体集団記憶部に記憶させる生殖部。
【０００９】
更に、前記ノード情報は、複数の連結元情報を含むことを特徴とする。
【００１０】
本発明に係る進化計算方法は、
同一世代に係る個体集団の要素である各個体について、ノードで起動される演算部を識別する演算子と、当該演算部への入力データを出力するノードの識別子あるいは学習用入力データを当該演算部への入力データとする旨を示す連結元情報を含むノード情報が連続するネットワーク型個体構造情報を記憶する個体集団記憶部を有し、ネットワーク型個体構造を用いて進化計算を行なう進化計算システムによる進化計算方法であって、以下の要素を有することを特徴とする
（１）個体集団記憶部に含まれる個体毎に、当該個体のネットワーク型個体構造情報に含まれるノード情報に含まれる連結元情報により特定されるノードから前の周期の演算で出力された演算結果データ、あるいは前記連結元情報により特定される学習用入力データを入力させて、前記ノード情報に含まれる演算子により特定される演算部による演算を、各ノードについて行なわせる周期単位の処理を複数回繰り返し、最終周期にいずれかのノードから出力された演算結果データと、学習用目標データを比較して、個体毎の適応度を計算する適応度計算工程
（２）適応度に基づいて、個体集団から個体を選択する個体選択工程
（３）選択した個体のネットワーク型個体構造情報に対して、複数の個体間で一部の情報を交換する交叉処理、あるいは一部の情報を変化させる突然変異処理を行い、次世代の個体集団の要素となる各個体のネットワーク型個体構造情報を求め、個体集団記憶部に記憶させる生殖工程。
【００１１】
本発明に係るコンピュータ読み取り可能な記録媒体は、
同一世代に係る個体集団の要素である各個体について、ノードで起動される演算部を識別する演算子と、当該演算部への入力データを出力するノードの識別子あるいは学習用入力データを当該演算部への入力データとする旨を示す連結元情報を含むノード情報が連続するネットワーク型個体構造情報を記憶する個体集団記憶部を有し、ネットワーク型個体構造を用いて進化計算を行なう進化計算システムとなるコンピュータに、以下の処理を実行させるためのプログラムを記録したことを特徴とする
（１）個体集団記憶部に含まれる個体毎に、当該個体のネットワーク型個体構造情報に含まれるノード情報に含まれる連結元情報により特定されるノードから前の周期の演算で出力された演算結果データ、あるいは前記連結元情報により特定される学習用入力データを入力させて、前記ノード情報に含まれる演算子により特定される演算部による演算を、各ノードについて行なわせる周期単位の処理を複数回繰り返し、最終周期にいずれかのノードから出力された演算結果データと、学習用目標データを比較して、個体毎の適応度を計算する適応度計算処理
（２）適応度に基づいて、個体集団から個体を選択する個体選択処理
（３）選択した個体のネットワーク型個体構造情報に対して、複数の個体間で一部の情報を交換する交叉処理、あるいは一部の情報を変化させる突然変異処理を行い、次世代の個体集団の要素となる各個体のネットワーク型個体構造情報を求め、個体集団記憶部に記憶させる生殖処理。
【００１２】
本発明に係るプログラムは、
同一世代に係る個体集団の要素である各個体について、ノードで起動される演算部を識別する演算子と、当該演算部への入力データを出力するノードの識別子あるいは学習用入力データを当該演算部への入力データとする旨を示す連結元情報を含むノード情報が連続するネットワーク型個体構造情報を記憶する個体集団記憶部を有し、ネットワーク型個体構造を用いて進化計算を行なう進化計算システムとなるコンピュータに、以下の手順を実行させることを特徴とする
（１）個体集団記憶部に含まれる個体毎に、当該個体のネットワーク型個体構造情報に含まれるノード情報に含まれる連結元情報により特定されるノードから前の周期の演算で出力された演算結果データ、あるいは前記連結元情報により特定される学習用入力データを入力させて、前記ノード情報に含まれる演算子により特定される演算部による演算を、各ノードについて行なわせる周期単位の処理を複数回繰り返し、最終周期にいずれかのノードから出力された演算結果データと、学習用目標データを比較して、個体毎の適応度を計算する適応度計算手順
（２）適応度に基づいて、個体集団から個体を選択する個体選択手順
（３）選択した個体のネットワーク型個体構造情報に対して、複数の個体間で一部の情報を交換する交叉処理、あるいは一部の情報を変化させる突然変異処理を行い、次世代の個体集団の要素となる各個体のネットワーク型個体構造情報を求め、個体集団記憶部に記憶させる生殖手順。
【発明の効果】
【００１３】
本発明によれば、ネットワーク型の個体構造を定義し、各ノードの演算を行なう周期を繰り返すことにより、フィードバックのアルゴリズムを実現し、そのアルゴリズムを進化計算により最適化する。これにより、従来の木構造などの一過性の処理フローによるアルゴリズムでは解決できなかった系の安定に係る最適化問題を解決する。
【発明を実施するための最良の形態】
【００１４】
実施の形態１．
図１は、進化計算システムの構成を示す図である。進化計算システムは、初期個体入力部１０１、個体集団記憶部１０２、適応度計算部１０３、演算子テーブル１０４、学習用入力データ記憶部１０５、学習用目標データ記憶部１０６、適応度記憶部１０７、個体選択部１０８、選択個体記憶部１０９、生殖部１１０、及び学習個体出力部１１１を有している。
【００１５】
以下、進化計算システムによる進化計算アルゴリズムによる学習処理について説明する。図２は、進化計算アルゴリズムによる学習処理フローを示す図である。まず、初期個体入力部１０１による初期個体入力処理（Ｓ２０１）を行なう。この処理では、初期の個体集団を入力し、個体集団記憶部１０２に記憶させる。つまり、集団を構成する要素数の分、ネットワーク型の個体の構造を特定するネットワーク型個体構造情報（以下、ネットワーク型個体構造という。）を入力して、それらに個体識別情報（以下、個体ＩＤという。）を対応付けて、個体集団記憶部１０２に記憶させる。
【００１６】
ここで、本発明で入力されるネットワーク型個体構造について説明する。図３は、個体イのネットワーク型個体構造を示す図である。ネットワーク型個体構造は、当該ネットワークを構成するノード数分のノード情報を有している。ノード情報には、演算子と当該ノードへの入力元となるノードである連結元ノードのノードＮｏ（ノード識別子の例）を記憶している。連結元ノードＮｏの数は、演算子により特定される演算部で入力するデータ数以上である必要がある。この例では、演算子により特定される演算部で入力するデータ数の最大値が２であるので、２つの連結元ノードのノードＮｏを有している。この例では、ノードＮｏの昇順に、ノード情報を並べているが、ノードを特定できれば他の構成（例えば、ノードＮｏ自体をノード情報の項目に含める構成など）であっても構わない。
【００１７】
この例で、演算子Ｂに対応するＢ演算部と演算子Ｃに対応するＣ演算部は、ともに入力データ数が１であるので、第一連結元ノードＮｏのみを用いて、第二連結元ノードＮｏは使用しない。図中では説明の便宜の為に、使用しない連結元ノードＮｏにパターンを付している。演算子毎の入力データ数は、後述する演算子テーブルで管理している。
【００１８】
連結元ノードＮｏとしてＩＮと記述している場合は、学習用入力データ記憶部１０５に記憶している学習用入力データを当該演算子による演算部の入力データとして用いることを意味している。また、所定のノード（この例では、ノード１）が当該ネットワークの出力ノードとなる。この例によらず、ノード１以外のノード２〜ノード５のうちのいずれかを出力ノードとしてもよい。
【００１９】
尚、連結元ノードＮｏ（この例では、第一連結元ノードＮｏと第二連結元ノードＮｏ）は、複数の連結元情報の例である。
【００２０】
この例では、テーブルの形式で表現したが、文字列の形式で表現することもできる。個体イの例を文字列形式で示すと、Ａ（２，３）Ｂ（４，２）Ｃ（２，５）Ｄ（５，ＩＮ）Ｅ（５，ＩＮ）となる。演算子に続いて括弧内をカンマで区切って連結元ノードＮｏを複数記述したノード情報を、ノードＮｏの昇順にネットワークを構成するノード数分列記する。
【００２１】
演算子テーブル１０４の構成について説明する。図４は、演算子テーブルの例を示す図である。このテーブルは、演算子と当該演算子の連結数を対応付けて記憶し、これらの関係を定義している。演算子は、演算を行なう演算部を識別する識別子である。連結数は、演算子により特定される演算部に入力するデータ数を示している。例えば、演算として画像処理を行なう場合には、演算子によって画像処理フィルタを特定する。また、入力する画像データが１つで、出力する画像データ数が１つである「１入力１出力フィルタ」の例として、平均値フィルタ、最大値フィルタ、最小値フィルタ、反転フィルタなどがあり、これらは連結数が１と定義される。入力する画像データが２つで、出力する画像データ数が１つである「２入力１出力フィルタ」の例として、論理和フィルタ、論理積フィルタ、差別フィルタなどがあり、これらは連結数が２と定義される。
【００２２】
図５は、個体イのネットワーク構造イメージを示す図である。図３のネットワーク型個体構造の通り、出力ノードであるノード１は、ノード２とノード３の演算結果データを入力して演算子Ａに対応するＡ演算部による演算を行ない、ノード２は、ノード４の演算結果データを入力して演算子Ｂに対応するＢ演算部による演算を行ない、ノード３は、ノード２の演算結果データを入力して演算子Ｃに対応するＣ演算部による演算を行ない、ノード４は、ノード５の演算結果データと学習用入力データを入力して演算子Ｄに対応するＤ演算部による演算を行ない、ノード５は、ノード５自身の演算結果データと学習用入力データを入力して演算子Ｅに対応するＥ演算部による演算を行なうイメージを表している。
【００２３】
初期個体入力処理（図２のＳ２０１）の次に、適応度計算部１０３による適応度計算処理（図２のＳ２０２）を行なう。この処理では、個体集団記憶部１０２に記憶している各個体の適応度を計算する。適応度とは、初期入力値である学習用入力データを入力して、個体の構造により特定される演算手順に従って演算した結果である個体演算出力データが、最終的に目標とする学習用目標データに近似する程度を示す情報である。適応度は、個体ＩＤと対応付けて適応度記憶部１０７に記憶される。この適応度計算処理（Ｓ２０２）の詳細については後述する。
【００２４】
次に、個体選択部１０８による個体選択処理（図２のＳ２０３）を行なう。この処理では、各個体の適応度に基づいて、生殖処理の対象とする個体を所定の選択数分だけ選択する。例えば、適応度が大きい順に、選択数の個体を選択する。あるいは、選択数を、適応度の高い層の高適応個体選択数と、適応度の低い層の低適応個体選択数に分け、それぞれ、適応度の高い順に、高適応個体選択数の個体を選択し、更に適応度の低い順に、低適応個体選択数の個体を選択するように、適応度を層別し、各層からそれぞれの所定数分を選別するようにしてもよい。他にも、適応度に比例した確率で個体を選択するルーレット選択方法、適応度の順位に従って選択回数を決定するランク選択方法、個体集団からトーナメントサイズとして既定された数の個体をランダムに選択し、その中の最大適応度の個体をトーナメントの勝者として選択するトーナメント選択方法などもある。このようにして、選択された個体群のＩＤを、選択個体記憶部１０９に記憶させる。
【００２５】
次に、生殖部１１０による生殖処理（Ｓ２０４）を行なう。この処理では、選択された個体群から取り出した個体に対して、世代交代に係る構成の操作を施す。この例では、２つの個体間でノード情報列の一部を交換する交叉処理、ノード情報列の一部を変化させる突然変異処理、現在の固体構造を維持したまま存続させる延命処理を行なう。これらの処理により、所定次世代個体数の個体からなる次世代個体集団を生成し、それぞれ個体ＩＤと対応付けてネットワーク型個体構造を個体集団記憶部１０２に記憶させる。この生殖処理（Ｓ２０４）の詳細については、後述する。
【００２６】
そして、これらの世代交代処理（Ｓ２０２からＳ２０４）を繰り返し、世代交代終了判定部（図示せず）による世代交代終了判定処理（Ｓ２０５）により、継続と判定されると世代交代処理をループし、終了と判定されると世代交代処理のループを終了し、後処理に移行する。世代交代の終了は、例えば、世代数で判定する。世代交代処理の回数をカウントし、当該回数が所定の世代数に満たない場合は、継続と判定し、世代数に達した場合に、終了と判定する。あるいは、適応度が終了条件を満たした場合に、終了と判定することもできる。例えば、目標適応度と目標個体数を終了条件として設定し、目標適応度に達した個体数をカウントし、その数が目標個体数に達しない場合に継続と判定し、目標個体数に達した場合に終了と判定する。あるいは、世代交代処理の制限時間を設け、世代交代処理のループの間の処理時間を計測し、処理時間が制限時間に達しない場合に継続と判定し、制限時間に達した場合に終了と判定する。
【００２７】
後処理として、前述と同様に、最終世代の個体集団について適応度計算部１０３による適応度計算処理（Ｓ２０６）を行ない、学習個体出力部１１１による学習個体出力処理（Ｓ２０７）を行なう。学習個体出力処理では、最終世代の個体集団に含まれる各個体のネットワーク型個体構造と、当該個体の適応度を対応付けて出力する。つまり、個体集団記憶部１０２に記憶している個体ＩＤ毎に、当該ＩＤに対応するネットワーク型個体構造を取り出し、また当該ＩＤと対応付けられている適応度を適応度記憶部１０７から取り出し、取り出したネットワーク型個体構造と適応度を対応付けて、学習個体情報として出力する。その際、適応度をキーとして個体情報群をソートし、そのソート結果を出力することも有効である。
【００２８】
以下、図２に示した適応度計算処理（Ｓ２０２，Ｓ２０６）と生殖処理（Ｓ２０４）について順に詳述する。
【００２９】
まず、適応度計算処理（Ｓ２０２，Ｓ２０６）について説明する。図６は、適応度計算部の構成を示す図である。適応度計算部１０３は、個体演算部６０１（周期内前処理部６０２と周期内演算部６０５を含む。）、前周期演算結果テーブル６０３、本周期演算結果テーブル６０４、演算結果記憶部６０６、致死個体判定部６０７、及びデータ比較部６０８を有している。周期内演算部６０５は、各演算子に対応する演算部群を備えている。例えば、画像処理の場合には、画像加工の演算を識別する演算子に対応する画像処理フィルタ群を備えている。
【００３０】
図７は、適応度計算処理のフローを示す図である。個体集団記憶部１０２に記憶しているすべての個体に対して、個体演算処理（Ｓ７０２）、致死個体判定処理（Ｓ７０３）を行ない、正常個体の場合にはデータ比較処理（Ｓ７０４）を行なう。個体演算部６０１による個体演算処理（Ｓ７０２）では、初期入力値である学習用入力データを入力して、ネットワーク型個体構造により特定される演算手順に従って一連の演算を周期的に繰り返し、個体演算出力データを得る。例えば、画像処理を行なう場合には、画像処理対象である元画像データを入力し、ネットワーク状の連結関係にある画像処理フィルタによる演算処理を繰り返し施すことにより遷移的に画像データを加工し、画像処理後の加工画像データを、個体演算出力データとして出力する。致死個体判定部６０７による致死個体判定処理（Ｓ７０３）では、ネットワークの構成が不完全である為に個体演算出力データを得られない個体を致死個体と判定する。他方個体演算出力データを得られる場合は、正常個体と判定する。データ比較部６０８によるデータ比較処理（Ｓ７０４）では、個体演算出力データと学習用目標データを比較し、所定の基準に従って適応度を算出する。
【００３１】
尚、学習用入力データ記憶部１０５は、予め学習用入力データ入力部（図示せず）を介して入力された学習用入力データを記憶している。また、学習用目標データ記憶部１０６は、予め学習用目標データ入力部（図示せず）を介して入力された学習用目標データを記憶している。
【００３２】
図８は、演算結果記憶部の例を示す図である。演算子により特定される演算部による演算結果データを記憶するための記憶領域として演算結果バッファを複数有している。演算結果バッファは、それぞれを識別する演算結果バッファＩＤに対応付けて演算結果データを記憶するように構成されている。
【００３３】
前周期演算結果テーブル６０３は、当該周期の前の周期で求めた演算結果データを記憶させたバッファのＩＤを管理しているテーブルであり、本周期演算結果テーブル６０４は、当該周期で求める演算結果データを記憶させるバッファのＩＤを管理するテーブルである。図９は、前周期演算結果テーブルと本周期演算結果テーブルの初期状態の例を示す図である。いずれのテーブルもノードＮｏに対応付けて演算結果バッファＩＤを記憶できるように構成されている。当該ノードに関する演算結果データが得られていない場合には、未演算の旨を記憶している。従って、両テーブルともに初期状態では、すべての演算結果バッファＩＤを「未演算」とする。
【００３４】
まず、図７に示した個体演算処理（Ｓ７０２）について説明する。図１０は、個体演算処理のフローを示す図である。Ｓ１００２とＳ１００３により、周期単位の処理が行なわれ、所定の周期数のループを繰り返す。例えば、周期数が１０の場合には９回遷移し、第一周期から第十周期までの１０回の周期単位の処理が行なわれる。
【００３５】
図１１は、個体イによる演算と演算結果データのフローを示す図である。最下列は第一周期内の演算群を示している。そして昇順に各列が、第二周期以降の各周期内の演算群を示している。
【００３６】
図１０に従って説明する。所定の周期数分、以下の処理を繰り返す（Ｓ１００１）。周期内前処理部６０２による周期内前処理（Ｓ１００２）では、前周期演算結果テーブルを得る処理と、本周期演算結果テーブルを初期化する処理を行なう。具体的には、図１２を用いて詳述する。周期内演算部６０５による周期内演算処理（Ｓ１００３）では、ネットワーク型個体構造に従って、各ノードに対応する演算を行なう。詳しくは、図１３を用いて詳述する。そして、所定の周期数に達した時点でループ処理を終了する。（Ｓ１００４）
まず、図１０に示した周期内前処理（Ｓ１００２）について説明する。図１２は、周期内前処理のフローを示す図である。まず、本周期演算結果テーブルを前周期演算結果テーブルに複製し（Ｓ１２０１）、本周期演算結果テーブルのすべての演算結果バッファＩＤを「未演算」にする（Ｓ１２０２）。
【００３７】
次に、図１０に示した周期内演算処理（Ｓ１００３）について説明する。図１３は、周期内演算処理のフローを示す図である。ネットワーク型個体構造に含まれるノード情報毎に以下の処理を繰り返す（Ｓ１３０１）。入力データ条件判定処理（Ｓ１３０２）では、当該ノードの演算子で特定する演算部に入力するデータの条件を判定する。入力データがすべて得られる場合には「適合」と判定し、一部の入力データのみが得られる場合に「部分不適合」と判定し、入力データが一切得られない場合には「完全不適合」と判定する。詳しくは、図１４を用いて詳述する。「適合」と判定した場合には通常演算処理（Ｓ１３０３）を行ない、「部分不適合」と判定した場合には仮演算処理（Ｓ１３０４）を行ない、「完全不適合」と判定した場合には演算を行なわない。そして、ネットワーク型個体構造に含まれるすべてのノード情報について処理した時点で終了する（Ｓ１３０５）。通常演算処理（Ｓ１３０３）と仮演算処理（Ｓ１３０４）については、それぞれ図１５と図１６を用いて後述する。
【００３８】
図１４は、入力データ条件判定処理のフローを示す図である。演算子テーブル１０４から、当該ノード情報に含まれる演算子に対応する連結数を取得し（Ｓ１４０１）、連結数分の連結元ノードＮｏについて、以下の処理を繰り返す（Ｓ１４０２）。例えば、図３に示した個体イのノード１の場合には、演算子Ａの連結数は、図４の演算子テーブル１０４に示すように２であるので、順にノード情報に含まれる第一連結元ノードＮｏと第二連結元ノードＮｏについて処理を繰り返す。連結数が１の場合には、第一連結元ノードＮｏについてのみ処理を行なう。
【００３９】
当該連結元ノードＮｏがＩＮの場合には（Ｓ１４０３）、学習用入力データを入力するので「入力データ有り」と判定する（Ｓ１４０４）。当該連結元ノードＮｏがいずれかのノードＮｏの場合には、前周期演算結果テーブル６０３に従って入力データが得られるかを判定する。その為に、前周期演算結果テーブル６０３から連結元ノードＮｏに対応する演算結果バッファＩＤを取得する（Ｓ１４０５）。そして、取得した演算結果バッファＩＤがいずれかのバッファＩＤの場合（Ｓ１４０６）、つまりバッファＩＤが設定されている場合には、当該バッファの演算結果データを入力するので「入力データ有り」と判定する（Ｓ１４０４）。一方、取得した演算結果バッファＩＤが「未演算」の場合、つまりバッファＩＤが設定されていない場合には、入力する演算結果データが無いので「入力データ無し」と判定する（Ｓ１４０７）。
【００４０】
すべての連結元ノードＮｏについて判定し（Ｓ１４０８）、それらの連結元ノードＮｏについてすべて「入力データ有り」と判定した場合には、判定結果を「適合」とする（Ｓ１４１０）。他方、それらの連結元ノードＮｏについてすべて「入力データ無し」と判定した場合には（Ｓ１４０９）、判定結果を「完全不適合」とする（Ｓ１４１２）。そして、「入力データ有り」と「入力データ無し」の判定が混在する場合には（Ｓ１４０９）、判定結果を「部分不適合」とする（Ｓ１４１１）。
【００４１】
次に、通常演算処理（Ｓ１３０３）について説明する。図１５は、通常演算処理のフローを示す図である。入力データ条件判定処理（図１４）のＳ１４０１，Ｓ１４０２と同様に、連結数分の連結元ノードＮｏについて、以下の処理を繰り返す（Ｓ１５０１）。ノード情報に含まれる連結元ノードＮｏがＩＮの場合には（Ｓ１５０２）、学習用入力データ記憶部１０５を入力元とする（Ｓ１５０３）。他方連結元ノードＮｏがいずれかのノードＮｏの場合には（Ｓ１５０２）、前周期演算結果テーブル６０３から連結元ノードＮｏに対応する演算結果バッファＩＤを取得し、その演算結果バッファＩＤを入力元とする（Ｓ１５０４）。すべての連結元ノードＮｏについて処理した後（Ｓ１５０５）、前周期演算結果テーブル６０３と本周期演算結果テーブル６０４のいずれにも設定されていない未使用の演算結果バッファＩＤを特定し、その未使用の演算結果バッファＩＤを出力先とする（Ｓ１５０６）。そして、これらの入力元と出力先を指定して、当該ノードの演算子に対応する演算部を起動する（Ｓ１５０７）。そして、出力先の演算結果バッファＩＤを当該ノードＮｏに対応付けて本周期演算結果テーブル６０４に書き込む（Ｓ１５０８）。
【００４２】
次に、仮演算処理（Ｓ１３０４）について説明する。図１６は、仮演算処理のフローを示す図である。Ｓ１６０１〜Ｓ１６０６は、通常演算処理の図１５のＳ１５０１〜Ｓ１５０６と同様である。Ｓ１６０７では、入力元と出力先を指定して、所定の仮演算に対応する演算部を起動する。所定の仮演算として、例えば複製部を起動する。この場合には、入力データを加工せずにそのまま出力することになる。
【００４３】
ここで、個体イ（図３、図５）についての個体演算処理の動作例を説明する。第一周期では、ＩＮ以外に入力データは得られない。従って、ノード１〜ノード３は「完全不適合」になり、演算を行なわない。一方ノード４とノード５は、「部分適合」なので仮演算を行なう。図１１では、通常演算を実線の円で、仮演算を破線の円で表している。そして、前周期演算結果テーブル６０３と本周期演算結果テーブル６０４は、図１７のようになる。
【００４４】
第二周期では、まず周期内前処理（Ｓ１００２）で、図１７の本周期演算結果テーブル６０４を図１８に示すように前周期演算結果テーブル６０３へ複製する。ＩＮとノード４とノード５について入力データが得られる。従って、ノード１とノード３は、「完全不適合」なので演算を行なわないが、ノード２、ノード４及びノード５は、「適合」なので通常演算を行なう。
【００４５】
第三周期では、周期内前処理（Ｓ１００２）で図１８の本周期演算結果テーブル６０４を図１９に示すように前周期演算結果テーブル６０３へ複製する。ＩＮとノード２とノード４とノード５について入力データが得られる。従って、ノード２〜ノード５は「適合」なので通常演算を行い、ノード１は「部分不適合」なので仮演算を行なう。
【００４６】
第四周期では、周期内前処理（Ｓ１００２）で図１９の本周期演算結果テーブル６０４を図２０に示すように前周期演算結果テーブル６０３へ複製する。ＩＮとすべてのノードについて入力データを得られるので、ノード１〜ノード５すべてが「適合」となり通常演算を行う。
【００４７】
次に、図７に示した致死個体判定処理（Ｓ７０３）について詳述する。図２１は、致死個体判定処理のフローを示す図である。本周期演算結果テーブル６０４の所定の出力ノード（この例では、ノード１）に対応する演算結果バッファＩＤを取得する（Ｓ２１０１）。そして、取得した演算結果バッファＩＤがいずれかのバッファＩＤの場合には（Ｓ２１０２）、演算結果データが得られるので、判定結果を正常個体とする（Ｓ２１０３）。他方取得した演算結果バッファＩＤが「未演算」の場合には（Ｓ２１０２）、演算結果データが得られないので、判定結果を致死個体とする（Ｓ２１０４）。
【００４８】
次に、図７に示したデータ比較処理（Ｓ７０４）について詳述する。この処理では、個体演算出力データと学習用目標データを比較し、所定の基準に従って、適応度を算出する。適応度とは、データの特性に応じて判断される近似する程度のことである。一般には、データ間の差分を求め、差分が小さいほど適応度を大きくする。画像処理の場合、例えば画素毎の輝度の差分を算出し、その差分の総和が少ないほど適応度が大きいと判断する方法や、画素毎の輝度の差分を算出し、その差分が基準値を超えている画素数をカウントし、その輝度差が基準と超えている画素数が少ないほど適応度が大きいと判断する方法などがある。以上で、適応度計算処理（Ｓ２０２）の説明を終える。
【００４９】
次に、図２に示した生殖処理（Ｓ２０４）について説明する。図２２は、生殖処理のフローを示す図である。まず、個体数決定部（図示せず）により、交叉処理により得る個体数と、突然変異処理により得る個体数と、延命処理により得る個体数を決定する（Ｓ２２０１）。これらの個体数の合計は、次世代の個体の総数となる。これらの個体数は、予め決められた定数を用いる方法や、乱数等に基づいて都度決定する方法がある。
【００５０】
交叉部（図示せず）により、２つの個体間でノード情報列の一部を交換する交叉処理（Ｓ２２０２）と、突然変異部（図示せず）により、ノード情報列の一部を変化させる突然変異処理（Ｓ２２０３）と、延命部（図示せず）により、現在の個体構造を維持したまま存続させる延命処理（Ｓ２２０４）を行なう。これらの処理は、独立しており、処理の順序は必ずしも限定されない。これらの処理により次世代の個体が得られると、個体集団更新部（図示せず）により、個体集団更新処理（Ｓ２２０５）を行なう。この処理では、現世代の個体に関する個体ＩＤとネットワーク型個体構造を消去し、次世代の各個体について個体ＩＤに対応付けてネットワーク型個体構造を個体集団記憶部１０２に記憶させる。つまり、現世代の個体集団から次世代の個体集団に更新する。
【００５１】
前述の交叉処理（Ｓ２２０２）について説明する。図２３は、交叉処理のフローを示す図である。所定の個体数に至るまで、交叉により新たな個体を得る処理を繰り返す（Ｓ２３０１）。まず、交叉させる２つの個体を特定する（Ｓ２３０２）。選択個体記憶部１０９に記憶している選択された個体の中から、２つの個体を選択する。一般的には、乱数等を用いて不規則に選択する。同一の個体を繰り返し選択することを許す方法や、繰り返し選択しない方法がある。次に、交叉点の数を特定する（Ｓ２３０３）。交叉点は、ノード情報単位（ノードに関する演算子と連結元ノードＮｏを含む単位）で区切りとなる点とする。つまり、ノード情報単位の先頭位置を交叉点とする。交叉点が１つの場合には、その交叉点より後のノード情報列を交換する。交叉点が２つの場合には、交叉点の間のノード情報列を交換する。交叉点が３つ以上の場合は、複数のノード情報列を交換する。交叉点の数は、予め定めた固定数でもよいし、都度乱数等を用いて不規則の数を求めてもよい。その数分の交叉点を選択する（Ｓ２３０４）。ネットワーク型個体構造に含まれるノード数以下の範囲で、乱数等を用いて不規則に交叉点の位置を決定する。交叉点の位置は、２つの個体で共通にする方法と、それぞれ独立に決める方法がある。そして、交叉点間のノード情報列を交換する（Ｓ２３０５）。１番目と２番目の交叉点の間、３番目と４番目の交叉点の間と、順に次の交叉点との間のノード情報列を交換し、交叉点の数が奇数の場合には、最後の交叉点から最終ノード情報までを交換する。一般には、交叉された２つの個体を次世代に残すが、一方のみを残す方法もある。このようにして、交叉により得る個体を特定し、生殖部の内部に一時的にそのネットワーク型個体構造を記憶する（Ｓ２３０６）。これらの処理を繰り返し、所定の個体数を得た時点で終了する（Ｓ２３０７）。
【００５２】
この例では、２つの個体間で一部の情報を交換したが、３つ以上の個体間で情報を交換してもよい。
【００５３】
交叉させるノード情報列の要素数は１以上であり、要素単独つまり一つのノード情報を交換する場合もある。
【００５４】
交叉処理の具体例を示す。前述の個体イ（図３、図５）と以下に示す個体ロ（図２４、図２５）を交叉処理して、子個体ハ（図２６、図２７）と子個体ニ（図２８、図２９）を生成する。図２４は、個体ロのネットワーク型個体構造を示す図であり、図２５は、個体ロのネットワーク構造イメージを示す図である。個体ロを文字列形式で示すと、Ｆ（３，４）Ｇ（１，４）Ｈ（５，ＩＮ）Ｉ（２，５）Ｊ（ＩＮ，４）となる。交叉点を３として、ノード１とノード２のノード情報の間（ノード２のノード情報の先頭位置）、ノード２とノード３のノード情報の間（ノード３のノード情報の先頭位置）、ノード４とノード５のノード情報の間（ノード５のノード情報の先頭位置）に交叉点を選択して、ノード情報列を交換する。
【００５５】
その結果、以下に示す子個体ハと子個体ニが得られる。図２６は、子個体ハのネットワーク型個体構造を示す図であり、図２７は、子個体ハのネットワーク構造イメージを示す図である。子個体ハを文字列形式で示すと、Ａ（２，３）Ｇ（１，４）Ｃ（２，５）Ｄ（５，ＩＮ）Ｊ（ＩＮ，４）となる。図２８は、子個体ニのネットワーク型個体構造を示す図であり、図２９は、子個体ニのネットワーク構造イメージを示す図である。子個体ニを文字列形式で示すと、Ｆ（３，４）Ｂ（４，２）Ｈ（５，ＩＮ）Ｉ（２，５）Ｅ（５，ＩＮ）となる。
【００５６】
続いて、前述の突然変異処理（Ｓ２２０３）について説明する。図３０は、突然変異処理のフローを示す図である。所定の個体数に至るまで、突然変異により新たな個体を得る処理を繰り返す（Ｓ３００１）。まず、突然変異処理させる個体を特定する（Ｓ３００２）。選択個体記憶部１０７に記憶している選択された個体の中から、１つの個体を選択する。一般的には、乱数等を用いて不規則に選択する。同一の個体を繰り返し選択することを許す方法や、繰り返し選択しない方法がある。次に、突然変異範囲の数を特定する（Ｓ３００３）。突然変異範囲の数は、予め定めた固定数でもよいし、都度乱数等を用いて不規則の数を求めてもよい。その数の突然変異範囲を選択する（Ｓ３００４）。突然変異範囲は、ノード情報単位に限らず、ノード情報に含まれる演算子あるいは連結元ノードＮｏを単位として区切ることも有効である。範囲の大きさは、予め定めた固定数でもよいし、都度乱数等を用いて不規則の数を求めてもよい。範囲の位置は、乱数等を用いて不規則に決定する。次に、置き換える代替情報（ノード情報、演算子、あるいは連結元ノードＮｏ）を特定する（Ｓ３００５）。突然変異範囲内の演算子に対しては、不規則に選ばれた演算子を代替情報として用い、突然変異範囲内の連結元ノードＮｏに対しては、不規則に選ばれた連結元ノードＮｏを代替情報として用いる。一般には、都度乱数等を用いて決定する。そして、ネットワーク型個体構造の突然変異範囲を代替情報に置き換える（Ｓ３００６）。このようにして、突然変異により得る個体を特定し、生殖部の内部に一時的にそのネットワーク型個体構造を記憶する。これらの処理を繰り返し、所定の個体数を得た時点で終了する（Ｓ３００７）。
【００５７】
突然変異処理の具体例を示す。前述の個体イ（図３、図５）を突然変異処理して、子個体ホ（図３１、図３２）を生成する。個体イのうち、ノード３のノード情報に含まれる演算子と第一連結元ノードＮｏの範囲、及びノード４のノード情報に含まれる演算子と第一連結元ノードＮｏの範囲を、それぞれ代替情報である演算子ＨとノードＮｏ５、及び演算子ＧとノードＮｏ２に置き換える。その結果、図３１と図３２に示す子個体ホが得られる。図３１は、子個体ホのネットワーク型個体構造を示す図であり、図３２は、子個体ホのネットワーク構造イメージを示す図である。子個体ホを文字列形式で示すと、Ａ（２，３）Ｂ（４，２）Ｈ（５，５）Ｇ（２，ＩＮ）Ｅ（５，ＩＮ）となる。
【００５８】
続いて、前述の延命処理（Ｓ２２０４）について説明する。図３３は、延命処理のフローを示す図である。所定の個体数を得るまで、延命により新たな個体を得る処理を繰り返す（Ｓ３３０１）。選択個体記憶部１０７に記憶している個体の中から、１つの個体を選択する。一般的には、乱数等を用いて不規則に選択する。同一の個体を繰り返し選択することを許す方法や、繰り返し選択しない方法がある。それを延命処理させる個体として、生殖部の内部に一時的にそのネットワーク型個体構造を記憶する。この処理を繰り返し、所定の個体数を得た時点で終了する（Ｓ３３０３）。
【００５９】
個体集団更新処理（Ｓ２２０５）では、交叉処理、突然変異処理、及び延命処理で生殖部の内部に一時的に記憶したネットワーク型個体情報に、新たな個体ＩＤを付し、その個体ＩＤとネットワーク型個体情報を対応付けて、個体集団記憶部１０２に記憶させ、次世代の個体集団に更新する。
【００６０】
続いて、本発明で扱うネットワーク型個体情報の特徴について説明する。上述のように、本発明では、ネットワークに含まれる各ノードの演算を行なう周期単位の処理を繰り返すことにより演算結果データを遷移させているが、このネットワークにフィードバックとなる連結関係が含まれている場合には、特定の演算あるいは特定の部分木を構成する演算群の演算結果データを、同演算あるいは同演算群で入力データとして用いて同じ処理を繰り返す現象が表れる。
【００６１】
例えば図１１に示した個体イによる演算のうち、出力ノードから順に連結元のノードを遡って抽出すると、図３４に示す木構造の演算により個体イのファンクションを表現することができる。図３４は、個体イによるファンクション構造を示す図である。演算子Ｅの演算が繰り返され、それぞれ前の演算の結果を入力していることが分かる。このように、自らの演算結果に基づいて演算を繰り返す構成となるのは、図５に示すノード５で自らを連結元としているフィードバックの構造に起因している。
【００６２】
更に、個体ロ（図２４、図２５）を例として説明する。前述の手順に従って、個体演算を行なうと、図３５と図３６に示す演算が行なわれ、同図のように演算結果データが流れる。図３５と図３６は、個体ロによる演算と演算結果データのフローを示す図である。これらの演算のうち、出力ノードから順に連結元のノードを遡って抽出すると、図３７に示す木構造の演算により個体ロのファンクションを表現することができる。図中破線で囲む一連の演算からなる部分木が、繰り返し表れている。この部分木を演算子Ｘで置き換えると、図３８に示す構造で個体ロのファンクションを表すことができる。演算子Ｘは、２周期前の演算子Ｘによる演算結果データと、３周期前の演算子Ｘによる演算結果データを入力している。このように部分木の演算群を繰り返すのは、図２５に示すようにノード５、ノード３、ノード１、ノード２、ノード４の流れに対して、ノード４からノード１へのフィードバックとノード４からノード２へのフィードバックが含まれていることに起因している。図３７と図３８は、個体ロによるファンクション構造を示す図である。
【００６３】
交叉処理により得た子個体ハと子個体ニについても考察する。子個体ハ（図２６、図２７）を前述の手順に従って、個体演算処理を行なうと、図３９と図４０に示す演算が行なわれ、同図のように演算結果データが流れる。図３９と図４０は、子個体ハによる演算と演算結果データのフローを示す図である。これらの演算のうち、出力ノードから順に連結元のノードを遡って抽出すると、図４１に示す木構造の演算により個体ロのファンクションを表現することができる。図中破線で囲む一連の演算からなる部分木が、繰り返し表れている。この部分木を演算子Ｙで置き換えると、図４２に示す構造で個体ロのファンクションを表すことができる。演算子Ｙは、２周期前の演算子Ｙによる演算結果データと、３周期前の演算子Ｙによる演算結果データを入力している。このように部分木の演算群を繰り返すのは、図２７に示すようにノード５、ノード４、ノード２、ノード３、ノード１の流れに対して、ノード１からノード２へのフィードバックが含まれていることに起因している。尚、図４２の一点鎖線で示した演算子とデータフローの矢印は、規則性の理解の助けとするために参考として記述したものであって、ファンクションの構成には含まれない。図４１と図４２は、個体ロによるファンクション構造を示す図である。
【００６４】
子個体ニ（図２６、図２７）については、図４３に示す演算が行なわれ、同図のように演算結果データが流れる。図４３は、子個体ニによる演算と演算結果データのフローを示す図である。また、ファンクションは、図４４のようになる。図４４は、子個体ニによるファンクション構造を示す図である。ノード２とノード４については、入力データが得られないので演算が行なわれない。
【００６５】
突然変異処理により得た子個体ホについても考察する。子個体ホ（図３１、図３２）を前述の手順に従って、個体演算を行なうと、図４５に示す演算が行なわれ、同図のように演算結果データが流れる。図４５は、子個体ホによる演算と演算結果データのフローを示す図である。これらの演算のうち、出力ノードから順に連結元のノードを遡って抽出すると、図４６に示す木構造の演算により個体ロのファンクションを表現することができる。図中破線で囲む一連の演算からなる部分木が、繰り返し表れている。この部分木を演算子Ｚで置き換えると、図４７に示す構造で個体ホのファンクションを表すことができる。演算子Ｚは、１周期前の演算子Ｚによる演算結果データを入力している。このように部分木の演算群を繰り返すのは、図３２に示すようにノード４、ノード２、ノード１の流れに対して、ノード２からノード４へのフィードバックが含まれていることに起因している。図４７は、個体ホによるファンクション構造を示す図である。
【００６６】
本発明では上述のように、ネットワーク型に個体構造を定義し、進化計算過程の各個体の適応度計算で、ネットワーク構造に従って、各ノードの演算で前の周期で算出した他のノードあるいは自身ノードの演算結果データを入力して演算結果を得る周期単位の処理を繰り返す。そして、最終の周期に所定の出力ノードから得た演算結果データを、目標データと比較することにより、適応度を算出する。これにより、フィードバックを含むアルゴリズムを評価することができるようになる。
【００６７】
実施の形態２．
前述の周期内前処理（図１０のＳ１００２）では、前周期演算結果テーブル６０３と本周期演算結果テーブル６０４で各周期の処理を制御したが、各周期の演算結果テーブルを設けて制御することもできる。
【００６８】
例えば、前周期演算結果テーブル（本周期演算結果テーブルも同様）と同様の構成の周期別の演算結果テーブル（初期状態で全て「未演算」）を周期数ｎ（遷移回数＋１）分、各周期（ｓ＝１，２，３，・・・ｎ）と対応付けて設ける。また、第一周期の前周期演算結果テーブル用に初期状態の周期演算結果テーブル（全て「未演算」、ｓ＝０とする。）を設ける。
【００６９】
そして、図１０のＳ１００１からＳ１００４のループ処理の巡数（ｔ＝０，１，２，・・・ｎ−１）に基づいて演算結果テーブルを特定する。Ｓ１００１でｔを特定し、Ｓ１００２の周期内前処理で前周期演算結果テーブルと本周期演算結果テーブルを判定する。具体的には、ｓ＝ｔに対応する演算結果テーブルを前周期演算結果テーブルとして用い、ｓ＝ｔ＋１に対応する演算結果テーブルを本周期演算結果テーブルとして用いる。
【００７０】
実施の形態３．
上述の入力データ条件判定処理（図１３のＳ１３０２）では、前周期演算結果テーブル６０３に基づいて入力データの有無を判定したが、ＩＮから各ノードへのパスに含まれる連結数に基づいて入力データの有無を判定してもよい。
【００７１】
例えば、各ノードについて連結元ノードＮｏを順に遡ることによってＩＮからのパスに含まれる連結数を算出し、図１０のＳ１００１からＳ１００４のループ処理の巡数をｔ＝０，１，２，・・・ｎ−１とした場合に、すべてのパスの連結数がｔ＋１以下であるノードを「適合」と判定し、一部のパスの連結数がｔ＋１以下であるノードを「部分不適合」と判定し、いずれのパスの連結数もｔ＋１以下でないノードを「完全不適合」と判定する。
【００７２】
実施の形態４．
周期内演算処理（図１０のＳ１００３）で行なわれる各ノードの演算子に対応する演算部による処理は、周期内演算処理中にすべて終了していれば足り、並行処理であっても逐次処理であっても構わない。
【００７３】
例えば、各演算部が並行処理できる場合には、通常演算処理（図１５）のＳ１５０７で起動した演算部の処理終了を待たずにＳ１５０８に移行し、また仮演算処理（図１６）のＳ１６０７でも起動した演算部の処理終了を待たずにＳ１６０８に移行する。そして、図１３のＳ１３０５で起動したすべての演算部の処理終了を待って、周期内演算処理を終わらせる。
【００７４】
他方、各演算部が並行処理できない場合には、通常演算処理（図１５）のＳ１５０７で起動した演算部の処理終了を待ってＳ１５０８に移行し、また仮演算処理（図１６）Ｓ１６０７でも起動した演算部の処理終了を待ってＳ１６０８に移行する。
【００７５】
実施の形態５．
上述の例では、周期内演算処理（図１３）で一部の入力データが得られない「部分不適合」の場合に仮演算処理を行なったが、入力データ条件判定処理（Ｓ１３０２）で一部でも入力データが得られないは「不適合」と判定し、「部分不適合」に相当する場合も「完全不適合」と同様に当該ノードの演算を行なわないようにすることもできる。
【００７６】
実施の形態６．
上述の例では、仮演算処理（図１６）のＳ１６０７における演算子による演算以外の仮演算の例として複製処理を示したが、反転処理や所定の仮演算結果データを出力する処理など、他の演算を仮演算としても構わない。
【００７７】
実施の形態７．
上述の例では、図７に示すように出力ノードからの演算結果データが得られない個体を致死個体と判定し、データ比較の対象から除外し適応度を算出しなかったが、図７の致死個体判定処理（Ｓ７０３）で致死個体と判定した場合に、適応度の所定の値（例えば、最低値）を割り当てて個体ＩＤと対応付けて適応度記憶部１０７に記憶させるようにしてもよい。
【００７８】
実施の形態８．
上述の交叉処理では、ノード情報単位を区切りとして交叉点を設けたが、ノード情報内に交叉点を設けることもできる。例えば、演算子と第一連結元ノードＮｏの間、あるいは第一連結元ノードＮｏと第二連結元ノードＮｏの間に交叉点を設けることもできる。但し、交叉対象の他のネットワーク型個体構造についても、構造上同様の区切りの箇所に交叉点を設ける。
【００７９】
実施の形態９．
上述の例では、ノード情報に２つの連結元ノードＮｏ（連結元情報の例）を設けたが、演算部が３以上のデータを入力する場合には、連結元ノードＮｏは３以上となる。このように、連結元ノードＮｏを複数設ける場合には、複雑なネットワークを構成することができる。
【００８０】
一方、入力するデータが１つの演算のみを用いる場合には、連結元ノードＮｏの数は、１となる。この場合にもリング状の連結から、フィードバックの機能を発揮することができる。
【００８１】
進化計算システムは、コンピュータであり、各要素はプログラムにより処理を実行することができる。また、プログラムを記憶媒体に記憶させ、記憶媒体からコンピュータに読み取られるようにすることができる。
【図面の簡単な説明】
【００８２】
【図１】進化計算システムの構成を示す図である。
【図２】進化計算アルゴリズムによる学習処理フローを示す図である。
【図３】個体イのネットワーク型個体構造を示す図である。
【図４】演算子テーブルの例を示す図である。
【図５】個体イのネットワーク構造イメージを示す図である。
【図６】適応度計算部の構成を示す図である。
【図７】適応度計算処理のフローを示す図である。
【図８】演算結果記憶部の例を示す図である。
【図９】前周期演算結果テーブルと本周期演算結果テーブルの初期状態の例を示す図である。
【図１０】個体演算処理のフローを示す図である。
【図１１】個体イによる演算と演算結果データのフローを示す図である。
【図１２】周期内前処理のフローを示す図である。
【図１３】周期内演算処理のフローを示す図である。
【図１４】入力データ条件判定処理のフローを示す図である。
【図１５】通常演算処理のフローを示す図である。
【図１６】仮演算処理のフローを示す図である。
【図１７】前周期演算結果テーブルと本周期演算結果テーブルの第一周期後の例を示す図である。
【図１８】前周期演算結果テーブルと本周期演算結果テーブルの第二周期後の例を示す図である。
【図１９】前周期演算結果テーブルと本周期演算結果テーブルの第三周期後の例を示す図である。
【図２０】前周期演算結果テーブルと本周期演算結果テーブルの第四周期後の例を示す図である。
【図２１】致死個体判定処理のフローを示す図である。
【図２２】生殖処理のフローを示す図である。
【図２３】交叉処理のフローを示す図である。
【図２４】個体ロのネットワーク型個体構造を示す図である。
【図２５】個体ロのネットワーク構造イメージを示す図である。
【図２６】子個体ハのネットワーク型個体構造を示す図である。
【図２７】子個体ハのネットワーク構造イメージを示す図である。
【図２８】子個体ニのネットワーク型個体構造を示す図である。
【図２９】子個体ニのネットワーク構造イメージを示す図である。
【図３０】突然変異処理のフローを示す図である。
【図３１】子個体ホのネットワーク型個体構造を示す図である。
【図３２】子個体ホのネットワーク構造イメージを示す図である。
【図３３】延命処理のフローを示す図である。
【図３４】個体イによるファンクション構造を示す図である。
【図３５】個体ロによる演算と演算結果データのフロー（１／２）を示す図である。
【図３６】個体ロによる演算と演算結果データのフロー（２／２）を示す図である。
【図３７】個体ロによるファンクション構造を示す図である。
【図３８】個体ロによるファンクション構造を示す図である。
【図３９】子個体ハによる演算と演算結果データのフロー（１／２）を示す図である。
【図４０】子個体ハによる演算と演算結果データのフロー（２／２）を示す図である。
【図４１】子個体ハによるファンクション構造を示す図である。
【図４２】子個体ハによるファンクション構造を示す図である。
【図４３】子個体ニによる演算と演算結果データのフローを示す図である。
【図４４】子個体ニによるファンクション構造を示す図である。
【図４５】子個体ホによる演算と演算結果データのフローを示す図である。
【図４６】子個体ホによるファンクション構造を示す図である。
【図４７】子個体ホによるファンクション構造を示す図である。
【符号の説明】
【００８３】
１０１  初期個体入力部、１０２  個体集団記憶部、１０３  適応度計算部、１０４  演算子テーブル、１０５  学習用入力データ記憶部、１０６  学習用目標データ記憶部、１０７  適応度記憶部、１０８  個体選択部、１０９  選択個体記憶部、１１０  生殖部、１１１  学習個体出力部、６０１  個体演算部、６０２  周期内前処理部、６０３  前周期演算結果テーブル、６０４  本周期演算結果テーブル、６０５  周期内演算部、６０６  演算結果記憶部、６０７  致死個体判定部、６０８  データ比較部。
【図１】
2008015817.tif 000003
【図２】
2008015817.tif 000004
【図３】
2008015817.tif 000005
【図４】
2008015817.tif 000006
【図５】
2008015817.tif 000007
【図６】
2008015817.tif 000008
【図７】
2008015817.tif 000009
【図８】
2008015817.tif 000010
【図９】
2008015817.tif 000011
【図１０】
2008015817.tif 000012
【図１１】
2008015817.tif 000013
【図１２】
2008015817.tif 000014
【図１３】
2008015817.tif 000015
【図１４】
2008015817.tif 000016
【図１５】
2008015817.tif 000017
【図１６】
2008015817.tif 000018
【図１７】
2008015817.tif 000019
【図１８】
2008015817.tif 000020
【図１９】
2008015817.tif 000021
【図２０】
2008015817.tif 000022
【図２１】
2008015817.tif 000023
【図２２】
2008015817.tif 000024
【図２３】
2008015817.tif 000025
【図２４】
2008015817.tif 000026
【図２５】
2008015817.tif 000027
【図２６】
2008015817.tif 000028
【図２７】
2008015817.tif 000029
【図２８】
2008015817.tif 000030
【図２９】
2008015817.tif 000031
【図３０】
2008015817.tif 000032
【図３１】
2008015817.tif 000033
【図３２】
2008015817.tif 000034
【図３３】
2008015817.tif 000035
【図３４】
2008015817.tif 000036
【図３５】
2008015817.tif 000037
【図３６】
2008015817.tif 000038
【図３７】
2008015817.tif 000039
【図３８】
2008015817.tif 000040
【図３９】
2008015817.tif 000041
【図４０】
2008015817.tif 000042
【図４１】
2008015817.tif 000043
【図４２】
2008015817.tif 000044
【図４３】
2008015817.tif 000045
【図４４】
2008015817.tif 000046
【図４５】
2008015817.tif 000047
【図４６】
2008015817.tif 000048
【図４７】
2008015817.tif 000049