2007/09/10

Lineup Optimizer - 原理

相關文章
  • Lineup Optimizer 在講解程式原理之前,先來講一下我對棒次安排的看法。 一個好的棒次應該儘可能的符合幾點原則: 越好的打者應該擺在越前面的棒次 這不僅讓較好的打者可以得到較多的打擊機會,也可以提高全隊的上壘率,使得全隊的打席數提高,較高的打席數可以帶來較多的分數。 較好的打者應該儘可能地集中,較差的打者也應該儘可能地集中 鄰近打者的能力有相乘作用,將一名優秀打者放在其他好打者之間可以使他的價值最大化,將最弱的打者放在其他較差的打者附近,可以讓對球隊的傷害降到最低。詳細一點的說法是:推壘能力好的打者前方應該儘可能放上上壘能力好的打者,反之亦然。

    這兩個原則事實上會有某個程度的牴觸,根據原則一,我們排出來的棒次應該會類似下圖: 如此全隊最佳的打者會接在最差的打者後面,這使得他的推壘能力被浪費掉了。

    如果根據原則二,我們可以排出如下的棒次: 當然這個棒次是可以平移的,我們將所有球員往前移一棒 除了一二棒倒過來外,這個棒次相當接近傳統棒次的安排,最強打者放四棒,然後依序是三、五棒,最弱的打者則是擺在第八棒。

    如果再往前移一個棒次,並且調整一下後段棒次使其在不違背原則二的前提下更接近原則一,就會變成如下的狀況: 這個棒次安排在數學上來講應該是最好的排法之一。

    以上壘能力和推壘能力來看,大致如下圖所示: 當然,實際上的最佳棒次需要看實際的球員組合而定,我觀察我的程式模擬結果,並沒有發現能循序挑出各棒次最佳球員的規則。

    那麼,在我的程式中,是如何決定最佳棒次的呢? 直覺的解法是利用一套公式計算每種可能棒次的得分期望值,然後在9!=362880種棒次當中選出得分期望值最高的一組棒次。然而這種方法相當的耗費時間,所以我利用演化計算(EC)中(1+1)-EP的方式來改進。系統先選取一組棒次做為起始值(一般是隨機選取即可,在系統則是以OPS降冪為起始值),每次變動一些產生一組新的棒次來和目前的棒次比較,留下較好的一組,如此重複運算一定數量的世代後,最後留下來的棒次就是答案。

    在以上的架構中,還有兩個問題尚待解決,首先我們必需能分辨兩組棒次的優劣,另外必需訂定產生新棒次的規則。

    先談後者,使用EC有個前提,就是好棒次產生的棒次中必需多數也是好的,否則使用EC就和隨機選取意義相同了。在排棒問題上,我們只要使用簡單的突變方式就能達到這個目標。系統採用的突變方式有三種,首先是swap(交換),簡單的將兩個棒次的球員對調(例: A-B-C-D-E-F-G-H-I swap(C,G)-> A-B-G-D-E-F-C-H-I);其次是shift(平移),將一個球員移到某個棒次,之間的球員全部平移一棒(例: A-B-C-D-E-F-G-H-I shift(C,7)-> A-B-D-E-F-G-C-H-I);最後是replace(取代),將先發球員換成板凳球員,和swap不同的地方僅在於必須考慮守位而已。

    至於比較兩組棒次的好壞部份,以演化計算的精神來說,其實並不需要算出確實的得分,只需要能分辨高下即可,甚至比較的準確率不需要是100%,但是我們還是用一套公式為各棒次計算出它的得分期望值。這個計算公式的原理是球隊的總得分=所有打者個人得分的總和,而打者的個人得分可以用打者本身和之後棒次的打擊資料算出來。運算過程如下:

    • 根據每個球員的上壘率,計算一場比賽中每個球員在不同出局數的打席期望值。
    • 根據一個球員的打擊資料,我們可以算出他打完一個打席後出局的機率,全壘打的機率,以及停在一、二、三壘的機率。
    • 再根據這個球員之後棒次的球員打擊資料,我們可以算出該球員在各出局數時被推回來得分的機率。
    • 將這個機率乘上打席期望值並加總,就可以求出球員一場比賽的得分期望值。
    • 將九棒的得分期望值加起來,就是球隊一場比賽的得分期望值。

    這個系統已經有做的修正包括:

    • 跑者可能靠著一壘安打推進兩個壘包,或是二壘安打推進三個壘包。
    • 跑者可能靠著野手選擇進壘。
    • 打者可能會因為失誤上壘,跑者也會因為失誤進壘。
    • 跑者有可能會盜壘,也會被阻殺。
    • 打者可能會擊出雙殺打。
    然而,跑者的腳程造成額外進壘的機率差異並沒有實作出來。跑者與打者能力對失誤和雙殺打的影響也都被忽略。

    這個系統的另一個問題在於,如果一個打者的成績是在三棒打出來的,這名打者換到一棒是否還能維持一樣的成績?棒球的打擊大概是團隊運動中受隊友影響最少的項目之一,我們並不要求球員因為棒次變動而改變打擊型態,假設球員們的心理狀況也沒有受到影響(或是不會影響打擊成績),但是如果後一棒從Barry Bonds換成Dave Roberts的話,相信打擊成績還是出現一定程度的變化。

    話說回來,反正這個東西本來就只是個小玩具,同樣九個人組成的棒次,運算出來最好的結果和平均值的差距大約也只有一場比賽0.1分而已,而實際會被教練和球迷排出來的棒次,彼此之間的差距恐怕不會超過每場0.05分,這不過能讓勝率提高半個百分點而已,所以大家還是玩玩就好,不需要太認真。 :D
  • 沒有留言:

    張貼留言

    Powered By Blogger