楊 建,王 萍,于雅鑫,高買軍
(長安大學(xué) 電子與控制工程學(xué)院,西安 710064)
RoboCup是由哥倫比亞大學(xué)的Mackworth 教授于1992年提出,現(xiàn)已發(fā)展成為最高水平和最大規(guī)模的機器人賽事之一[1],RoboCup2D 仿真比賽作為RoboCup中歷史最悠久的聯(lián)賽之一,取得了巨大的成功,并激勵了世界各地的許多研究人員每年都從事這個項目.
2 D 仿真比賽還提供了一個重要的實驗平臺,人工智能研究人員一直在使用這個平臺進行各種領(lǐng)域的研究,包括多智能體系統(tǒng)中的合作、協(xié)調(diào)和協(xié)商.許多人類足球的戰(zhàn)術(shù)策略都被用到2D 比賽中,例如進攻、防守、傳球、陣型戰(zhàn)術(shù)等,對球隊的優(yōu)化也變得多樣化,目前對RoboCup2D的研究不斷加快,為智能仿真機器人技術(shù)的發(fā)展做出了巨大的貢獻.
目前的球隊策略改進主要有兩種方法:直接編碼方法和數(shù)據(jù)驅(qū)動方法.直接編碼方法主要是對球隊底層策略進行改進.陳糧[2]將數(shù)學(xué)模型的泛函分析應(yīng)用到區(qū)域協(xié)防策略中.張毅等[3]提出雙五角星陣型策略和26 分區(qū)進攻策略.蔡軍等[4]通過預(yù)測模型對守門員和后衛(wèi)的防守站位進行分析.張彥鐸等[5]提出一種新的基于預(yù)測的射門方法.Chen 等[6]提出了一種基于多群體蟻群優(yōu)化的進攻策略.陳冰等[7]提出了“單獨進攻”和“合作進攻”兩種進攻模式.李敏等[8]提出了一種不同角色、不同分區(qū)的有針對性的防守策略.周奕麗等[9]對RoboCup的傳球策略進行了研究.
數(shù)據(jù)驅(qū)動方法利用強化學(xué)習(xí)和數(shù)據(jù)提取來對球隊進行優(yōu)化.Akiyama 等[10]將強化學(xué)習(xí)應(yīng)用于球隊的決策模塊中,利用神經(jīng)網(wǎng)絡(luò)對球員進攻和防守進行優(yōu)化.陳冰等[11]用強化學(xué)習(xí)對Agent2D 底層的動作鏈機制進行優(yōu)化.陳榮亞等[12]采用馬爾可夫決策過程對RoboCup2D的人墻站位和球員傳球進行分析.李學(xué)俊等[13]用強化學(xué)習(xí)對搶球球員的決策進行研究.章惠龍等[14]將Q 學(xué)習(xí)應(yīng)用于RoboCup2D 比賽的前場進攻決策中.在數(shù)據(jù)提取方法方面,宋園等[15]對仿真2D日志文件進行分析,并將其應(yīng)用到進攻跑位策略設(shè)計中.余培[16]從日志文件中提取球員傳球數(shù)據(jù),用多元逐步回歸對邊界球進行了分析.秦鋒等[17]從日志文件中提取球員傳球數(shù)據(jù),用偏最小二乘法對其進行了分析,得出長傳對比賽結(jié)果影響最大的結(jié)論.程澤凱等[18,19]對陣型文件解析,探索球隊攻守態(tài)的判定優(yōu)化因素,對球隊的陣型和進攻決策進行分析.
針對上述方法,直接編碼方法修改代碼所耗費的時間少,具有快速性的特點,使用數(shù)據(jù)驅(qū)動方法的球隊的實力更強,但數(shù)據(jù)驅(qū)動方法需要提取大量的數(shù)據(jù)樣本,并需要訓(xùn)練學(xué)習(xí)多次才能得出結(jié)論.本篇文章采取直接編碼方法運用于球隊底層中.對球隊的防守和進攻問題進行分析,提出多人防守策略和三角進攻策略,并在RoboCup2D 平臺進行仿真實驗,結(jié)果表明所設(shè)計的策略是可行有效的.
本文是針對Agent2D 底層代碼來進行討論,并對相關(guān)代碼進行分析.在Agent2D的底層中,球員有幾種常見的模型,感知模型、世界模型、決策分析模型等.球員通過視覺和聽覺等感知模型獲取這些信息,在獲取信息過程中會受到噪聲的影響,造成信息偏差;球員的決策分析模型分析世界模型中的信息來決策要執(zhí)行的動作;世界模型記載從聽覺模型中接收的球場信息.球員智能體結(jié)構(gòu)設(shè)計如圖1所示.
圖1 球員智能體結(jié)構(gòu)設(shè)計圖
在Agent2D 底層中決策模型中用統(tǒng)一的決策文件來控制角色球員的有球決策和無球決策.有球狀態(tài)的決策分析框架結(jié)構(gòu)如圖2所示.
圖2 有球狀態(tài)的決策框架
通過分析bhv_basic_offensive_kick.cpp 可以得出,在執(zhí)行有球決策時,首先判斷是否適合傳球,并調(diào)用進行判斷,如果此時適合傳球并且距離自己最近的防守球員的距離小于設(shè)定某個值,則調(diào)用Body_Pass::execute(agent)將球傳出去.離自己最近的對手距離自己為5 個單位,表示很安全,直接調(diào)用Body_Dribble 帶球;帶球速度比較快可以調(diào)用Body_HoldBall()來控制球.最后就是執(zhí)行射門,如果自己處于越位線,向?qū)Ψ竭吔翘咔蛘{(diào)用Body_KickToCorner 將球踢到球門的邊角,沒有越位的話調(diào)用Body_AdvanceBall()直接向前踢球,評價射門是否最優(yōu)主要取決于射門點的選取,如果這一部分區(qū)域內(nèi)沒有防守隊員或是防守隊員最少,就選取這個點作為射門點.
無球狀態(tài)的決策分析框架結(jié)構(gòu)如圖3所示.
圖3 無球狀態(tài)的決策框架
通過分析bhv_basic_move.cpp 得出,在執(zhí)行無球決策時,首先判斷當(dāng)球在對方球員腳下,我方球員是否離球近,當(dāng)我方球員離球比較近,我方球員可以采取攔截球的方式,調(diào)用Body_Intercept;當(dāng)我方球員離球比較遠(yuǎn),跑到陣型中自己本來的指定位置,即Home_pos,調(diào)用Body_GoToPoint 方法;如果沒有回到陣型指定位置就將身子轉(zhuǎn)向球,調(diào)用Body_TurnToBall 函數(shù).當(dāng)對方持球并且可能進行進球時球員要采取鏟球的方式進行防守,調(diào)用Bhv_BasicTackle.
在RoboCup2D 仿真比賽中,球場上情況復(fù)雜,球員在通信的過程中,需要對球場周圍環(huán)境進行分析制定相應(yīng)的策略.因此,對球場進行區(qū)域劃分,根據(jù)球的位置將球場分為我方禁區(qū)、防守區(qū)、進攻區(qū)和對方禁區(qū),如圖4所示.
圖4 球場區(qū)域劃分
防守分為單人防守和多人防守.單人防守是指當(dāng)對方球員持球進攻時,我方負(fù)責(zé)防守的球員處于有利位置,可以搶斷球.多人防守是指當(dāng)對方球員持球進攻時我方并沒有球員處于好的防守位置,這時我方派出2 名以上球員去搶斷.對方球員逐漸接近我方球門時,我方部分防守球員應(yīng)該快速回防,靠近球門,封住敵方可能進攻的方向來阻礙對方進攻,其他隊友去接近持球的球員,迫使對方傳球,這樣對方球員丟球的機會增加.
3.2.1 多人防守的模型構(gòu)建
將單人防守區(qū)域投影到二維平面上,它將變?yōu)橐粋€近似的圓形.多人防守的空間意義是防守的連續(xù)性.這樣,單人防守的“圓形”形成了多人防守區(qū)域.如圖5所示.
圖5 多人防守區(qū)域平面圖
在確保防守空間連續(xù)性的情況下,多人防守形成m和n兩點.
其中,Dmn表示多人防守的防線,di表示防守球員防守區(qū)域圓形直徑的距離,k表示防守球員的數(shù)量.
3.2.2 多人防守策略的實現(xiàn)
具體的防守策略形成算法描述如下:
Step 1.如果滿足單人防守的條件,到Step 2,否則到多人防守Step 6;
Step 2.檢測球和對方接球球員的距離,找出攔截點,如果攔截點存在到Step 3,否則到Step 6;
Step 3.如果到達攔截點成功,則到Step 4,失敗到Step 5;
Step 4.如果搶到球,調(diào)用傳球的指令,退出防守策略;
Step 5.如果沒有獲得球,則到Step 1;
Step 6.和隊友通信,進行多人協(xié)作防守.
球員進行防守跑位,如圖6所示,defence-radius定義所規(guī)定防守球員跑位的精確位置.
圖6 防守攔截圖
防守球員跑位的精確位置是以我方球門中心為圓心,defence-radius為半徑的圓弧上,也在球和我方球門中心的連線上,width為場地長度,球的位置坐標(biāo)為(m1,n1),防守攔截點 (dm1,dn1) 可以由式(2)計算:
單人防守如圖7(a)所示,當(dāng)對方持球球員將球傳給對方接球球員時,我方球員1 檢測球和對方接球球員速度和方向,并計算出最佳攔截點,然后快速移動,直到到達攔截點并控球為止.多人防守如圖7(b)所示,當(dāng)對方多名球員帶球進攻時,我方派出球員1和球員2 去逼搶對方持球球員,當(dāng)對方持球球員想給對方接球球員1 號和2 號傳球時,我方球員3 號和4 號進行跑位防守.
圖7 防守示意圖
根據(jù)第3.1 節(jié)對球場定義,球進入進攻區(qū)域時,球會被識別出進攻狀態(tài),圖8為三角進攻策略實現(xiàn)流程圖,該策略以球的位置坐標(biāo)作為決策參考,并根據(jù)球的位置信息來判斷球場上的情況.如果判斷我方處于控球狀態(tài),則執(zhí)行進攻策略;否則,應(yīng)執(zhí)行防守策略.在我方執(zhí)行進攻策略的過程中,首先應(yīng)根據(jù)球與球門的位置關(guān)系,獲取球員的位置坐標(biāo)和擊球角度;其次選擇出三角形進攻策略中核心進攻球員和輔助進攻球員,最后執(zhí)行動作選擇決策.
圖8 三角進攻策略流程圖
3.3.1 進攻射門示意圖
三角進攻策略射門示意圖如圖9所示,當(dāng)我方球員在場上持球進攻的時候,另外兩名球員迅速的向其靠近,3 個人在場上形成不同形狀的任意三角形,當(dāng)對方防守球員上前對我方持球進攻的球員進行防守的時候,將球傳給其他兩名球員,然后自己在重新跑位,使3 個人重新形成三角形的隊形.進攻最重要的能力是射門和進球,射門成功率是影響進球的主要因素.
圖9 射門示意圖
圖9中藍(lán)色圓圈表示對方防守球員,橙色圓圈表示我方進攻球員,黑色矩形表示對方球門.進攻球員要把球踢入黑色矩形內(nèi),才算取得進球.將射門成功率shot-success(d,e,f,g)定義為:
其中,d表示最近的射門的距離,e表示進攻球員射門的視角,f表示進攻球員的能力指數(shù),g表示防守球員的干擾因數(shù).
其中,(p,q) 點是進攻球員所在位置的坐標(biāo),(p1,q1)和(p2,q2)分別表示兩個球門柱的位置坐標(biāo).
3.3.2 球員角色分配策略
在執(zhí)行三角進攻策略的過程中,球員們根據(jù)自己在不同的時間段遇到的不同的問題而采取不同的動作.因此,要賦予他們適當(dāng)?shù)慕巧?以便他們可以在比賽中充分發(fā)揮作用.本文主要根據(jù)球員與球的位置和擊球角度來選擇核心進攻球員和輔助進攻球員,將對方主要防守球員、對方球門中心和球定義為a,b,c.核心進攻球員的選擇如圖10所示.
圖10 核心進攻球員選擇圖
在圖10中,我方3 名球員與球的位置關(guān)系和擊球角度關(guān)系為:
其中,μ 表示常數(shù),它的作用是把距離和角度統(tǒng)一在同一個數(shù)量級上.σ1、σ2表示加權(quán)相關(guān)系數(shù),它們反映了我方球員與球之間的距離和擊球角度對進攻的重要性,且 σ1+σ2=1 .DH1c、DH2c、DH3c表示我方球員和球之間的距離,α、β、γ 表示我方球員行動的方向與球和球員連線的夾角.
根據(jù)我方球員在球場上不同時刻與球的位置和角度關(guān)系,計算出k1、k2和k3.根據(jù)其中的最小值,可以得到與球的位置和角度關(guān)系最佳的球員,為核心進攻球員.
當(dāng)我方核心進攻球員的進攻受到阻礙時,要將球傳給我方的其他球員.因此,如何選擇主要的輔助進攻球員也變得很重要,主要的輔助進攻球員的選擇如圖11所示.
在圖11中,我方2 名球員與對方主要防守球員、對方球門中心的位置關(guān)系:
圖11 主要輔助進攻球員選擇圖
其中 σ1、σ2表示加權(quán)相關(guān)系數(shù),反映了我方球員與對方主要防守球員、對方球門中心的距離對主要輔助進攻球員的選擇的重要性,且 σ1+σ2=1.DH2a、DH3a分別表示我方球員與對方主要防守球員的距離.DH2b、DH3b分別表示我方球員和對方球門中心的距離.
根據(jù)在場上我方2 號和3 號球員與核心進攻球員不同時刻的位置關(guān)系分別求出k4和k5,根據(jù)其中的最小值,可以得到與核心進攻球員位置關(guān)系最佳的球員,這名球員就是主要的輔助進攻球員.
3.3.3 球員的動作選擇
核心進攻球員可以執(zhí)行運球、傳球和射門動作.影響核心進攻球員的動作選擇的因素如圖12所示.
圖12 影響核心進攻球員的動作選擇的因素
將影響核心進攻球員選擇動作的變量作為輸入變量定義如下:
其中,m1、m2表示核心進攻球員執(zhí)行射門和傳球動作被對方主要防守球員攔截的概率,dx、dx1表示對方主要防守球員到球與對方球門中心連線、我方主要輔助進攻球員連線的距離,dy和dx1表示球到垂足之間的距離.m3、m4、m5分別表示球、核心進攻球員和主要輔助進攻球員與對方球門中心的位置與角度關(guān)系,Dbc、DH1b、DH2b表示球、核心進攻球員和主要輔助進攻球員與對方球門中心的距離,θbc、θbH1、θbH2表示球、核心進攻球員和主要輔助進攻球員與對方球門中心的夾角.m6、m7表示核心進攻球員和主要輔助進攻球員與對方主要防守球員之間的位置和角度關(guān)系,DH1a、DH2a表示核心進攻球員和主要輔助進攻球員與對方主要防守球員的距離,θaH1、θaH2表示核心進攻球員主要輔助進攻球員與對方主要防守球員的夾角.
主要輔助進攻球員可以進行跑位、掩護動作.影響輔助進攻球員的動作選擇因素如圖13所示.
圖13 影響輔助進攻球員的動作選擇的因素
將影響主要輔助進攻球員選擇動作變量作為輸入變量定義如下:
其中,m8、m9表示主要輔助進攻球員與對方球門中心和球的位置和角度關(guān)系,DH2b、DH2c表示主要輔助進攻球員與對方球門中心和球的距離,θbH2、θcH2表示主要輔助進攻球員與對方球門中心和球的夾角.m10、m11表示主要輔助進攻球員與核心進攻球員和對方主要防守球員的位置和角度關(guān)系,DH2H1、DH2a表示主要輔助進攻球員與核心進攻球員和對方主要防守球員之間的距離,θH1H2、θaH2表示主要輔助進攻球員與核心進攻球員和對方主要防守球員之間的夾角.
本文是在比賽官方使用的平臺RoboCup2D 仿真平臺上進行仿真實驗的,根據(jù)文獻[20]使用Ubuntu 16.04搭建Linux 系統(tǒng)并下載安裝RoboCup2D 仿真平臺和相關(guān)依賴庫.將上述策略添加到Agent2D 底層代碼中,在RoboCup2D 仿真平臺上測試結(jié)果.實驗的目的是檢驗策略改進對底層動作的影響,根據(jù)實驗結(jié)果,判斷改進策略對提高球隊自身能力是否有效.
RoboCup2D 仿真平臺使用的是服務(wù)器/客戶端模式.仿真平臺主要有Client (客戶端)、Server (服務(wù)器)和Monitor (監(jiān)視器)3 部分,Client 來模擬球員和球的運動,比賽的雙方各有11 個 Client,每一個Client 都控制一名場上的球員;Server 控制看場上球員的行為,主要用來與Client 交互信息,仿真球員的運動,控制比賽的進程;Monitor 來將虛擬環(huán)境場景展示給參賽者,參賽者看到的信息有雙方球隊的名稱、比分、球員和足球.比賽后一般使用Logplayer 來觀看比賽生成的錄像,通過錄像來分析球隊的長處和不足、球隊的戰(zhàn)術(shù)策略,這對提升球隊實力非常重要.圖14為RoboCup2D平臺結(jié)構(gòu)圖.
圖14 RoboCup2D 平臺結(jié)構(gòu)
本論文進行了大量的仿真實驗,首先是Agent2D底層代碼的球隊和將多人防守策略和三角進攻策略加入Agent2D 代碼后的球隊進行50 場比賽測試;然后將數(shù)據(jù)驅(qū)動方法的YuShan、WrightEagle、UVA 等球隊的底層代碼作為測試隊伍,與加入多人防守策略和三角進攻策略前后的Agent2D 底層代碼的球隊分別進行20 場的比賽測試.仿真實驗結(jié)果說明多人防守策略和三角進攻策略具有一定的有效性,在處于進攻和防守狀態(tài)下,能夠加強協(xié)作能力,最終有效提升球員進攻和防守協(xié)作中的決策能力.
表1為Agent2D 底層代碼球隊和加入多人防守和三角進攻策略優(yōu)化后的Agent2D 代碼球隊的仿真實驗結(jié)果,可以看出,采用多人防守策略和三角進攻策略優(yōu)化后的球隊獲勝率略高于優(yōu)化前的球隊.
表1 加入策略優(yōu)化前后Agent2D 底層球隊測試結(jié)果
加入多人防守和三角進攻策略優(yōu)化前后的Agent2D底層代碼的球隊與YuShan、WrightEagle、UVA 等球隊仿真實驗結(jié)果表2所示.
表2 策略優(yōu)化前后Agent2D 底層代碼球隊與數(shù)據(jù)驅(qū)動底層代碼球隊測試結(jié)果
從表2可以得出兩點結(jié)論:(1)Agent2D 底層代碼的基本策略比較簡略,在對方球隊的協(xié)作緊密的情況下很難采取有效的措施.加入多人防守策略和三角進攻策略優(yōu)化后的Agent2D 底層代碼球隊與數(shù)據(jù)驅(qū)動方法的YuShan、WrightEagle、UVA 等球隊進行比賽的獲勝場次比優(yōu)化前有所提升,獲勝場次增加率為75%、100%和50%.(2)數(shù)據(jù)驅(qū)動方法的球隊的實力更強,但數(shù)據(jù)驅(qū)動方法需要對比賽數(shù)據(jù)進行提取、學(xué)習(xí)和挖掘球員的信息特征,而直接編碼方法只需要觀看比賽錄像,發(fā)現(xiàn)球隊的不足之處,直接對底層模塊的代碼進行修改,減少了對球員數(shù)據(jù)提取、學(xué)習(xí)和訓(xùn)練的時間,具有快速性的特點.
表3為測試過程中各球隊的平均被進球數(shù).從表3的數(shù)據(jù)看出加入多人防守和三角進攻策略后的Agent2D底層球隊相對于原始的Agent2D 底層球隊,進攻和防守實力都有所提升.
表3 平均被進球數(shù)統(tǒng)計
針對單一的防守和進攻方式的特點,本文對防守和進攻策略進行優(yōu)化,在Agent2D 底層進行了以下改進:
(1)提出了多人防守策略,在保持單人防守的前提下,當(dāng)對方持球進攻,我方并沒有球員處于好的防守位置,我方派出至少2 名球員去搶斷攔截,增加了對方丟球的機會,提高了我方的防守效率.
(2)提出了三角進攻策略,當(dāng)我方處于進攻狀態(tài),由球和球門的位置關(guān)系,選擇出核心過的球員和輔助進攻球員,組成一個三角進攻小組,核心進攻球員進行帶球、傳球和射門動作,輔助進攻球員進行跑位和掩護動作,提高了我方的控球率和進攻效率.
仿真結(jié)果表明,加入多人防守策略和三角進攻策略的球隊的勝率和場均進球都有所提升.多人防守策略和三角進攻策略可以有效的提高我方球隊的防守和進攻效率.在后續(xù)研究中,可以將直接編碼方法和數(shù)據(jù)驅(qū)動方法同時應(yīng)用于球隊中,進一步加強球員的決策能力.