全路線でのバス到着時間の予測

情報技術科 No.08 小桐斗馬
No.18 新村勇葵
No.21 髙井健人

①研究の背景

 こんにち、多くの人がバスを移動手段として利用します。基本的にバスは時刻表に基づいて運行しますが、時間、天候などによって道路状況が変化することで時刻表通りの運行は困難です。

その際、各バス停へのバスの到着時間を予測することができたら、利用者がより快適にバスを使うことができると考えました。

②仮説とねらい

 時間によって天候、曜日、イベントなど様々な環境の変化があります、それにより各時間ごと大きな外的変化があり長期間でのデータを用いて予測することは難しいといえます。そのため外的変化が少ない直近の時間を用いて予測を行うことにしました。

具体的には、直近の各バス停間の所要時間の平均を用いることで現在の各バス停間の所要時間を予測することができ、目的のバス停までに経由するバス停間の所要時間の和がバスの到着時間となるのではないかと考えました。

③研究内容

私たちの地元浜松を走る路線バスは、「バスどこ!?マップ」というサイトでその位置情報が公開されています。

画像に alt 属性が指定されていません。ファイル名: %E7%84%A1%E9%A1%8C001.png
「バスどこ!?マップ」


 確かに時刻表通りの運行が難しい路線バスにとって大変便利な情報ですが、私たちにはもう一つ知りたい情報があります。
 それは、「バスがいつ着くか」です。
 昨年先輩方が浜松で一番混雑している区間、ここで到着時間の予測について研究しました。

葵町から市役所南までの混雑している区間

その結果、90%以上の確率で誤差5分以内の予測に成功しています。しかし、特定の路線の特定の区間であるため、実用的とは言えません。

そこで、実用化するために、すべての路線のすべての区間での予測を実現し、すべての人が利用できるスマートフォン向けWebアプリの実用化に取り組みました。

④技術的知識

今回スクレイピングを行い研究を行っていますが。そもそもスクレイピングとは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のことを指します。

phpでスクレイピングを行いそのデータをデータベースに格納します。

phpを用いたスクレイピング

その際データベースはphpMyAdminを用いて、SQLでデータベースの操作を行います。

phpmyadmin内でのsql文の実行

C++で所要時間の予測の処理を行い、htmlやphp、javascriptでホームページを作成します。

ホームページのソース

⑤取り組んだ内容

昨年、一路線の一部分のみで上記のような予測を行った先輩の研究をもとに全346路線、2537バス停間での予測を行います。   

インターネット上でバスの運行情報を公開している遠鉄バスの「バスどこ!?マップ」というサイトがあります。ここではバスの現在地に加えて車両番号、路線番号、バス停番号などの情報がHTMLコード上で公開されています。

バスどこ!?マップのHTMLソース

このサイトからこれらの情報を長期間に渡りスクレイピングし、データベースに蓄積します。

「バスどこ!?マップ」から取得できる無加工のデータ

それをもとに各バス停を通過する順番、各バス停の座標や各区間を作るバス停組などを形成します。

形成したバス停の情報
形成した路線の情報

これらの形成された路線などの情報を使って、各区間での実際の所要時間を蓄積します。

各区間の実所要時間

さらに直近の実所要時間をもとに全路線でのバスの到着時間を予測します。

予測される所要時間は、直近のバス停間の所要時間の平均としました。そして、目的のバス停までの各バス停間の予想所要時間の和から、到着時間を予測します。

では、なぜ「直近」なのでしょうか。

直近で集められたデータは、天候や交通状況の変化が少ないため、直近のデータは、近い未来の予測に適していると考えました。
その直近とは、どのくらいの時間なのか、様々な状況下で、収集時間と誤差の関係を調べました。

その結果がこちら。

直近30分間の誤差が最もばらつきが少ないです。

つまり、直近30分としたとき、あらゆる状況下での誤差が最も少なくなることがわかりました。

しかし、今回私たちはすべての路線での予測を試みています。
路線が変わればバスの本数や道路状況も異なります。そのため、すべての路線で直近30分がベストであるとは言えないでしょう。

そこで、新たな直近を導き出し、予測の精度を高めることにしました。
バスが次のバス停に到着するたび、直近5分から100分までの20パターンで求めた所要時間を、それぞれを実際の所要時間と比較、最適な直近を探し出します。
導いた直近で所要時間を再算出、そうして到着時間を再度計算します。

最後にバスの利用者がweb上で予測到着時間を確認できるようにします。

web上での予測到着時間の表示(スマートフォン)

⑥結果

昨年は同じ区間での検証だったため、単純に到着予測時間から実際に到着した時刻を引いた誤差によって、予測精度を検証することができました。しかし、今年は不特定の区間での検証となります。なぜなら利用者によって路線、乗るバス停、降りるバス停がことなるからです。ですから単純に誤差だけでは検証できません。

そこで今年は、それぞれのバス停間ごとに検証することにしました。バス停間の距離にはばらつきがあるため、実際にバス停間を通過するのにかかった実測時間と遅延時間の割合を誤差率として求め、誤差率を比較することで検証することにしました。

ただ、誤差率ではわかりにくいので、時間で比較することにしました。今年は、全バス停間の平均実測時間を基準にして遅延時間を換算して検証することにしました。基準となる全バス停間の平均実測時間は76.82秒となりました。最後に正しい予測ができたか検証を行いました。

さまざまな時間帯、曜日、天候の条件下で全バス停間2537か所で収集された84204件の予測値と実測値の検証を、先ほどの通り平均実測時間を基準にして行いました。

その結果がこちらです。

平均実測値を基準にした予測値と実測値の誤差

±10秒未満が24%、±1分未満が82%という結果となりました。

⑥感想・考察

 2年生の後半から約1年弱、この研究を行ってきたが大変多くのことが学べた。私は、部活などで規模が大きいシステムを構築するなどの経験をしたことがなく、さらに複数人で協力して1つの研究をするという経験もなかったため、初めはうまくいかないことが多かったが、実際に知識を増やし手を動かしたり、話し合いを重ねていく中で成長していると実感することができた。
 また、工業にかかわる人間として、単なる「研究」で終わるのではなく、実用可能なものを作ることができたのは良い点だったと思う。
この結果が少しでも多くの人がバスを利用するきっかけになればと思う。

コメントを残す

メールアドレスが公開されることはありません。