常磐線の電車案内システム

プログラム GitHub
実行結果 実行結果
使用言語など Python,Flask,Flutter,Firebase
作成経緯 大学のチーム開発プロジェクトにおいて作成した。
このテーマを選択した理由は、最短経路検索、最短時間検索、時刻表データなど、個々が独立していて作業の分担がしやすいと考えたからだ。
また、必要な技術レベル自体はそこまで高くないため実現可能性が高く、完成できたかが重視されるこのプロジェクトにおいては適していると考えた。
当初はPythonで行っていたが、オブジェクト指向のメリットを活かすことができ、なおかつ全員が慣れている言語であるJavaで開発を行った。
内容 このシステムでは出発時間を指定した検索と到着時間を指定した検索を行う機能を実装した。探索アルゴリズムにはAスターアルゴリズムを用いている。
チームは8人で、私は最短時間検索の中の到着時間から経路を求めるプログラムを担当した。
到着時間検索では、引数に渡した時間以降に出発する最短の経路を返す関数を用いている。
具体的には、この関数で返された経路の到着駅に到着する時間と初めの引数の時間との差を求める。 そして初めの引数の時間からこの差の値を引いた時間を再度引数として関数に渡し、経路を検索する。 これによって得た経路の到着駅に到着する時間を求めて当初の引数の時間より前に到着するまで1分ずつ引いて経路検索を繰り返す。
つまり、A駅を出発し、B駅に18:30分に到着したい場合、18:30分を表す6桁の整数183000を先ほどの関数の引数に渡す。 そうするとこの関数からは18:30以降にA駅を出発してB駅に着くまでの最短経路が返される。 これをB駅に19時に着く経路だとすると、A駅間とB駅間の乗車時間は30分だとわかるため、初めに設定していた18:30分より30分前の18時(180000)を関数の引数として再度検索を行う。 この操作後に18:30分より前に到着する経路が見つかった場合は操作を終了し、見つからない場合は18時から1分ずつ引いて18:30分より前に到着する経路が見つかるまで検索を繰り返す。

<< 前のページに戻る