第三章 實驗方法
3.6 軌跡資料群統計模型
在以賽道區段為單位的玩家行為比較之中,因為玩家的賽車軌跡資料被切成 許多較小的片段,軌跡資料長度變短但是資料組數量大增,所以不再採用每一條 軌跡互相比較的方法,改用較為單純的統計式模型代替軌跡資料群,用來代表一 個玩家的特性。
圖 3-7 checkpoint 上的統計點陣列
我們在每個 checkpoint 的相同位置上設定若干個統計點,形成一個棋盤狀的 統計點矩陣(圖 3-7),使用一組軌跡資料群對這個資料點矩陣作 training,最後每 個統計點都會得到各自的統計值,這一整組統計值矩陣就是一個統計模型,可以 代表整組軌跡資料群的某些統計特性。這個模型統計資料分成兩種,一種是針對 賽車軌跡通過 checkpoint 位置的機率分布模型,另外一種是統計其他變數用的統 計平均值模型,這裡的變數可以代入速度、車子方向或加速度等資料。
圖 3-8 統計點的偵測函數
偵測函數(圖 3-8)代表通過賽車軌跡通過 checkpoint 位置和統計點位置的對 應關係,上圖為每個統計點的偵測函數,橫軸為賽道寬度方向的座標,0 代表右 邊邊界,1 代表左邊邊界,縱軸代表偵測值,我們在每個 checkpoint 上設置了 9 個統計點,第 1 個統計點代表位置值小於 0,也就是超出右邊邊界,第 2~8 個統 計點涵括了整個賽道(位置值 0~1)的部分,第 9 個統計點代表位置值大於 1,也 就是超出左邊邊界的部分。偵測函數的部分是使用線性內插的方式計算,不論賽 車從哪個位置通過 checkpoint,這個 checkpoint 上全部統計點的偵測值總和都保 持為 1。
設統計點的偵測函數為 detect(x),軌跡資料通過 checkpoint 位置為 pos,軌 跡資料數量為 N
在製作位置統計模型時,每個統計點的值為
detect pos
N
在製作其它變數統計模型時,設 var 為變數值,每個統計點的值為
∑Ni 1detect posi var
∑Ni 1detect posi
圖 3-8 舉一個用軌跡資料 training 統計模型的範例,training 分三個回合,每
次加入一條軌跡資料做統計,圖 3-8 中每一張小圖的縱軸表示 checkpoint 的位置,
橫軸代表統計點的位置,顏色代表統計點的值。這裡是用位置統計模型,統計值 會不斷累加變大,在軌跡交叉點的地方統計值會特別高,代表玩家常用的通過路 徑。
加入的軌跡資料 位置統計點矩陣值
第一回合
第二回合
第三回合
圖 3-9 三條軌跡資料合成的位置統計模型
在位置統計矩陣中,因為 training 用軌跡長短不同,會造成後面的 checkpoint 統計點沒被經過,取不到值,因此需要做 normalization,把每個 checkpoint 總和 調整到 1,這樣位置統計矩陣就可以表是每個點的通過機率,圖 3-10 為每一個橫 排(checkpoint)normalize 的效果。
圖 3-10 位置統計點 normalization
圖 3-11 是和圖 3-9 同樣的一條賽車軌跡,但是使用速度的統計模型,和位 置的統計公式不同,在做速度統計的時候軌跡交叉點會做平均的動作。
加入的軌跡速度資料 速度統計點矩陣值 第一回合
第二回合
第三回合
圖 3-11 三條軌跡資料合成的速度統計模型
把屬於同一個人的所有賽道區段軌跡資料的前段和後段分別用來製作統計 模型,最後就可以得到一組代表這個玩家行為模式的統計模型,因為把曲率變數 分成 9 個區段,所以統計出來的矩陣有 9 個,分別由 9 張圖表示(圖 3-12 及圖 3-13)。
圖 3-12 代表一個玩家的 position 變數統計圖
圖 3-13 代表一個玩家的 speed 變數統計圖
3.7 使用玩家統計模型做駕駛員推測
我們希望能夠做出一種分辨玩家特色的方法,能夠從一組遊戲資料之中,依 據它的駕駛特色找出駕駛人是誰。為了達成這個目標,我們把收集到的駕駛資料 根據來源玩家分群,用每個玩家所屬的遊戲資料,製造出個人的統計模型,然後 使用這些統計模型推測出軌跡資料的駕駛員。
要預測一個軌跡資料是由誰駕駛,只要將軌跡和每個人的統計圖上相同的位 置做比對,結果最接近的就判定為駕駛員,因為統計圖有兩種,所以比對方法也 分成兩種。第一種是位置的統計圖,因為統計的結果 normalize 後代表通過的位 置機率分布,所以計算相似度的方法是將軌跡通過每個 checkpoint 統計點的機率 值相乘,判定相似度最高的統計圖為駕駛員。第二種是其它變數的統計圖,以速 度為例,根據軌跡位置在每個玩家統計圖上的相對位置算出每個玩家對應的速度,
把每個 checkpoint 上的誤差值加總起來代表軌跡資料和這個玩家的相異度,相異 度最小的玩家判定為駕駛員。
第四章 實驗結果
4.1 實驗資料
我們收集玩家在 TORCS 上駕駛的資料作為研究材料,總共有 6 名玩家參加 這個實驗,每個人都用一套相同的流程做資料收集,得到相同數量的玩家軌跡資 料,這樣會讓不同玩家間容易做比較。
在採取資料的方法上,一個場次設定為賽車沿著賽道跑完 3 圈,玩家收集資 料時,在一個固定的賽道跑完 3 個場次,之後在換到下一個賽道,總共 5 個賽道 都個跑 3 場,實驗用 lap data 當單位時,每個人都可以收集到 5 個賽道×3 場×3 圈=45 個 lap data。
玩家在遊戲中的設定,玩家使用車輛為 Formula one,不使用其他的電腦 AI 車輛或是其他玩家對手,以免影響到玩家的正常駕駛行為,賽道選用 Aalborg、
Alpine-1、E-track 4、CG speedway number 1、CG track2 這五個場地(圖 4-1)。
遊戲難度設置為 rookie 新手級,玩家的賽車不會因為撞牆太多次而損壞。
(a) (b) (c)
(d) (e)
圖 4-1 實驗用跑道(a)Aalborg (b)Alpine-1 (c)E-track 4(d) CG speedway number 1 (e) CG track2
4.2 整圈賽道 checkpoint 差異度測試結果
我們把 6 名玩家的資料,使用 3.2 節的整圈賽道 checkpoint 差異度測試方 法,判斷每個玩家和其他玩家之間以及玩家和自己之間的相異度比值,使用 4 種變數當作測試項目:position 為通過 checkpoint 位置,speed 為賽車速度,
accerate 為賽車加速度,angle 為賽車方向和跑道中心軸夾角。計算結果列在表 4-1 ~ 表 4-4。
表 4-1 Position 變數下的整圈賽道 checkpoint 差異度測試結果
track1 track2 track3 track4 track5
user1 0.8614 0.8300 0.8119 0.6569 0.7440 user2 0.7665 0.7609 0.7103 0.6400 0.8355 user3 0.9610 0.9312 0.9911 0.8515 0.9886 user4 0.8280 0.9801 1.0294 0.8259 0.9316 user5 0.8910 0.9351 0.8561 0.7461 0.7978 user6 0.9057 0.9928 0.7934 0.7590 0.9720 平均值 0.8689 0.9050 0.8654 0.7465 0.8783
表 4-2 speed 變數下的整圈賽道 checkpoint 差異度測試結果
track1 track2 track3 track4 track5
user1 0.7907 0.6346 0.5776 0.8316 0.7929 user2 0.6663 0.5791 0.5544 0.6191 0.6608 user3 0.9580 0.8746 1.0103 0.9282 0.9789 user4 0.6302 0.9895 0.9021 0.7262 0.8160 user5 0.8533 0.7605 1.0113 0.9142 0.8434 user6 0.6162 0.5355 0.7057 0.7151 0.9843 平均值 0.7525 0.7290 0.7936 0.7891 0.8461
表 4-3 accelerate 變數下的整圈賽道 checkpoint 差異度測試結果 track1 track2 track3 track4 track5
user1 0.9327 0.9214 0.9035 0.8849 0.8320 user2 0.9185 0.9023 0.9542 0.8932 0.9708 user3 0.9720 0.9124 0.9803 0.9988 0.9710 user4 0.8349 0.9765 0.9955 0.9826 0.9979 user5 0.9587 0.9032 0.9429 0.9476 0.9038 user6 0.8311 0.9705 0.9587 0.9851 0.9583 平均值 0.9080 0.9310 0.9559 0.9487 0.9390
表 4-4 angle 變數下的整圈賽道 checkpoint 差異度測試結果
track1 track2 track3 track4 track5
user1 0.8902 0.8609 0.8000 0.7418 0.8696 user2 0.8241 0.7996 0.7437 0.6648 0.8712 user3 0.9507 0.9021 0.9914 0.9034 0.9238 user4 0.8661 1.0720 1.1266 0.9128 0.9333 user5 1.0428 1.0358 1.0847 1.0562 0.9467 user6 0.8576 0.8640 0.8281 0.8438 1.1372 平均值 0.9052 0.9224 0.9291 0.8538 0.9470
從表 4-1 到表 4-4 的結果來看,大部分值都小於 1,代表每個玩家和自己的 差距值比和別人的差距值低,每個玩家確實具有自己的駕駛風格存在,而不是完 全用固定的物理最佳演算法開車,並且每個人的風格都有些差異。
4.3 駕駛員預測實驗結果
我們把每個玩家的所有賽車軌跡資料,依據賽道區段切成片段,並且用 3。
7 節的方法分別預測這些片段的駕駛員,我們分別使用了三種不同變數的統計模 型做預測,position 為賽車通過 checkpoint 位置,speed 為賽車速度,angle 為和賽道中心線夾角,表 4-5 ~ 4-7 為統計 6 個玩家資料來源分配到 6 個駕駛預 測的結果,左上-右下對角線的值代表預測正確。
表 4-5 Position 變數的駕駛員預測結果
預測 1 預測 2 預測 3 預測 4 預測 5 預測 6
來源 1 1133 42 405 75 324 181
來源 2 980 52 501 150 288 189
來源 3 932 46 533 159 315 175
來源 4 904 36 466 216 317 221
來源 5 983 27 401 151 388 210
來源 6 900 45 573 159 271 212
表 4-6 speed 變數的駕駛員預測結果
預測 1 預測 2 預測 3 預測 4 預測 5 預測 6
來源 1 476 238 106 586 419 335
來源 2 436 268 124 593 387 352
來源 3 385 189 194 714 386 292
來源 4 420 187 138 728 384 303
來源 5 349 143 76 826 512 254
來源 6 489 198 178 428 393 474
表 4-7 angle 變數的駕駛員預測結果
預測 1 預測 2 預測 3 預測 4 預測 5 預測 6
來源 1 596 188 424 321 304 327
來源 2 588 215 404 360 258 335
來源 3 504 196 527 355 268 310
來源 4 482 183 408 447 301 339
來源 5 553 165 416 359 346 321
來源 6 513 182 471 371 269 354
在結果表格中,每一橫排代表一個玩家整組資料的預測結果,可以看出來對 每個玩家的偵測成功率並不高。在這些結果表格中,左上到右下對角線上的值代 表資料來源和預測結果是同一人,表示預測正確的狀況。把對角線上的值相加,
再除以總預測數,就可以得到預測正確率。實驗中三種變數的預測成功率分別是 Position 19.55%、speed 20.46%、angle 19.17%,結果都比隨機猜測的值 1/6 = 16.67%好。這個結果表示這個偵測方法還是帶有某些效果,並不是完全無效或隨
我們用一種簡單的方法把 position、speed、angle 三種變數合併起來做駕 駛員的預測,先分別使用三種變數做預測,在每個變數項目下排出和駕駛員相似 度的排名,最後再把三個項目的排名相加,得到的排名總合最低者就判定為駕駛 員,表 4-8 為混合變數的預測結果。混和三種變數後的預測成功率為 22.13%,
效果比三種變數個別使用的駕駛員預測更加準確。
第五章 結論與未來展望
在這篇論文中,我們研究在 TORCS 賽車遊戲平台上,每個不同玩家之間行 為的差異,並且用 checkpoint 取樣的差異度計算每個玩家之間的誤差,證明每個 玩家確實有自己特殊的玩家個性。之後我們使用一種三階段模型對賽道做分解,
讓不同的賽道區段可以互相做比較,最後我們製作出一種代表玩家個性的統計模 型,並且用這個模型預測駕駛員的方式,結果說明這個模型記錄了部分的玩家特 色,但是仍然不足以明確的辨別出各個玩家。因為代表玩家特色的統計模型裡,
可以代入不同的變數,但是這篇論文只簡單的實驗了數個代表性的變數,如位置 和速度等,未來我們可以利用這個模型,用其他的變數比較玩家差異度,並且研 究各種參數組合的方法,達到更精確的玩家分辨效果。
參考文獻
[1] Daniele Loiacono, Luigi Cardamone, Pier Luca Lanzi, “Simulated
Car Racing Championship 2010: Competition Software Manual", Technical Report 2010.8,Dipartimento di Elettronica e Informazione, Politecnico di Milano, Italy, 2010.
[2] Enrique Onieva, David A. Pelta, Vicente Milanés, Joshue Pérez, "A fuzzy-rule-based driving architecture for non-player characters in a car racing game" Soft Computing - A Fusion of Foundations, Methodologies and Applications Volume 15, Number 8, pp.
1617-1629, 2011.
[3] Diego Perez, Gustavo, Yago Saez,"Evolving a Fuzzy Controller for a Car Racing Competition" Computational Intelligence and Games, pp. 263 – 270, 2009.
[4] Luigi Cardamone, Daniele Loiacono, Pier Luca Lanzi, "Evolving Competitive Car Controllers for Racing Games with Neuroevolution" GECCO '09 Proceedings of the 11th Annual conference on Genetic and evolutionary computation, pp. 1179-1186, 2009.
[5] Luigi Cardamone, Daniele Loiacono and Pier Luca Lanzi, "Applying Cooperative Coevolution to Compete in the 2009 TORCS Endurance World Championship"
Evolutionary Computation (CEC), pp.1 – 8, 2010.
[6] Marc Ebner and Thorsten Tiede,"Evolving Driving Controllers using Genetic Programming" Computational Intelligence and Games, pp. 279 – 286, 2009.
[7] Daniele Loiacono, Alessandro Prete, Pier Luca Lanzi, Luigi Cardamone,"Learning to Overtake in TORCS Using Simple Reinforcement Learning" Evolutionary
[7] Daniele Loiacono, Alessandro Prete, Pier Luca Lanzi, Luigi Cardamone,"Learning to Overtake in TORCS Using Simple Reinforcement Learning" Evolutionary