GA 3D Simulator

与えられた2変数関数の最大値を求めるアプレットです。探索手法として、遺伝的アルゴリズムまたは山登り法が選択できます。右上の関数ビューに探索対象の関数のグラフが表示されます。グラフはマウスをドラッグすることにより回転することができます。関数ビューの下にそれまでの経過をグラフにしたものが探索中の情報が表示されます。

実行環境

シミュレータはjdk1.1.5対応のブラウザ上で動作するjavaアプレットです。 対応ブラウザは以下のとおりです。

GA3DSimulator.exeを解凍後、GA3DSimulator.htmlを開いてください。なお、jdk1.4付属のVMでは実行時の動作が非常に重くなる場合があります。

操作方法

continueボタンかstepボタンにより探索を開始します。continueボタンの場合、最後まで継続して探索が行われますが、resumeボタンにより探索を一時停止させることができます。一方stepボタンの場合、遺伝的アルゴリズムによる探索では一世代進むまで、山登り法による探索の場合は個体が移動するまで、探索が進んで一時停止します。resetボタンは探索を中断して初期状態に戻したいときに使用します。

function setting

探索対象の関数を設定します。

関数の定義域を入力します。

関数を入力します。入力形式は、c言語やjavaにおける識別子に似せてあります。

あらかじめ設定されている関数を選択します。DeJong F1〜F5は、GAのベンチマークテストや他の手法との定量的評価手段として用いられる標準関数です。 以下にその定義を示します。

これらは最小値を求めるものですが、このアプレットでは符号を反転して最大値を求める問題に置き換えています。またDeJongF1,F3,F4は3変数以上の問題ですが、2変数の問題になるように式を簡略化しました。

viewer settings

右上の関数ビューへの表示の設定をします。

関数の配色の設定をします。関数値が大きくなるにしたがって、グラフの色が青から赤に変わります。その変わりはじめと終わりの関数値を指定します。

関数値とパラメータのx,yとの表示の際のスケールの比を設定します。たとえば2を入力すると、グラフの高さが2倍になります。

search method settings

探索手法の設定をします。

探索手法を選択します。

最大の世代数。

集団の個体数。

山登り法において、探索終了までの関数の評価回数。GAの場合の関数評価回数は[max generation] × [population size]です。

選ばれた2個体が交叉する確率。

遺伝子座(遺伝子の各ビット)一つあたりの突然変異が起きる確率。

遺伝子長(遺伝子のビット数)。

GAオペレータ(突然変異、交叉)が適用されずにそのまま次世代にコピーされる個体の数。

エリート戦略で次世代に残す優良個体の数。適合度の高いものから順に残されます。エリート数は世代間のギャップに含まれるため、[number of elite]は[generation gap]以下でなければいけません。

個体の座標をビット配列である遺伝子に写像する際のコーディングの手法。バイナリコーディングは座標の10進数表記を単純に2進数表記に変換するだけの方法です。一方グレイコーディングは、隣り合った座標のハミング距離(遺伝子間の異なる遺伝子座の数)が1となるように、バイナリコーディングの2進表記を変換する方法です。

個体の選択方法。ここで選択された個体がGAオペレータによる操作を経て、次世代の集団を形成します。

上記のトーナメント法におけるトーナメントのサイズ。

近親度(sharing)を求める関数のパラメータ。遺伝子が近い個体が多い個体ほど適合度が小さくなるようにして、集団の多様性を維持したいときに設定します。この値が0のときは近親度を考慮しません。

実数値GAで用いる交叉方法を選択します。

BLX-α法で用いる両親が作る空間を延長する割合を表す値。

突然変異の方法を選択。一様分布と正規分布の2種類から選択できる。

一様分布による突然変異を用いる場合の分布幅を定める。但しこの大きさは変数が取りうる値を[-1 : 1]に正規化したときの大きさに相当する。

正規分布による突然変異を用いる場合の標準偏差を定める。但しこの大きさは変数が取りうる値を[-1 : 1]に正規化したときの大きさに相当する。