GAJIROとの性能比較
2001年 10月26日
片浦哲平
1.先週からの課題
先週からの課題として,
・ ランダムリングが正しく行えているかどうかを確認する
・ GAJIROとの性能比較を行い,バグが無いかを確認する
などがあった.
2.研究報告
今週行ったこと
ランダムリングの確認
ランダムリングが正しく行えているかどうかの確認に簡単なサンプルプログラムを作成した.
プログラムのソース
プログラムは"randring.h"で選ばれる移住先の島を表示するだけの単純なものである.
実行は 20島で島の出発点は0で固定して行った.実行結果を示す.
実行結果
さらに実行結果からランダムリングが正しく行えていたかを図示してみた.
20島では多すぎるので8島で3回測定してみることにする
実行結果
1回目
0 -> 6 -> 1 -> 4 -> 2 -> 7 -> 5 -> 3 -> 0 ->
2回目
0 -> 1 -> 4 -> 7 -> 2 -> 6 -> 3 -> 5 -> 0 ->
3回目
0 -> 5 -> 1 -> 6 -> 2 -> 4 -> 3 -> 7 -> 0 ->
図1 1回目 図2 2回目 図3 3回目
ランダムリングが正しく行えていることを確認できたと思う.
GAJIROとの性能比較
次にGAJIROと自分のGAの性能比較を行った.初期値を示す.
表1 初期値
|
世代数
|
2000
|
|
個体数
|
400
|
|
交叉率
|
1.0
|
|
突然変異率
|
1/L
|
|
遺伝子長
|
100
|
|
設計変数
|
10
|
|
エリート保存
|
1×島数 |
|
移住率
|
0.2/0.4
|
|
移住間隔
|
1/5/10
|
|
島数
|
4/10/40/80
|
|
試行回数
|
20
|
|
選択方式
|
ルーレット選択
|
|
目的関数
|
rastrigin/griewank
|
|
移住トポロジー
|
ランダムリング
|
|
移住のタイミング
|
選択後
|
実行結果を示す.結果は表2の通りに配置してある
表2 配置
|
島数4 移住間隔1
|
島数4 移住間隔5
|
島数4 移住間隔10
|
|
島数10 移住間隔1
|
島数10 移住間隔5
|
島数10 移住間隔10
|
|
島数40 移住間隔1
|
島数40 移住間隔5
|
島数40 移住間隔10
|
|
島数80 移住間隔1
|
島数80 移住間隔5
|
島数80 移住間隔10
|
測定結果,
rastrigin 移住率0.2,移住率0.4
griewank 移住率0.2,移住率0.4
移住率,島数の違いによってGAJIROと自分のGAの性能に違いがあるが,これは移住トポロジーの
違いと,エリート保存の方法の違いによるものが大きいと思われる.
GAJIROは移住させる個体をランダムに選択し,選んだ個体とまったく同じ順番の個体に上書きする
方法をとっている.
これに対し,自分のGAでは移住させる個体も上書きさせる個体のランダムに行っているという違い
がある.
この違いに関しては現在自分のプログラムをGAJIROと同じ移住方法に変更したもので測定中である.
また,エリート保存に関しても以下のような違いがある.
この違いが実行結果に影響しているのではないかと考えられる.
追加
移住方法をGAJIROと同じにしたものでRastrigin関数で同様に実行した.
結果を以下に示す.
| 移住間隔 1,移住率 0.2 |
| 移住間隔 1,移住率 0.4 |
| 移住間隔 5,移住率 0.2 |
| 移住間隔 5,移住率 0.4 |
| 移住間隔 10,移住率 0.2 |
| 移住間隔 10,移住率 0.4 |
3.今後の課題
今週は時間的にすべての測定が間に合わなかったので,残りの測定を行う.
残りの測定とは,
・Griewank関数での測定
・Rosenbrock関数での測定
・移住方法を統一しての測定
などである.
加えて
・環境分散GAの作成
を行っていきたい.