Graphillion を用いた最長片道切符ルートの算出
by
Psyduck
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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