遺伝的アルゴリズムを使用して解決しようとしている最適化の問題があります。基本的に、10 個のバインドされた実数値変数 (-1 <= x <= 1) のリストがあり、そのリストのいくつかの関数を最大化する必要があります。問題は、リスト内の最大 4 つの変数のみが != 0 (サブセット条件) になる可能性があることです。
数学的に言えば: ある関数 f の場合: [-1, 1]^10 -> R min f(X) st |{var in X with var != 0}| <= 4
f の背景: この関数は、Sum x*weight などのナップザック目的関数とは似ていません。
私がこれまでに試したこと:
ゲノム [-1, 1]^10 に対する基本的な遺伝的アルゴリズムであり、変数に 1 点交差といくつかのガウス変異があります。最初の 4 つの非ゼロ (0に十分近いゼロ) の値のみを使用して、フィットネス関数のサブセット条件をエンコードしようとしました。このアプローチはうまく機能せず、アルゴリズムは最初の 4 つの変数でスタックし、それを超える値を使用することはありません。このアプローチがうまく機能する 01-knapsack 問題のある種の GA を見ましたが、どうやらこれはバイナリ変数でのみ機能するようです。
次に何を試してみるのをお勧めしますか?