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を探すことになる |