C# で遺伝的アルゴリズムを作成するにはどうすればよいですか? 利用可能なライブラリはありますか? C++ と同様: http://lancet.mit.edu/ga/
4 に答える
これは面倒な答えのように聞こえるかもしれませんが、最初に遺伝的アルゴリズムで何を解決するかを決定する必要があります。前述のように、巡回セールスマン問題は一般的な問題であり、彼らがどのように機能するかを学ぶためのかなり良い方法です。
GAの最も重要な部分の1つとしてこれを言いますが、これはフレームワークが作成することのない適応度関数です。
2003年のこのcodeprojectの記事は、以下をカバーしています。
- フィットネス機能
- 偏ったルーレット盤
- 突然変異
使い方は簡単です:
GA ga = new GA(crossover rate,
mutation rate,
population size,
number of generations,
number of parameters for the fitness function);
ga.FitnessFunction = new GAFunction(theActualFunction);
これは.NET3にアップグレードできます。
ga.FitnessFunction = delegate(double[] values)
{
return 1.2d;
};
ご覧のとおり、この適応度関数は、遺伝子が(たとえばビット文字列ではなく)double値として表されることを期待しています。
ただし(これは記事を却下するものではありませんが、これは良いことです)、基本的なGAがどのように機能するかを知っていれば、これを自分で簡単に書くことができます。
コードプロジェクトで見つけることができる単なる「hello world」の例以上のものを提供する素晴らしいフレームワーク「AForge.NET Genetics」があります。重複した投稿を参照してくださいC#での遺伝的プログラミング
C# で単純な GA ショーケース プロジェクトを開発しました。これは遺伝的アルゴリズムのこんにちは世界であり、遺伝的アルゴリズムを開発するためのパターンとして使用するのに十分一般的なインターフェイスのセットで例を作成しました。
コードとドキュメント (設計図を含むエンタープライズ アーキテクト ドキュメントを含む)は github ページにあります。実行可能ファイルをダウンロードして、動作を確認することもできます。
それが役に立てば幸い。
CodeProjectで C# の遺伝的アルゴリズムに関する情報を見つけることができます。