Java進化計算ツールキット - 百科事典

ECJは、Javaで書かれたフリーソフトの進化的計算研究システムです。これは、遺伝的アルゴリズム、遺伝的プログラミング、進化戦略、共進化、粒子群最適化、および差分進化などの様々な進化的計算技術をサポートするフレームワークです。このフレームワークは、選択、交配(例えば、クロスオーバーや新しい個体を生成する変異演算子)を使用して、1つのまたは複数の個体の亜群を接続する一連のパイプラインを使用して反復的な進化的プロセスをモデル化しています。フレームワークはオープンソースで、Academic Free Licenseの下で配布されています。ECJはジョージ・メソン大学のコンピュータサイエンスの教授であるショーン・ルークによって作成され、ショーン・ルークと多くの寄稿者によって維持されています。

特徴(ECJのプロジェクトページからリストアップ):

一般的な特徴:

グラフ表示付きのGUI
プラットフォーム独立のチェックポイントとログ記録
階層的なパラメータファイル
マルチスレッド
Mersenne Twisterランダム数生成器
さまざまなEC形式を実装するための抽象化
ECの特徴:

TCP/IP上のアシンクリヌスアイランドモデル
マスター/スレーブ評価のマルチプロセッサ
遺伝的アルゴリズム/プログラミングスタイルの安定状態と世代進化、エリートを選択するかしないか
進化的戦略スタイル(μ、λ)および(μ+λ)進化
非常に柔軟な交配アーキテクチャ
多くの選択演算子
複数の亜群と種
亜群間の交換
ファイルから亜群の読み取り
単一および複数の亜群の共進化
SPEA2多目的最適化
粒子群最適化
差分進化
空間的に埋め込まれた進化的アルゴリズム
他の多目的最適化方法のためのフック
節約圧力のためのパッケージ
GP木の表現:

集合ベースの強制型遺伝的プログラミング
一時的なランダム定数
自動的に定義された関数と自動的に定義されたマクロ
複数の木の森
6つの木作成アルゴリズム
広範なGP交配演算子
7つの既定のGPアプリケーション問題領域(アリ、回帰、マルチプルッサ、ラムズワース、パリティ、トゥーボックス、エッジ)
ベクトル(GA/ES)の表現:

固定長および可変長のゲノム
任意の表現
5つの既定のベクトルアプリケーション問題領域(合計、ロッセンブロック、球、ステップ、ノイズキュアート)
他の表現:

NEAT
ルールパッケージ内の多集合ベースのゲノム、ピッツ・アプローチルールセットや他の集合ベースの表現を進化させるため

参考情報
Paradiseo、メタヒューリスティックフレームワーク
MOEA Framework、オープンソースのJavaフレームワークで、多目的進化的アルゴリズムのため

参考文献
ECJプロジェクトページ
ウィルソン、G.C. マクイントライアー、A. ヒューイット、M.I. (2004)、「Resource Review: Three Open Source Systems for Evolving Programs-Lilgp, ECJ and Grammatical Evolution」, Genetic Programming And Evolvable Machines, 5 (19): 103-105, Kluwer Academic Publishers. ISSN 1389-2576