私は、遺伝的アルゴリズムを使用して最適解を表示する多目的最適化問題に 1 年以上取り組んできました。
問題は、いくつかの基準に従って人々をさまざまなチームに割り当てることです。私はすでに初期化段階を完了しており、フィットネス関数のコーディングも完了しています。ただし、生成された (2 次元配列) ソリューションをオブジェクトとして保存し、一時的にメモリに保持して、GA の後の段階である選択、クロスオーバー、突然変異で使用できるようにするのに問題があります。
ルーレット ホイールの選択と、わずかに異なるクロスオーバーおよびミューテーション アルゴリズムを使用しています。私はこれらに問題はありません。生成された1つのソリューション(この場合は完全なチーム割り当て)を一時的にメモリに保存し、別のソリューションを生成してそれをメモリに保持し、次に別のソリューションを保持する方法を見つけることができなかっただけです。
私が思いつくことができる非常に多くの異なることを試しました。そのうちの2つは次のとおりです。(i) 2次元配列タイプをintからObjectに変更しましたが、チームを作成する2次元配列が別の配列を使用するため、エラーが発生しましたリスト内の人物 ID のインデックス位置を見つけるための int 配列。(ii) 初期集団生成クラスが実行された後、毎回インクリメントされる静的クラス フィールド変数を使用します。
私はこれを何ヶ月も研究し、考えられることはすべて試しました. 誰かが私に指示したり、GAの後の段階で使用できるように2次元配列を保存する方法についてヒントをくれたりすると、非常に役立ちます。
ありがとう
編集: これは、チームを作成する 2 次元配列ビットを持つ初期集団クラスです: 各行はチーム番号を表し、列はメンバー ID です (他のクラスを参照する一部のコードを除外し、代わりにそれを言葉で表現しました):