遺伝的アルゴリズムを使用して部分和問題を解決するプロジェクトを行う必要があります。残念ながら、アルゴリズムをコーディングしているときに大きな問題が見つかりました...
私のアルゴリズム:
- 解決策が見つからず、ステップ数がステップ数よりも少ない限り:
- 各染色体の確率と分布関数を計算する
- 選択を行う(ルーレット)
- 交差させるn個の染色体を選択する
- 交差点を実行します(交差点はランダムに選択されます)
- 突然変異させるm染色体を選択する
- 突然変異を行う
- 解決策を見つけた場合は停止します
(アルゴリズムは本「遺伝的アルゴリズム + データ構造 = 進化プログラム、第 2 章」から引用) (ステップ内の)交差点の数は、プログラムオプションで厳密に設定されています。
問題は、集団内で特定の (比較的少ない) 数のステップの後、すべての染色体が同一になることです。問題はこのグラフを示しています: http://imageshack.us/m/96/7693/wykresb.png
私が間違っていることは何ですか?修正方法は?前もって感謝します。
編集:
ここで、私のアプリからのログを見つけることができます: http://paste.pocoo.org/show/391318/
ルーレットは最善の解決策ではないと思います (deong が言ったように)。突然変異も改善する必要があります。