役に立ちましたか?

解決

私は解決が困難である最適化問題を持っているときはいつでも、

、私は遺伝的アルゴリズムを考えるの。以下の私のソリューションは、あなたがGA(それを自分で実装するのは非常に難しいことではありません)

に精通していることを前提としてい あなたが与えた例のグラフを見ると、それからのゲノムを体系化するために、私たちはノードがN×N個のグリッド上(整数位置)に配置されると仮定してみましょう。は、次のスキームを検討します:

00101 00100 11010 11110 11000     
  A     B     C     D     E

ここで、各部分は、ノード(この順序で)の(バイナリで)グリッド内の位置を符号化します。各部分の長さは、グリッドのサイズ(長さ= CEIL(LOG2(N * N)))に依存する。
グリッドは、左から右に、行ごとに番号が付けられます。

そこで、一例として、4つのノード(A、B、C、D)と3×3グリッドとの完全なグラフの文字列

0011 0001 0101 1000    =   3  1  5  8 
 A    B    C    D          A  B  C  D

以下のレイアウトを表す

. B .       00  01  02
A . C       03  04  05
. . D       06  07  08

次に、我々は、通常の(一次元又は二点クロスオーバー)としてクロスオーバーの演算子を設計し、変異同様に(ランダムに1ビットを反転)。私達はちょうど任意の時点で、我々は唯一のグリッド内ののを有効な位置を持っていることを確認する必要があります。
最後にフィットネス関数は長いパス(最小化問題として)を不利になる、経路上のノード間の距離の一部の機能(複数のパスの合計)であろう。 例では、ノード間の都市ブロック距離を取ることである。
方法の残りの部分は、標準的な遺伝的アルゴリズム(初期化、評価、選択、再生、終了)である。

の 例示するために、次の二つの経路を考えると、都市ブロック距離との以前のレイアウトを検討:A D C BC B D A

A -> D -> C -> B
  3  + 1  + 2    = 6        therefore
C -> B -> D -> A              fitness(0011 0001 0101 1000) = 6 + 8 = 14
  2  + 3  + 3    = 8

もちろん目標は、トレーニング機能を最小限に抑えるレイアウトを見つけることです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top