このブログ投稿では、遺伝的アルゴリズム (GA) を使用して、障害物を回避しながらターゲットに向かって移動するドットをシミュレートする魅力的なプロジェクトについて詳しく説明します。 GA は自然選択を模倣し、ターゲットへの近さに基づいてドットの母集団を繰り返し改善します。
遺伝的アルゴリズムの実装:
GA は次の標準的な手順に従います:
シミュレーションの概要:
シミュレーションは、赤い四角のターゲットに到達するために進化するドットの集団を視覚化します。各ドットの動きは、その「遺伝子」(一連の動きの方向)によって決まります。 選択、突然変異、複製を通じて集団は適応し、黒い長方形の障害物を回避しながらターゲットに到達する能力を向上させます。
主要なシミュレーション コンポーネント:
プロジェクトのセットアップ (Python と Pygame):
プロジェクトは視覚化に Pygame を使用します。 主要なグローバル変数は、シミュレーションのパラメーター (集団サイズ、突然変異率など) を制御します。 Dot
クラスは個々のドットを表し、その位置、動き、フィットネスを管理します。
初期シミュレーション (単一ドット):
最初のコードは、画面の境界を出るまでランダムに移動する単一のドットをシミュレートします。これは、母集団と GA を導入する前の基礎的なステップとして機能します。
人口シミュレーション:
Population
クラスはドットのグループを管理します。 update
メソッドはドットを移動し、障害物との衝突をチェックします。 シミュレーションでは、同時に移動する複数のドットが表示されるようになりました。
障害物と目標の追加:
Obstacle
クラスと Goal
クラスは、それぞれ障害物とターゲットを表すために導入されています。 衝突検出が実装されており、衝突時にドットが「消滅」します。シミュレーションには、赤いターゲット正方形と黒い長方形の障害物が含まれています。
遺伝的アルゴリズムの実装 (レプリケーション):
get_fitness
クラスの Dot
メソッドは、適応度を計算します。 Population
クラスは、選択、レプリケーション (最初はクロスオーバーではなく)、突然変異、エリート主義を実装するための generate_next_generation
メソッドと select_best_dots
メソッドを取得します。シミュレーションでは、人口が世代を超えて進化することが示されています。
今後の機能強化:
今後のブログ投稿では次の内容を取り上げます:
完全なコード (この時点まで) は GitHub で入手できます。 コードを試して、結果を共有してください。 AICraftsLab Discord コミュニティに参加して、他の AI 愛好家とつながりましょう。
以上が遺伝的アルゴリズムを使用したドット シミュレーション - パート 1の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。