8

私が関わってきた運用研究プロジェクトにいくつかの遺伝的アルゴリズムを追加しようとしています。現在、スケジューリングの最適化を支援するプログラムがあり、遺伝的アルゴリズムの形でいくつかのヒューリスティックを追加したいと考えています。C ++での一般的な遺伝的プログラミング/アルゴリズムに適したライブラリはありますか? それとも、自分でコーディングすることをお勧めしますか?

私は c++ は初めてではありませんが、以前一緒に働いていたグループは独自の最適化パッケージを使用する傾向があったため、c++ でこの種の数学的最適化作業を行うのはかなり初めてです。

評価するのにかなり計算量の多いフィットネス関数があり、これを実行するクラスターがあるため、並列化されたコードが非常に望ましいです。

では、c++ はこれに適した言語でしょうか? そうでない場合は、他の言語をお勧めしてください.

ありがとう!

4

5 に答える 5

4

私はあなた自身を転がすことをお勧めします。GPでの作業の90%は、遺伝子型、操作方法、および適応度の計算をコーディングしています。これらは、さまざまな問題/プロジェクトごとに変わる部分です。実際の進化的アルゴリズムの部分は通常、非常に単純です。

そこにはいくつかのGPライブラリがあります(http://en.wikipedia.org/wiki/Symbolic_Regression#Implementations)。ただし、これらを例と参照として使用します。

C ++は、計算量が非常に多い傾向があるため、GPに適しています。通常、適応度関数がボトルネックになるため、少なくともこの部分をコンパイル/最適化することは価値があります。

于 2010-05-18T15:12:43.803 に答える
1

私はGAULを使っています。

必要なものがすべて揃った C ライブラリです。
( pthread/fork/openmp/mpi )
( さまざまなクロスオーバー / 突然変異関数 )
( 非 GA 最適化: Hill-Climbing、NM Simplex、Simulated Annealing、Tabu、... )

このような強力なツールがあるのに、なぜ独自のライブラリを構築するのですか???

于 2010-09-26T21:58:14.597 に答える
1

私はまだこれを個人的に使用したことはありませんが、Age Layered Population Structure (ALPS)メソッドは、人間の競争結果を生成するために使用されており、大まかなフィットネス環境で最適なソリューションを見つける際に、いくつかの一般的な方法よりも優れていることが示されています. さらに、リンクには C++ FTW のソース コードが含まれています。

于 2010-10-11T12:52:28.297 に答える
-2

matlab 最適化ツールキットを調べてみることをお勧めします。これにはGAが付属しており、フィットネス関数 (および最終的に初期集団を生成する関数) をコーディングするだけで済みます。matlab には C++ の相互運用性があるため、 C++ で関数をコーディングします。私は実験のためにそれを使用していますが、非常に優れた機能は、箱から出してすぐにあらゆる種類のチャートを取得できることです.

そうは言っても、遺伝的アルゴリズムについて学習することが目的であれば、それをコーディングした方がよいでしょうが、実験を実行したいだけであれば、matlab と C++ (または matlab だけでも) が適切なオプションです。

于 2010-05-22T09:02:46.917 に答える