ڪيئن Yandex.Taxi ڪارن جي ڳولها ڪندو آهي جڏهن ڪو به ناهي

ڪيئن Yandex.Taxi ڪارن جي ڳولها ڪندو آهي جڏهن ڪو به ناهي

سٺي ٽيڪسي سروس محفوظ، قابل اعتماد ۽ تيز هجڻ گهرجي. استعمال ڪندڙ تفصيلن ۾ نه ويندو: ان لاءِ ضروري آهي ته هو ”آرڊر“ جي بٽڻ کي دٻائي ۽ جيترو جلدي ٿي سگهي هڪ ڪار وصول ڪري جيڪا کيس پوائنٽ A کان پوائنٽ B تائين وٺي وڃي. جيڪڏهن ويجھي ڪا به ڪار نه هجي، خدمت ڪرڻ گهرجي. فوري طور تي ان بابت ڄاڻ ڏيو ته جيئن ڪلائنٽ کي غلط اميدون نه هجن. پر جيڪڏهن "نه ڪارون" جي نشاني تمام گهڻو ظاهر ٿئي ٿي، پوء اهو منطقي آهي ته هڪ شخص صرف هن خدمت کي استعمال ڪرڻ بند ڪري ۽ هڪ مقابلي ڏانهن وڃو.

هن آرٽيڪل ۾ آئون ڳالهائڻ چاهيان ٿو ته ڪيئن، مشين سکيا استعمال ڪندي، اسان گهٽ کثافت وارن علائقن ۾ ڪارن جي ڳولا جو مسئلو حل ڪيو (ٻين لفظن ۾، جتي، پهرين نظر ۾، ڪارون نه آهن). ۽ ان مان ڇا نڪتو.

prehistory

ٽيڪسي کي سڏڻ لاءِ، صارف ڪجھ سادو قدم کڻي ٿو، پر خدمت جي اندر ڇا ٿو ٿئي؟

استعمال ڪندڙ اسٽيج Backend Yandex.Taxi
شروعاتي نقطي کي چونڊيو پنَ اسان اميدوارن لاءِ هڪ آسان ڳولا شروع ڪري رهيا آهيون - پن ڳولا. مليل ڊرائيورن جي بنياد تي، اچڻ جو وقت پيش ڪيو ويو آهي - پن ۾ ETA. ڏنل نقطي تي وڌندڙ کوٽائي حساب ڪئي وئي آهي.
منزل، ڀاڙو، ضرورتون چونڊي ٿو پيشڪش اسان ھڪڙو رستو ٺاھيون ٿا ۽ سڀني محصولن جي قيمتن کي ڳڻپ ڪريون ٿا، حساب ۾ وڌندي کوٽائي.
"ٽيڪسي ڪال ڪريو" بٽڻ کي دٻايو آرڊر اسان ڪار جي مڪمل ڳولا شروع ڪريون ٿا. اسان سڀ کان وڌيڪ مناسب ڊرائيور چونڊيو ۽ کيس آرڊر ڏيو.

تي ETA پن ۾, قيمت جو حساب и سڀ کان مناسب ڊرائيور چونڊي اسان اڳ ۾ ئي لکيو آهي. ۽ هي ڊرائيور ڳولڻ بابت هڪ ڪهاڻي آهي. جڏهن هڪ آرڊر ٺاهيو ويندو آهي، ڳولا ٻه ڀيرا ٿيندي آهي: پن تي ۽ آرڊر تي. آرڊر جي ڳولا ٻن مرحلن ۾ ٿيندي آهي: اميدوارن جي ڀرتي ۽ درجه بندي. پهريون، دستياب اميدوار ڊرائيور مليا آهن جيڪي روڊ گراف سان گڏ ويجھو آهن. پوءِ بونس ۽ فلٽرنگ لاڳو ٿين ٿا. باقي اميدوارن جي درجه بندي ڪئي وئي آهي ۽ فاتح هڪ آرڊر جي آڇ حاصل ڪري ٿو. جيڪڏهن هو اتفاق ڪري ٿو، هو آرڊر تي لڳايو ويو آهي ۽ ترسيل پوائنٽ ڏانهن وڃي ٿو. جيڪڏهن هو انڪار ڪري ته پوءِ اها آڇ ايندڙ هڪ وٽ اچي. جيڪڏهن وڌيڪ اميدوار نه آهن، ڳولا ٻيهر شروع ٿيندي. اهو ٽن منٽن کان وڌيڪ نه رهي ٿو، جنهن کان پوء آرڊر منسوخ ۽ ساڙيو ويو آهي.

هڪ پن تي ڳولها هڪ آرڊر تي ڳولا ڪرڻ جي برابر آهي، صرف آرڊر پيدا نه ڪيو ويو آهي ۽ ڳولا پاڻ کي صرف هڪ ڀيرو انجام ڏنو ويندو آهي. اميدوارن جي تعداد لاءِ آسان سيٽنگون ۽ سرچ ريڊيس پڻ استعمال ٿيل آھن. اهڙيون آسانيون ضروري آهن ڇو ته اتي آرڊر جي ڀيٽ ۾ وڌيڪ پنن جي شدت آهي، ۽ ڳولڻ هڪ بلڪه ڏکيو آپريشن آهي. اسان جي ڪهاڻي لاءِ اهم نقطو: جيڪڏهن ابتدائي ڳولا دوران پن تي ڪو به مناسب اميدوار نه مليو ته پوءِ اسان توهان کي آرڊر ڏيڻ جي اجازت نه ڏينداسين. گهٽ ۾ گهٽ ائين ئي ٿيندو هو.

اھو آھي جيڪو صارف ايپليڪيشن ۾ ڏٺو آھي:

ڪيئن Yandex.Taxi ڪارن جي ڳولها ڪندو آهي جڏهن ڪو به ناهي

گاڏين جي بغير ڪارن جي ڳولا ڪريو

هڪ ڏينهن اسان هڪ مفروضو کڻي آياسين: شايد ڪجهه حالتن ۾ آرڊر اڃا به پورو ٿي سگهي ٿو، جيتوڻيڪ پن تي ڪارون نه هيون. آخرڪار، ڪجهه وقت پن ۽ آرڊر جي وچ ۾ گذري ٿو، ۽ آرڊر جي ڳولا وڌيڪ مڪمل آهي ۽ ڪڏهن ڪڏهن ڪيترائي ڀيرا ورجائي ٿو: هن وقت دوران، دستياب ڊرائيور ظاهر ٿي سگهن ٿيون. اسان ان جي برعڪس پڻ ڄاڻون ٿا: جيڪڏهن ڊرائيور پن تي مليا هئا، اها حقيقت نه هئي ته اهي آرڊر ڪرڻ وقت مليا ويندا. ڪڏهن ڪڏهن اهي غائب ٿي ويندا آهن يا هرڪو حڪم کان انڪار ڪري ٿو.

هن مفروضي کي جانچڻ لاءِ، اسان هڪ تجربو شروع ڪيو: اسان پن تي ڳولا دوران ڪارن جي موجودگي کي جانچڻ بند ڪيو صارفين جي هڪ ٽيسٽ گروپ لاءِ، يعني انهن کي ”ڪارن کان سواءِ آرڊر“ ڪرڻ جو موقعو مليو. نتيجو بلڪل غير متوقع هو: جيڪڏهن ڪار پن تي نه هئي، پوء 29٪ ڪيسن ۾ اهو بعد ۾ مليو - جڏهن آرڊر تي ڳولها! ان کان علاوه، ڪارن کان سواء آرڊر منسوخي جي شرح، درجه بندي، ۽ ٻين معيار جي اشارن جي لحاظ کان باقاعده آرڊر کان خاص طور تي مختلف نه هئا. ڪارن کانسواءِ بکنگ سڀني بُڪنگن جو 5 سيڪڙو آهي، پر صرف 1 سيڪڙو کان وڌيڪ ڪامياب سفرن جو.

اهو سمجهڻ لاءِ ته انهن حڪمن تي عمل ڪندڙ ڪٿان آيا آهن، اچو ته هڪ پن تي ڳولا دوران انهن جون حالتون ڏسون:

ڪيئن Yandex.Taxi ڪارن جي ڳولها ڪندو آهي جڏهن ڪو به ناهي

  • دستياب: دستياب هو، پر ڪجهه سببن ڪري اميدوارن ۾ شامل نه ڪيو ويو، مثال طور، هو تمام گهڻو پري هو؛
  • حڪم تي: مصروف هو، پر پاڻ کي آزاد ڪرڻ يا ان لاءِ دستياب ٿيڻ ۾ ڪامياب ٿي ويو سلسلو ترتيب;
  • مصروف: آرڊر قبول ڪرڻ جي صلاحيت بند ٿي وئي، پر پوء ڊرائيور واپس لڪير ڏانهن موٽيو؛
  • دستياب ناهي: ڊرائيور آن لائن نه هو، پر هو ظاهر ٿيو.

اچو ته قابل اعتماد شامل ڪريو

اضافي آرڊر عظيم آهن، پر 29٪ ڪامياب ڳولا جو مطلب اهو آهي ته 71٪ وقت جو صارف هڪ ڊگهو وقت انتظار ڪيو ۽ ڪٿي به نه ويو. جيتوڻيڪ اهو نظام ڪارڪردگي جي نقطي نظر کان خراب شيء ناهي، اهو اصل ۾ صارف کي غلط اميد ڏئي ٿو ۽ وقت ضايع ڪري ٿو، جنهن کان پوء اهي پريشان ٿي ويندا آهن ۽ (ممڪن طور) سروس استعمال ڪرڻ بند ڪن ٿا. هن مسئلي کي حل ڪرڻ لاء، اسان اڳڪٿي ڪرڻ سکيو آهي ته هڪ ڪار آرڊر تي ملي ويندي.

اسڪيم هن طرح آهي:

  • استعمال ڪندڙ هڪ پن رکي ٿو.
  • هڪ ڳولا پن تي ڪيو ويندو آهي.
  • جيڪڏهن ڪو ڪارٽون نه آهن، اسان اڳڪٿي ڪريون ٿا: شايد اهي ظاهر ٿيندا.
  • ۽ امڪان تي مدار رکندي، اسان توهان کي آرڊر ڏيڻ جي اجازت ڏيو يا نه ڏيو، پر اسان توهان کي ڊيڄاريون ٿا ته هن وقت هن علائقي ۾ ڪارن جي کثافت گهٽ آهي.

ايپليڪيشن ۾ اهو هن طرح نظر آيو:

ڪيئن Yandex.Taxi ڪارن جي ڳولها ڪندو آهي جڏهن ڪو به ناهي

ماڊل استعمال ڪندي توهان کي وڌيڪ صحيح طور تي نوان آرڊر ٺاهڻ جي اجازت ڏئي ٿي ۽ ماڻهن کي يقين ڏياريو ته بيڪار. اهو آهي، قابل اعتماد جي تناسب کي منظم ڪرڻ ۽ مشينن جي آرڊر جي تعداد کي درست ڪرڻ واري ماڊل استعمال ڪندي مشين کان سواء. خدمت جي قابل اعتماد پيداوار کي استعمال ڪرڻ جاري رکڻ جي خواهش تي اثر انداز ٿئي ٿي، يعني آخر ۾ اهو سڀ ڪجهه سفرن جي تعداد تي اچي ٿو.

مختصر بابت- ياد ڪرڻ بابتمشين لرننگ ۾ بنيادي ڪمن مان هڪ آهي درجه بندي جو ڪم: ڪنهن شئي کي ٻن طبقن مان هڪ کي تفويض ڪرڻ. انهي صورت ۾، مشين جي سکيا جي الگورتھم جو نتيجو اڪثر ڪري ھڪڙي ھڪڙي طبقي ۾ رڪنيت جي عددي تشخيص بڻجي ويندو آھي، مثال طور، ھڪڙو امڪاني جائزو. بهرحال، جيڪي ڪارناما ڪيا ويندا آهن اهي عام طور تي بائنري هوندا آهن: جيڪڏهن ڪار موجود آهي، ته پوءِ اسين توهان کي ان جو حڪم ڏينداسين، ۽ جيڪڏهن نه، ته پوءِ نه ڪنداسين. مخصوص ٿيڻ لاءِ، اچو ته هڪ الگورٿم کي سڏين جيڪو هڪ عددي اندازي جو هڪ نمونو پيدا ڪري، ۽ هڪ طبقي جو هڪ قاعدو جيڪو ان کي ٻن طبقن مان هڪ کي تفويض ڪري ٿو (1 يا -1). ماڊل جي تشخيص جي بنياد تي درجه بندي ڪرڻ لاء، توهان کي هڪ تشخيصي حد چونڊڻ جي ضرورت آهي. ڪيئن بلڪل منحصر آهي ڪم تي.

فرض ڪريو اسان ڪنهن ناياب ۽ خطرناڪ مرض لاءِ ٽيسٽ (ڪلاسفير) ڪري رهيا آهيون. ٽيسٽ جي نتيجن جي بنياد تي، اسان يا ته مريض کي وڌيڪ تفصيلي امتحان لاءِ موڪليندا آهيون، يا چئو: ”چڱو، گهر وڃ. اسان لاءِ، بيمار ماڻهوءَ کي گهر موڪلڻ هڪ صحتمند ماڻهوءَ کي بي ضرورت جانچڻ کان وڌيڪ خراب آهي. اهو آهي، اسان چاهيون ٿا ته ٽيسٽ تمام گهڻو بيمار ماڻهن لاء ڪم ڪري سگهي ٿي. هن قدر کي recall = سڏيو ويندو آهيڪيئن Yandex.Taxi ڪارن جي ڳولها ڪندو آهي جڏهن ڪو به ناهي. هڪ مثالي درجه بندي 100٪ جي يادگيري آهي. خراب صورتحال اها آهي ته هر ڪنهن کي امتحان لاءِ موڪليو وڃي ته پوءِ واپسي به 100 سيڪڙو ٿيندي.

اهو پڻ ٻئي طريقي سان ٿئي ٿو. مثال طور، اسان شاگردن لاءِ ٽيسٽنگ سسٽم ٺاهي رهيا آهيون، ۽ ان ۾ ٺڳيءَ جو پتو لڳائڻ وارو آهي. جيڪڏهن اوچتو چيڪ ڪم نه ڪندو آهي ڪجهه ڪيسن ۾ دوکي، پوء اهو ناپسنديده آهي، پر نازڪ ناهي. ٻئي طرف، اهو انتهائي خراب آهي ته شاگردن کي غير منصفانه طور تي الزام لڳائڻ جو ڪجهه انهن نه ڪيو آهي. اهو آهي، اهو اسان لاء اهم آهي ته درجه بندي جي مثبت جوابن مان، ممڪن آهي ته ممڪن طور تي صحيح آهن، شايد انهن جي تعداد جي نقصان جي ڪري. هن جو مطلب آهي ته توهان کي وڌ کان وڌ ڪرڻ جي ضرورت آهي درستگي = ڪيئن Yandex.Taxi ڪارن جي ڳولها ڪندو آهي جڏهن ڪو به ناهي. جيڪڏهن ٽرگرنگ سڀني شين تي ٿئي ٿي، ته پوءِ درستگي نموني ۾ بيان ڪيل طبقي جي تعدد جي برابر هوندي.

جيڪڏهن الگورٿم هڪ عددي امڪاني قدر پيدا ڪري ٿو، ته پوءِ مختلف حدن کي چونڊڻ سان، توهان حاصل ڪري سگهو ٿا مختلف درستي-ياد ڪرڻ جي قيمت.

اسان جي مسئلي ۾ صورتحال هن ريت آهي. ياد ڪريو آرڊر جو تعداد جيڪو اسان پيش ڪري سگھون ٿا، درستگي انهن آرڊر جي اعتبار آهي. اھو اھو آھي جيڪو اسان جي ماڊل جي درستي-ياد ڪرڻ واري وکر وانگر آھي:
ڪيئن Yandex.Taxi ڪارن جي ڳولها ڪندو آهي جڏهن ڪو به ناهي
اتي ٻه انتهائي ڪيس آهن: ڪنهن کي حڪم ڏيڻ جي اجازت نه ڏيو ۽ هر ڪنهن کي حڪم ڏيڻ جي اجازت ڏيو. جيڪڏهن توهان ڪنهن کي اجازت نه ڏيو، پوء ياد ڪيو ويندو 0: اسان آرڊر نه ٺاهيندا آهيون، پر انهن مان ڪو به ناڪام ٿيندو. جيڪڏهن اسان سڀني کي اجازت ڏيون ٿا، ته پوءِ ياد ڪيو ويندو 100٪ (اسان سڀ ممڪن آرڊر وصول ڪنداسين)، ۽ درستگي 29٪ هوندي، يعني 71٪ آرڊر خراب هوندا.

اسان نشانين جي طور تي شروعاتي نقطي جي مختلف پيٽرولن کي استعمال ڪيو:

  • وقت / جڳھ.
  • سسٽم اسٽيٽ (سڀني ٽريف جي قبضي واري مشينن جو تعداد ۽ ڀرپاسي ۾ پن).
  • ڳولا جي ماپ (ريڊيس، اميدوارن جو تعداد، پابنديون).

نشانين بابت وڌيڪ اصطلاح

تصوراتي طور تي، اسان ٻن حالتن جي وچ ۾ فرق ڪرڻ چاهيون ٿا:

  • ”ڊپ فاريسٽ“ - هن وقت هتي ڪي به ڪارون نه آهن.
  • "بدقسمتي" - ڪارون آهن، پر جڏهن ڳولي رهيا هئا ته ڪو به مناسب نه هئا.

”بدقسمتي“ جو هڪ مثال آهي جيڪڏهن جمعه جي شام تي مرڪز ۾ تمام گهڻي طلب آهي. اتي ڪيترائي آرڊر آھن، گھڻا ماڻھو تيار آھن، ۽ ھر ڪنھن لاءِ ڪافي ڊرائيور نھ آھن. اهو هن طرح ٿي سگهي ٿو: پن ۾ ڪو به مناسب ڊرائيور نه آهن. پر لفظي طور تي سيڪنڊن ۾ اهي ظاهر ٿيندا آهن، ڇاڪاڻ ته هن وقت هن جڳهه تي ڪيترائي ڊرائيور آهن ۽ انهن جي حيثيت مسلسل تبديل ٿي رهي آهي.

تنهن ڪري، پوائنٽ اي جي ڀرسان مختلف سسٽم جا اشارا سٺا خاصيتون آهن:

  • گاڏين جو ڪل تعداد.
  • آرڊر تي گاڏين جو تعداد.
  • "مصروف" اسٽيٽس ۾ آرڊر ڪرڻ لاءِ ڪارن جو تعداد دستياب ناهي.
  • استعمال ڪندڙن جو تعداد.

آخرڪار، اتي وڌيڪ ڪارٽون آهن، وڌيڪ امڪان اهو آهي ته انهن مان هڪ دستياب ٿي ويندي.
حقيقت ۾، اهو اسان لاء اهم آهي ته نه رڳو ڪارون واقع آهن، پر ڪامياب سفر پڻ ڪيا ويا آهن. تنهن ڪري، اهو ممڪن هو ته هڪ ڪامياب سفر جي امڪان جي اڳڪٿي ڪرڻ. پر اسان اهو نه ڪرڻ جو فيصلو ڪيو، ڇاڪاڻ ته اهو قدر گهڻو ڪري صارف ۽ ڊرائيور تي منحصر آهي.

ماڊل ٽريننگ الگورٿم هو ٻلي. تجربن مان حاصل ڪيل ڊيٽا کي تربيت لاء استعمال ڪيو ويو. عمل ڪرڻ کان پوء، تربيتي ڊيٽا گڏ ڪرڻ جي ضرورت هئي، ڪڏهن ڪڏهن صارفين جي هڪ ننڍڙي تعداد کي ماڊل جي فيصلي جي خلاف حڪم ڏيڻ جي اجازت ڏئي ٿي.

نتيجو

تجربن جا نتيجا توقع جي مطابق هئا: ماڊل استعمال ڪندي توهان کي ڪامياب سفرن جي تعداد ۾ اضافو ڪرڻ جي اجازت ڏئي ٿي بغير ڪارن جي آرڊر جي ڪري، پر اعتبار سان سمجھوتو ڪرڻ کان سواء.

هن وقت، ميڪانيزم سڀني شهرن ۽ ملڪن ۾ شروع ڪيو ويو آهي ۽ ان جي مدد سان، ڪامياب سفرن جو تقريبا 1٪ ٿئي ٿو. ان کان سواء، ڪجهه شهرن ۾ ڪارن جي گهٽ کثافت سان، اهڙين سفرن جو حصو 15٪ تائين پهچي ٿو.

ٽيڪسي ٽيڪنالاجي بابت ٻيون پوسٽون

جو ذريعو: www.habr.com

تبصرو شامل ڪريو