iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
AI & Data

ㄟ唉廚房交響樂 多智能的煮飯秀系列 第 8

Day8 多智能體框架 pettingzoo

  • 分享至 

  • xImage
  •  

接下來我們將介紹 pettingzoo 這個多智能體的環境。在跟單智能體相比, multi-agents 如何交互、決定順序、以及動態如何增加或遞減智能體,在工程上都是一個很大的挑戰。Pettingzoo 累積了過去許多研究與工程的優缺點,以及介紹 ACE (Agent Environment Cycle)這個概念。

簡介

一般的 RL 環境觀察以 POMDP (Partially Observable Markov Decision Process)概念去進行演算法與環境交互,一種最熱門的多智能體模式為 POSG (partially observable stochastic game),為了在multi-agent 達到檢簡易、清晰的交互概念,pettingzoo 提供了ACE的流程。如圖

aec_cycle_figure

一個 agent 結束後的行為,影響環境,環境返回下一個 state 給下一個 agent。不過這種速度肯定很慢的,所以官方另外提供一個方法 Parallel API ,讓使用者在更大規模的智能體的時候,可以包覆使用。不過我也蠻好奇的底層怎麼時做的,如果不是一個接一個去跑的話,可能 agent 彼此間會造成些隨機性與噪音,這可能就要看看底層文件來深究了。

實作

安裝 pip install pettingzoo 就可以使用哩,另外可以裝一些其他的環境套件

pip install pettingzoo
pip install pettingzoo[atari]
pip install pettingzoo[all]

這邊可以做些環境設定,設定完成後就可以跑模擬了~

from pettingzoo.butterfly import cooperative_pong_v5

env = cooperative_pong_v5.env(render_mode="human")
env.reset(seed=42)

for agent in env.agent_iter():
    observation, reward, termination, truncation, info = env.last()

    if termination or truncation:
        action = None
    else:
        # this is where you would insert your policy
        action = env.action_space(agent).sample()

    env.step(action)
env.close()

cooperative_pong_v5 是指定的虛擬環境,env可以設定變數,例如是否要看畫面還是只有圖像矩陣。
env.agent_iter 就是剛剛提到的讓每個環境可以像是迴圈一樣,逐個執行。
env.last 的話就是執行後所獲得的狀態與資源。

結語

多智能體的困難隨著數量與任務性質的複雜性,要解決許多工程上的問題,我們算是蠻幸運的在這一塊有許多成熟框架的時期。不過效能優化還會遇到資源有限的瓶頸問題,這時候還是要看你或是公司的銀彈夠不夠拉~

參考

  1. pettingzoo
  2. PettingZoo: A Standard API for Multi-Agent Reinforcement Learning

上一篇
Day7 gymnasium
下一篇
Day9 AI 社區 簡介
系列文
ㄟ唉廚房交響樂 多智能的煮飯秀30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言