🔟LangChain: Multi-Agent Simulated Environment with PettingZoo
시뮬레이션 환경으로 멀티 에이전트 시뮬레이션을 정의하는 방법으로 외부에서 정의된 환경으로 에이전트-환경 루프를 만듭니다. 여러 에이전트를 사용하여 이러한 종류의 상호작용 루프를 구현한다는 것입니다. 여기서는 다중 에이전트 환경을 구현할 수 있는 Petting Zoo 라이브러리를 사용합니다.
About Petting Zoo
https://pettingzoo.farama.org
PettingZoo Logo
PettingZoo는 일반적인 다중 에이전트 강화 학습(MARL) 문제를 표현할 수 있는 간단한 파이토닉 인터페이스입니다. PettingZoo에는 다양한 참조 환경, 유용한 유틸리티, 사용자 지정 환경을 만들기 위한 도구가 포함되어 있습니다. 환경은 Gynasium과 유사한 인터페이스를 사용하여 상호 작용할 수 있습니다.
About Gymnasium
https://gymnasium.farama.org
Gymnasium Logo
Gymnasium은 OpenAI의 Gym 라이브러리의 유지 관리 포크입니다. Gymnasium인터페이스는 단순하고 파이토닉하며 일반적인 Reinforcement Learning 문제를 표현할 수 있고, 이전 gym 환경을 위한 호환성 래퍼가 있습니다.
Multi-Agent Simulated Environment: Petting Zoo
Setup Environments
GymnasiumAgent
여기서는 Gymnasium 예제에서 정의한 것과 동일한 GymnasiumAgent를 재현합니다. 여러 번 재시도한 후에도 유효한 동작을 수행하지 않으면 무작위 동작을 수행합니다.
Main loop
PettingZooAgent
PettingZooAgent는 GymnasiumAgent를 다중 에이전트 설정으로 확장한 것입니다. 주요 차이점은 다음과 같습니다:
PettingZooAgent는 여러 에이전트 중에서 식별하기 위해 이름 인수를 받습니다.
PettingZoo 리포지토리 구조가 Gymnasium 리포지토리와 구조가 다르기 때문에 get_docs 함수가 다르게 구현됩니다.
Rock, Paper, Scissors
이제 PettingZooAgent를 사용하여 다중 에이전트 가위바위보 게임 시뮬레이션을 실행할 수 있습니다.
ActionMaskAgent
일부 PettingZo 환경에서는 에이전트에게 어떤 작업이 유효한지 알려주는 action_mas를 제공합니다`
ActionMaskAgent 서브클래스는 PettingZooAgent를 서브클래스화하여 action_mask의 정보를 사용하여 작업을 선택합니다.