概観

遺伝的アルゴリズムの概要をみてわかるように、 交叉と突然変異は遺伝的アルゴリズムでもっとも重要な部分です。 パフォーマンスは、主にこの2つのオペレータによって影響されます。 交叉と突然変異をもっと説明する前に、染色体に関するいくつかの情報を与えたいと思います。




染色体の暗号化

染色体はいろいろな方法で、それが表現する解に関する情報を含んでいます。 もっともよく使われる暗号化の方法はバイナリー文字列です。 その染色体はこのように見えます。

染色体 1 1101100100110110
染色体 2 1101111000011110

どの染色体もバイナリー文字列を1つもっています。 この文字列の中のどのビットも解の特徴を表現しています。 または、文字列全体で1つの数を表わします。これは基本GAデモンストレーションで使われています。

もちろん、他にもたくさんの暗号化の方法があります。 これは解決すべき問題によります。 例えば、直接整数や実数に暗号化することもできますし、順列などに暗号化するのも役立ちます。




交叉

どのような暗号化をするかを決めた後、交叉の手段を決めることができます。 交叉は両親の染色体から遺伝子を選び、新しい子孫を作ります。 これを行うもっとも単純な方法は、ランダムに交叉点をえらび、この点までを父親(染色体1)から、この点以降を母親(染色体2)からコピーすることです。

交叉はこのようになります。 交叉点は | で表わされます

染色体 1 11011 | 00100110110
染色体 2 11011 | 11000011110
子孫 1 11011 | 11000011110
子孫 2 11011 | 00100110110

他にも交叉を行う方法はあります。 例えばもっと多くの交叉点を選ぶことができます。 交叉は より複雑で、染色体の暗号化の方法に非常に依存します。 特殊な問題に対する特殊な交叉は遺伝的アルゴリズムのパフォーマンスを改善します。




突然変異

交叉が行われた後で、突然変異がおこります。 これは個体群のすべての解がが解決すべき問題の局所解に落ち込んでしまうことを防ぎます。 突然変異は新しい子孫にランダムに変更を加えます。 バイナリー暗号化ならば、ランダムに選ばれたいくつかのビットを0から1へ、また1から0へと反転させることができます。 突然変異は次のようになります

元の子孫 1 1101111000011110
元の子孫 2 1101100100110110
突然変異した子孫 1 1100111000011110
突然変異した子孫 2 1101101100110110

突然変異も交叉同様暗号化の方法に依存します。 例えば、順列を暗号化したのであれば、突然変異は2つの遺伝子を交換することで行われます。