Tutu.ruの経隓列車のスケゞュヌルはどうですか

通勀電車-電車-は、ロシアで最も人気のある旅客茞送手段の1぀です。 幎間で䜕癟䞇人もの乗客がそれらを䜿甚し、数千の列車で合蚈数千億キロを移動したす。 モスクワ政府の統䞀デヌタりェアハりスに掲茉されおいるモスクワ運茞省によるず、2017幎1月だけで、郊倖の鉄道茞送の旅客茞送量は4260䞇人に達したした。 これは昚幎より4.1増加しおいたす。



電車の時刻衚の利甚可胜性、アクセス可胜性、正確性はすべおの乗客を興奮させ、それを圢にしお人々に䌝える人々にずっお、それは重芁で非垞に難しい仕事です。



私の名前はアレクサンダヌ・ポドレフスキフです。私はTutu.ru瀟のリヌド゚ンゞニアであり、電車のチヌムリヌダヌです。蚘事では、オンラむンスケゞュヌルを䜜成する技術的な詳现ず困難、それがどのように機胜するか、ロシアの鉄道が提䟛するデヌタをどのように䜿甚するかに぀いお説明したすナヌザヌは、気付かないうちにスケゞュヌルを最新の状態に保぀のに圹立ちたす。





列車のスケゞュヌルは、デカルト座暙系での列車の移動プロセスの衚瀺です。 この圢匏では、鉄道の列車のスケゞュヌルが衚瀺されたす。



ロシアには玄30の郊倖旅客䌚瀟PPCがあり、それぞれが特定の地域の旅客サヌビスを担圓しおいたす。 地域の茞送順序、乗客の垌望、研究に基づいお、各PPCは幎に1回倏の初め頃JSCロシア鉄道に送られるスケゞュヌル倉曎の提案を䜜成したす。



ロシア鉄道は、電車、旅客列車、貚物列車のスケゞュヌルの申請曞を数か月以内に受け取り、新しい列車のスケゞュヌル新しいスケゞュヌルを䜜成し、幎末に発効したす。 このようなスケゞュヌルは、毎幎12月の第2日曜日から翌幎の12月の第2土曜日たで有効であり、芏範的たたは基本的ず呌ばれたす。 原則ずしお、駅やプラットホヌムの倧きなスタンドに掛けられおいるのは、倚くの駅の興行所で賌入できる本に印刷されおいるからです。



同時に、倧きな鉄道のゞャンクションモスクワなどのほずんどの乗客は、亀通量の倚い地域では基本スケゞュヌルにほずんど意味がないこずを知っおいたす。 事実、鉄道は定期的に修理を行う必芁があり、ほずんどの堎合、列車の動きを郚分的に閉じるこずなく修理を行うこずはできたせん。 そしお、JSC Russian Railwaysは、たずえば、1぀のステヌゞで䞡方向に1぀のトラックに沿っお亀互の列車の移動を提䟛する、さたざたな列車のスケゞュヌルを開発したす。 ぀たり、基本スケゞュヌルに䞀時的な倉曎が加えられたす。 そしお、そのような倉曎は、修理䜜業だけでなく、スケゞュヌルに察しお絶えず行われたす。



スケゞュヌルのあるオンラむンリ゜ヌスが登堎する前は、䞻に駅での発衚からのみ䞀時的な倉曎に぀いお知るこずができたした。 さらに、アナりンスは特定の日のスケゞュヌルではなく、原則ずしお、基本スケゞュヌルに倉曎を加えたA4リヌフレットです。 そしお、1日にそのようなリヌフレットがいく぀かあるかもしれたせん。 たずえば、そのうちの1人によるず、電車は15:30ではなく15:50に行き、もう䞀方では、同じ電車が䜕床も停車し、3番目に-倕方の倉化で、ほずんど芋られなかったたずえば、電車が始たった、 22:00ではなく15:40になりたした。 ちなみに、倚くのステヌションはただそのようなアナりンスを持っおいたす。 人生の䟋は実䟋ずしお圹立ちたすTutu.ruの私の同僚がモスクワからRzhevsky地区に乗り換えるこずを決めたら、モスクワからVolokolamskたで電車に乗り、修理のためにRzhevに必芁な通勀電車が明日だけ、モスクワでは、これに関する情報はありたせんでした。



オンラむンリ゜ヌスの出珟により、スケゞュヌルを芋぀けるのがはるかに簡単になりたした- りェブサむトたたはモバむルアプリケヌションに移動し 、出発駅ず目的駅、日付を入力するだけで、システムはこれたでに知られおいるすべおの䞀時的な倉曎を考慮しお、その日に予定されおいる列車を衚瀺したす。 倉曎を加えた倧量の玙を勉匷する必芁はありたせん。 そしお、Tutu.ruはロシアで最初のオンラむンリ゜ヌスになりたした。2003幎には、基本的なスケゞュヌルだけでなく、䞀時的な倉曎も公開され始めたした。



このようなリ゜ヌスを䜜成し、スケゞュヌルを最新の状態に保぀こずは簡単ではありたせんでした。 倉曎は手動で監芖する必芁がありたした。サヌビスの䜜成者自身が駅に行き、写真を撮り、スケゞュヌルずアナりンスを曞き盎したした。 すべおのステヌションを移動するこずは物理的に䞍可胜であったため、スケゞュヌルの倉曎は䞍正確に行われたした。 そしお、ここで私たちのナヌザヌは倧いに助けおくれたした-Tutu.ruを曞いお呌び出しお、盎接情報を提䟛しおくれたした。



しかし、ただスケゞュヌルに誀りがあったため、远加の情報源を探し始めたした。 そのため、同様に乗客にスケゞュヌルを正確に知らせるこずに関心を持っおいる郊倖の旅客䌚瀟PPCの出珟埌すぐに、すべおの駅のすべおの列車のスケゞュヌルずその倉曎に関するデヌタを受け取るこずに同意したした。 この情報源の出珟により、スケゞュヌルの質が倧幅に向䞊したした。 2005幎に戻った堎合、ほがすべおのナヌザヌがサむトで少なくずも1぀の゚ラヌに遭遇し、10幎埌、倧倚数のナヌザヌは垞に正確で信頌できるスケゞュヌルを確認しおいたした。



たれではありたすが、コントロヌルパネルのデヌタに゚ラヌが発生し、オペレヌタヌも時々ミスを犯すため、別の゜ヌスロシア鉄道のメむンコンピュヌティングセンタヌの郊倖スケゞュヌルの䞭倮デヌタベヌスを停止および接続したせんでした。郊倖電車のスケゞュヌルを䜜成し、ロシア党土に倉曎したす。



Tutu.ruサヌビスがスケゞュヌルの関連性を維持する方法



Tutu.ruで、17の「地域」の電車の時刻衚、ルヌト、およびスケゞュヌルに関する情報を芋぀けるこずができたすおおよそ、関連するコントロヌルセンタヌの責任の制限に埓っお、領域の条件付き内蚳。 Tutu.ruは、有効にする前にメむンスケゞュヌルのデヌタず、スケゞュヌルの䞀時的な倉曎に関する情報特定の日の列車の移動オプションを受け取りたす。



この情報は、半手動モヌドでむンタヌフェヌスを介しお入力するオペレヌタヌによっおデヌタベヌスに取り蟌たれたす。 パヌトナヌシップを結んでいない分野では、専門家がスケゞュヌルサむトを手動で参照し、デヌタを手動で入力したす。 このアプロヌチは倚くの劎力を必芁ずし、゚ラヌに぀ながる可胜性があり、その結果、スケゞュヌルが実際のスケゞュヌルず完党に䞀臎したせん。



MCCデヌタベヌスを接続するこずにしたずき、その䜿甚方法を正確に知りたせんでした。 もずもずは、より正確なデヌタを取埗するための远加のデヌタ゜ヌスであるず想定されおいたした。 ここずMCCシステムのスケゞュヌルモデルの詳现の䞀郚が異なるこずがわかっおいたした。たずえば、列車は1぀のルヌトに沿っお移動し、終点駅に到着し、この駅にしばらく立ち、その埌番号を倉曎し、移動を続けたす。しかし、異なるスケゞュヌルずルヌトで。 原則ずしお、MCCシステムでは、これら2぀の列車は異なっお衚瀺され、ロシア鉄道のWebサむトでは、最初のセクションの駅から2番目の駅たでのスケゞュヌルにそのような列車はありたせん。 このような状況は個別に凊理され、この列車が単に駅に立ち、その埌番号を倉えお移動し続けるこずが確実な堎合は、1぀のオブゞェクトずしお起動したす。 耇合番号「/」区切り蚘号で瀺される元の列車の番号があり、この列車は異なるセクションの駅間の列車の怜玢の結果ずしお存圚したす。



䞀郚のコントロヌルステヌションCPPCやSZ PPKなどからパヌトナヌ/サブスクラむバヌに送信される倉曎には、電車のすべおの停留所に関するデヌタは含たれず、個々のポむント鉄道駅、チェックポむント、道路暪断、りェむポむントなどのみに関するデヌタが含たれたす。そしお、列車が停止する䞭間地点停止地点、プラットフォヌムなどを通過するのにかかる時間、それでも各パヌトナヌは独自の方法で蚈算したす。

䟋に぀いお考えおみたしょう。リガ方向の6600番の電車は、通垞のスケゞュヌルに埓っお毎日運行し、ナハビノで5:04、オパリハ5:10、クラスノゎルスク5:14、パブシノ5:18以降に停車したす。 7月9日、列車のスケゞュヌルが倉曎され、457にナハビノを出発するずいう情報が運送業者の䌚瀟から届き、パブシノは暙準のスケゞュヌルに埓っお運行を続けたす。



MCCのデヌタは次のずおりです。ナハビノ駅ずパブシノ駅では、それぞれ4:57ず5:18が入力され、䞭間駅の通過時間は、最初の歩行スケゞュヌルに比䟋しお、぀たり644の比率で蚈算されたすあたかも列車がこのセクションにいるかのように遅くなりたす、オパリハの停留所は5:06に延期され、512にクラスノゎルスク駅に行きたす。 長い間、Tutu.ruのWebサむトの蚈算アルゎリズムは類䌌しおおり、99の堎合、列車はたさにそのような動きをしたす。 しかし、倉曎の原因が消えお修理など、列車が通垞の速床で゚リア内を移動した堎合がありたした。 この䟋では、圌女は6分5:03にオパリハに到着し、4分5:07にクラスノゎルスクに到着し、4分5:11にパノシノに到着したこずを意味したす。 それから、スケゞュヌルに埓うために、列車は5:18たで駅に立ち、スケゞュヌルに埓っおさらに進みたす。



これはナヌザヌにずっお䜕を意味したすか 5:10にクラスノゎルスカダ駅に到着したナヌザヌは、次の列車を埅぀こずになりたす。 そのような堎合のために、Tucu.ru Webサむトで正確な時間がわからないポむントを停止する時間は、MCCずは異なるアルゎリズムを䜿甚しお入力されるようになりたした。 時間は、移動の初期スケゞュヌルに基づいお蚈算されたす。䞀般的には、指定された駅間の列車の最小通過時間に基づいお蚈算されたす。 ナヌザヌに高い確率で、列車が行くよりも数分短い時間を䞎えたす。 プラットフォヌムに来るのは、数分埌よりも数分早いほうがいいです。



さらに、MCCシステムでスケゞュヌルを䜜成するずきに䜜成されたヒュヌマンファクタヌに関連する゚ラヌが怜出されたした。 これらおよびその他の理由により、MCCからデヌタを盎接むンポヌトするこずは望たしくないず刀断されたした。 代わりに、MCCず圓瀟のデヌタがどのように異なるかを調べるこずがより重芁です。 これらのデヌタに基づいお、他の情報源困難な堎合には駅での列車の実際の怜査を含むに基づいお、専門家はどのデヌタが「より正確」であるかたたはナヌザヌにずっおより有甚かを決定したす。



しかし、䜕かを比范する前に、オブゞェクト間に少なくずも䜕らかの接続を確立する必芁がありたす。 圓初、列車の通信も駅の通信もなかったため、この通信を厳密に確立できるフィヌルドはありたせんでした。 MCC基地で玄2侇5千個の駅のオブゞェクトず1侇5千個の列車のオブゞェクトが芋぀かったため、関連する列車を「正面」で怜玢するこず、぀たり、各駅ず各駅、各列車ず各列車を怜玢しお比范するこずは困難でした。



モデルを䜜成するためのアルゎリズムで䞊蚘の矛盟が考えられるため、比范はあいたいにする必芁がありたす。 これは、オブゞェクトの正確な同等性ではなく、デヌタフィヌルドの1぀にわずかな違いがあるオブゞェクト、たずえば、日付の1぀での出発時間の2〜3分による違いを探すこずを意味したす。 ファゞヌ比范はかなり高䟡なアクションであり、比范察象のオブゞェクトのペアが数億になるずいう事実を考えるず、このような方法は劥圓な時間内に結果を生成したせん。 そしお最終的には、最初はすべおの機胜が知られおいないため、確立された通信はほずんどありたせん。



マッチングステヌションず鉄道斜蚭



これは、いく぀かの段階ずいく぀かのパスで行われたした。 最初のステップは、ステヌションのオブゞェクト間の察応を確立するこずでした。 所有しおいる識別子ずMCCデヌタベヌスによるず、コンプラむアンスを明確に確立するこずはできたせんでした。 たずえば、ロシアには9぀の停留所「105 KM」ず17の停留所「106 KM」がありたす。 そのため、名前の比范はあたり効果的ではありたせんでした。MCCベヌスで䞀意のステヌションを芋぀けるこずができる䞀意の名前を持぀ステヌションの玄10がありたした。



この点で、スケゞュヌルデヌタベヌスの専門家であるAleksey Derkachevは、Express-3ステヌションの7桁のコヌドステヌションIDの1぀ずしお広く䜿甚されおいるずMCCデヌタベヌスのステヌションコヌドずの察応をどこかで掘り䞋げたした。 この衚を䜿甚しお、列車のスケゞュヌルに参加しおいる駅の玄半分のペアを芋぀けるこずができたした。 少なくずもそのような数の駅を比范するこずが可胜になった埌、次の段階に進むこずができたした。同じ列車を芋぀けようずしたす。



これを行うために、自動スクリプトは怜出されたすべおの駅のペアを調べ、特定の駅の列車のスケゞュヌルを遞択したした。 次に、受信した列車の各セットを比范し、完党䞀臎ルヌト䞊の駅の数が同じ、各駅での列車の到着/出発時刻が同じ、列車番号が類䌌、週次スケゞュヌルが同じを芋぀けるず、重耇が削陀され、私たちのスケゞュヌルでは、列車は1぀だけでした。



したがっお、䞀郚の列車ではペアを芋぀けるこずができたした。 列車間の通信が確立された埌、再び駅に戻るこずができたした-芋぀かった列車のペアを通過し、同じであるため、ルヌト内の駅はほずんど同じです。 これにより、さらに䞀臎するステヌションがいく぀か埗られたした。 その埌、再び䞀臎する列車を探すこずができたした。 途䞭で、さたざたな怜玢パラメヌタヌ、さたざたな仮定を詊しお、スケゞュヌルの線成ず保存の新しい機胜を考慮に入れるこずができたした。 数十回の反埩の埌、通信デヌタベヌスはすでに䜿甚されおいる可胜性がありたす。



継続的なスケゞュヌルの䞍䞀臎怜玢



列車のスケゞュヌルデヌタは非垞に頻繁に倉曎されたす。1日に数癟の倉曎が行われ、倏のシヌズンの開始ず終了たでに、倉曎は1日に数千に達するこずがありたす。 さらに、倉曎がデヌタベヌスずMCCデヌタベヌスの䞡方に垞に同時に発生するわけではないため、盞互䜜甚のルヌルに埓っお、1日2回特定の時間にのみデヌタ曎新をアップロヌドできたす。 たた、専門家は24時間䜓制でデヌタベヌスにデヌタを入力できたす。



毎回、すべおの列車を調敎するのはかなり時間がかかる操䜜であり、比范基準が倉曎される堎合がありたすたずえば、1分間の差異の䞀郚は取るに足らないず芋なされ、これらの差異を無芖できたす。この間にデヌタ自䜓が倉曎される堎合があり、新しい列車が远加される堎合がありたす䞀臎するものはただ芋぀かりたせんでした。 お客様は䞍䞀臎を芋぀けるのに圹立ちたす。 毎秒、サむトで平均10回のスケゞュヌル怜玢が行われたす。



バックグラりンドでの怜玢ごずに、MCCデヌタのロヌカルコピヌのデヌタが芁求され、比范が行われたす。 列車が類䌌しおいる堎合番号、週のスケゞュヌル、駅の通過時間、それらに䞀臎するものがない堎合、むンストヌルされたす。 䞀臎するものの、デヌタが分岐する堎合、芋぀かった䞍䞀臎は保存されたす。 将来的には、スケゞュヌルの専門家は、䞀般的な䞍䞀臎のリスト、特定の列車の䞍䞀臎を調べお、デヌタが発散する理由を芋぀け、りェブサむトで倉曎するかどうかを決定できるようになりたす。



珟時点では、モデルの比范、および衚瀺の利䟿性ず操䜜の䞡方の点で、システム党䜓がただ最終段階にありたす。倚くの䞍䞀臎があるため、それらのほずんどは重芁ではなく、最初に衚瀺する必芁はありたせん。 モデルず䜿甚されるスケゞュヌリング原則の違いは、比范の粟床に圱響を䞎える可胜性がありたす。



技術的な実装



数幎前、圓瀟では、DevOpsチヌムのおかげで、マむクロサヌビスを䜜成できるようになりたした。 サヌビスのモノリスずは別に新しい機胜を実装するこずが可胜になりたした。



そのため、デヌタベヌスが応答するのず同じ圢匏でMCCからのスケゞュヌルのすべおのデヌタを保存し、怜玢ク゚リに応答するAPI珟圚の日付、駅のスケゞュヌル、特定の電車のルヌトを実装するマむクロサヌビスがありたした。 これは、リポゞトリからのデヌタを䜿甚しお怜玢ク゚リに応答し、2぀のデヌタセットを比范し、モデルの䞍䞀臎に関するデヌタを保存するマむクロサヌビスです。



䞍䞀臎ベヌスの補充





サむト䞊の任意のルヌトで列車を怜玢する堎合、スケゞュヌルサヌビスが呌び出され、結果を返す前に、蚈算されたデヌタを含むむベントがバスからバスに送信されたす。 比范サヌビスはこれらのむベントをリッスンし、デヌタを受信するず、MCCからデヌタストレヌゞサヌビスに同じデヌタを芁求し、受信した2぀のセットを比范したす。



接続がすでに確立されおいる列車のデヌタに矛盟がある堎合、これに関しお別のむベントが生成され、䞍適合ストレヌゞサヌビスでリッスンされたす。 䞀郚の列車で接続が存圚しない堎合でも、デヌタによれば、それらが非垞に類䌌しおいるこずがわかるず、それらは接続されたす。



矛盟のデヌタベヌスを備えた電車のスケゞュヌルにおける専門家の仕事のプロセス





これらの䞍䞀臎を曎新するプロセス







おわりに



システムは静止しおおらず、私たちは絶えず開発しおいたす。 スケゞュヌルデヌタモデルの生成および入力方法には、ただ違いがありたす。 そのため、最終的な違いのリストにはかなりの数の゚ントリが蓄積されたすが、それらを考慮する必芁はありたせん。そのため、方向付けが非垞に耇雑になり、結果ずしお問題ぞの察応が難しくなりたす。 しかし、私たちはそれに取り組んでいたす。



私たちは、駅ず列車の斜蚭間の通信の自動むンストヌルに取り組んでいたす。 「電車チヌム」は、サヌビスの改善に絶えず取り組んでおり、お客様が利甚しやすいようにしおいたす。



次の蚘事では、モデルの構造に぀いお詳しく説明する予定ですが、比范のためのアルゎリズムに぀いおさらに詳しく説明したす。 さらに、特定された違いず、それらに基づいおシステムがどのように進化するかを説明したす。 蚘事のトピックに関する質問や提案、補品自䜓に぀いおのご芁望がある堎合は、必ずご蚘入ください。



All Articles