遺伝的アルゴリズムをブラウザで実行するためのJavaScript用フレームワークを実装しました。
GA Framework
https://github.com/technote-space/ga-framework
テンプレートリポジトリ
https://github.com/technote-space/ga-framework-template
技術・特徴
Web Worker
遺伝的アルゴリズムの計算を同じプロセスで行うとブラウザの動作が固まってしまうので Web Woker を使用して別プロセスで計算します。
欠失・挿入
遺伝子長の変化を伴う突然変異を考慮しています。
島モデル
多様性の保持のための島モデルを標準でサポートしています。
またテンプレートリポジトリには異文化型島モデルの考えを採用した世代交代モデルも実装しており、島のいくつかに混ぜることでより多様性が必要なネットワーク構造を持つモデルなどで有効な可能性があります(未検証)。
Minimal Generation Gap
テンプレートリポジトリには世代交代として MGG が実装されています。
淘汰圧の強い SGA は普段使わないので用意してないですが、実装して使用することはできます。
デモ
Hello,World! 文字列の作成
- 遺伝子型:整数列
- 表現型:文字列
HSP3で遺伝的アルゴリズムをした話 〜遺伝的アルゴリズムの概略と「ムダにクリエイティブ」な"Hello,World!"〜
こちらの記事の例と似たものをこのフレームワークで実装したものです。
「Hello,World!」 という文字列を作成します。
デモ
https://technote-space.github.io/ga-framework/samples/hello-genetic-algorithm/
実装
https://github.com/technote-space/hello-genetic-algorithm
離れていても心は一つ
- 遺伝子型:実数列
- 表現型:画像
遺伝的アルゴリズムを使って「離れていても心は一つ」を自動化してみた in Python
こちらの記事の例と似たものをこのフレームワークで実装したものです。
いくつかの円で入力画像に近い画像を作成します。
デモ
https://technote-space.github.io/ga-framework/samples/auto-figure-ground/
アルゴリズム自動生成
- 遺伝子型:整数列
- 表現型:グラフ構造
研究中のアルゴリズム生成自動化技術をこのフレームワークで実装したものです。
階乗、フィボナッチなどを求めるプログラムを自動生成します。
デモ
https://technote-space.github.io/ga-framework/samples/automatic-programming/
利用方法の詳細
Under Construction...