Didi 有料注文アルゴリズムについての話

この記事の著者: Wang Ben Didi | チーフ アルゴリズム エンジニア

ガイド: Didi の注文配車アルゴリズムというと、不思議で好奇心がわくかもしれません。タクシーの呼び出しから、Didi プラットフォームでのドライバーの注文の受け取り、そして最終的にはプラットフォームの配車注文に至るまで、今日のみんなの旅行体験は、地球を揺るがすような変化を遂げています。 . 毎日何千万もの電話がかかってくる中、Didi の注文配車アルゴリズムは、より多くの人にタクシーに乗ってもらうために懸命に取り組んできました。この記事では、この問題をどのように分析してモデル化するか、そして直面する課題に焦点を当てます。一種のアルゴリズムの課題を解決し、一般的に使用される注文配車アルゴリズムのいくつかを導入すると、これらのアルゴリズムにより、ユーザーのタクシー配車の確実性を継続的に向上させることができます。

1. より優れたディスパッチアルゴリズムが必要な理由

Didi の注文配車アルゴリズムに関しては、謎と好奇心を感じるかもしれません。電話をかけることから、注文を取り込み、注文を配車することから、今日のタクシー配車サービスに至るまで、どのように進化したのでしょうか? まず見てみましょう。なぜ注文は配車されるのでしょうか?アルゴリズムは旅行業界に不可欠な機能ですか?

数年前を思い返すと、Didi がなかったときは、冷たい風や炎天下の中で、利用できるかどうかわからないタクシーを待つことしかできませんでしたが、その後、Didi からタクシーを呼ぶことができ、乗客も増えました。 Didi からタクシーを呼べるようになった 屋内は車の到着を待つのに比較的快適だった オンラインからオフラインになって初めて乗客の確実性が向上しましたが、それだけでは十分ではありません 注文をつかむモードは応答率の上限が高くなりすぎるのを防ぐため、滴滴は 15 年間でエクスプレス サービスを開始しました。注文の把握から発送まで進化しました。乗客の応答率は 20 ポイント以上向上し、多くの場合、 1 日を通して最高 90 ポイントに達する可能性があります (ピークおよびローカルの需給緊張の応答率は比較的タイトになります)、乗客の確実性が再び大幅に向上しました。配車モードが Didi にとって大きなユーザー価値を生み出したことがわかります。 。

近年盛り上がっているO2Oビジネスを見てみると、私たちの友人であるUberやLyftを含む国内外のオンライン配車会社はいずれもドライバーと乗客の取引に合わせた配車注文という商品形態を基本としています。 Uber 上場、配車サービス シングルエンジンは目論見書にもコア技術力として記載、国内フードデリバリープラットフォームを見ると、コア配車システムの長所と短所が取引効率(平均配送コスト)とユーザーを決定づける最後に、近年、大規模物流業界全体がオンライン変革を進めており、商品とドライバーをどのようにマッチングさせるか、注文を組み合わせる能力の向上も、全体の鍵となります。取引プロセスやビジネスモデルが成立するかどうかの前提。人の輸送から物品の輸送まで、配車エンジンは現在、実際のビジネスや生活の中でますます使用されています。

2.請求書の発送に関する事前検討

ここでは、Didi のオンライン配車プラットフォームがどのように注文を発送するのかについても見ていきます。まず、私たちがどのような問題に直面しているのか考えてみましょう。

「注文の割り当ては、乗客が発行した注文を注文配車システム内のオンラインのドライバーに割り当てるプロセスです。」

これは一見単純そうに見えますが、実際には非常に複雑な問題です。これについて言えば、多くの人が疑問に思うかもしれませんが、自分の注文を自分に最も近いドライバーに割り当てることができますか?

実際、滴滴出行の配車アルゴリズムの最大の原則は「ニアレストアロケーション」(注文の70%~80%が最も近いドライバーに割り当てられる)であり、私の知る限り、世界の他の競合企業(Uberも含む)はこれもこの原則に基づいています。

この質問を詳しく見てみましょう。最も近いもの、先着順、貪欲な戦略に従ってのみ割り当てを行った場合、プラットフォーム上のすべての乗客と運転手の要求に最もよく応えることができるでしょうか? 答えは「いいえ」です。その理由は、現時点と現在の地元の注文のみに基づいて意思決定を行うと、将来の新しい注文やドライバーの変化を無視し、隣接する他の地域のニーズやさらには無視することになるからです。都市全体 (注: タイミングの点で、新しいドライバーと注文の出現により、貪欲な戦略が最も近い分布の目標に違反する可能性があります)。そのため、問題は非常に複雑なままです。

ここでは少し抽象的ですが、大丈夫です。誰もがよりよく理解できるように、注文割り当ての問題を段階的に分解してみましょう。

簡単に言うと、当社のプラットフォームでは、常に乗客によって N 件の注文が作成されており、配送に使用できる M 人のドライバーがいます。当社の強力なプラットフォームは、注文の配車アルゴリズムにドライバーに関するリアルタイムの情報を提供できます。の位置座標、およびすべての注文の開始位置と終了位置を取得し、注文を受けた各ドライバーのリアルタイムのナビゲーション距離を示します。

▍ご注文1件の場合、ドライバー1名

ファイル

非常に簡単に見えますが、ドライバーに命令を割り当てるだけです。

「では、なぜ近くに空車があり、あなたに割り当てられないことがあるのでしょうか?」

実際のオンライン システムはこれより少し複雑で、ネットワーク障害やカスタマー サービスとの通信により、ドライバーが注文を聞くことができない場合がありますが、すべての車が注文を聞くことができるわけではありません。注文に応じる要件を満たすための最も基本的な戦略は、実際には人為的に設定されたルール フィルタリングです。いくつかの基本的な例を挙げると、次のようになります。

ルールA:急行ドライバーは特別車両の注文を受けられない
ルールB:ドライバーは注文受付後に制限エリアを通過しないことを徹底する
ルールC:リアルタイムで目的地を設定したドライバーに対して途中以外のエリアをフィルタリングする
ルールD : 予約注文のみを聞くドライバーのリアルタイム フィルター 注文
ルール E: 同じ注文は 1 人のドライバーに 1 回だけ送信されます
...

ここでのルールは、注文を分割する際に不当な影響を与えるものではなく、ビジネスの正常な運営のために完全に設定されており、ビジネスの正確性を確保するという重要な責任を負っていることを明確にする必要があります。

▍注文1件、ドライバー2名の場合

両方のドライバーをこの順序に割り当てることができると仮定して、システムをどのように割り当てる必要があるかを見てみましょう。

まず、最初の状況は、2 人のドライバー間の距離と順序が同時にまったく同じである場合、システムはどのように割り当てるべきかということです。

ファイル

先ほども申し上げましたが、当社のプラットフォームにおける順番配分の最大の原則は「最寄配分」であり、距離が全く同じ場合、現在のシステムではドライバーのサービススコアの優劣を主に考慮し、サービススコアの高いドライバーを優先させます。サービススコアで注文が決まります(注:サービスポイントが請求書に与える影響を簡単に理解すると、メートルの距離に何ポイント交換できるかという利点に変換できます。これは今日の焦点では​​ないので、私が勝ちました)繰り返しますが、システムは地図を使用しています ナビゲーション距離は、人間が直感的に認識できる直線距離ではありません。交差点を 1 つ曲がる必要があるため、距離に大きな差が生じる場合があります。ドライバーのポジショニングに問題があるため、順番が遠すぎます。

次に、2 番目の状況を見てみましょう。ドライバー A が近くにいて、ドライバー B が遠くにある場合、システムはどのように配車しますか?

ファイル

これは簡単で、最近傍配分の原則に従い、このオーダーにドライバー A を割り当てます。へへ~~、問題をもっと現実的に考えてみます。注文が送信されたとき、ドライバー B はすでにオンラインでフリーですが、ドライバー A はまだ現れていません (オンラインではないか、まだ乗客を送り届けています)。しかし、さらに 1 秒後に、ドライバー A は現れません。出発の時間です 近くにいたドライバー A が突然現れ、分割される可能性があります。先着順の貪欲戦略を使用すると、ドライバー B に次の順序が割り当てられます。これは、近くで順序を分割するという目標に違反します。 (. 簡単そうに見えますが、実際にはアルゴリズムを改善する必要があります。この問題を注文の発送におけるタイミング問題と呼びます。この問題を解決する方法は後で説明します。

▍乗客が N 人、ドライバーが M 人の場合

最後に、最も複雑な多対多の状況を考えてみましょう。これは、オンライン システムがピーク時に毎日直面する課題でもあります。通常、この状況を二部グラフ マッチング問題として定式化します。これは、次の分野でも問題です。オペレーションズ リサーチ: 図に示すように、マッチングと呼ばれる問題:

ファイル

この問題をもう少し具体的にしてみましょう。現時点で乗客 20 人、運転手 20 人がいるとします。これらの乗客は 20 人の運転手のうちの 1 人が乗せることができます。システムはこれら 20 人の乗客を割り当てる必要があります。そして、全員が乗車できるようにします。時間が最短になるように。複雑に聞こえますか? 組み合わせ数学の知識を応用してみましょう。20 の階乗の数だけ可能な解があります。20 の階乗の概念は何ですか? 20 19 18*…*1= 2432902008176640000、この数は非常に膨大であり、完全に総当たり検索することは絶対に不可能です。ここではより賢明なアプローチが必要です。

▍乗客が N 人、運転手が M 人の場合、後から何人の乗客と運転手が来るでしょうか?

これは、注文を配車する際の最大の課題です。現時点で最善のものを必要とするだけでなく、将来の全体的な最善のものを考慮する必要もあります。新しいドライバーや乗客は、物流ネットワーク全体にリアルタイムで新しいノードを挿入します。新しいより適切な割り当て方法に変化が生じているため、タイミングをどのように考慮するかが私たちにとって非常に重要です。この問題は、業界ではダイナミック VRP 問題としても知られています。このダイナミックとは、タイミングが時間とともに変化することを意味します。そのため、Didi の注文の発送の問題は、物流業界における比較的静的な貨物とルート計画の問題よりもはるかに複雑です。将来の需要と供給の完全に実際の変化がわかっていると仮定すると、シミュレーションでは、システムが同じ容量を使用して 1.2 ~ 1.5 倍の需要を満たすことができる可能性があることがわかります。

少し前の土草会議を思い出して、誰もがウェンソンがかつて私たちの注文発送問題はアルファゴーよりも難しいと言ったと言いました。検索スペース、ソリューション、およびアルファ碁は、より明確なゲームルールと環境で解決されますが、その難しさはゲーム内にあり、ディスパッチ問題の難しさは、将来の需要と供給の不確実性とユーザーの行動の不確実性にあります。近年、アカデミックの世界では、alpha go と同様のテクノロジーを使用して VRP&TSP などの方向性を模索する試みが数多く行われており、オペレーションズ リサーチ理論と組み合わせた強化学習は、将来のオペレーションズ リサーチ分野における最先端の方向性の 1 つです。 (技術系以外の学生はここをスキップできます:))

3. ディスパッチングアルゴリズムの概要

注文配分問題とは何か、そしてそれが直面するさまざまな課題については上で説明しましたが、ここで次のようになります。

当社のオンライン派遣戦略がこれらの問題の一部をどのように解決するかについて話しましょう。

具体的な戦略を紹介する前に、まず注文配車アルゴリズムの主要原則について話しましょう。注文配車戦略の主原則は、世界的な観点から、できるだけ多くの旅行ニーズに応え、すべての乗客のリクエストを確実に満たすことです。より早く、より確実にご満足いただけると同時に、ドライバー一人一人のオーダー受付効率を向上させ、トータルの送迎距離と時間を最短にするよう努めます。

この原則をどのように理解すればよいでしょうか? 私たちは、この戦略は地球規模の観点から世界最適を達成すると言っているので、それぞれの独立した需要に対して、派遣命令は「局所最適」ではない可能性がありますが、私が言えることは、この戦略の下でもまだ 70% が達成されていないということです。需要の約 80% は、現在の貪欲なディスパッチの結果と最も近いものとも一致しています。

次に、重要なディスパッチ戦略を 2 つ紹介します。(ここでの内容は主に戦略の動機を明らかにすることを目的としており、詳細は説明されません)

▍バッチマッチング(グローバル最適)

ディスパッチ戦略の最も基本的な部分は、前のセクションで説明したタイミングの問題を解決することです。このアルゴリズムは、この問題を解決するほぼすべての同様の配車システムの最も基本的なモデルであり、Uber ではバッチ マッチングと呼ばれており、社内では「グローバル最適」または「遅延集中注文分配」とも呼ばれています。

このアイデアは実際には非常に直感的です。ユーザー注文の生成とドライバーの出現は多くの場合同じ時点ではないため、時間次元で注文を分割する貪欲な方法 (つまり、各注文が表示されたときに最も近いものを選択する)ドライバーが注文を発送する)全体的な最適値を取得できません。乗客とドライバーをしばらく待たせ、一定期間注文やドライバーの情報を収集した後、一元的に配信するというのが自然な発想だ。このようにして、比較的多くのより高密度の注文とドライバーを使用して、注文ディスパッチング戦略は、より近く、より合理的な注文ディスパッチング方法を見つけることができます。

ドライバーと注文の割り当ての大域最適を見つけることは、一方の側に乗客、もう一方の側にドライバーがいる 2 部グラフ マッチング問題であり、物流最適化におけるマッチング問題を解決するさまざまな方法で解決できます。

皆様に明確にしておきますが、弊社が採用している一括マッチングモードは、皆様が期待されている「最寄りのドライバーを送ってください」という「最寄り配車モード」と矛盾するものではありません。最適な解決策は、最も近いドライバーを割り当てることですが、「最も近いドライバーを送ってほしい」という各乗客の個別のニーズを完全に満たすため、場合によっては、一部の乗客のニーズを満たせない場合があります。次の状況:

乗客1と2が同時に車を呼んだ場合、「近くで配達」のモードを完全に実行すると、乗客1を先に受け入れることはできますが、乗客2の待ち時間が長くなります。距離が長く、最寄りの運転手が指令を出すためにプラットフォームの距離を超えていたにもかかわらず、乗客 2 号は車に乗ることができませんでした。乗客 1 と 2 の待ち時間は合計 15 分、平均待ち時間は 7.5 分です。

ファイル

私たちがとるアプローチは、遠い方の 2 号車を乗客 1 号に割り当てることです。

1号車から2号車へ配車。これにより、1号車と2号車の平均待ち時間は5分に短縮され、最寄りの配車より2.5分短縮され、合計の待ち時間は最寄りの配達注文よりも短い 10 分に短縮され、丸 5 分短縮されました。

ファイル

全体的な効率を向上させることで、より多くの乗客のニーズを満たすことができます。

▍需給予測に基づく分割発注

「将来、各注文がいつ、どこで発生し、各ドライバーがいつ、どこでオンラインになるかを預言者が教えてくれれば、注文の発送は非常に簡単になるでしょう。」

先ほど述べたバッチ マッチングの方法では、そのバッチのマッチングが最適であることを理論的に保証できます。しかし、それだけで十分でしょうか?

残念ながら、集中的な注文流通を遅らせるという上記の戦略は問題の一部しか解決できず、まだ完全な解決策ではありません。最大の問題は、注文を発送するためのシステムの応答時間に対するユーザーの許容範囲が限られていることです。多くの場合、わずか数秒でユーザーはプラットフォームに対する信頼を失い、注文をキャンセルしてしまいます。したがって、実際のラインでは、注文とドライバーの情報を数秒間蓄積して集中的に注文を分配するだけであり、これは依然として全体の状況から見ると時間の次元で貪欲な戦略と見なすことができます。

リアルタイムに最適な配車結果を得たい場合は、将来予測、つまり需給予測に基づいてオーダーを分割するしかありません。この種のアイデアは謎に満ちていますが、中心となる内容も非常に単純です。将来、あるエリアにさらに多くの注文/ドライバーが存在すると予測した場合、マッチングの際に、このエリアのより多くのドライバー/注文をマッチングを待機させます。同じエリア内の注文/ドライバー。

▍連続発送注文

需給予測に基づく発注配分は非常に重要ですが、予測は不確実であるため、実際の効果を保証することは困難です。この目的を達成するために、当社では、より決定的な予測方法を使用して注文を発送します。つまり、チェーン発送です。

「連続注文配車、つまり、サービスを終了しようとしているドライバーに注文が割り当てられます。条件は、ドライバーの目的地が注文場所に非常に近い場合です。」

ファイル

注文の分布を予測するのとは対照的に、チェーン配車では、次の瞬間のアイドル状態のドライバーの位置を予測します。ピーク時間帯のアイドル状態のドライバーのほとんどはドライバーが注文を完了した後に変換されるため、ドライバーの位置を予測すること、つまりドライバーが目的地までの距離と時間を監視することは比較的決定的な問題になります。サービス中のドライバーが目的地に非常に近く、目的地も乗客によって生成された新しい注文に非常に近い場合、チェーン注文ロジックがヒットします。ドライバーは最後の注文のサービスを終了すると、すぐに新しい注文を受け取るプロセスに入ることで、注文の応答時間とドライバーの注文を受け取る距離が効果的に短縮されます。

▍より良くする方法

ディスパッチアルゴリズム全体の核心は、将来の需要と供給の不確実性、動的な時空構造のモデリング、およびユーザーの行動の不確実性を克服することであり、これらの不確実性に対して、ディープラーニング手法を使用して時空間を分析するようになりました。データとユーザー行動のモデリングと予測。

さらに、従来のレコメンデーション検索フィールドと比較して、この問題にはマッチングの意思決定という追加の層があり、配信の注文をどのくらいの期間蓄積する必要があるか? 配信ごとに、ポイントがあるか、ポイントがないかという問題に直面します。誰に配布するか、この問題は本質的に強化学習問題としてモデル化でき、長期的な利益を最適化するために強化学習手法もシステムに導入されています。

前述の注文発送の問題を継続的に最適化することに加えて、注文発送システム全体は、Express Express などの複数のカテゴリの輸送能力を使用して最適な層間配分を実行する方法や、ユーザーとドライバーの同時割り当てと複数の目標によるプラットフォームの短期および長期の最適化、予約とリアルタイムの注文を同時に最適化する方法、ネットワーク効果のあるシナリオでアルゴリズムを評価する方法、より正確なシミュレーション システムなど、ここには課題があるだけでなく、交通分野の問題を再定義し、アルゴリズムを革新する数多くの新しい機会のための AI も含まれています。

4. まとめ

当社の注文配車システムは、毎日、3,000 万人を超えるユーザーの配車需要に対応する必要があります。ピーク時には、1 分あたり 60,000 件以上の配車を受け取ります。平均して、数百から数千の乗客とドライバーをマッチングする必要があります。 2秒ごとに。元の注文配車戦略と比較して、当社の現在の注文配車戦略は、毎日 100 万人を超える乗客の旅行ニーズを満たすことができます。より多くの人がより早く、より確実にタクシーに乗れるようにするために、当社の取引戦略チームは、公平性をより良く認識することを前提に、注文配車アルゴリズムの最適化と磨きを続け、乗客とドライバーにとってより多くの利益を生み出していきます。

もちろん、現在の発注戦略にはまだまだ不完全さや完成度が高く、かなり複雑な問題やシステムでもありますが、当社のさらなる成長のために、より貴重なご意見をいただければ幸いです。

最後に、Didi Technology は皆様に幸せな中秋節をお祈りします。

同時に、皆さんも Didi Technology の公開アカウントに注目してください。最新のオープンソース情報や技術情報をタイムリーに公開します。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/DiDi_Tech/article/details/100806477