Academy スクリプトは、ML-Agents Toolkitにおける環境の管理やエピソードの制御を行うクラスです。Academyは、エージェントの学習環境を設定し、複数のエージェントやシーン全体の振る舞いを制御するために使用されます。以下に、Academy スクリプトの主要な要素とその役割について説明します。
Academy スクリプトの役割
-
環境の初期化とリセット:
- 環境全体の初期化やリセットを行います。例えば、エピソードの開始時に環境をリセットする処理を記述します。
-
エピソードの管理:
- エピソードの開始や終了を管理します。エピソードが終了したときに、すべてのエージェントに対して適切な処理を行います。
-
環境全体の設定:
- 学習環境全体の設定やパラメータを定義します。これには、シーンの設定やエージェントの初期 位置の設定などが含まれます。
-
シーン全体の管理:
- 環境内の複数のエージェントやオブジェクトを管理するための機能を提供します。
Academy クラスの基本的な使用法
Academy クラスをカスタマイズするには、以下のようなサブクラスを作成します。これにより、環境全体の設定やエピソードの管理が可能になります。
基本的なコード例
using UnityEngine;
using Unity.MLAgents;
using Unity.MLAgents.Sensors;
public class MyAcademy : Academy
{
// 環境の初期化処理
public override void InitializeAcademy()
{
// 初期化コード
}
// エピソードの開始処理
public override void AcademyReset()
{
// エピソードリセット処理
}
// 環境の更新処理
public override void AcademyStep()
{
// 環境更新処理
}
}
主なメソッド
-
InitializeAcademy:- Academyが初期化されるときに呼び出されます。環境全体の初期設定をここで行います。
-
AcademyReset:- 新しいエピソードが始まる前に呼び出されます。環境やエージェントの状態をリセットするためのコードをここに記述します。
-
AcademyStep:- 各ステップごとに呼び出されます。環境全体の更新処理をここで行います。
注意点
-
Academyクラスはオプション:- 環境全体の管理が必要な場合にのみカスタムAcademyクラスを作成します。基本的なシンプルな環境では、Academyクラスを作成せずにエージェントだけで学習を行うこともできます。
-
シーンに1つだけ:
- シーン内にAcademyのインスタンスを1つだけ配置するようにします。複数配置すると予期しない動作を引き起こす可能性があります。
Academy クラスは、ML-Agentsのトレーニング環境全体を管理するための強力なツールであり、学習プロセスを制御し、システム全体の整合性を保つために利用されます。