これは、これらのフォーラムでの最初の投稿です。すべての回答があらかじめありがとうございます。相互依存変数による組み合わせ最適化
私は「組み合わせ最適化問題」と呼ばれると思われるものに遭遇したJavaアプリケーションを開発しています。私は基本的な数学スキルしか持っていないので、そのような問題の設定を調べようとすることはこれまで実りありませんでした。
基本的には、変数v1、v2、v3などを使って、より大きな集合Nの最適サブセットnを見つける最も効率的な方法をプログラムすることです。変数にはすべて、さらに明確な値/スコアがありますサブセットに含まれていてもいなくてもよい他の特定の変数に依存する値/スコアに変換する。
私は最大合計値/スコアを与えるサブセットの選択に興味があります。
したがって、例えば、フルセットのNは、次の変数で構成され、以下の確定値ならびに関係他の変数に有する:一個の以上の他の選択された変数に関係を持つ
v1 8 { v2 ; v8 }
v2 6 { v1 ; v4 }
v3 9 { }
v4 7 { v2 ; v5 ; v8 }
v5 6 { v4 ; v10 }
v6 8 { v7 }
v7 5 { v6 }
v8 9 { v1 ; v4 }
v9 6 { }
v10 7 { v5 }
を合計値がある種の「離陸」を持つことを意味します。この例のために、各関係ごとに1つを挙げましょう。サブセットは30の合計値を与えるよう は、したがって、最初の5つの変数を選択:
v1 8 { v2 ; v8 } = 8 - 1 = 7
v2 6 { v1 ; v4 } = 6 - 2 = 4
v3 9 { } = 9 - 0 = 9
v4 7 { v2 ; v5 ; v8 } = 7 - 2 = 5
v5 6 { v4 ; v10 } = 6 - 1 = 5
これは当然のことながら、このような小さなセットのための問題ではありませんが、私は現在、100Kと10Kのサブセットのセットに直面しています - 現在のアルゴリズムでは、私のコンピュータは3日で解決策を計算しました!
私は必ずしもこれを解決するためのコードを必要としませんが、それを行うための最適な数学的方法(もしあれば!)は必要です。しかし、私は基本レベルより上の数学的表記法を理解するのが苦労しています。
もう一度、すべての回答に感謝します!
かなり時間がかかりましたが、ここで述べた解決策のいくつかを理解しようとしました。私は結局Simulated Annealingで終わりました。それが正しい/最適な解決策であるかどうかは分かりませんが、少なくとも理解して実装するのは簡単でした。それは私がしようとしていることに対しては非常にうまくいくようです。すべての提案ありがとう! –