私は割り当ての問題を手にしており、望ましい解決策(検索スペースがかなり大きい)に達するためにローカル検索技術を適用するのがどれほど適しているのだろうと思っています。グラフを描く遺伝的アルゴリズム?位置割り当ての問題
私は人間の目で非常にはっきりと理解でき、読みやすい方法で2次元平面上で視覚化したい有向グラフ(フローチャート)を持っています。したがって、私は(x、y)の位置を各頂点に割り当てます。私はシミュレーテッドアニーリング、遺伝的アルゴリズムを使用してこの問題を解決すると思って、または任意のそのような方法は、あなたがお勧めすることができ
入力:グラフG =(V、E)
出力:割り当てのセット、 {(xi, yi) for each vi in V}
。言い換えれば、各頂点には、座標がすべて整数で、> = 0の位置(x、y)が割り当てられます。
これは私が解決策を判断するために使用する基準です(私は何か提案を歓迎します)。エッジは最小限であるべきである交差の
- 番号、
- 一方向のすべてのエッジの流れ(すなわち、左から右へ)、
- 高い角度分解能(同じ上の2つの縁 入射することにより形成最小角度頂点)、
- 小少なくとも重要です。
さらに、私は手作業で作った初期の構成(頂点への位置の割り当て)を持っています。それは非常に面倒です、そして、それが私がプロセスを自動化しようとしている理由です。
私の質問は、どのように賢明なことは、ローカル検索技術で行くことになり
ですか?どのようにして が望ましい結果を生み出すでしょうか?
まずはどうすればよいですか?模擬アニーリング、遺伝的アルゴリズム または何か他のもの?
最初に無作為にシードするか、最初に コンフィグレーションを使用する必要がありますか?
また、同様の実装/擬似コード/事柄について既に知っている場合は、教えてください。
ご協力いただきますようお願い申し上げます。ありがとう。
編集:リアルタイムではなく、高速である必要はありません。さらに、 | V | =〜200であり、各頂点は平均で約1.5の出力エッジを有する。グラフには切断されたコンポーネントはありません。それはサイクルを伴う。
メインタスクのグラフはまだありますか?グラフの描画については、すでに非常に多くの研究があります。最初に...そして、これがあなたの主な仕事でない場合は、既存のライブラリを使ってグラフ描画部分を作成してください。 – Szabolcs
あまり複雑ではない遺伝子アルゴリズムを作成するために、遺伝子に座標と辺を格納する方法を見つけましたか?つまり、値を1,0としたストリングとして保存するか、座標とエッジを保存する方法を見つけましたか? – kuldarim