ホームページ > バックエンド開発 > Python チュートリアル > 遺伝的アルゴリズムを使用したドット シミュレーション - パート 1

遺伝的アルゴリズムを使用したドット シミュレーション - パート 1

Barbara Streisand
リリース: 2025-01-08 08:13:46
オリジナル
212 人が閲覧しました

このブログ投稿では、遺伝的アルゴリズム (GA) を使用して、障害物を回避しながらターゲットに向かって移動するドットをシミュレートする魅力的なプロジェクトについて詳しく説明します。 GA は自然選択を模倣し、ターゲットへの近さに基づいてドットの母集団を繰り返し改善します。

Dots Simulation using Genetic Algorithm - Part 1

遺伝的アルゴリズムの実装:

GA は次の標準的な手順に従います:

  1. 初期化: ドットの初期集団をランダムに生成します。
  2. 評価: フィットネス関数は、ターゲットからの距離に基づいて各ドットのパフォーマンスを評価します。
  3. 選択: 最も適したドットが次世代の親として選択されます。
  4. クロスオーバー: 2 つの親からの遺伝情報 (移動方向) が結合されて子孫が作成されます。 (注: このプロジェクトでは、簡単にするために最初はレプリケーションを使用します。クロスオーバーは後で追加されます。)
  5. 突然変異: 多様性を維持するために、子孫の移動方向に小さなランダムな変化が導入されます。
  6. 置換: 前の世代が子孫に置き換えられます。
  7. エリート主義: 前世代の最高のパフォーマンスのドットは、次の世代にも保存されます。
  8. 反復: ステップ 2 ~ 7 が、指定された世代数だけ繰り返されます。

シミュレーションの概要:

シミュレーションは、赤い四角のターゲットに到達するために進化するドットの集団を視覚化します。各ドットの動きは、その「遺伝子」(一連の動きの方向)によって決まります。 選択、突然変異、複製を通じて集団は適応し、黒い長方形の障害物を回避しながらターゲットに到達する能力を向上させます。

主要なシミュレーション コンポーネント:

  1. ドット: 移動方向 (染色体) とターゲットの近接性に基づく適応度スコアを持つエージェント。
  2. フィットネス関数: ターゲットまでの距離に基づいてフィットネスを計算し、より短いパスに報酬を与えます。
  3. 人口: 世代を超えて進化する点の集合。
  4. 遺伝的アルゴリズム: 進化のプロセスを推進し、適合する個体を選択し、バリエーションを導入します。
  5. 障害物: ドットのナビゲーションに挑戦する黒い四角形。
  6. 目標: 点が到達することを目指す赤い四角のターゲット。

プロジェクトのセットアップ (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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート