逆交叉関数を知らなければ、親を見つけることはできません (つまり、AxB => (a,b) & (任意の a) => (A,B))。
通常、1 点交差関数は次のとおりです。
a = A1 + B2
b = B1 + A2
aとbがわかっていても、システム (4 つの変数を持つ 2 つの連立方程式) を解くことはできません。
任意の A または/および B の任意の 2 つの部分がわかっている場合は、それを解くことができます(2 つの変数を持つ 2 つの連立方程式)。AとBの両方を提供するため、これはあなたの質問に当てはまります。
通常、クロスオーバー関数には逆関数がなく、論理的に解を見つけるか、親がわかっている場合はクロスオーバーを実行して比較する必要があります。
したがって、一般的な式を作成するには、次の 2 つのことを知っておく必要があります。
- クロスオーバー機能。
- 逆クロスオーバー機能。
2 番目のものは、必須ではないため、通常 GA では使用されません。
では、質問にお答えします。
Q1: それぞれ染色体 001110 と 101101 を持つ 2 つの親 A と B が与えられた遺伝的アルゴリズムでは、次の子のどれが 1 点交叉から生じた可能性がありますか?
aとbを見ると、クロスオーバー ポイントがここにあることがわかります。
1 2
A: 00 | 1110
B: 10 | 1101
通常、クロスオーバーは次の式を使用して行われます。
a = A1 + B2
b = B1 + A2
可能な子は次のとおりです。
a: 00 | 1101
b: 10 | 1110
質問からオプションbを除外します。
したがって、Q1 への答えは、結果の子は a: 001101 であり、与えられたクロスオーバー関数を想定しています。
Q2: 上記の子孫のうち、2 点交叉から生じた可能性があるのはどれ? なぜ?
a と b を見ると、クロスオーバー ポイントがここにあることがわかります。
1 2 3
A: 00 | 11 | 10
B: 10 | 11 | 01
2 ポイント クロスオーバーの通常の式は次のとおりです。
a = A1 + B2 + A3
b = B1 + A2 + B3
したがって、子供たちは次のようになります。
a = 00 | 11 | 10
b = 10 | 11 | 01
それらをあなたが尋ねたオプション(小さなaとb)と比較すると、答えを言うことができます:
Q2. A: aまたはbのいずれも、与えられた交叉関数によると、AxBとの 2 点交叉の結果ではない可能性があります。
ここでも、クロスオーバー関数を知らずに質問に答えることはできません。
私が提供した関数は GA では一般的ですが、質問に答えることができるように、非常に多くの関数を発明することができます (以下のコメントを参照してください)。