0

私は、3Dでボロノイのテッセレーションを作成するための進化的アプローチを使用する、アーキテクチャでの遺伝的アルゴリズムの使用を探索するプロジェクトを行っています。これは、openFrameworks(C++)にforxVoro ++を使用して行われます。遺伝子アルゴリズムではバイナリエンコーディングが必要ですか?

ゲノムのための我々の染色体は、3Dの点のベクター(リスト)です。私たちは、一点突然変異と二点突然変異を実装しました。突然変異は、これらの点をある確率でランダム化します。私が見たほとんどの例では、ゲノムは二価にコードされています。これは突然変異とクロスオーバーが異なるように作用すると推定しています。

私の質問は次のとおりです。バイナリエンコーディング(スピードを除く)には他にも利点がありますか、C++でこのようなエンコーディング/デコードをどのように処理しますか?バイナリから3d-pointのリストに行く。

敬具、 フレッド

+0

すべてがコンピュータ上でバイナリでエンコードされていることを考慮すると、すでにそれを行っています。 3D点で作られた染色体を扱うことは、すべての演算が浮動小数点/固定小数点数の正当な表現である一連のビットを生成することを意味します。 – StoryTeller

+0

人工知能の助けが必要ですか? https://area51.stackexchange.com/proposals/93481/artificial-intelligence – 6119

+0

いいえ、バイナリエンコーディングを使用する必要はありません。何かを使いたい。あなたが適切な突然変異および交叉オペレーターを持っていることを確認してください。 – Ray

答えて

0

また、実際のエンコーディングを使用しますが、この場合には、あなたが使用しているもの交叉と突然変異が重要であることができます。クロスオーバが単純に(p1 + p2)/ 2またはp1 * a + p2 *(1-a)の場合、良い結果は得られません。実際の符号化のための

良好な交叉オペレータは、ここでは1995年にK.デブによって提案された紙である。http://www.complex-systems.com/pdf/09-2-2.pdf

0

交叉および突然変異が異なる演算子です。クロスオーバは既存の遺伝子を使用します。突然変異は、新しい遺伝物質を集団に導入する。あなたのアルゴリズムに関する多くの情報を知らなければ、ランダム化ポイントは突然変異のように聞こえる。突然変異は、典型的には、交叉がかなり高い(50%)ことができる時間の非常に低いパーセント(おそらく1%)で実施される。

アルゴリズムのために、私はクロスオーバーのために何も "変更"しません。代わりに、クロスオーバのために、私は材料の位置を変更しようとするか、単に親からポイントの異なる部分を取ろうとします。

突然変異の場合、ポイントに少数を加算または減算することで、ポイント(突然変異)を変更することができます。

あなたのアルゴリズムと染色体表現についてもっと知らなくても、提案をするのは難しいです。

0

ロジスティック問題と財務問題で異なるGAを使用しました。非常に頻繁に私はバイナリ表現を使用しません。私はあなたを与えることができること 最初の例では、TSPの問題である:ここ

https://en.wikipedia.org/wiki/Travelling_salesman_problem

Iは、標準的な表現を使用する:染色体が整数のアレイであり、各値は、都市を表します。

バイナリ表現なしでGAを実装する方法を見つけることができれば、解決しようとしている問題のタイプによって異なります。調整する必要はありません。 さらに、私は自然な表現が好きです。なぜなら、あなたのGAがあなたの望むように働いていれば、コードをデバッグしながら、より理解しやすいからです。

関連する問題