/pytratw

get best price, plan schedule with TRA

Primary LanguagePython

TRA Best Price and Schedule query

搜尋如何搭乘台鐵以可以得到最佳價格與時間的安排。提供經濟緊縮的人們效益最大化的使用。

台鐵目前採取電子票卡收費模式為:

  1. 電子票卡刷卡進站 9 折優惠
  2. 自強號的九折優惠限制為區間路程 70 公里內(可搭乘自強、莒光、各類區間車),但是區間不在限制範圍
  3. 超過每一公里按照自強費率(每公里2.27元)收費,參考
電子票證票價計算方式與本局現行乘車票計算方式相同,依搭乘車種對應之票價計算方式計價,成人(全票)按下列票價全額計收;兒童、敬老及愛心票按下列票價半價計收:
    
(一) 搭乘莒光號、復興號及區間車旅客:按起、迄站區間車票價9折計價。
(二) 搭乘自強號旅客:
    1.  乘車於70公里(含)內,按起、迄站區間車票價9折計算。
    2.  乘車超過70公里,票價分為以下2段計算後加總計價:
        第1段:前70公里以區間車票價9折計算。
        第2段:超出70公里部分,超出里程以自強號費率(每公里2.27元)計算。【例如:台北至新竹 78.1 公里,持卡搭乘自強號計價方式為 (70*1.46*0.9)+(8.1*2.27)=92+18=110】
(三) 自強號乘車70公里(含)內之認定:
    
非指自搭乘自強號起算70公里,而是總合各級列車之搭乘及轉乘在70公里以內,均收取區間車票價並享有電子票證優惠。搭乘自強號於迄站時總里程超過70公里以上(包含所有轉乘),即就超過里程加計自強號與區間車差額,莒光號(含)以下列車不額外補收。

概念

效益最大化思路,以搭乘自強號為例

  1. 電子票卡刷卡入站
  2. 站與站間根據里程來分類(直達間是否為 70 公里)
  3. 如果不是 70 公里內,就要搜尋最近抵達站前一站或後一站是否為小站。透過轉乘一次(向前向後)達到區間價格打 9 折

台鐵區間準則

  • 扣款以出站時間的當班次回基準(例如台北 0700 出發抵達台中 10:00,假設下一班區間為 10:30 抵達,這樣 10:00~10:30 出站就會根據 70 公里規範來算)
  • 小站永遠是區間票價(這是一個 bug,但也不能說一定是。因為根據這個想法小站附近民眾永遠享有便宜價格原因是他需要做一次性轉乘)

資料來源與 API

開發模組

  • 資料取得模組
  • 規劃路徑以及查詢里程
  • 計算票價格