マルチエージェントゲームに openai の ジム環境 を使用することは可能ですか?具体的には、4人のプレイヤー(エージェント)がいるカードゲームをモデル化したいと思います。ターンを獲得したプレイヤーは、次のターンを開始します。プレイヤー間の必要な調整をどのようにモデル化しますか(たとえば、次は誰の番ですか)?最終的には、互いに対戦する4つのエージェントで強化学習を使用したいと思います。
はい、マルチエージェントゲームにOpenAIジム環境を使用することは可能です。 OpenAIジムコミュニティでは 標準化されたインターフェイスはありません マルチエージェント環境の場合ですが、これをサポートするOpenAIジムを構築するのは簡単です。たとえば、OpenAIの 最近の作業 マルチエージェントパーティクル環境で マルチエージェント環境を作成します これはgym.Env
から継承します。これは次の形式を取ります。
class MultiAgentEnv(gym.Env):
def step(self, action_n):
obs_n = list()
reward_n = list()
done_n = list()
info_n = {'n': []}
# ...
return obs_n, reward_n, done_n, info_n
step
関数がアクションのリスト(エージェントごとに1つ)を取り、環境を前進させながら、観測のリスト、報酬のリスト、完了のリストを返すことがわかります。このインターフェースは マルコフゲーム を表しており、すべてのエージェントが同時にアクションを実行し、それぞれが独自の後続の観察、報酬を観察します。
ただし、この種のマルコフゲームインターフェイスは、すべてのマルチエージェント環境に適しているとは限りません。特に、ターンベースのゲーム(カードゲームなど)は、エージェントがターンを行う交互マルコフゲームとしてキャストする方がよい場合があります。 (つまりアクション)一度に1つずつ。この種の環境では、状態の表現にどのエージェントの順番を含める必要がある場合があります。そうすると、ステップ関数は1つのアクションを実行し、1つの観測、報酬、および完了を返します。
マルチエージェントの深い決定論的ポリシー勾配がありますMADDPGアプローチはOpenAIチームによって実装されています。
これは、開始するためのリポジトリです。 https://github.com/openai/multiagent-particle-envs
強化学習のための特定のマルチエージェント環境があります ここ 。これは、任意のプログラミング言語で記述された任意の数のエージェントをサポートします。たまたまカードゲームであるサンプルゲームがすでに実装されています。