(57)【特許請求の範囲】
【請求項１】
遺伝的アルゴリズムに基づいて最適化問題を解く遺伝的アルゴリズム実行装置であって、
解候補集団を構成する複数の文字列に対して、各文字位置毎に文字分布を計算する文字分布計算手段と、
該文字分布を用いて各文字位置毎に乱雑度を求め、求めた乱雑度に基づいて各文字位置毎に変異率を設定する変異率計算手段と、
該変異率に応じて解候補に対して突然変異を実行し、新たな解候補を作成する突然変異処理手段とを備え、
前記変異率計算手段は、前記乱雑度がより大きい文字位置の変異率をより高く設定するか、あるいは前記乱雑度がより小さい文字位置の変異率をより低く設定する、
ことを特徴とする遺伝的アルゴリズム実行装置。
【請求項２】
さらに、前記文字分布計算手段が計算した文字分布を記録する文字分布記録手段を備えており、
前記変異率計算手段は、該文字分布記録手段に記録された文字分布に基づいて前記乱雑度を求める、
ことを特徴とする請求項１に記載の遺伝的アルゴリズム実行装置。
【請求項３】
さらに、解候補集団の世代数をカウントする世代数カウント手段と、
前記文字分布計算手段が求めた文字分布および該世代数カウント手段によるカウント値のうちの少なくとも一方を用いて、遺伝的アルゴリズムによる計算処理を終了させるかどうかを判断する終了条件評価手段と、
を備えることを特徴とする、請求項１に記載の遺伝的アルゴリズム実行装置。
【請求項４】
前記終了条件評価手段は、前記文字分布計算手段が計算した文字分布の偏り具合が所定の値以下であることを判断した場合、遺伝的アルゴリズムによる計算処理を終了させる、
ことを特徴とする請求項３に記載の遺伝的アルゴリズム実行装置。
【請求項５】
さらに、該文字分布を用いて各文字位置毎に乱雑度を求め、所定の値よりも高い乱雑度をもつ文字位置を選択する文字位置選択手段と、
該複数の文字列における該選択した文字位置の文字を変更して、新たな解候補を作成する組み合せ生成手段と、
を備えることを特徴とする、請求項１に記載の遺伝的アルゴリズム実行装置。
【請求項６】
前記組み合せ生成手段は、前記複数の文字列のそれぞれに対して、前記選択した文字位置の文字を設定可能な文字に置き換えた文字列の全ての組み合わせを設定し、設定した組み合わせの中から評価値の高い文字列を選択して、新たな解候補集団を作成する、
ことを特徴とする請求項５に記載の遺伝的アルゴリズム実行装置。
【請求項７】
前記文字位置選択手段は、前記所定の値よりも高い乱雑度をもつ文字位置の数が所定の数よりも多かった場合、乱雑度が高い文字位置から該所定の数分の文字位置を選択する、
ことを特徴とする請求項５に記載の遺伝的アルゴリズム実行装置。
【請求項８】
遺伝的アルゴリズムに基づいて最適化問題を解くための遺伝的アルゴリズム実行プログラムを記録した記憶媒体であって、
前記遺伝的アルゴリズム実行プログラムはコンピュータを
解候補集団を構成する複数の文字列に対して、各文字位置毎に文字分布を計算する文字分布計算手段と、
該文字分布を用いて各文字位置毎に乱雑度を求め、求めた乱雑度に基づいて各文字位置毎に変異率を設定する変異率計算手段と、
該変異率に応じて解候補に対して突然変異を実行し、新たな解候補を作成する突然変異処理手段として機能させるためのプログラムであって、
前記変異率計算手段では、乱雑度がより大きい文字位置の変異率がより高く設定されるか、あるいは乱雑度がより小さい文字位置の変位率がより低く設定されることを特徴とする遺伝的アルゴリズム実行プログラムを記録したコンピュータが読取可能な記憶媒体。
【請求項９】
さらに、前記文字分布計算手段が計算した文字分布を記録する文字分布記録手段を含み、
前記変異率計算手段は、該文字分布記録手段に記録された文字分布に基づいて前記乱雑度を求める、
ことを特徴とする請求項８に記載の遺伝的アルゴリズム実行プログラムを記録したコンピュータが読取可能な記憶媒体。
【請求項１０】
さらに、解候補集団の世代数をカウントする世代数カウント手段と、
前記文字分布計算手段が求めた文字分布および該世代数カウント手段によるカウント値のうちの少なくとも一方を用いて、遺伝的アルゴリズムによる計算処理を終了させるかどうかを判断する終了条件評価手段と、
を含む、請求項８に記載の遺伝的アルゴリズム実行プログラムを記録したコンピュータが読取可能な記憶媒体。
【請求項１１】
前記終了条件評価手段は、前記文字分布計算が計算した文字分布の偏り具合が所定の値以下であることを判断した場合、遺伝的アルゴリズムによる計算処理を終了させる、ことを特徴とする請求項１０に記載の遺伝的アルゴリズム実行プログラムを記録したコンピュータが読取可能な記憶媒体。
【請求項１２】
さらに、該文字分布を用いて各文字位置毎に乱雑度を求め、所定の値よりも高い乱雑度をもつ文字位置を選択する文字位置選択手段と、
該複数の文字列における該選択した文字位置の文字を変更して、新たな解候補を作成する組み合わせ生成手段と、
を備えることを特徴とする請求項８に記載の遺伝的アルゴリズム実行プログラムを記録したコンピュータが読取可能な記憶媒体。
【請求項１３】
前記組み合わせ生成手段は、前記複数の文字列のそれぞれに対して、前記選択した文字位置の文字を設定可能な文字に置き換えた文字列の全ての組み合わせを設定し、設定した組み合わせの中から評価値の高い文字列を選択して、新たな解候補集団を作成する、
ことを特徴とする請求項１２に記載の遺伝的アルゴリズム実行プログラムを記録したコンピュータが読取可能な記憶媒体。
【請求項１４】
前記文字位置選択手段は、前記所定の値よりも高い乱雑度をもつ文字位置の数が所定の数よりも多かった場合、乱雑度が高い文字位置から該所定の数分の文字位置を選択する、ことを特徴とする請求項１２に記載の遺伝的アルゴリズム実行プログラムを記録したコンピュータが読取可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、遺伝的アルゴリズムを利用して解の探索を効率的におこなう遺伝的アルゴリズム実行装置と実行方法、およびそのプログラム記憶媒体に関する。
【０００２】
【従来の技術】
遺伝的アルゴリズムとは、生物の遺伝の機構を工学的に模倣・応用した技術である。生物の進化の過程では、既存の個体（親）から新たなる個体（子）が生まれる際に、個体の持つ染色体同士の交叉、染色体上の遺伝子の突然変異などが起こる。そして、環境に適応しない個体は淘汰され、より適応した個体が生き延びて新たな親となり、さらに新たな子孫を作っていく。このようにして、環境に適応した個体の集団が生き延びていく。各個体がどの程度環境に適応するかは、染色体あるいはゲノムによって決定される。
【０００３】
遺伝的アルゴリズムでは、組合せ最適化問題の解候補を、遺伝子の１次元ストリングである染色体に対応させて文字列として表現し、解候補の集団に対して、選択および自己複製による淘汰、交叉、突然変異等の遺伝子操作を繰り返し行うことにより解の探索を行う。なお、上述の文字列とは、例えば０と１を使って表されるような数列等も含むものとする。
【０００４】
ここでは、生物進化は、解候補に対する目的関数（解候補の適性度を評価する関数）の値が最適値に近づくことに相当し、目的関数を最適にするものほど大きい値を取るような適応度関数が文字列（染色体）に対して定義される。淘汰とは、図２４（Ａ）に示すように、適応度関数により各文字列の評価値を算出し、集団の中で評価値の高い文字列を持つ解候補を、より高い確率で選択して次世代の解候補集団とする操作である。突然変異とは、図２４（Ｂ）に示すように、１つの文字列の一部の文字（遺伝子）をランダムに別の文字（アレル値）に置き換える操作である。交叉とは、図２４（Ｃ）に示すように、２つの文字列の一部を相互に入れ換える操作である。
【０００５】
これらの操作を繰り返すことによって評価値のより高い文字列、すなわち目的関数をより最適化する解候補を得ることができる。
【０００６】
【発明が解決しようとする課題】
従来の遺伝的アルゴリズムにおける突然変異では、文字列の文字位置（遺伝子座：配列中の各遺伝子の位置に対応）に対して一様の変異率で変異（文字の変更）を行っている。各文字位置においてとりうる文字（例えば、「０、１、・・・」のような数値、「ａ、ｂ、ｃ、・・・」のような文字等）は、遺伝子工学におけるアレル（対立遺伝子）に対応する。
【０００７】
しかし、多くの問題においては、その探索の過程で変異する必要がなくなる文字位置と、逆に変異を頻繁に行うべき文字位置とに分かれてくる。このような場合に、文字位置全体に一様な変異率による突然変異を行うと、文字列の評価値を下げることが多くなり、最適解の探索の効率が低下する。
【０００８】
したがって、上記のような従来の方法では、特に問題が大規模のときに、解を得る確率が非常に低くなってしまうという問題があった。
解の探索を効率的に行うための方法として、探索過程で文字位置ごとに変異率を適当に調節する改善方法が考えられる。しかし、どの文字位置の変異率をどのような値に設定すればよいのかは、予めわかっているわけではない。そこで、探索時にそれらを推定する方法が必要である。
【０００９】
また、従来の遺伝的アルゴリズムでは、予め指定されている繰り返し回数（世代数）分の処理が終了した時点でアルゴリズムが終了されるので、利用者は実行前に終了世代数を指定しなければならなかった。しかし、適切な終了世代数は対象となる問題や突然変異率などのパラメータ値によって異なるので、通常は処理開始前に適切な終了世代数を知ることはできない。そこで、従来の遺伝的アルゴリズムの実行時には、対象となる問題の解を得るために十分に大きいと思われる世代数を指定していたが、その値は解を得るために必要な世代数よりもはるかに大きい場合が多かった。
【００１０】
したがって、従来の方法では、すでに解が得られており、それ以上の処理を繰り返しても無駄であるような状況であっても、指定された世代までは処理が実行されることになり、計算効率の観点から問題があった。
【００１１】
【課題を解決するための手段】
本発明の目的は、各文字位置に設定されている変異率を、与えられた問題に適合するように探索の過程で再設定して突然変異を実行することにより、遺伝的アルゴリズムにおける探索効率を向上させることにある。また、所定の値よりも高い乱雑度をもつ文字位置を選択し、選択した文字位置の文字を変更して解候補の文字列を変化させることにより、解の探索効率を向上させることも目的とする。
【００１２】
また本発明の目的は、終了世代を自動的に判定して、遺伝的アルゴリズムを適切な世代で終了させ、計算効率を向上させることにある。アルゴリズムを適切な世代で終了させるためには、それ以上処理を繰り返しても変化がない状態、すなわち解集団が定常状態に到達したことを感知すればよい。定常状態では、淘汰によって生き残る解候補の文字列がそろっているので、この文字列のパターンのそろいぐあいによって定常状態に達したかどうかを判定することができる。したがって本発明では、遺伝的アルゴリズムの終了条件として各文字位置の文字の分布（文字分布）を用いることにより、終了世代を決定する。
【００１３】
本発明の遺伝的アルゴリズム実行装置は、遺伝的アルゴリズムに基づいて最適化問題を解く遺伝的アルゴリズム実行装置であって、解候補集団を構成する複数の文字列（数列、記号列等も含む）に対して各文字位置毎に文字分布を計算する文字分布計算部と、該文字分布を用いて各文字位置毎に乱雑度を求め、求めた乱雑度に基づいて各文字位置毎に変位率を設定する変異率計算部と、該変異率に応じて解候補に対して突然変異を実行し、新たな解候補を作成する突然変異処理部とを備えている。このように、文字位置の乱雑度に応じて変異率が設定されるので、より変異させたい文字位置を重点的に変異させることができ、解の探索効率が向上する。ここで、乱雑度がより大きい文字位置の変位率はより高く設定され、乱雑度がより小さい文字位置の変位率はより低く設定される。
【００１４】
本発明の遺伝的アルゴリズム実行装置は、さらに、前記文字分布計算部が計算した文字分布を記録する文字分布記録部を備えてもよく、前記変異率計算部は、該文字分布記録部に記録された文字分布に基づいて前記乱雑度を求めてもよい。この装置はさらに、解候補集団の世代数をカウントする世代数カウント部と、前記文字分布計算部が求めた文字分布および該世代数カウント部によるカウント値のうちの少なくとも一方を用いて、遺伝的アルゴリズムによる計算処理を終了させるかどうかを判断する終了条件評価部とを備えていてもよい。このように、終了条件を用いて適切な時期に処理を終了させることにより、探索時間の短縮を図ることができる。ここで、前記終了条件評価部は、例えば前記文字分布計算部が計算した文字分布の偏り具合が所定の値以下であることを判断した場合、遺伝的アルゴリズムによる計算処理を終了させる。
【００１５】
本発明による他の遺伝的アルゴリズム実行装置は、解候補集団を構成する複数の文字列に対して各文字位置毎に文字分布を計算する文字分布計算部と、該文字分布を用いて各文字位置毎に乱雑度を求め、所定の値よりも高い乱雑度をもつ文字位置を選択する文字位置選択部と、該複数の文字列における該選択した文字位置の文字を変更して新たな解候補を作成する組み合せ生成部と、を備えている。このように、選択した文字位置の文字のみを変更して新たな解候補を作成することにより、解の探索効率が向上する。ここで、前記組み合せ生成部は、前記複数の文字列のそれぞれに対して前記選択した文字位置の文字を設定可能な文字に置き換えた文字列の全ての組み合わせを設定し、設定した組み合わせの中から評価値の高い文字列を選択して、新たな解候補集団を作成する。
【００１６】
前記文字位置選択部は、前記所定の値よりも高い乱雑度をもつ文字位置の数が所定の数よりも多かった場合、乱雑度が高い文字位置から該所定の数分の文字位置を選択することができる。これにより、選択される文字位置の数がさらに制限され、探索時間がさらに短縮される。
【００１７】
本発明の遺伝的アルゴリズム実行方法は、遺伝的アルゴリズムに基づいて最適化問題を解くための遺伝的アルゴリズム実行方法であって、解候補集団を構成する複数の文字列に対して、各文字位置毎に文字分布を計算するステップと、該文字分布を用いて各文字位置毎に乱雑度を求めるステップと、求めた乱雑度に基づいて各文字位置毎に変位率を設定するステップと、該変異率に応じて解候補に対して突然変異を実行して新たな解候補を作成するステップと、を含んでいる。乱雑度がより大きい文字位置の変位率はより高く設定され、乱雑度がより小さい文字位置の変位率はより低く設定される。このように、文字位置の乱雑度に応じて変異率が設定されるので、より変異させたい文字位置を重点的に変異させることができ、解の探索効率が向上する。
【００１８】
この方法はさらに、解候補集団の世代数をカウントするステップと、前記文字分布および該世代数のカウント値のうちの少なくとも一方を用いて、遺伝的アルゴリズムによる計算処理を終了させるかどうかを判断するステップとを含んでいてもよい。このように、終了条件を用いて適切な時期に処理を終了させることにより、探索時間の短縮を図ることができる。ここでは、例えば、前記文字分布の偏り具合が所定の値以下であることを判断した場合、遺伝的アルゴリズムによる計算処理を終了させてもよい。
【００１９】
本発明による他の遺伝的アルゴリズム実行方法は、解候補集団を構成する複数の文字列に対して各文字位置毎に文字分布を計算するステップと、該文字分布を用いて各文字位置毎に乱雑度を求めるステップと、所定の値よりも高い乱雑度をもつ文字位置を選択するステップと、該複数の文字列における該選択した文字位置の文字を変更して新たな解候補を作成するステップとを含んでいる。このように、選択した文字位置の文字のみを変更して新たな解候補を作成することにより、最適解の探索効率が向上する。
【００２０】
新たな解候補を作成するステップでは、前記複数の文字列のそれぞれに対して、前記選択した文字位置の文字を設定可能な文字に置き換えた文字列の全ての組み合わせが設定され、設定された組み合わせの中から評価値の高い文字列が選択されて新たな解候補集団を作成する。
【００２１】
前記文字位置を選択するステップでは、前記所定の値よりも高い乱雑度をもつ文字位置の数が所定の数よりも多かった場合、乱雑度が高い文字位置から該所定の数分の文字位置が選択されうる。これにより、選択される文字位置の数がさらに制限され、探索時間がさらに短縮される。
【００２２】
本発明の記憶媒体は、遺伝的アルゴリズムに基づいて最適化問題を解くための遺伝的アルゴリズム実行方法を実現するコンピュータプログラムを格納した記憶媒体であって、このコンピュータプログラムによる遺伝的アルゴリズム実行方法は、上記の本発明の遺伝的アルゴリズム実行方法の各ステップを含みうる。この記憶媒体が外部記憶媒体である場合、それはＣＤＲＯＭ等の光記憶媒体、フロッピーディスク等の磁気記憶媒体、ＭＤ等の光−磁気記憶媒体によって実現され、内部記憶媒体であれば、ハードディスク、ＲＯＭ、ＲＡＭ等によって実現される。
【００２３】
【発明の実施の形態】
図１は、本発明による遺伝的アルゴリズム実行装置の実施形態の構成を表すブロック図である。
【００２４】
図１（Ａ）に示すように、この遺伝的アルゴリズム実行装置１０は、ＣＰＵおよびメモリ等からなり、解候補を表す文字列（染色体）の個体群からなる解候補集団の初期集団を生成（あるいは選択）する初期集団生成部１１と、解候補集団における文字列の選択や複製の操作により評価値（適応度）の低い文字列についての淘汰を行う淘汰処理部１２と、突然変異等の操作によって探索の効率化を促進させる探索効率化部１３と、解候補集団の中から選んだ複数の文字列について交叉を行う交叉処理部１４を備えている。なお、解候補を表す文字列は、文字の列や数の列などを含む、何らかの意味を持つ全ての種類の記号の列でありうる。
【００２５】
遺伝的アルゴリズム実行装置１０の探索効率化部１３は、図１の（Ｂ）に示すように、文字分布計算部１と、変異率計算部２と、突然変異処理部３と、文字位置選択部４と、組合せ生成部５と、文字分布記録部６とを備えている。この探索効率化部１３は、文字分布計算部１と、変異率計算部２と、突然変異処理部３とによって、あるいはこれに文字分布記録部６を加えて構成されてもよく、さらに文字分布計算部１と、文字位置選択部４と、組合せ生成部５によって、あるいはこれに文字分布記録部６を加えて構成されてもよい。
【００２６】
文字分布計算部１は、淘汰により生き残った解候補の文字列の集まりを入力して、文字列の各文字位置（遺伝子座）について文字分布を計算する。各文字位置（ｊ＝１、２、・・・、Ｌ）における文字分布は、文字ａの存在する頻度ｐｊ  （ａ）により構成される。ここに、ｐｊ  （ａ）は、第ｊ番目の文字がａである解候補数（個体数）の解候補集団全体数に対する割合である。以後、第ｊ文字位置に出現する全ての文字ａに対するｐｊ  （ａ）の値の並びを括弧を付けて＜ｐｊ  （ａ）＞と記す。
【００２７】
文字分布の計算は、それぞれの文字位置について、その文字列が変異すると死んでしまうかどうか（致死的かどうか）、すなわち変異によって評価値が極端に低下するかどうかを判断するために行われる。ある文字位置の文字種類が偏った分布をする場合には、その文字位置は淘汰圧を強く受けていることになり、出現しない文字への変異は、致死的であるかまたは評価値を下げると推察される。したがって、このような文字位置の変異は行わないほうがよい。
【００２８】
逆に、文字種類の偏りが少ない分布のときには、その文字位置の淘汰圧は弱いものとみなされ、その文字位置に対して変異が行われることによって、より評価値の高い解候補が生じる可能性がある。
【００２９】
変異率計算部２は、文字分布計算部１から得た文字分布＜ｐｊ  （ａ）＞をもとに、所定の乱雑度関数Ｒｊ  （＜ｐｊ  （ａ）＞）の値として得られる各文字位置の乱雑度ｒｊ  を求め、それらの値（ｒ１  、・・・、ｒＬ  ）から各文字位置の変異率ｍｊ  （ｊ＝１、・・・、Ｌ）を計算する。
【００３０】
乱雑度関数Ｒｊ  （＜ｐｊ  （ａ）＞）から求められる乱雑度ｒｊ  は、第ｊ文字位置に出現する文字の乱雑さの度合いを示すものである。乱雑度関数Ｒｊ  （＜ｐｊ  （ａ）＞）は、文字分布＜ｐｊ  （ａ）＞に対して実数を対応させる関数とし、ｐｊ  （ａ）がすべての文字ａについて等しいとき、すなわち偏りのない分布（一様分布）のときに最大値をとる非負関数とする。乱雑度はその値が大きいほど乱雑さの度合が高いことを意味する。
【００３１】
変異率ｍｊ  の設定では、文字分布＜ｐｊ  （ａ）＞から求めた乱雑度ｒｊ  が低い文字位置の変異率が低くなり、乱雑度ｒｊ  が高い文字位置の変異率が高くなるように変異率を再設定する。すなわち、乱雑度ｒｊ  が低い文字位置の変異率ｍｊ  を低く抑え、その分を乱雑度ｒｊ  が高い（淘汰圧が弱く致死的でないと思われる）文字位置へ振り分けるようにする。変異が致死的な文字（遺伝子）を固定して、そうでない文字位置を重点的に変異させることにより、探索の効率化が達成される。
【００３２】
第ｊ文字位置の変異率ｍｊ  は、各文字位置の乱雑度ｒｊ  を用いて変異率関数Ｍｊ  によって求める。各文字位置の乱雑度ｒｊ  が（ｒ１  、ｒ２  、・・・、ｒＬ  ）であるとき、変異率関数の値をＭｊ  （ｒ１  、ｒ２  、・・・、ｒＬ  ）と記す。変異率関数の値は０以上１以下の実数とする。また、第ｊ文字位置の変異率関数Ｍｊ  は、第ｊ文字位置の乱雑度ｒｊ  について非減少性の性質を持つ関数とする。
【００３３】
すなわち、変異率関数Ｍｊ  はｒ’ｊ  ＜ｒ”ｊ  ならば、
Ｍｊ  （ｒ１  、・・・、ｒｊ−１  、ｒ’ｊ、ｒｊ＋１  、・・・、ｒＬ  ）≦Ｍｊ  （ｒ１  、・・・、ｒｊ−１  、ｒ”ｊ、ｒｊ＋１  、・・・、ｒＬ  ）
という性質を持つものとする。
【００３４】
このように、適当な乱雑度関数Ｒｊ  および変異率関数Ｍｊ  を定め、文字分布＜ｐ１  （ａ）＞、＜ｐ２  （ａ）＞、・・・、＜ｐＬ  （ａ）＞に対して、第ｊ文字位置の変異率ｍｊ  を、
ｍｊ  ＝Ｍｊ  （Ｒ１  （＜ｐ１  （ａ）＞）、Ｒ２  （＜ｐ２  （ａ）＞）、・・・、ＲＬ  （＜ｐＬ  （ａ）＞））
と設定する。
【００３５】
突然変異処理部３は、変異率計算部２で得た変異率ｍｊ  に基づいて突然変異を行う。これにより、解候補集団の解候補に対して、致死的ではなく、評価値が高くなる可能性をもつ突然変異の操作を施すことが可能となる。
【００３６】
文字分布を利用して解の探索を効率化する別の手段として、以下の手段を用いることも有効である。
文字位置選択部（遺伝子座選択部）４は、文字分布計算部１によって得た文字分布＜ｐｊ  （ａ）＞をもとに各文字位置の乱雑度ｒｊ  を計算し、乱雑度ｒｊ  が所定の値より大きい文字位置を選択する。
【００３７】
組合せ生成部５は、文字位置選択部４で選択されたすべての文字位置の各々に対して文字ａを変化させたすべての組合せを生成し、選択されない文字位置については、それを元の文字または最もｐｊ  （ａ）が大きい文字に固定して全組合せ数の文字列を生成し、生成された文字列をもつ解候補の中から最も評価値の高い解候補（最も適応度の高い個体）を選択して元の解候補と置き換える。
【００３８】
文字分布をもとにした文字位置選択部４および組合せ生成部５の処理によって、強制的に評価値が高くなる変異を実施し、解候補の集団の改善を図ることが可態になる。この処理は、ある程度世代交代が進んだ状態で行われるのが望ましい。また、この処理は、前述した変異率に基づく突然変異処理部３による突然変異の処理と併せて実施してもよい。この場合、例えばある解候補については、突然変異処理部３による突然変異を行い、別の解候補については、文字位置選択部４および組合せ生成部５の処理を行うといった解候補に対する操作（遺伝子操作）を行うことが考えられる。
【００３９】
文字分布記録部６は、文字分布計算部１で得た文字分布を記録する手段である。各世代ごとに毎回文字分布計算部１によって文字分布を計算していたのでは、その計算のためのオーバへッドが大きくなるおそれがある。そこで、複数世代ごとに文字分布計算部１により文字分布を計算することとし、文字分布を計算しない世代については、文字分布記録部６に記録しておいた過去の文字分布を用いて変異率計算または文字位置選択の処理を行う。これにより、さらに処理を効率化することもできる。
【００４０】
以下、本発明による遺伝的アルゴリズム実行装置の具体的動作について説明する。
図２は、上記の実施形態による遺伝的アルゴリズム実行装置の動作処理の第１例を表している。図２中、ステップＳ４〜ステップＳ６の処理が図１に示す探索効率化部１３による処理である。
【００４１】
ステップＳ１では、与えられた問題の解候補を文字列で表したものをランダムに複数生成し、それを初期の解候補集団とする。ステップＳ２では、その解候補集団を構成する各文字列に対して、所定の評価関数（適応度関数）を用いて評価値（適応度）を計算する。
【００４２】
続いて、ステップＳ３の淘汰処理では、各文字列の評価値に従って、例えばルーレット選択法などにより評価値の高い文字列を低いものより高い確率で選択し、その複製を行う。これにより、解候補として適切でない評価値の低い文字列は淘汰されることになる。
【００４３】
ステップＳ４では、図１の（Ｂ）に示した文字分布計算部１が、淘汰された文字列の集まり（解候補集団）から各文字位置ｊの文字分布＜ｐｊ  （ａ）＞を計算する。
【００４４】
図３は、文字分布の概念を説明する図である。
図３（Ａ）は、各文字位置（遺伝子座）の文字ａが「０、１、２、３」である、すなわち文字位置に表れうる文字の種類が「０、１、２、３」の４つである、Ｌ個の文字位置座を持つＮ個の文字列（解候補）の集まりを示している。
【００４５】
図３（Ｂ）は、図３（Ａ）に示す文字列の第ｊ文字位置における文字分布＜ｐｊ  （ａ）＞を示している。
図３（Ａ）の文字列の集まりにおいて、例えば第ｊ文字位置に着目すると、第ｊ文字位置で第１番目の文字列（解候補）から第Ｎ番目の文字列までに出現する文字は、「０」、「２」、「０」、「０」、・・・、「１」となっている。ここで、文字ａ＝０である文字列数の全文字列数Ｎに対する割合が０．３６、文字ａ＝１である文字列数の割合が０．２１、文字ａ＝２である文字列数の割合が０．２９、文字ａ＝３である文字列数の割合が０．１４であるとすると、文字分布は図３（Ｂ）に示すようになり、ｐｊ  （０）＝０．３６、ｐｊ  （１）＝０．２１、ｐｊ  （２）＝０．２９、ｐｊ  （３）＝０．１４となる。因みに、この第ｊ文字位置の文字分布は一様分布に近く、淘汰圧が比較的低い文字位置であると考えられる。
【００４６】
文字分布計算部１は、すべての文字位置について、以上のような文字分布を計算する。なお、文字分布記録部６を利用する場合には、文字分布計算部１は、求めた文字分布を文字分布記録部６に記録する。
【００４７】
ステップＳ５において、変異率計算部２は乱雑度関数Ｒｊ  （＜ｐｊ  （ａ）＞）を用いて文字分布＜ｐｊ  （ａ）＞に対する各文字位置ｊの乱雑度ｒｊ  を求め、これをもとに各文字位置の変異率を再設定する。
【００４８】
図４は、乱雑度関数を説明するための図である。
図４（Ａ）は、乱雑度関数Ｒｊ  の例を示しており、図４（Ｂ）は、文字が０および１である割合に対応する乱雑度関数Ｒｊ  （＜ｐｊ  （ａ）＞）の値（乱雑度ｒｊ  ）を示している。
【００４９】
ここでは、図４（Ａ）に示すように、文字位置数Ｌ＝４、文字ａは０または１であるとし、乱雑度関数Ｒｊ  は、例えば、Ｒｊ  ＝６−５×｜０の割合−０．５｜−５×｜１の割合−０．５｜というように定める。ここで、｜・・・｜は絶対値を示し、「０の割合」とはｐｊ  （０）を、また「１の割合」とはｐｊ  （１）を表している。
【００５０】
この乱雑度関数Ｒｊ  を用いた場合の、文字０および１の各割合に対応する乱雑度ｒの値は図４（Ｂ）および（Ｃ）に示すようになり、文字の分布が均一のとき、すなわち文字０と１の出現する割合がそれぞれ０．５のときに、乱雑度ｒは最大値６を示す。０および１の割合の和は常に１である。この乱雑度関数Ｒｊ  は一例であり、同様な性質を持つ他の関数を用いてもよい。
【００５１】
図５は、乱雑度を説明するための図である。
図５に示す総数１０個の解候補集団について文字分布＜ｐｊ  （ａ）＞を計算し、乱雑度関数Ｒｊ  の値を求める場合を例として説明する。
第１文字位置において、文字が０である個数は８個であるから、文字分布ｐ１  （０）は８／１０（＝０．８）、文字が１である個数は２個であるから、文字分布ｐ１  （１）は２／１０（＝０．２）となり、図４（Ｂ）の乱雑度関数Ｒｊ  の対応表に従って第１文字位置の乱雑度はｒ＝３となる。
【００５２】
同様にして、第２文字位置の乱雑度はｒ＝６、第３文字位置の乱雑度はｒ＝１、第４文字位置の乱雑度はｒ＝４となる。
変異率は、例えば以下のように定義する。
【００５３】
ｍｊ  ＝［｛Ｌ×Ｒｊ  （＜ｐｊ  （ａ）＞）｝／｛Σｋ  Ｒｋ  （＜ｐｋ  （ａ）＞）｝］×μ
ただし、Σｋ  は、ｋ＝１からＬまでの総和である。Σｋ  Ｒｋ  （＜ｐｋ  （ａ）＞）が０の場合には、ｍｊ  ＝μと設定する。この方法では、ｍ１  、ｍ２  、・・・、ｍＬ  の平均は常に一定値μである。
【００５４】
また、別の方法として、変異率関数Ｍｊ  が第ｊ文字位置の乱雑度ｒｊ  のみに依存する関数ｆｊ  であるとして、非負の要素を持つ定数行列Ａｉ，ｊ  を用いて、第ｊ文字位置の変異率ｍｊ  を、次式のように定めることもできる。
【００５５】
ｍｊ  ＝Σｉ  Ａｉ，ｊ  ｆｉ  （ｒｉ  ）
ただし、Σｉ  はｉ＝１からＬまでの総和を表す。
特に、定数行列Ａｉ，ｊ  をｉ＝ｊで１、それ以外で０をとる行列とすれば、第ｊ文字位置の変異率は、
ｍｊ  ＝ｆｊ  （ｒｊ  ）
のように乱雑度ｒｊ  のみに依存する関数ｆｊ  で表される。この式は前式の最も簡単な場合であり、計算速度の点で有効性があるため、実用性が高いものと考えられる。
【００５６】
なお、変異率計算部２は、文字分布を計算しない世代については、文字分布記録部６に記録した過去の世代の文字分布を用いて乱雑度を求めてもよい。
ステップＳ６では、突然変異処理部３により、変異率計算部２によって計算した変異率にもとづいて突然変異処理を行い、新しい文字列の解候補の集団を出力する。
【００５７】
その後、上記のように求めた新しい文字列の解候補集団に対し、交叉（ステップＳ７）、適応度評価（ステップＳ８）の処理（評価値算出）を行い、制限回数（所定の終了条件）に達したかどうかを判定して（ステップＳ９）、制限回数に達するまでステップＳ１〜ステップＳ９の処理を繰り返す。
【００５８】
なお、図２に示す処理の流れにおいて、例えばステップＳ７の交叉処理をステップＳ４の前に行うように変化させてもよく、処理の順番は必ずしも図２に示すとおりでなくてもよい。ステップＳ７の交叉処理は省くことも可能である。また、ステップＳ４およびステップＳ５による変異率の設定を、毎世代行うのではなく、特定の世代についてだけ行うようにしてもよい。また、この処理における適応度評価（評価値の計算および評価）を専門に行なう処理部を、遺伝的アルゴリズム実行装置のなかに、図１（Ａ）に示す構成要素１１〜１４とは別に設けてもよい。
【００５９】
図６は、文字分布計算部１の処理を表すフローチャートである。
図６の中で、Ｌは文字位置数、Ｎは解候補（文字列）の総数、Ａ（ｊ）は第ｊ文字位置における文字の数（文字の種類の数）、ｘ（ｎ，ｊ）は第ｎ解候補の文字列における第ｊ文字位置の文字、ｐ（ｊ，ａ）は第ｊ文字位置の文字がａである解候補が全体に占める割合を表す。
【００６０】
文字分布計算部１は、ｊ＝１からＮまで、以下の処理を繰り返す（ステップ１０１、１０２）。
まず、すべてのｐ（ｊ、ａ）の値を０に初期化する処理を行う（ステップ１０３〜ステップ１０７）。
【００６１】
次に、第ｎ解候補の第ｊ文字位置の各文字ａの個数をカウントする処理を行う（ステップ１０８〜ステップ１１１）。
続いて、第ｊ文字位置の文字がａである解候補が全体に占める割合ｐ（ｊ，ａ）を計算する処理を行う（ステップ１１２〜ステップ１１５）。
【００６２】
図７は、変異率計算部２の処理を表すフローチャートである。
図７の中で、Ｌは文字位置数、ｒ（ｊ）は第ｊ文字位置の乱雑度、Ａ（ｊ）は第ｊ文字位置における文字の種類の数、ｐ（ｊ，ａ）は第ｊ文字位置の文字がａである解候補が全体に占める割合、Ｒ（ｊ，・・・）は第ｊ文字位置における乱雑度関数、Ｍは平均変異率、ｍ（ｊ）はこの処理によって得られる第ｊ文字位置の変異率を表す。
【００６３】
変異率計算部２は、乱雑度関数Ｒ（ｊ，・・・）によって第ｊ文字位置の乱雑度ｒ（ｊ）を求める処理を行う（ステップ１２１〜ステップ１２４）。
次に、前述した式、
ｍｊ  ＝［｛Ｌ×Ｒｊ  （＜ｐｊ  （ａ）＞）｝／｛Σｋ  Ｒｋ  （＜ｐｋ  （ａ）＞）｝］×μ
における（Σｋ  Ｒｋ  （＜ｐｋ  （ａ）＞）を求める処理、すなわち乱雑度ｒ（ｊ）の総和Ｃを求める処理を行う（ステップ１２７〜ステップ１２９）。ここで、乱雑度ｒ（ｊ）の総和Ｃが０である場合には、第ｊ文字位置の変異率を平均変異率Ｍとする（ステップ１３０〜ステップ１３４）。乱雑度ｒ（ｊ）の総和Ｃが０でない場合には、上記の式に従って第ｊ文字位置の変異率ｍ（ｊ）を計算する（ステップ１３５〜ステップ１４０）。
【００６４】
続いて、本発明の遺伝的アルゴリズムによる処理の実施例について説明する。
この実施例としてナップザック問題を取り上げて説明する。ナップザック問題とは、限られた容量のナップザックに入れる荷物の値段の合計額が最も高くなるように荷物を選択するといった問題である。
【００６５】
ナップザックに入れる例えば５０個の荷物を順番に並べ、各々の荷物に対して１ビットを対応させ、その荷物を選択する場合を「ビット値＝１」、選択しない場合を「ビット値＝０」と表せば、この例題の探索空間を５０ビットでコード化することができる。このビット配列を文字列と考えて本発明の遺伝的アルゴリズムを実行する。この場合、すべての文字位置の文字ａは０か１となる。評価値は選択した荷物の値段の合計とするが、選択した荷物の全容積がナップザックの容量を超えた場合には０とする。
【００６６】
ここで、変異率の再設定に用いる乱雑度関数Ｒ（ｐ（０）、ｐ（１））として、
Ｒ（ｐ（０）、ｐ（１））＝２０−１９×｜ｐ（０）−０．５｜−１９×｜ｐ（１）−０．５｜
（ただし、｜・・・｜は絶対値を表す。）
を用いた。ただし、ここではすべての文字位置について同一の条件であるため、文字位置を意味するサフィックスｊを省略する。
【００６７】
この関数は、最大値＝２０（ｐ（０）＝ｐ（１）＝０．５のとき）、および最小値＝１（ｐ（０）＝１、ｐ（１）＝０のとき、またはｐ（０）＝０、ｐ（１）＝１のとき）を持つ。
【００６８】
図１２は、本実施例で試行したナップザック問題の例を示している。荷物数は５０で、容量当たりの値段が高いものから順番に１から５０までの番号をふってある。ナップザックの制限容量を１５００とすると、最高合計金額（＝最適値）は２２３０である。この解は、図１２の「解」の列に示されており、解の列の「１」はその荷物を選択することを、「０」はその荷物を選択しないことを意味する。
【００６９】
図１３は、遺伝的アルゴリズムの従来法の方法と本発明の方法との性能比較を示している。
制限世代（制限回数）を１００とした場合および制限世代を１０００とした場合について、従来の方法と本発明による方法を各々１０回ずつ試行した。１０回の試行の間に得られた評価値の最大値およびそれが得られた世代数を、それぞれの方法毎に図１３に示している。これらの試行において、平均変異率ｍは０．０８、解候補数Ｎは１００、交叉の確率は０．５とした。
【００７０】
図１３（Ａ）は制限世代を１００とした場合の各試行の結果を示しており、制限世代が１００の場合においては、従来の方法では解（２２３０）が１度も得られなかったが、本発明の方法では１０回中８回の試行で最大値が２２３０を示しており、解が得られている。また、解を得られなかった残りの２回の試行でも、解に極めて近い評価値（２２２８）を持つ解が得られた。
【００７１】
図１３（Ｂ）は制限世代を１０００とした場合の各試行の結果を示している。制限世代数が１０００の場合においては、従来の方法では解が得られた試行は３回であるが、本発明の方法ではすべての試行で解が得られている。また、解が得られるまでにかかる世代数は、本発明の方法では平均４７．７世代であるのに対し、従来の方法では、解が得られた３回の試行の場合においても、それぞれ７９８世代、４６３世代および１２３世代かかっており平均でも４６１．３世代となっている。
【００７２】
この結果は、本発明が解を得る能力と、解を得るまでの速さの両面において非常に有効であることを示すものである。
以上の効果がどのような理由によって得られるのかを示すため、探索の様子を以下に詳しく説明する。
【００７３】
図１４は、図１３に示す従来の方法の試行１における第３０世代の解候補の文字列の状態を示しており、図１５は、図１３に示す本発明の方法の試行１における第３０世代の解候補の文字列の状態を示している。文字列の表示は、左から順に荷物の番号１〜５０に対応させている（図１２参照）。また、右端の数字は評価値を表したものである。
【００７４】
ナップザック問題では、一般に容量当たりの値段が大きい荷物を選択する方が効果的である。したがって図１２に示す問題では、荷物は容量当たりの値段が大きい順番に１から番号を付与して並べてあるので、なるべく番号が小さい荷物を選ぶのがよく、番号が大きいものを選ばない方がよい。これは、文字列に対応させれば、左端に近い文字位置を１に、また右端に近い文字位置を０に固定しておくのが効果的であることを意味する。すなわち、左右両端に近い文字位置は、致死的であると考えられる。実際に、右側の文字位置に１が存在する解候補は、制限容量を超えてしまいがちであるため、その評価値は０の場合が多く、それらはすべて淘汰される。また、左側の文字位置に０がある解候補は評価値が下がり、それらもやはり淘汰される可能性が高い。このような状況でより良い評価値を得るためには、左右両端に近い文字位置の変異率はなるべく抑え、その分中央部の文字位置の変異率を高くすることが効率的であると考えられる。
【００７５】
従来の方法および本発明の方法における文字列の様子を見ると、従来の方法に比べて、本発明の方法による変異では、両端の致死的文字位置の変異率が低く、文字のバラツキが少なく抑えられ、その分中央の文字位置の変異率を高くして、文字のバラツキが多くなっていることがわかる。そのため、従来の方法では５９個の解候補が制限容量を超え評価値が０になるのに対して、本発明の方法では、そのような解候補は３８個に抑えられた。
【００７６】
以上のような違いが、探索の効率化をもたらすものと考えられる。
図１６は、従来の方法と本発明の方法を用いた場合について、最適値へ達するまでの各世代における最大評価値の変化を示している。本発明の方法では、解候補集団における最大評価値が世代交代によって急激に上昇し、最適値へ達するまでにかかる世代数Ｇａが、従来の方法での世代数Ｇｃより、はるかに少ないことがわかる。
【００７７】
また、図１７は、各荷物数について異なる５問の問題を解く場合に、従来の方法と本発明の方法とで、最適値を得るのにかかった世代数の比Ｇｃ／Ｇａの範囲（図中、線で示す）およびその平均値（図中、黒丸で示す）を示している。これによると、荷物数が増加すると、従来の方法での世代数Ｇｃと本発明による方法での世代数Ｇａとの比Ｇｃ／Ｇａも増加し、荷物数が増加すればするほど、すなわち問題の規模が大きくなればなるほど、本発明の効果が大きくなることがわかる。
【００７８】
図８は、本発明による遺伝的アルゴリズム実行装置の第２の動作例を表している。
本動作例では、図８に示すように、図２に示した第１の動作例の処理におけるステップＳ５およびステップＳ６の処理の代わりにステップＳ１０（文字位置選択部４による文字位置選択処理）とステップＳ１１（組み合せ生成部５による組み合せ生成処理）を行う。ステップＳ１０およびステップＳ１１以外の処理は、図２における処理と同様であるので説明を省略する。
【００７９】
ステップＳ１０（文字位置選択処理）では、文字位置選択部４が文字分布＜ｐｊ  （ａ）＞に対する乱雑度関数Ｒｊ  （＜ｐｊ  （ａ）＞）を用いて各文字位置の乱雑度を求め、所定の値より高い乱雑度の文字位置を選択する。
【００８０】
図９は、上記の文字位置選択処理（ステップＳ１０）、およびそれに続く組合せ生成処理（ステップＳ１１）を説明する図である。
図９（Ａ）は、ステップＳ１〜ステップＳ３までの処理を経た解候補集団（文字列集団）の例を示している。図に示すように、この解候補集団の第３および第６文字位置は「０、１、２」の文字を持ち、他の（第１、第２、第４、第５）文字位置は、「０、１」の文字を持つ。この解候補集団に対して各文字位置の文字分布を計算し（ステップＳ４）、第ｊ文字位置の乱雑度ｒｊ  を求める（ステップＳ１０）。
【００８１】
さらにステップＳ１０では、文字位置選択のための乱雑度の閾値が例えば４に設定されている場合、図９（Ａ）に示すように、乱雑度が４より大きい第３および第５文字位置が選択される。
【００８２】
次にステップＳ１１では、組合せ生成部５が、選択された文字位置の文字の全組合せを生成して、それらの組合せの文字を選択された文字位置に当てはめた解候補を生成する（図１０（Ｂ）参照）。その後、このようにして生成した全組合せ数の解候補集団から最も評価値の高い解候補を選択して元の解候補と置き換え、新しい文字列の集まりが出力される（図１０（Ｃ）参照）。
【００８３】
これより、図９（Ａ）に示す古い解候補集団の第１番目の文字列（Ｇ１）についての処理を具体的に説明する。
まず、所定の閾値４より大きい乱雑度を持つ第３および第５文字位置の文字のすべての組合せを生成する。第３文字位置は「０、１、２」の文字を持ち、第５文字位置は「０、１」の文字を持つので、生成される文字の組合せは、「０、０」、「１、０」．「２、０」、「０、１」、「１、１」、「２、１」の６通りである。これらの組合せを元の解候補Ｇ１に当てはめて、６個の解候補を生成する。
【００８４】
図９（Ｂ）は、解候補Ｇ１から生成された６個の解候補集団を示す。
次に、図９（Ｂ）に示す解候補について評価値を計算し、これらの中で最も評価値の高い解候補（評価値＝７２の解候補）をＧ１’として元の解候補Ｇ１と置き換える。同様の処理を解候補Ｇ２〜Ｇ８についても行うと、例えば図９（Ｃ）に示す解候補Ｇ１’〜Ｇ８’からなる新しい解候補集団が生成される。もちろん、特定の解候補についてだけ、上記の置き換えを行ってもよい。
【００８５】
図１０は、文字位置選択部４の処理を表すフローチャートである。
図中、Ｌは文字位置数、Ｒ（ｊ、・・・）は第ｊ文字位置における乱雑度関数、ｒ（ｊ）は第ｊ文字位置の乱雑度、Ａ（ｊ）は第ｊ文字位置における文字の種類の数、ｐ（ｊ，ａ）は第ｊ文字位置の文字がａである解候補が全体に占める割合、Ｑは所定の閾値、Ｓ（ｊ）は第ｊ文字位置の選択／非選択を表す識別値（選択／非選択識別値）である。
【００８６】
文字位置選択部４は、第ｊ文字位置における乱雑度関数Ｒ（ｊ、・・・）に従って、各文字位置ごとに乱雑度ｒ（ｊ）を求める（ステップ１５１〜ステップ１５４）。
【００８７】
続いて、第ｊ文字位置の乱雑度ｒ（ｊ）が閾値Ｑより大きいかどうかを調べて、乱雑度ｒ（ｊ）が閾値Ｑより大きい場合には選択／非選択識別値Ｓ（ｊ）を１（選択を示す）とし、乱雑度ｒ（ｊ）が閾値Ｑより小さい場合には選択／非選択識別値Ｓ（ｊ）を０（非選択をしめす）とする（ステップ１５５〜ステップ１６０）。このようにして決定された識別子Ｓ（ｊ）が文字位置選択部４から出力される。
【００８８】
図１１は、組合せ生成部５の処理を表すフローチャートである。
図中、Ｌは文字位置数、Ｎは解候補総数、Ａ（ｊ）は第ｊ文字位置における文字の種類の数、ｘ（ｎ，ｊ）は第ｎ解候補の文字列における第ｊ文字位置の文字、Ｓ（ｊ）は第ｊ文字位置の選択／非選択識別値、ｇ（・・・）は評価関数、ｙ（ｎ，ｊ）は新しい第ｎ解候補の第ｊ文字位置における文字を表す。
【００８９】
組合せ生成部５は、解候補集団の中の１番目の解候補からＮ番目の解候補まで、解候補番号ｎを１ずつ加算しながら（ステップ２０２）、以下の処理を繰り返す（ステップ１７１、１７２）。
【００９０】
まず、着目しているｎ番目の解候補に対する評価関数ｇ（・・・）の結果（評価値）を、作業変数Ｈに代入する（ステップ１７３）。次に、ｎ番目の解候補のすべての文字位置の文字ｘ（ｎ，ｊ）を新解候補の文字位置の文字ｙ（ｎ，ｊ）へ移す（ステップ１７４〜ステップ１７７）。
【００９１】
次に、第ｊ文字位置の選択／非選択識別値Ｓ（ｊ）が１であるすべての文字位置の文字の組合せ総数Ｂを求める（ステップ１７８〜ステップ１８４）。
次に、第ｊ文字位置の選択／非選択識別値Ｓ（ｊ）が１である文字位置に埋め込むべき全文字の組合せを１つずつ生成し、新しい解候補の選択／非選択識別値Ｓ（ｊ）が１である文字位置に代入する（ステップ１８５〜ステップ１９３：図９の（Ｂ）に対応）。
【００９２】
このとき、上記文字の組み合わせが代入された解候補の評価関数ｇ（・・・）の結果が変数Ｇに代入され（ステップ１９４）、古い解候補の評価関数の結果（あるいはそれ以前に代入された評価値）Ｈと比較される。Ｇの値がＨよりも大きい場合にはＧの値をＨへ代入し、新解候補の文字位置の文字ｙ（ｎ，ｊ）に、その時点で考慮されている文字列（評価値Ｇを生み出した組み合わせの文字列）の文字ｘ（ｎ，ｊ）を代入する。Ｇの値がＨより大きくない場合には、Ｈおよび新解候補の文字位置の文字ｙ（ｎ，ｊ）は元のままとする（ステップ１９５〜ステップ２００）。
【００９３】
このようにして、古い解候補に対して第ｊ文字位置の選択／非選択識別値Ｓ（ｊ）が１であるすべての文字位置の文字の組合せ総数Ｂだけ解候補が生成され（ステップ２０１）、その中からもっとも評価値の高い解候補が古い解候補に置き換えられていく（ステップ１８５〜２０１）。この処理は古い解候補の全てに対して行なわれる（ステップ２０２）。
【００９４】
本発明による動作例として、図２に示すように、文字分布計算（ステップＳ４）を行った後に突然変異率計算処理（ステップＳ５）と突然変異処理（ステップＳ６）を行う場合と、図８に示すように、文字分布計算（ステップＳ４）を行った後に文字位置選択（ステップＳ１０）と組合せ生成（ステップＳ１１）を行う場合とに分けて説明したが、これらの処理を適宜組み合わせて処理を行ってもよく、また例えば何世代かおきにこれらの処理を行ったり、特定の世代のみを対象としてこの処理を行ってもよい。
【００９５】
図１８は、本発明による遺伝的アルゴリズム実行装置の第３の動作例を表している。
本動作例は、図１８に示すように、図８に示した第２の動作例のなかで、ステップ４（文字分布計算）からステップ１１（組み合せ生成）までの処理に変更を加えたものである。
【００９６】
この処理では、淘汰処理（ステップＳ３）の後に文字分布計算部１によって各文字位置ｊに対する文字分布（例えば文字が「０」と「１」の場合はｐｊ  （０）とｐｊ  （１））を求め、求めた文字分布を文字分布記録部６に記録する（ステップ４’）。次に、文字位置選択部４は文字分布記録部６に所定のＴ回分の文字分布のデータが記録された時点で、各文字位置の文字分布の平均値ｐ’ｊ（０）とｐ’ｊ（１）を計算し、各文字位置の乱雑度ｒｊを次の乱雑度関数によって求める。
【００９７】
ｒｊ＝１−｜ｐ’ｊ（０）−０．５｜−｜ｐ’ｊ（１）−０．５｜
この後、文字位置選択部４は乱雑度ｒｊの値がＱ（所定の閾値）以上である文字位置を選択して記録する（ステップＳ１０’）。ここで、文字位置選択部４は、この条件を満たす文字位置の数が所定の値であるＷ個よりも多い場合には、乱雑度が大きい順にＷ個の文字位置を選択する。この操作により、最終的に選択される文字位置の数は常に最大でＷ個に限定される。この限定により、選択される文字位置の数が制限されるので、次のステップＳ１１における組み合せ計算に要する時間を節約することができる。
【００９８】
次に、ステップＳ１１において組合せ生成部５は、選択された文字位置の文字の全組合せを生成して、それらの組合せの文字を選択された文字位置に当てはめた解候補を生成し、生成した全組合せ数の解候補集団から最も評価値の高い解候補を選択して元の解候補と置き換え、新しい文字列の集まりとして出力する。このとき、文字分布記録部のデータはクリアされ、処理はＳ７の交叉処理へと進む。
【００９９】
図１９は、この第３の動作例に基づいて図１２のナップザック問題に対して実行された処理（制限世代１００及び１０００）の結果を表している（図１３に対応）。ここでは、文字分布記録部に記録されるデータ回数は２（Ｔ＝２）、乱雑度の閾値は０．５（Ｑ＝０．５）、選択する文字位置数の制限値は８（Ｗ＝８）とした。
【０１００】
図１９に示すように、制限世代数を１００とした場合の処理によって、一例だけではあるが解（２２３０）が得られている。また、制限世代数を１０００とした場合の処理では、８例の解と２例の解に近い値が得られており、この８例の解の平均世代数は４５６．３であった。この結果から、第３の動作例においても従来例に比べて遺伝的アルゴリズム処理が改善されたことがわかる。なお、この第３動作例は上述の第１動作例に比べると改善の度合いが少ないが、その優劣は与える問題に強く依存するものと考えられる。
【０１０１】
次に、本発明による遺伝的アルゴリズム実行装置の第２の実施形態について説明する。この第２の実施形態の遺伝的アルゴリズム実行装置は図１（Ａ）に示す構成のなかの探索効率化部１３を、以下に説明する探索効率化部１３’に置き換えたものである。
【０１０２】
図２０は、この探索効率化部１３’の構成を示している。この図に示すように、探索効率化部１３’は、文字分布計算部１と、変異率計算部２と、突然変異処理部３と、文字位置選択部４と、組合せ生成部５と、文字分布記録部６と、世代数カウント部７と、終了条件評価部８とを備えている。文字分布計算部１と、変異率計算部２と、突然変異処理部３と、文字位置選択部４と、組合せ生成部５と、文字分布記録部６は図１（Ａ）もののと同じ機能を持つので、ここではその説明を省略する。
【０１０３】
世代数カウント部７は、世代数カウンタを備えており、これによって世代数を数えて記録する。世代数カウンタは、１つの遺伝的アルゴリズム処理の初期にリセット信号によってゼロにリセットされ、１世代の処理が行なわれるごとにカウントアップ信号によってカウント値を１づつ上げていく。
【０１０４】
終了条件評価部８は、文字分布計算部１及び／または文字分布記録部６のデータと、世代数カウント部７のデータを評価して、終了条件が満たされているか否かを判定する。終了条件が満たされていれば、終了条件評価部８は終了信号を外部に出力してアルゴリズムを終了させ、終了条件が満たされていないときには、文字分布の情報を変異率計算部２及び／又は文字位置選択部４に送り、また文字列の配列情報を突然変異処理部３及び／又は組み合せ生成部５に送り、新しい文字列の集まりを得る。さらに、これと同時に終了条件評価部８は継続信号を外部に送って、終了条件が満たされなかったことを知らせる。
【０１０５】
文字分布計算部１によって得られる文字分布は、第ｊ文字位置に対する文字がａである解候補の全解候補に対する割合ｐｊ  （ａ）によって表される。ここで、全ての文字位置ｊに関する＜ｐｊ  （ａ）＞の並びを｛ｐｊ  （ａ）｝と記すことにする。本実施形態に基づく処理では、｛ｐｊ  （ａ）｝と世代数ｔに依存する関数（終了条件関数）をＥ（｛ｐｊ  （ａ）｝、ｔ）と定義し、この終了条件関数の値と所定の値εとの大小関係（終了条件式による評価）をアルゴリズムの終了条件として用いる。
【０１０６】
次に、第２実施形態の遺伝的アルゴリズム実行装置に基づく動作処理について説明する。図２１は、この動作処理の流れを表すフローチャートである。この処理において、ステップＳ１とＳ２は、それぞれ図２及び図８のステップＳ１とＳ２に対応し、ステップＳ３−１〜Ｎ、Ｓ４−１〜Ｎ、Ｓ８−１〜Ｎは、それぞれ図２及び図８のステップＳ３、Ｓ４、Ｓ８に対応しているので、その詳しい説明は省略する。また、ステップＳ１２−１〜Ｎ（組み替え処理）は、図２に示した処理におけるステップＳ５とＳ６とＳ７の処理をまとめたものである。
【０１０７】
本処理では、まずステップ１において初期集団生成部１１によって解候補の初期集団が生成され、ステップ２においてそれぞれの解候補の適応度が求められると、ステップ１３において世代数カウント部７の世代数カウンタがリセットされ０にセットされる。次に、ステップＳ３−１において淘汰処理部１２による解候補の淘汰がなされたあと、ステップＳ４−１において文字分布計算部１が各文字位置に対する文字分布を計算する。このとき求めた文字分布は文字分布記録部６に記録される。次に、ステップＳ１２−１において組み替え処理がおこなわれるが、この組み替え処理では、変異率計算部２による変異率計算処理（図２のＳ５に対応）と、突然変異処理部３による突然変異処理（Ｓ６に対応）と、交叉処理部１４による交叉処理（Ｓ７に対応）が行われる。なお、ステップＳ１２−１では、変異率計算部２による変異率計算処理（図２のＳ５に対応）と、突然変異処理部３による突然変異処理（Ｓ６に対応）と、Ｓ７の交叉処理を行なってもよい
。
【０１０８】
次に、Ｓ８−１において組み替え処理（Ｓ１２−１）で得られた解候補の適応度が求められ、Ｓ１４−１において世代数カウント部７が世代数カウンタをインクリメントする（カウント値０→１）。この後、ステップＳ９−１において、終了条件評価部８が、世代数カウンタと文字分布のデータを第１終了条件式に当てはめて第１終了条件（終了条件１）が満たされているかどうかを判断する。第１終了条件が満たされていなければ（ステップＳ９−１、Ｎｏ）再びステップＳ３−１へ戻り、満たされていれば（ステップＳ９−１、Ｙｅｓ）ステップＳ３−２へと進む。
【０１０９】
ステップＳ３−２からは、前述のステップＳ３−１〜Ｓ９−１と同様の処理（ステップＳ３−２〜Ｓ９−２、・・・、ステップＳ３−Ｎ〜Ｓ９Ｎ）を繰り返し、終了条件評価部８は第２処理条件（処理条件２）〜第Ｎ処理条件（処理条件Ｎ）を判断する。そして、最後の処理条件Ｎが満たされた時点でアルゴリズムを終了する。
【０１１０】
次に、第２実施形態の遺伝的アルゴリズム実行装置による処理動作について説明する。ここでは、図１２に示したナップザック問題を解く場合を例として用いている。終了条件としては、次のような世代数ｔと文字分布｛ｐｊ  （ａ）｝に関する２つの終了条件を用いるものとする。
終了条件１：ｔ＞１０
終了条件２：
（１／５０）Σｊ  （２０−１９×｜ｐｊ  （０）−０．５｜−１９×｜ｐｊ  （１）−０．５｜）≦１．３
上記の終了条件１を用いているので、第１０世代までは図２に示す処理と同じ処理がなされる。第１１世代以降は、上記の終了条件２に基づいて文字分布が十分そろったことが判断された時点で処理を終了する。
【０１１１】
次に、上記のアルゴリズム実行処理の結果について説明する。
図２２は、上記アルゴリズム実行処理の１０回の試行の結果を表している。ここには、それぞれの試行結果における評価値の最大値と、最大値が得られた世代と、アルゴリズムが終了した世代（終了世代）を示している。この図からわかるように、いずれの試行においても最大値として解（２２３０）が得られており、終了世代は最大でも３３４であった。また、終了世代の平均は１４２．６であり、第１実施形態による試行において解を得るために１０００世代まで計算を続けていたことに比べて、処理の計算時間を大幅に短縮することができた。
【０１１２】
図２３は、本発明の遺伝的アルゴリズム実行装置（図１や図２０に示す装置）を実現するコンピュータシステムの例を表しており、図２、図６〜図１１、図１８、図２１に示したような処理をコンピュータプログラムによって実行しようとする場合、そのプログラムの実行に用いられるコンピュータシステムの例を表している。
【０１１３】
このコンピュータシステムは、コンピュータ本体１００とディスプレイ２００とキーボード及びマウスからなる入力装置８５０を備えており、コンピュータ本体１００はプロセッサ１１０とメモリ１２０と記憶媒体用ドライバ１３０を備えている。
【０１１４】
プロセッサ１１０は、図１（Ａ）の初期集団生成部１１、淘汰処理部１２、交叉処理部１４、探索効率化部１３の動作を実行し、さらに、図１（Ｂ）及び図２０の文字分布計算部１、変異率計算部２、突然変異処理部３、文字位置選択部４、組み合せ生成部５、世代数カウント部７、終了条件評価部８の動作を実行する。この処理は具体的には、コンピュータプログラムによって図２、図６〜図１１、図１８、図２１に示したような処理を実行することによって実現される。
【０１１５】
メモリ１２０は、そのコンピュータプログラムやプログラムの実行に必要なデータ（初期解候補集団の文字列、評価関数、乱雑度関数、各所定値、閾値、条件値等）、さらにはプログラムの実行によって得られたデータ（文字分布、評価値、乱雑度、変異率、世代数、新たな解候補集団の文字列等）を保持する。また、メモリ１２０は文字分布記録部６としても機能する。
【０１１６】
ドライバ１３０は外部記憶媒体に格納されたプログラムやデータをプロセッサ１１０やメモリ１２０に導入するためのものであり、本発明の処理を実行するためのコンピュータプログラムが外部記憶媒体に格納されている場合、このドライバ１３０を介して外部記憶媒体に格納されたプログラムが実行される。なお、入力装置２５０はユーザがプログラムの実行に必要なデータや命令を入力するために用いられる。
【０１１７】
本発明の処理を実行するためのコンピュータプログラムが外部記憶媒体に格納される場合、それはＣＤＲＯＭ等の光記憶媒体、フロッピーディスク等の磁気記憶媒体、ＭＤ等の光−磁気記憶媒体によって実現されうる。また、本発明による処理を実行するためのコンピュータプログラムは、ハードディスク、ＲＯＭ、ＲＡＭ等の内部記憶媒体にも格納されうる。
【０１１８】
【発明の効果】
本発明によれば、遺伝的アルゴリズムにおいて問題を解く場合に、問題が大規模であっても、各文字位置に設定されている変異率を文字位置ごとの文字分布に基づいて再設定することにより、効率的に最適解を探索することができ、探索の効率化により探索の世代数を少なくして、探索処理の速度を向上させることができる。
【０１１９】
また、各文字位置の文字分布に基づいて乱雑度の大きい文字位置についての文字の変更を試み、評価値が高くなる文字列を作り出すことにより、探索の効率化を図り、最適解を得るまでの世代数を大幅に減少させることが可能になる。
【０１２０】
さらに、第２実施形態によれば、遺伝的アルゴリズムによって問題を解く場合に、必要のない繰り返し計算を行なうことがなくなるので、処理にかかる計算時間を節約することができる。
【図面の簡単な説明】
【図１】本発明による遺伝的アルゴリズム実行装置の基本構成を表すブロック図である。
【図２】本発明による遺伝的アルゴリズム実行処理の第１の動作例を表すフローチャートである。
【図３】文字分布の概念を説明するための図である。
【図４】乱雑度関数を説明するための図である。
【図５】乱雑度を説明するための図である。
【図６】文字分布計算部の処理を表すフローチャートである。
【図７】変異率計算部の処理を表すフローチャートである。
【図８】本発明による遺伝的アルゴリズム実行処理の第２の動作例を表すフローチャートである。
【図９】文字位置選択／組合せ生成処理の説明図である。
【図１０】文字位置選択部の処理を表すフローチャートである。
【図１１】組合せ生成部の処理を表すフローチャートである。
【図１２】ナップザック問題の例を示す図である。
【図１３】従来法と本発明の方法との性能比較を示す図である。
【図１４】従来の方法による途中世代の文字列の状態を示す図である。
【図１５】本発明の方法による途中世代の文字列の状態を示す図である。
【図１６】従来の方法と本発明の方法における評価値および世代数の関係を示す図である。
【図１７】ナップザック問題の解を得るのにかかった従来の方法による世代数Ｇｃと本発明の方法による世代数Ｇａとの比を示す図である。
【図１８】本発明による遺伝的アルゴリズム実行処理の第３の動作例を表すフローチャートである。
【図１９】第３の動作例に基づく処理の結果を表した図である。
【図２０】本発明による遺伝的アルゴリズム実行装置の第２の実施形態を表すブロック図である。
【図２１】第２実施形態による遺伝的アルゴリズム実行処理を表すフローチャートである。
【図２２】第２実施形態の遺伝的アルゴリズム実行装置による処理結果を表している。
【図２３】本発明の遺伝的アルゴリズムアルゴリズム実行装置を実現するコンピュータ装置を表している。
【図２４】遺伝的アルゴリズムの説明図である。
【符号の説明】
１  文字分布計算部
２  変異率計算部
３  突然変異処理部
４  文字位置選択部
５  組み合せ生成部
６  文字分布記録部
７  世代数カウント部
８  終了条件評価部
１０  遺伝的アルゴリズム実行装置
１１  初期集団生成部
１２  淘汰処理部
１３、１３’  探索効率化部
１４  交叉処理部
【図１】
0003577207.tif 000002
【図２】
0003577207.tif 000003
【図３】
0003577207.tif 000004
【図４】
0003577207.tif 000005
【図５】
0003577207.tif 000006
【図６】
0003577207.tif 000007
【図７】
0003577207.tif 000008
【図８】
0003577207.tif 000009
【図９】
0003577207.tif 000010
【図１０】
0003577207.tif 000011
【図１１】
0003577207.tif 000012
【図１２】
0003577207.tif 000013
【図１３】
0003577207.tif 000014
【図１４】
0003577207.tif 000015
【図１５】
0003577207.tif 000016
【図１６】
0003577207.tif 000017
【図１７】
0003577207.tif 000018
【図１８】
0003577207.tif 000019
【図１９】
0003577207.tif 000020
【図２０】
0003577207.tif 000021
【図２１】
0003577207.tif 000022
【図２２】
0003577207.tif 000023
【図２３】
0003577207.tif 000024
【図２４】
0003577207.tif 000025