間隔 [x:y] を10101111のようなバイナリ コードにエンコードしているため、人口の場合は[[1,0,1,1],[0,1,0,1]]
.
関数の値 ( ) を使用して、フィットネス関数を直接定義しましたsin(x)^2
。
選択にはトーナメント選択を使用し、クロスオーバーには次のような染色体の単純な交換部分のみを使用しています: 1(10)0
and 0(01)1
-> 1(01)0
and 0(10)1
.
突然変異の場合、ビット反転を使用します。
アルゴリズムの種類は機能し、グローバルな最小値を生成することもあれば、ローカルな最小値を生成することもあります。しかし、この問題ではクロスオーバーの機能がわかりません。「x」の機能が毎回壊れているため (私は思う)、その理由がわかりません。また、クロスオーバーをコーディングする方法が正しい場合でもまたは多分エンコーディング部分。