GAlib - eiichiromomma/CVMLAB GitHub Wiki

GAlib

MITで作られたGenetic Algorithm(遺伝的アルゴリズム)のライブラリ

ライセンスはBSDに近い形態なので使い易い。(gnu絡みもあるが分離されている)

##GAlibの導入

Windows (Visual Studio)

準備

ソースを拾ってきて展開。ここではC:\local\galib247とする。 VisualStudioコマンドプロンプトを開き、展開した所に移動してnmake。

cd \local\galib247
nmake /f makefile.vcpp

C:\local\galib247\gaがインクルードパスおよびライブラリパスになる。 静的なライブラリなのでパスを通す必要は無い。

サンプル

C:\local\galib247\examplesにある。

基本構成

main内ではパラメータの設定、遺伝子の設定、学習といった感じ。Objective関数が評価関数で、コールバック関数のような定義の仕方になる。 関数内で評価を行ないスコアを返す。スコアは大きい程高評価。同関数へはuserdataへのポインタを渡せる。

メモ

プログラム名 遺伝子 Objective関数 備考
ex1 2次元、2値 左上から↓→の順に数えて奇数が1になるよう評価する なし
ex2 一次元、実数と整数 userDataの目標値を使い1/(1+fabs(要素-目標))を積算 遺伝子の最大、最小の指定方法、乱数の生成法、Objective関数へ値の受け渡し
ex3 2次元、2値 01のパターンとの一致不一致 2次元に01を羅列した絵をテキストファイルから読み取る(inStream)
ex4 3次元、2値 ex1の3次元版 なし
ex5 2次元、2値と1次元実数の混在 ex1とex2のミックス classの継承例
ex6 Tree Treeの大きさ GATreeGenomeの使い方とメンバのoverrideの例
ex7 2次元、2値 ex3と同様 ex3に他のメンバ関数の使い方の例を追加
ex8 整数、List 101を含む要素があると+1 GAListGenomeの使い方
ex9 16bit実数(-5から5)x2 y = - x1^2 - x2^2を返す yが最大値となるx1,x2を探すことになる

関連リンク