2 チーム間のサッカー ペナルティ キックをシミュレートするこのプログラムがあります。
-目標は、左下隅に座標 (0,0) を持つ 24 x 8 です。
-各チームにはキッカーが5人、ゴールキーパーが1人います(便宜上、2チームをチームAとチームBと呼びます)
- チーム A - キッカーには 5 つの戦略 (それぞれに 1 つ) があり、ゴールキーパーには 5 つの戦略があります (チーム B の各キッカーに戦略が必要なため)。
- チーム B - キッカーには 5 つの戦略 (それぞれに 1 つ) があり、ゴールキーパーには 5 つの戦略があります (チーム A の各キッカーに戦略が必要なため)。
キッカーの戦略は、座標 (x,y) とパワー値です。座標はキックの位置で、パワーはキックの強さです。( Power 属性については後で詳しく説明します)。たとえば、各キッカー入力戦略は次のようになります: (1,2) 100 または (24,7) 25
ゴールキーパーの戦略は、座標と +Width および +Height の値です。ゴールキーパーのカバレッジ領域は、左下隅が (x,y) 位置で、右上隅が (x+幅、y+高さ) の長方形です。たとえば、(3,4) 5 5 彼の左下の座標は (3,4) であり、(3+5,4+5) は長方形 (カバレッジ エリア) の右上隅です。
カバレッジエリアの最大範囲は目標エリアの25%です(プログラムはこれをチェックします)
パワー: 0-24; キックにはエラーはありません。キック ヒット ゴールキーパーのカバレッジ エリア 100% セーブ パワー: 24-49 キックは 10% のエラー (-/+10% の範囲) を持ちます。90% セーブ パワー: 50-75 キックで 20% のエラーが発生します。80% セーブ パワー: 76-100 キックで 30% のエラーが発生します。50% 割引
入力例: パワーは 0 ~ 100 でなければならず、他のすべての値は 0 ~ (2^7-1) の正の整数でなければなりません チーム A キッカー: (14,3) 25 ゴールキーパー: (2,3) 4 4 (3,5 ) 50 ゴールキーパー: (1,1) 5,5 など ...
チーム B: キッカー: (9,3) 75 ゴールキーパー: (1,2) 5 5 (3,13) 100 ゴールキーパー: (2,3) 6 6 (これがゴール エリアの 25% を超えないと仮定すると、の上 ....
わかりました、それはシミュレータープログラムでした
次に、シミュレーターに最適なチーム戦略を考え出す GA を作成する必要があります。
問題を単純化して、誰もが概念化できるようにしましょう。
入力: -population (n チームのランダムな作成。たとえば、n=5 の場合、5 つのランダムなチームが作成され、各チームの属性には 5 つのキッカーの戦略、5 つのゴールキーパーの戦略が含まれます)
アウトプット: - 最良のチーム戦略 (各チームは互いにプレーし、次の反復のために最良のものが選択されます。各チームには 5 つのキッカーの戦略と 5 つのゴールキーパーの戦略があることに注意してください)
だから私は結局n人口の分野で1つの解決策を探しています
私の問題は、ソリューションのエンコードを開始する方法です。チームとして、またはプレーヤー/ゴールキーパーのペアとしてソリューションをエンコードする必要がありますか?
たとえば、チームとしてエンコードします: 染色体:= [プレーヤー1, プレーヤー2, プレーヤー3, プレーヤー4, プレーヤー5, ゴールキーパー1, ゴールキーパー2, ゴールキーパー3, ゴールキーパー4, ゴールキーパー5]
class Player {
int
int
int
}
class Goalkeeper {
int
int
int
int
}
または、プレーヤー/ゴールキーパーのペアとしてエンコードします:
Chromosome:= [player, goalkeeper] = [x,y,power,x,y,weight,height]
このようなエンコーディングの問題は、チームを構成するために最後に 5 人の最高のプレーヤー/ゴールキーパーのペアを取得する必要があることです。
もう 1 つの問題は、バイナリと値のエンコードです。プレーヤー/ゴールキーパーのペアで行くとしましょう。このような値のエンコードは[x,y,power,x,y,weight,height] = [2,3,100,3,3,4,5]
、バイナリ表現よりも理にかなっ[0010, 0011, 1100100, 0011, 0011, 0100, 0101] = [0010 0011 1100100 0011 0011 0100 0101].
ていますか?クロスオーバーを行う方が簡単であり、突然変異はそれをバイナリとして表現しますね?
アイデアを集めようとしているだけなので、どこかから始めましょう。
前もって感謝します