BIG版後の質問:
遺伝的アルゴリズムを使用してランキングを作成する必要があります。次のようなデータがあります。
P(a>b)=0.9
P(b>c)=0.7
P(c>d)=0.8
P(b>d)=0.3
a,b,c,d
ここで、をサッカー チームの名前と解釈して、 で勝つP(x>y)
確率をとします。チームのランキングを作成したいのですが、いくつかの観察が不足しており、a vs d と a vs c の一致がないために欠落しています。目標は、その 4 チーム リーグの現在の状況を最もよく表すチーム名の順序を見つけることです。x
y
P(a>d)
P(a>c)
チームが 4 つしかない場合、解決策は簡単です。まず、4!=24
欠損値を無視しながら、4 つのチームのすべての順序について確率を計算します。
P(abcd)=P(a>b)P(b>c)P(c>d)P(b>d)
P(abdc)=P(a>b)P(b>c)(1-P(c>d))P(b>d)
...
P(dcba)=(1-P(a>b))(1-P(b>c))(1-P(c>d))(1-P(b>d))
そして、確率が最も高いランキングを選択します。他のフィットネス機能を使用したくありません。
私の質問 :
n 要素の順列の数はn!
、すべての順序付けの確率の計算であるため、大きな n (私の n は約 40) では不可能です。その問題に遺伝的アルゴリズムを使用したいと考えています。
突然変異演算子は、ランキングの 2 つ (またはそれ以上) の要素の場所を単純に切り替えることです。
しかし、2 つの順序付けのクロスオーバーを作成するにはどうすればよいでしょうか。
非対称 TSP 問題のパス「abcd」のコスト関数として解釈できP(abcd)
ますが、x から y への移動のコストは y から x への移動のコストとは異なりP(x>y)=1-P(y<x)
ます。TSP の問題には非常に多くの交叉演算子がありますが、私の問題は TSP とは少し異なるため、独自の交叉演算子を設計する必要があると思います。概念分析のためのソリューションまたはフレームのアイデアはありますか?
概念レベルおよび実装レベルでの最も簡単な方法は、2 つのソリューション間でサブオーダーを交換するクロスオーバー オペレーターを使用することです。
CrossOver(ABcD,AcDB) = AcBD
要素のランダムなサブセット (この場合は大文字の 'a,b,d') の場合、最初のサブオーダー - 要素 'a,b,d' のシーケンスを 2 番目のオーダーにコピー アンド ペーストします。
Edition : 非対称 TSP は対称 TSP に変換できますが、下位順序付けが禁止されているため、GA アプローチは不適切です。