Slide 1

Slide 1 text

Graphillion を用いた最長片 道切符ルートの算出 Psyduck みんなのPython勉強会#62

Slide 2

Slide 2 text

自己紹介 Psyduck ・https://psyduck-take-it-easy.hatenablog.com/ ・Python歴は4年目 ・普段はECサイト向け検索エンジンを作る部署に所属 ・PHP、Bashがメイン ・業務Pythonは調査用クロールスクリプトのみ ・個人では日々Pythonの可能性を模索中 ・2ヶ月連続登壇

Slide 3

Slide 3 text

最長片道切符とは ・JRの旅客営業規則で発券可能な最長距離の片道切符 ・1961年の東大旅行研究会が最初の旅行者とされる ・ただし、ルートはJRから公表されていないため、自力で算出する必要がある ・運賃を手計算するため発券に数日掛かる 最長片道切符(例) 出典:JR最長片道切符の旅2013

Slide 4

Slide 4 text

具体例 ・秋葉原→東京 ・山手線であれば5分程度で到着する ・最長片道切符では右のようになる 出典:JR東日本

Slide 5

Slide 5 text

先行事例 ・デスクトップ鉄さん(http://www.desktoptetsu.com/saichohensen.htm) ・ただし、Excelで算出(Excel 2010以降では動作不能) ・halpha656さん(http://halpha656.hatenablog.com/entry/2014/08/28/120040) ・Graphillionを用いたルート算出 ・ここのコードを改良した

Slide 6

Slide 6 text

Graphillionとは ・https://github.com/takemaru/graphillion/wiki ・大規模なグラフセットを効率的に扱えるPython ライブラリ ・電力網から効率的な送電経路の算出等に使用された実績

Slide 7

Slide 7 text

課題 ・データを手動で作るには煩雑 ・計算量削減のため、区間を分岐駅ごとにする作業が大変 ・出力がみにくい ・別途並び替える必要があった 中央線を例にすると、 東京-神田-御茶ノ水-代々木-新宿

Slide 8

Slide 8 text

改良事項 ・駅間距離データを用意すれば計算用データに変換できるように改良 ・ダイヤ改正ごとの修正が簡易に ・ルートが順番に出力されるようにした ・別のプログラムを組まずにできる

Slide 9

Slide 9 text

課題 ・多くのメモリを必要とする ・GCP Comute Engine n1-highmem-96(96 vCPU、メモリ 624 GB)で検証 ・九州の計算が出来ない…

Slide 10

Slide 10 text

今後の展望 ・メモリ消費量の削減 ・手軽に算出できる環境の整備

Slide 11

Slide 11 text

https://github.com/yukou-isshiki/most_longest_ticket_root_calc